28
2025
03
17:23:13

不使用脚本,如何快速部署自定义Netmaker服务?

Netmaker是一个开源的、用于WireGuard网络管理的控制工具,可以非常快速地组建WireGuard网络,并且能够轻松处理100个以上的并发客户端。

通过使用官方自带的nm-quick.sh脚本,可以轻松地在Ubuntu系统上完成软件的搭建,官方推荐的系统是Ubuntu 20.04。(CentOS目前还有点小问题,也可能是我没整明白。)唯一发现缺少的依赖组件是curl,建议提前安装。

当然,对于安装结果,必须用域名进行访问这个事情,也是有点意外。官方介绍,他们假设用户希望启用所有Netmaker功能,并且希望用户搭建的服务器位于云环境中、或者具备公网IP地址,以便可以从公网进行访问。而配置使用IP地址进行访问到底可行与否,我们今天就来手工配置看一下。

通过上次部署,我们已经发现了,Netmaker是基于Docker进行部署的,所以需要安装Docker组件;同时,要管理WireGuard的一端来管理WireGuard,也必须要安装WireGuard。

apt install -y docker.io docker-compose wireguard


不使用脚本,如何快速部署自定义Netmaker服务?


捎带提一下,apt-get用于从经过身份验证的源中检索软件包和有关它们的信息,以及用于安装、升级和删除包及其依赖项。apt提供与专用APT工具(如apt-get和apt-cache)相同的功能,用于搜索、管理、查询软件包信息等,但默认启用更适合交互式使用的选项。

如果使用或开启了防火墙,则需要放通TCP端口443和UDP端口51821-518XX。其中,TCP端口443用于代理Dashboard(UI)、REST API(Netmaker Server)和Broker(MQTT);UDP端口51821-518XX,表示从51821开始,Netmaker需要为每个WireGuard网络打开一个端口,因此518XX的具体数值需要根据规划的WireGuard网络数量确定。例如,有10个WireGuard网络,那就要配置开放UDP端口51821-51830。

命令如下:

ufw allow proto tcp from any to any port 443 && ufw allow 51821:51830/udp


不使用脚本,如何快速部署自定义Netmaker服务?


当然,也可以直接关闭防火墙。

systemctl stop ufw


不使用脚本,如何快速部署自定义Netmaker服务?


先获取一下本地的接口地址,其实对于我们手工配置了IP地址的,简单验证一下即可。

ip route get 1 | sed -n 's/^.*src \([0-9.]*\) .*$/\1/p'


不使用脚本,如何快速部署自定义Netmaker服务?


然后从库里面下载一份Netmaker的Docker Compose配置文件。

wget -O docker-compose.yml https://raw.githubusercontent.com/gravitl/netmaker/master/compose/docker-compose.yml


不使用脚本,如何快速部署自定义Netmaker服务?


然后插入访问的域名信息,官方建议是配置成添加了DNS解析的域名信息。但是我在内网,就先配置成服务器的内网IP地址192.168.1.77。

sed -i 's/NETMAKER_BASE_DOMAIN/192.168.1.77/g' docker-compose.yml

再插入服务器IP地址信息,正常是要配置公网IP地址的,我这次是在内网,所以也配置成内网IP地址了。

sed -i 's/SERVER_PUBLIC_IP/192.168.1.77/g' docker-compose.yml

还可以配置邮箱信息。

sed -i 's/YOUR_EMAIL/tt@h3cadmin.cn/g' docker-compose.yml


不使用脚本,如何快速部署自定义Netmaker服务?


查看一下配置文件中和内网IP地址192.168.1.77相关的配置。


不使用脚本,如何快速部署自定义Netmaker服务?


可以看到有几个格式比较奇怪的字段:

broker.192.168.1.77https://api.192.168.1.77dashboard.192.168.1.77

回顾一下上一次,我们在hosts中添加了以下域名的解析值。


不使用脚本,如何快速部署自定义Netmaker服务?


区别就是把域名nm.114-249-194-204.nip.io换成了本地IP地址192.168.1.77,现在请记住这个区别。

再使用tr命令随即生成一串唯一的主密钥。

tr -dc A-Za-z0-9 </dev/urandom | head -c 30 ; echo ''


不使用脚本,如何快速部署自定义Netmaker服务?


然后把生成的密钥插入到docker-compose.yml文件中。

sed -i 's/REPLACE_MASTER_KEY/HhBlsjEANlSXCdP7ALDk8oM5Z8t46T/g' docker-compose.yml


不使用脚本,如何快速部署自定义Netmaker服务?


然后从docker-compose.yml文件中就可以看到Netmaker的环境信息了。


不使用脚本,如何快速部署自定义Netmaker服务?


再从库里面下载一份Mosquitto(用C语言实现MQTT协议的Broker,用于提供实时可靠的消息服务)的配置文件。

wget -O /root/mosquitto.conf https://raw.githubusercontent.com/gravitl/netmaker/master/docker/mosquitto.conf


不使用脚本,如何快速部署自定义Netmaker服务?


接下来就可以开始部署Netmaker了。

docker-compose up -d


不使用脚本,如何快速部署自定义Netmaker服务?


部署完成,我们看一下端口的使用情况。


不使用脚本,如何快速部署自定义Netmaker服务?


可以看到端口443处于监听状态,测试一下。


不使用脚本,如何快速部署自定义Netmaker服务?


然后我们用尝试访问一下dashboard.192.168.1.77。


不使用脚本,如何快速部署自定义Netmaker服务?


用浏览器访问就会直接跳转到搜索页面。


不使用脚本,如何快速部署自定义Netmaker服务?


其实,这个地址就是无法访问的,因为这个“域名”“不伦不类”,IP地址是不能配置子域名的;这种要使用子域名的情况,不能和IP地址混合使用,只能配置域名。

再回到问题本身,解决方案就是,要么在公网DNS服务商配置DNS域名解析,要么就修改本地的hosts文件吧。

记得要修改的地方是这条命令。

sed -i 's/NETMAKER_BASE_DOMAIN/nm.h3cadmin.cn/g' docker-compose.yml

对应配置文件中的这些字段。


不使用脚本,如何快速部署自定义Netmaker服务?




推荐本站淘宝优惠价购买喜欢的宝贝:

不使用脚本,如何快速部署自定义Netmaker服务?

本文链接:https://hqyman.cn/post/9947.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: