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部署成功!

相关内容

热门资讯

新生入学仪式讲话稿 关于新生入学仪式讲话稿(精选10篇)  在快速变化和不断变革的今天,各种讲话稿频频出现,讲话稿的作用...
动员会员工代表发言稿 动员会员工代表发言稿范文(精选12篇)  随着社会一步步向前发展,越来越多人会去使用发言稿,发言稿特...
必修5《项脊轩志》说课稿 苏教版必修5《项脊轩志》说课稿  一、教材分析  《项脊轩志》是苏教版必修5“此情可待成为追忆”的第...
元旦讲话稿 元旦讲话稿合集15篇  现如今,我们都可能会用到讲话稿,讲话稿的作用是辅助讲话者集中有效地围绕会议议...
会走路的树说课材料 会走路的树说课材料  教学资源的利用:  《会走路的树》是苏教版语文二年级下册科技篇中的第3课。  ...
怎样预防火灾大班安全说课稿 怎样预防火灾大班安全说课稿  今天我为大家说课的题目是《怎样预防火灾》,这篇课文选自《中小学安全教育...
青春中国朗诵稿 青春中国朗诵稿15篇  在平时的学习中,大家对朗诵稿都再熟悉不过了吧,朗诵,一般都在舞台上,在大庭广...
文明礼仪交通安全广播稿 文明礼仪交通安全广播稿范文(精选7篇)  在学校广播站锻炼的学生都知道,广播前一般都会预先准备好广播...
调研新闻稿怎么写 调研新闻稿怎么写  调研新闻稿怎么写?很多单位有领导去视察工作,不知道怎么编写新闻稿,下面就为大家支...
初中运动会通讯稿 初中运动会通讯稿4篇初中运动会通讯稿  初中运动会的通讯稿大家知道怎么写了吗?下面是应届毕业生小编为...
小学二年级语文蜜蜂引路说课稿 人教版小学二年级语文蜜蜂引路说课稿  教材简析  这篇课文是人教版课标教材六年制二年级下学期语文教材...
广播新闻稿 广播新闻稿通用15篇  在这个高速发展的时代,新闻稿在生活中的使用越来越广泛,新闻稿必须具有时间性。...
致运动会加油稿30字   环形的跑道一圈又一圈的坚持,毅力与精神活跃在会场上,我们为你们骄傲。为大家带来的是致运动会加油稿...
初中化学分子和原子说课稿 初中化学分子和原子说课稿  认真拟定说课稿,是说课取得成功的前提,是教师提高业务素质的有效途径。下面...
传承雷锋精神演讲稿 传承雷锋精神演讲稿(通用10篇)  雷锋的身上有一种抹不掉的伟大精神,因为他好事做了一火车,不管别人...
小学音乐说课稿《蜗牛与黄鹂鸟... 小学音乐说课稿《蜗牛与黄鹂鸟》范文  作为一位不辞辛劳的人民教师,时常会需要准备好说课稿,说课稿有助...
《孔子学琴》说课稿 《孔子学琴》说课稿各位老师:  上午好!  《孔子学琴》,研究专题是《抓住重点词句,提高阅读时效》。...
《细胞器系统内的分工合作》说... 《细胞器系统内的分工合作》说课稿范文  作为一位优秀的人民教师,通常需要准备好一份说课稿,借助说课稿...
九年级《囚绿记》说课稿 九年级《囚绿记》说课稿(通用6篇)  作为一名教师,通常需要用到说课稿来辅助教学,编写说课稿是提高业...
校运动会加油稿100字接力赛 校运动会加油稿100字接力赛力棒带着你摩擦出的火光,暖了我的手,校运动会加油稿100字接力赛。在急讯...