本人拥有一个国内云服务商的云主机和一个备案好的域名,通过caddy2来作为web服务器。我的云主机系统是Ubuntu。
我的云主机是公网ip,地址为:43.126.100.78;我备案好的域名是:hotgirl.com。后面的文章都以上述的ip和域名来进行讲解。
域名hotgirl.com已经通过云服务商的域名解析功能,解析到43.126.100.78。
我在云主机上安装了一个docker版本的headscale。
docker环境的部署我这里就不多赘述了,网上教程一大堆,我就直接贴命令了:
sudo apt-get remove docker docker-engine docker-ce docker.io # 删除旧的docker的安装包sudo apt-get update # 更新安装包索引sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common # 安装以下包以使apt可以通过HTTPS使用存储库(repository)curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 添加Docker官方的GPG密钥:sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # 使用下面的命令来设置stable存储库sudo apt-get update # 更新一下apt包索引sudo apt-get install -y docker-ce # 安装最新版本的Docker CE:
sudo docker volume create portainer_datasudo docker run -d -p 9000:9000 --name portainer --restart always \-v /var/run/docker.sock:/var/run/docker.sock \-v portainer_data:/data \portainer/portainer-cedocker restart portainerdocker kill container_name# 强制关闭指定的容器docker rm container_name# 从此机器中删除指定的容器
sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-composecurl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo curl -L https://github.com/docker/compose/releases/download/2.10.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-composesudo curl -sSL https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose --version
说明
我的云主机是公网ip,地址为:43.126.100.78;我备案好的域名是:hotgirl.com。
添加A记录
我的域名是:hotgirl.com。现在准备把“head.hotgirl.com”这个二级域名给headscale来用。我需要在域名服务商的域名解析服务中,添加一个A记录,把“head.hotgirl.com”解析到云主机的公网ip43.126.100.78。同理,我把“mcs.hotgirl.com”也解析到云主机的公网ip43.126.100.78。这样通过“https://mcs.hotgirl.com/metrics”,就可以验证headscale是否安装成功。
解析完,准备工作完成,上述两个地址还暂时打不开,需要安装headscale。
#创建headscale根目录
mkdir -p /docker/headscale#创建映射目录
mkdir -p /docker/headscale/configmkdir -p /docker/headscale/runmkdir -p /docker/headscale/data
---
# headscale will look for a configuration file named `config.yaml` (or `config.json`) in the following order:
#
# - `/etc/headscale`
# - `~/.headscale`
# - current working directory# The url clients will connect to.
# Typically this will be a domain like:
#
# https://myheadscale.example.com:443
#
server_url: https://head.hotgirl.com# Address to listen to / bind to on the server
#
# For production:
# listen_addr: 0.0.0.0:8080
listen_addr: 0.0.0.0:8181# Address to listen to /metrics, you may want
# to keep this endpoint private to your internal
# network
#
metrics_listen_addr: 0.0.0.0:9191
version: '3.1'
services:headscale:image: headscale/headscalecontainer_name: headscalevolumes:- /docker/headscale/config:/etc/headscale- /docker/headscale/data:/var/lib/headscale- /docker/headscale/run:/var/run/headscaleports:- '0.0.0.0:8181:8181'- '0.0.0.0:9191:9191'command: headscale serverestart: unless-stopped
cd /docker/headscaledocker-compose up -d
容器就创建成功了,但是现在head.hotgirl.com和“https://mcs.hotgirl.com/metrics”还暂时无法访问。你需要在你的云服务器的防火墙,放行8181和9191两个端口。
firewall-cmd --add-port=8181/tcp --permanentfirewall-cmd --add-port=9191/tcp --permanent#重启防火墙
firewall-cmd --reload
在云主机的“配置安全组规则” 中,手动添加上述两个端口:
根据我前面的文章 Caddy2的安装、部署和编译小白教程 这篇文章中讲解的,修改Caddyfile这个文件:
vim /etc/caddy/Caddyfile
然后添加下面代码:
#Headscale
https://head.hotgirl.com {tls 112244@qq.comreverse_proxy 127.0.0.1:8181
}
#Headscale metrics
https://mcs.hotgirl.com {tls 112244@qq.comreverse_proxy 127.0.0.1:9191
}
然后重启下caddy
systemctl reload caddy
到此,caddy反向代理headscale的教程就结束了,你直接可以用tailscale客户端通过https://head.hotgirl.com 这个地址申请加入了。
如果https://mcs.hotgirl.com/metrics 打开后显示如上图,则说明headscale部署成功!
上一篇:C++——IO流