Caddy2学习笔记——Caddy2反向代理docker版本的DERP中继服务器

2023-11-17

一、个人环境概述

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

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

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

  4. 我在云主机上安装了一个docker版本的headscale。通过caddy反向代理后的地址是:https://head.hotgirl.com。具体参看教程:Caddy2反向代理docker版本的headscale

二、部署docker环境

具体参看教程:Caddy2反向代理docker版本的headscale 的第二部分内容。

三、指定DERP中继服务器的域名

  1. 已知
    我的云主机是公网ip,地址为:43.126.100.78;我备案好的域名是:hotgirl.com 。我在云主机上安装了一个docker版本的headscale。通过caddy反向代理后的地址是:https://head.hotgirl.com
  2. 解析
    添加一个A记录,把 “https://derper.hotgirl.com” 解析到云主机的公网ip43.126.100.78。 “https://derper.hotgirl.com” 这个地址作为中继服务器的服务地址。

四、开放云服务器端口

  1. 指定DERP端口
    DERP中继服务器需要一个tcp端口,这个端口可以自定义,我这里就定为:15489。然后,需要在你的云服务器的防火墙,放行 15489 这个端口。
firewall-cmd --add-port=15489/tcp --permanent

#重启防火墙
firewall-cmd --reload
  1. 配置安全组规则
    在云主机的“配置安全组规则” 中,手动添加上 15489 端口:
    在这里插入图片描述

五、docker版本的DERP中继服务器安装

  1. 创建目录
#创建DERP中级服务器根目录
mkdir -p /docker/derp
  1. 创建docker-compose.yaml文件
    首先 cd /docker/derp 进入derp这个目录,创建docker-compose.yaml文件,并加入以下代码:
version: "3"
services:
  derper:
    container_name: derper
    image: fredliang/derper
    restart: always
    ports:
      - 3478:3478/udp
      - 15489:15489
    environment:
      DERP_DOMAIN: derper.hotgirl.com
      DERP_ADDR: ":15489"
  1. 创建容器
    cd到“/docker/derp”这个目录下,执行“docker-compose up -d” 命令。
cd /docker/derp

docker-compose up -d

六、Caddy2反向代理DERP中继服务器

根据我前面的文章 Caddy2的安装、部署和编译小白教程 这篇文章中讲解的,修改Caddyfile这个文件:

vim /etc/caddy/Caddyfile

然后添加下面代码:

#Headscale
#中继服务器
derper.hotgirl.com {
        tls {
               get_certificate tailscale
        }
        reverse_proxy  http://172.17.0.1:15489{
        }
}

然后重启下caddy

systemctl reload caddy

如果 https://derper.hotgirl.com 打开后显示如下图,则说明中继服务器部署成功!
在这里插入图片描述

七、将中继服务器加入到headscale中

  1. 创建derp.yaml文件
# /etc/headscale/derp.yaml
regions:
  902:
    regionid: 902
    regioncode: sch
    regionname: Home Sichuan 
    nodes:
      - name: 902a
        regionid: 902
        hostname: 'derper.hotgirl.com'
        ipv4: ''
        stunport: 3478
        stunonly: false
        derpport: 443

上面的derp.yaml文件中,902 、902a 根据需要改成自己的regionid,总共四个地方,要改统一改掉。hostname就填写第六步中反代的中继服务器地址。

  1. 移动derp.yaml
    上一步骤的derp.yaml文件创建好后,放入到headscale的config文件夹,和config.yaml同级。如果你参照我的这篇 Caddy2反向代理docker版本的headscale 文章,就知道config.yaml和derp.yaml 都在 /docker/headscale/config 这个目录内。
  2. 修改headscale的配置文件
    进入headscale的配置文件目录( /docker/headscale/config ),打开config.yaml,修改如下:
