自托管部署Netbird网络
「」对自托管部署采用了折衷的中间策略,Nebula 只能自托管部署且官方没有 GUI 支持,Tailscale 不能自托管部署,Netbird 则支持、甚至推荐自托管部署,自托管部署 Netbird 虚拟网络,节点的添加及虚拟专用网络的配置与非自托管方式完全相同,本文不做赘述。Netbird虚拟网络的自托管部署同样体现了其高度易用的特性,可以直接简化理解为准备工作、后台管理网站搭建两个步骤。
1.检查与准备工作
Netbird官网给出了明确的self-hosted指引,这里仅仅搬运并适当结合实践微调如下:
- 拥有公网 IP 的 服务器;
- 服务器确保不低于1c2g配置;
- Docker 与 docker-compose,和节点添加、安装相同,还需要jq、curl;
- 端口开放:TCP-80、443,UDP-3478、49152-65535;
- 域名,指向计划使用的自托管服务器
这里需要强调两点,一是测试性部署使用的是1c1g的Azure B1s,可部署运行,卡顿但未尝试调优。二是80、443端口的开放要求对于国内VM的使用可能存在挑战,可以将内网主机通过IPv6进行暴露作为替代方案,实测可行。
2.搭建自托管netbird后台网站
2.1 安装
直接参照官方指导安装或使用已有镜像Docker安装,需要将nb.example.com替换为计划使用、已配置好解析的域名。
#apt install curl -y apt install jq -y export NETBIRD_DOMAIN=nb.example.com; curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started-with-zitadel.sh | bash
整个安装、部署过程应该会持续5-10分钟,取决于服务器性能和Internet网络状况。
安装完成,会给出类似以下内容的后台管理员初始化用户名和密码:
Username: [email protected]
Password: NYDFetrxcDF86IN4LwpVgq0BZd86tR86d9TM@
如因迁移等原因需要卸载,可使用以下命令。
docker compose down --volumes rm -f docker-compose.yml Caddyfile zitadel.env dashboard.env machinekey/zitadel-admin-sa.token turnserver.conf management.json
2.2 登录与验证
首次打开部署的管理面板,输入安装完成后输出的初始用户名、密码。
Zitadel验证服务要求首次登录及密码修改后均需要执行一次两步验证,后续登录不会再对设备进行验证。这里选取软件应用,后续需要用到google验证器等app。
两步验证过程中,使用google验证器(IOS、Android均有)等app扫描二维码,输入验证其显示的验证码,点击【继续】即可。
之后,因为首次登录,还需要对初始密码进行修改,密码要求包含大小写、特殊字符和数字,修改后再进行一次两步验证。后续,在有效期内登录不需要输入密码或两步验证。
3. 省略的部分
netbird自托管部署默认使用zitadel的第三方验证,而zitadel也是完全开源的应用。
Netbird支持自托管用户采用的IdP(第三方验证服务提供商)包括Azure AD、Google Workspace、Okta等,与Zitadel也可以子托管部署不同,Azure AD、Google Workspace无法自托管,只能使用Micosoft或Google的服务。
考虑到Ondrive的流行和Azure API使用广泛,可获取的资料、参考很多,建议使用Azure AD。
最后,可以总结一点小小的遗憾和期望,那就Netbird自托管部署需要使用TCP 80/443两个端口供后台WebUI使用,这对于不喜欢折腾的用户而言有点不够人性化,毕竟国内环境较难满足这一要求。