# Caddy ```shell cd ~/program/headscale; UID=$(id -u) GID=$(id -g) sudo -E docker compose up ``` # 安装 https://headscale.net/stable/setup/install/official/ ```shell sudo systemctl stop wg-quick@wg sudo systemctl disable wg-quick@wg sudo ufw allow 41641/udp set-proxy HEADSCALE_VERSION="0.25.1" # See above URL for latest version, e.g. "X.Y.Z" (NOTE: do not add the "v" prefix!) HEADSCALE_ARCH="amd64" # Your system architecture, e.g. "amd64" wget --output-document=headscale.deb \ "https://github.com/juanfont/headscale/releases/download/v${HEADSCALE_VERSION}/headscale_${HEADSCALE_VERSION}_linux_${HEADSCALE_ARCH}.deb" sudo apt install ./headscale.deb # 参考 https://github.com/juanfont/headscale/blob/main/config-example.yaml sudo vi /etc/headscale/config.yaml sudo systemctl start headscale sudo systemctl enable headscale sudo systemctl status headscale # sudo headscale users create mrh # User created # sudo headscale users list curl -fsSL https://tailscale.com/install.sh | sh # sudo tailscale up --login-server http://localhost:9809/ # # 请注意这个密码是随机的 # sudo headscale nodes register --user mrh --key lHE6IUqDYpwT_bJkkMW9WECq # sudo headscale nodes list ``` https://luotianyi.vc/8480.html ```shell docker restart headscale dc exec caddy caddy reload --config /etc/caddy/Caddyfile dk exec caddy-lan caddy reload --config /etc/caddy/Caddyfile # dc exec headscale headscale apikeys create --expiration 9999d # docker exec -it headscale headscale users create mxy # 创建可重用秘钥,秘钥不会失效,让用户自行管理 docker exec -it headscale headscale preauthkeys create --user mxy --reusable --expiration 99999d 90e2d5089997c0ef0929eaa8475ac441de0fe9acae43cfbd tailscale up --login-server https://hs.magong.site --authkey 59a4f2afdc6605a8b213279d61fb926ad0ff704fc874dfec --hostname pc-xy --netfilter-mode=off --accept-dns=true # 指定云服务器,注册 sudo tailscale up --login-server https://hs.magong.site --authkey 90e2d5089997c0ef0929eaa8475ac441de0fe9acae43cfbd --hostname sv-v2 --netfilter-mode=off --accept-dns=true # 云服务器如果自己配置了内网 DNS 服务器,需要指定该网卡的 search 域名 sudo resolvectl domain eth0 ~. # 别的设备注册 sudo tailscale up --login-server https://hs.magong.site --authkey 90e2d5089997c0ef0929eaa8475ac441de0fe9acae43cfbd --netfilter-mode=off --accept-dns=true --reset # sudo tailscale up --login-server http://101.126.130.39:27896 --authkey 90e2d5089997c0ef0929eaa8475ac441de0fe9acae43cfbd sudo lsof -i :41641 docker exec headscale headscale nodes list ip route show table 52 tailscale ping 100.64.0.1 sudo tailscale status # 下线 sudo tailscale down sudo tailscale up sudo tailscale down # 删除节点 docker exec -it headscale headscale nodes delete -i 1 docker exec -it headscale headscale nodes delete -i 2 # sudo tailscale up --login-server http://localhost:27896/ --force-reauth ``` 可以修改 ip 地址 ```shell sudo sqlite3 /root/program/headscale/headscale/data/db.sqlite # sudo sqlite3 /home/mrh/program/headscale/headscale/data/db.sqlite SELECT id, hostname, ipv4 FROM nodes; UPDATE nodes SET ipv4 = "100.64.0.31" WHERE hostname="vs1"; UPDATE nodes SET ipv4 = "100.64.0.32" WHERE hostname="sv-v2"; UPDATE nodes SET ipv4 = "100.64.0.33" WHERE hostname="s2"; UPDATE nodes SET ipv4 = "100.64.0.12" WHERE hostname="pc"; # 更新完后,不需要做额外操作,各个节点会自动更新 ``` ## 其他操作系统 ### Windows https://headscale.net/stable/usage/connect/windows/ 安装好之后,打开 cmd 控制台: ```shell tailscale up --login-server https://hs.magong.site --authkey 90e2d5089997c0ef0929eaa8475ac441de0fe9acae43cfbd --accept-dns=true ``` ### 安卓 教程: https://headscale.net/stable/usage/connect/android/ 下载: https://github.com/tailscale/tailscale-android 下载 APK 包后, - 打开应用程序,选择右上角的设置菜单 - 点击 Account - 在右上角的菜单图标(三个点)中,选择使用备用服务器 Use an alternate server - 输入您的服务器URL https://hs.magong.site ,输入完成后不会有任何提示,不要紧 - 再次右上角的菜单图标(三个点)中,选择使用认证密钥 Use an auth key - 输入您的认证密钥 90e2d5089997c0ef0929eaa8475ac441de0fe9acae43cfbd ,输入完成后不会有任何提示。一般到这里,返回主页即可连接成功 小米的默认域名是 localhost,不想使用这个域名,可以到服务器修改: ```shell ssh root@dy1 sudo sqlite3 /root/program/headscale/headscale/data/db.sqlite SELECT id, hostname, ipv4 FROM nodes; UPDATE nodes SET hostname = "mi11" WHERE id=12; ``` ## MagicDNS ```shell ssh root@dy1 vi /root/program/headscale/headscale/data/extra-records.json ``` ```json [ { "name": "dify.sv-v2.lan", "type": "A", "value": "100.64.0.32" } ] ``` ```shell vi /root/program/headscale/headscale/config/config.yaml # extra_records_path: exit sudo vi /home/mrh/program/headscale/app/caddy-lan/lan.Caddyfile dk exec caddy-lan caddy reload -c /etc/caddy/Caddyfile dk exec caddy-lan caddy fmt --overwrite /etc/caddy/Caddyfile ``` ### 云服务器冲突的问题 https://sh.alynx.one/posts/Who-Moved-My-DNS-Resolving/ ```shell # 建议指定为云服务器的内网 DNS 服务器 sudo resolvectl domain eth0 ~. # 下述实测未解决 sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf sudo apt-get install network-manager systemctl enable NetworkManager systemctl restart NetworkManager systemctl status NetworkManager ping mirrors.ivolces.com ```