Caddy2学习笔记——Caddy2反向代理docker版本的headscale
创始人
2024-05-30 21:28:25
0

一、个人环境概述

  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_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# 从此机器中删除指定的容器
  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-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

三、域名解析

  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/configmkdir -p /docker/headscale/runmkdir -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/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
  1. 创建容器
    cd到“/docker/headscale”这个目录下,执行“docker-compose up -d” 命令。
cd /docker/headscaledocker-compose up -d
  1. 云主机防火墙放行端口

容器就创建成功了,但是现在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反向代理headscale

根据我前面的文章 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 这个地址申请加入了。

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

相关内容

热门资讯

常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...