# DERP is a relay system that Tailscale uses when a direct
# connection cannot be established.
# https://tailscale.com/blog/how-tailscale-works/#encrypted-tcp-relays-derp
#
# headscale needs a list of DERP servers that can be presented
# to the clients.
derp:
  # List of externally available DERP maps encoded in JSON
  urls:
    - https://controlplane.tailscale.com/derpmap/default

  # Locally available DERP map files encoded in YAML
  #
  # This option is mostly interesting for people hosting
  # their own DERP servers:
  # https://tailscale.com/kb/1118/custom-derp-servers/
  #
  paths:
    - /etc/headscale/derp.yaml
  #paths: []

  # If enabled, a worker will be set up to periodically
  # refresh the given sources and update the derpmap
  # will be set up.
  auto_update_enabled: true

  # How often should we check for DERP updates?
  update_frequency: 24h

上面的代码路径 /etc/headscale/derp.yaml ,是容器内的路径,根据我的这篇 Caddy2反向代理docker版本的headscale 文章,回顾下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

可以看出来,容器内路径“/etc/headscale” 是映射到了服务器路径 “/docker/headscale/config” ,所以我们只需把derp.yaml放入“/docker/headscale/config” 路径内,并文件名对应即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Caddy2学习笔记——Caddy2反向代理docker版本的DERP中继服务器 的相关文章

  • Linux配置了环境变量JAVA仍然是openjdk

    问题描述 不使用openjdk 使用jdk 下载完后 也配置了环境变量 反复检查 etc profile bashrc 均没有错误 但是java version仍旧是openjdk 解决方案 需要删除 usr bin下的java文件
  • 趣图:太真实,程序员调 Bug 的写照

    点击上方公众号快速关注 不错过趣图 程序员调 Bug 的样子 非常真实 动图原作者是 我的邻居全是猫 网友评论 中国有圣人 哈哈哈 太形象了 最后干脆撂挑子不干了 破罐破摔了 她叫小明 所以发明回溯这个超能力的这个公司应该每年花一天专门纪念
  • GPT时代,是否还愿意将你的代码开源呢?

    日常 只是偶发的想法 仅供讨论 GPT是生成式AI 生成式的前提也是基于大量的学习资源 如果你的代码开源或者进入到大模型的学习库 GPT的能力可以迅速学习并掌握你的代码 GPT可以将你的代码提供给其他人 这个过程基本没有任何成本 也无需遵循

