跳到主要内容

部署面板

我们目前只提供 docker compose 部署方式。当然如果你愿意,你也可以部署到 k8s 上。

安装 Docker

curl -fsSL https://get.docker.com | bash

如果你的机器在国内:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

使用 Docker Compose 部署

复制以下内容到 compose.yaml 文件中:

compose.yaml
services:
caddy:
image: caddy
cap_add:
- NET_ADMIN
container_name: caddy
restart: always
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
ports:
- 80:80
- 443:443
db-migrate:
image: relayx/db-migrate
container_name: db-migrate
env_file:
- .env
depends_on:
mysql:
condition: service_healthy
relayx:
image: relayx/backend
container_name: backend
restart: always
env_file:
- .env
depends_on:
redis:
condition: service_healthy
mysql:
condition: service_healthy
db-migrate:
condition: service_completed_successfully
worker:
image: relayx/backend
container_name: worker
restart: always
env_file:
- .env
command: ["./relayx-worker"]
depends_on:
redis:
condition: service_healthy
mysql:
condition: service_healthy
db-migrate:
condition: service_completed_successfully
web:
image: relayx/web
container_name: web
restart: always
env_file:
- .env
depends_on:
- relayx
redis:
image: redis
container_name: redis
restart: always
volumes:
- redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
mysql:
image: mysql
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: relayx
restart: always
volumes:
- mysql:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
volumes:
redis:
mysql:
caddy_data:
caddy_config:

准备环境变量文件 .env,放在和 compose.yaml 同级目录下,内容如下:

.env
DATABASE_URL="mysql://root:changeme@mysql:3306/relayx"
REDIS_URL="redis://redis:6379"
# 替换成你自己的域名
SITE_URL="https://www.relayx.cc"
# 替换成你自己的 StackAuth 服务地址
STACK_API_URL="https://api.stack-auth.com"
# 替换成你自己的 StackAuth 项目 ID
STACK_PROJECT_ID="xxx"
# 替换成你自己的 StackAuth 服务密钥
STACK_SECRET_SERVER_KEY="xxx"
# 替换成你自己的 StackAuth 客户端密钥
STACK_PUBLISHABLE_CLIENT_KEY="xxx"
# 替换成你自己的 Telegram 机器人 token
TELEGRAM_BOT_TOKEN="xxx"
API_URL="http://relayx:3000"

准备 Caddyfile 文件,放在和 compose.yaml 同级目录下,内容如下:

Caddyfile
# 替换为你的域名
www.your-domain.com {
reverse_proxy web:3000
}

启动服务:

docker compose up -d

查看所有服务正常启动:

docker compose ps

docker-compose-ps

查看日志无异常:

docker compose logs -f

docker-compose-logs

配置 HTTPS 和 websocket 支持

一般情况,你的服务器会通过域名访问,所以你需要配置 HTTP 反向代理并且配置 HTTPS。

目前常用的反向代理有 nginxcaddy,如果你使用我们提供的 compose.yaml,则不需要任何配置,因为里面自带的 caddy 会自动处理 HTTPS 证书和 websocket 支持,只需要你的域名已经解析到你的服务器 IP。

如果你使用外部的 caddy 或者 nginx 作为反向代理,你需要做一些调整。

  1. compose.yaml 里面的 caddy 服务需要删除,因为端口 80 和 443 会被占用。
  2. 暴露 web 服务的 3000 端口。
compose.yaml
services:
web:
ports:
- 3000:3000

配置 nginx 支持

首先需要在 nginx.conf 中添加 websocket 支持的映射配置:

nginx.conf
http {
# websocket 支持配置
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

# ... 其他配置
}

然后在你的站点配置中添加 websocket 支持:

site.conf
server {
listen 80;
listen 443 ssl http2;
server_name your-domain.com;

# SSL 配置
ssl_certificate /path/to/your/cert.pem;
ssl_certificate_key /path/to/your/key.pem;

location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# websocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}

恭喜你,面板部署成功!现在你可以通过 https://your_domain.com 访问面板了。

升级

我们会频繁更新面板和修复 bug,请始终保持最新版。你的数据是安全的,不会丢失。

docker compose up -d --pull always

停止服务

docker compose down

删除服务以及数据库数据

危险

这个命令会删除所有数据,请谨慎执行。

docker compose down -v

付费部署支持

如果你需要付费部署支持,请通过 Telegram 联系我们。

你只需要准备域名和服务器,我们会协助你在 24 小时内完成部署,包括域名解析、SSL 证书、HTTP 反向代理、面板部署、配置等。

费用:100 USDT / 次