静看光阴荏苒
不管不顾不问不说也不念

Docker部署Xboard面板+Hysteria2节点

介绍

使用Docker可以更快速、方便的部署。如需纯手动部署可参考:https://lala.im/8953.html

安装Xboard

系统Debian12,安装需要用到的包:

apt -y update
apt -y install curl nginx python3-certbot-nginx

安装Docker:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

新建目录以及docker-compose文件:

mkdir -p /opt/xboard && cd /opt/xboard && nano docker-compose.yml

写入如下配置:

version: '3.8'
services:
  xboard:
    image: ghcr.io/cedar2025/xboard:latest
    container_name: xboard
    restart: unless-stopped
    environment:
      - docker=true
    ports:
      - "127.0.0.1:7001:7001"
    volumes:
      - ./.env:/www/.env
    depends_on:
      - mariadb
      - redis

  mariadb:
    image: mariadb:10.11
    container_name: mariadb
    restart: unless-stopped
    environment:
      - MARIADB_ROOT_PASSWORD=password // 设置你的数据库ROOT密码
      - MARIADB_DATABASE=xboard // 数据库名
    volumes:
      - ./mariadb-data:/var/lib/mysql

  redis:
    image: redis:7.0-alpine
    container_name: redis
    restart: unless-stopped
    volumes:
      - ./redis-data:/data

[重要]在/opt/xboard目录下新建一个空白的.env文件:

touch .env

安装Xboard:

docker compose run -it --rm xboard php artisan xboard:install

安装过程如图所示:

[备注1] 不要启用内置的SQLite数据库和Redis!

[备注2] 数据库地址填写:mariadb

[备注3] Redis地址填写:redis

安装完成后会有类似提示,务必记住管理员密码和后台地址:

数据库导入完成
开始注册管理员账号
🎉:一切就绪
管理员邮箱:example@lala.im
管理员密码:hidden
访问 http(s)://你的站点/ac2762c1 进入管理面板,你可以在用户中心修改你的密码。

接下来启动Xboard:

docker compose up -d

配置Nginx反代:

nano /etc/nginx/sites-available/xboard

写入如下配置:

server {
    listen 80;
    server_name xboard.example.com;
    client_max_body_size 0;

    location / {
        proxy_pass http://127.0.0.1:7001;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header Scheme $scheme;
        proxy_set_header Server-Protocol $server_protocol;
        proxy_set_header Server-Name $server_name;
        proxy_set_header Server-Addr $server_addr;
        proxy_set_header Server-Port $server_port;
    }
}

启用站点:

ln -s /etc/nginx/sites-available/xboard /etc/nginx/sites-enabled/xboard

签发SSL证书:

certbot --nginx

设置面板通讯密钥、添加权限组、添加订阅、添加节点请参考这篇文章:https://lala.im/8953.html

部署Hysteria2后端

系统Debian12,安装Docker:

apt -y update
apt -y install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

新建目录以及docker-compose文件:

mkdir -p /opt/hysteria-server && cd /opt/hysteria-server && nano docker-compose.yml

写入如下配置,重要的部分都写了注释:

version: '3.8'
services:
  certbot:
    image: certbot/dns-cloudflare:latest
    container_name: certbot
    restart: unless-stopped
    volumes:
      - certbot_etc:/etc/letsencrypt
      - certbot_var:/var/lib/letsencrypt
      - ./cloudflare.ini:/etc/cloudflare.ini
    command: >-
      certonly
      --dns-cloudflare
      --dns-cloudflare-credentials /etc/cloudflare.ini // 存放CloudFlare的API密钥文件
      --email example@lala.im // 你的邮箱
      --agree-tos
      --no-eff-email
      -d *.example.com // 要申请的域名,*代表通配符,多个域名可以使用多个-d参数来指定

  hysteria:
    image: ghcr.io/cedar2025/hysteria:latest
    container_name: hysteria
    restart: unless-stopped
    network_mode: "host" // 使用主机网络
    volumes:
      - certbot_etc:/etc/letsencrypt
      - ./server.yaml:/etc/hysteria/server.yaml

volumes:
  certbot_etc:
  certbot_var:

在/opt/hysteria-server目录下新建cloudflare.ini配置文件:

nano cloudflare.ini

写入如下配置:

dns_cloudflare_api_token = example

CloudFlareAPI申请方法:https://developers.cloudflare.com/fundamentals/api/get-started/create-token/

在/opt/hysteria-server目录下新建server.yaml配置文件:

nano server.yaml

写入如下配置:

v2board:
  apiHost: https://xboard.example.com // Xboard面板地址
  apiKey: panelkey // Xboard面板内设置的通讯密钥
  nodeID: 1 // Xboard面板内的节点ID
tls:
  type: tls
  cert: /etc/letsencrypt/live/example.com/fullchain.pem // 证书路径
  key: /etc/letsencrypt/live/example.com/privkey.pem // 私钥路径
auth:
  type: v2board
trafficStats:
  listen: 127.0.0.1:7653
acl:
  inline:
    - reject(10.0.0.0/8)
    - reject(172.16.0.0/12)
    - reject(192.168.0.0/16)
    - reject(127.0.0.0/8)
    - reject(fc00::/7)

先申请SSL证书:

docker compose run --rm certbot

续签证书可用下面的命令:

docker compose run --rm certbot renew

然后启动后端:

docker compose up -d hysteria

默认情况下,后端会监听在443端口,直到你在面板上添加好了对应的节点,重启后端生效:

docker compose restart hysteria
赞(1)
未经允许不得转载:荒岛 » Docker部署Xboard面板+Hysteria2节点
分享到: 更多 (0)

评论 5

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    :???: 请教下每一步都复制粘贴的为什么安装Xboard这一步就是连不通数据库 :???:

    worker2个月前 (03-06) Google Chrome 122.0.0.0 Google Chrome 122.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 需要你提供日志才能判断出哪里可能出问题了。。

      LALA2个月前 (03-08) Google Chrome 122.0.0.0 Google Chrome 122.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
  2. #2

    克隆完代码 删除了中文注释进docker compose第一次运行无法出现在交互命令行界面里 结果出现在了Log里 但是Log是无交互的。命令行直接执行这行docker compose run -it –rm xboard php artisan xboard:install 是毫无反应… journalctl -xeu docker 毫无改变… 这个组合栈稍稍有点难搞. :razz: :razz:

    alfonzo3周前 (04-05) Google Chrome 123.0.0.0 Google Chrome 123.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
  3. #3

    谢谢博主的教程,能否请教一下遇到以下这个问题怎么解决吗?
    在/opt/hysteria-server目录下运行 docker compose run –rm certbot
    提示:yaml: line 20: did not find expected key

    听歌洗碗6天前 Firefox 124.0 Firefox 124.0 Mac OS X  10.15 Mac OS X 10.15回复

分享创造快乐

广告合作资源投稿