随机推荐

  • 安卓实现登录与注册界面

    使用Intent与Bundle传递数据 登录界面login xml 1 使用Relativelayout相对布局
  • canvas绘制随机颜色的柱形图

  • mysql修改表的编码为utf-8,解决插入中文乱码

    在创建mysql的表中如果没有指定编码默认为Iatin1 这个时候插入中文就会报错 需要修改表的编码为utf 8 修改表的编码的sql语句为在Alter table emp convert to character set utf8 这样就
  • Error: Rpmdb checksum is invalid: pkg checksums

    从字面意思判断是rpm库校验失败或者损坏 yum clean all yum makecache 搞定 经查询 RUN rpm rebuilddb命令可以一条条修复rpm 还是我的方法好
  • 数据软件分析(一)——静态分析

    基于恶意科学的数据软件分析 将学习本书的过程作记录分享 数据科学是一个不断增长的算法工具集合 可以让我们通过使用统计学 数学和巧妙的统计数据可视化技术来理解和预测数据 一般来说 数据科学有三个组成部分 机器学习 数据挖掘和数据可视化 第一章
  • 从零开始实现基于go-zero框架的微服务电商项目(二)——User服务的基础搭建

    从零开始实现基于go zero框架的微服务电商项目 二 User服务的基础搭建 项目地址 liuxianloveqiqi XianShop 使用go zero搭建的电商项目 github com API 首先在api包下新建user api
  • SQL中字符串截取、连接、替换等函数的用法

    一 SQL中SUBSTRING函数的用法 1 功能 返回字符 二进制 文本或图像表达式的一部分 2 语法 SUBSTRING expression start length 3 QL 中的 substring 函数是用来抓出一个栏位数据中的
  • OpenVSwitch简介

    本文主要介绍Open VSwitch 虚拟交换机的概述内容 阅读本文可以对OVS Open VSwitch 有一个大致的了解 那么本文主要回答了这样几个问题 1 虚拟交换机是什么 干什么 2 虚拟网络和OVS 3 OVS的组件有哪些 4 使
  • 华为OD德科面试+机试记录

    一 机试 6 25 三道编程题 难度偏中 由于时间久远 只记得其中两道题目 1 找车位 动态规划 2 题目不记得了 后面如果找到会补充 双指针 3 高效的任务规划 动态规划 第一题和第二题是做出来了 第三题做出来一点点 当时时间不够 没想出
  • ATT&CK - 入门

    20200922 0 引言 这篇文章记录ATT CK的一些材料阅读 不过题目没有非常明确 因为这部分仅仅是记录了一篇文章 不过这篇文章是一系列文章的第一小节 大题目就是Getting Started的部分 所以 这篇文章就命名为入门 1 A
  • matlab运行代码计时

    tic 此处写的是你自己的代码 times toc disp times
  • 链表查重(递归实现)

    链表查重 递归实现 最开始想到的递归方法 初步估计效率不会太高 但是代码比较容易理解 思路 现在有一个无序的链表 在不清楚元素个数的情况下 无法常规的迭代实现查重 迭代也可以做 且效率较高 我首先想到是否可用递归实现 递归的思路是 从表头元
  • 对数损失和交叉熵损失

    从上述的表达式中看 两者的损失函数本质是一样的 但是这里需要注意的是通常情况下 这两种损失函数所对应的上一层结构不同 log loss经常对应的是Sigmoid函数的输出 用于二分类问题 而cross entropy loss经常对应的是S
  • Linux c获取任意路径的硬盘使用情况

    没有什么好说的 其实就是获取硬盘的statfs信息结构 代码如下 include
  • 利用opencv检测移动的物体----mog2()

    检测移动的物体 opencv具有一个函数是mog2 参考链接 https www jb51 net article 143527 htm
  • ​TinyLlama-1.1B:从零开始训练一个精悍的语言模型

    PaperWeekly 原创 作者 StatNLP 单位 新加坡科技设计大学 TinyLlama 项目旨在在 3 万亿 tokens 上进行预训练 构建一个拥有 11 亿参数的 Llama 模型 经过精心优化 我们 仅 需 16 块 A10
  • java-性能&故障分析工具

    java 性能 故障分析工具 突然想起了 对HR小姐姐的承诺 你要是问我是不是为了福利 我是打死不会承认的 我们公司的技术栈以java居多 那就介绍一下之前自己写的一个性能 故障分析工具吧 也希望能对公司的java开发者有一点点帮助吧 居然
  • makefile是如何自动生成的

    GNU make允许将一个软件项目的代码分开放在不同的源文件里 有改动的时候可以只对改动的文件重新编译 然后重新连接 这种编译管理方法提高了生成目标的效率 make要调用一个makefile文件来实现 Makefile的编写是使用make的
  • 微信html5活动页面制作,完整的微信H5活动页面设计规范

    微信火了H5的专题页面设计也越来越多了 经常有朋友问H5专题设计按什么尺寸来做 有没有统一的规范 这里就给大家分享一套非常完整的关于微信H5活动页面设计的UI视觉设计规范教程 希望对那些刚刚从事微信H5界面设计的小伙伴们提供一些帮助 微信H
  • Caddy2学习笔记——Caddy2反向代理docker版本的DERP中继服务器

    一 个人环境概述 本人拥有一个国内云服务商的云主机和一个备案好的域名 通过caddy2来作为web服务器 我的云主机系统是Ubuntu 我的云主机是公网ip 地址为 43 126 100 78 我备案好的域名是 hotgirl com 后面