Caddy2学习笔记——Caddy2反向代理docker版本的headscale

一、个人环境概述

  1. 本人拥有一个国内云服务商的云主机和一个备案好的域名,通过caddy2来作为web服务器。我的云主机系统是Ubuntu。

  2. 我的云主机是公网ip,地址为:43.126.100.78;我备案好的域名是:hotgirl.com。后面的文章都以上述的ip和域名来进行讲解。

  3. 域名hotgirl.com已经通过云服务商的域名解析功能,解析到43.126.100.78。

  4. 我在云主机上安装了一个docker版本的headscale。

二、docker环境部署

docker环境的部署我这里就不多赘述了,网上教程一大堆,我就直接贴命令了:

  1. 安装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:
  1. 安装 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# 从此机器中删除指定的容器
  1. 安装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

三、域名解析

  1. 说明
    我的云主机是公网ip,地址为:43.126.100.78;我备案好的域名是:hotgirl.com。

  2. 添加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是否安装成功。

  3. 解析完,准备工作完成,上述两个地址还暂时打不开,需要安装headscale。

四、docker版本的Headscale安装

  1. 创建目录
#创建headscale根目录
mkdir -p /docker/headscale

#创建映射目录
mkdir -p /docker/headscale/config

mkdir -p /docker/headscale/run

mkdir -p /docker/headscale/data
  1. 下载配置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
  1. 创建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

  1. 创建容器
    cd到“/docker/headscale”这个目录下,执行“docker-compose up -d” 命令。
cd /docker/headscale

docker-compose up -d
  1. 云主机防火墙放行端口

容器就创建成功了,但是现在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 这个地址申请加入了。

metrics
如果https://mcs.hotgirl.com/metrics 打开后显示如上图,则说明headscale部署成功!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值