一、个人环境概述
-
本人拥有一个国内云服务商的云主机和一个备案好的域名,通过caddy2来作为web服务器。我的云主机系统是Ubuntu。
-
我的云主机是公网ip,地址为:43.126.100.78;我备案好的域名是:hotgirl.com。后面的文章都以上述的ip和域名来进行讲解。
-
域名hotgirl.com已经通过云服务商的域名解析功能,解析到43.126.100.78。
-
我在云主机上安装了一个docker版本的headscale。
二、docker环境部署
docker环境的部署我这里就不多赘述了,网上教程一大堆,我就直接贴命令了:
- 安装docker-ce
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:
- 安装 docker portainer-ce
sudo docker volume create portainer_data
sudo 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-ce
docker restart portainer
docker kill container_name# 强制关闭指定的容器
docker rm container_name# 从此机器中删除指定的容器
- 安装docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/2.10.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo curl -sSL https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-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。
四、docker版本的Headscale安装
- 创建目录
#创建headscale根目录
mkdir -p /docker/headscale
#创建映射目录
mkdir -p /docker/headscale/config
mkdir -p /docker/headscale/run
mkdir -p /docker/headscale/data
- 下载配置headscale的config文件
把下载下来的config.yaml文件上传到“/docker/headscale/config”目录中。并打开修改:
server_url 修改为前面我们解析好的:head.hotgirl.com
listen_addr 修改为:0.0.0.0:8181 #端口号课根据自己需求改
metrics_listen_addr 修改为: 0.0.0.0:9191 #端口号课根据自己需求改
---
# 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
- 创建docker-compose.yaml
在“/docker/headscale”这个目录下,创建docker-compose.yaml。别搞错了!!!
version: '3.1'
services:
headscale:
image: headscale/headscale
container_name: headscale
volumes:
- /docker/headscale/config:/etc/headscale
- /docker/headscale/data:/var/lib/headscale
- /docker/headscale/run:/var/run/headscale
ports:
- '0.0.0.0:8181:8181'
- '0.0.0.0:9191:9191'
command: headscale serve
restart: unless-stopped
- 创建容器
cd到“/docker/headscale”这个目录下,执行“docker-compose up -d” 命令。
cd /docker/headscale
docker-compose up -d
- 云主机防火墙放行端口
容器就创建成功了,但是现在head.hotgirl.com和“https://mcs.hotgirl.com/metrics”还暂时无法访问。你需要在你的云服务器的防火墙,放行8181和9191两个端口。
firewall-cmd --add-port=8181/tcp --permanent
firewall-cmd --add-port=9191/tcp --permanent
#重启防火墙
firewall-cmd --reload
在云主机的“配置安全组规则” 中,手动添加上述两个端口:
五、Caddy2反向代理headscale
根据我前面的文章 Caddy2的安装、部署和编译小白教程 这篇文章中讲解的,修改Caddyfile这个文件:
vim /etc/caddy/Caddyfile
然后添加下面代码:
#Headscale
https://head.hotgirl.com {
tls 112244@qq.com
reverse_proxy 127.0.0.1:8181
}
#Headscale metrics
https://mcs.hotgirl.com {
tls 112244@qq.com
reverse_proxy 127.0.0.1:9191
}
然后重启下caddy
systemctl reload caddy
到此,caddy反向代理headscale的教程就结束了,你直接可以用tailscale客户端通过https://head.hotgirl.com 这个地址申请加入了。
如果https://mcs.hotgirl.com/metrics 打开后显示如上图,则说明headscale部署成功!