28
这个用户还没有留下简介。
回复讨论
0
登录后可参与回复讨论。
当前还没有回复,欢迎成为第一个参与讨论的人。
飞牛 OS 部署操作要点

目录结构
在文件管理创建路径 /vol1/1000/docker/rhex/,内部新建 Rhex、pg-data、redis-data、uploads 四个文件夹

启动服务
飞牛 Docker-Compose 新建项目,项目路径填 /vol1/1000/docker/rhex,粘贴 yml 后创建启动
注意路径改成自己的,多存储空间需要改
tsx-app-environment: &app-environment
DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@postgres:5432/${POSTGRES_DB:-bbs}?schema=public
REDIS_URL: redis://redis:6379
REDIS_PASSWORD: ${REDIS_PASSWORD:-Redis@123}
REDIS_DB: ${REDIS_DB:-0}
x-app-service: &app-service
image: ghcr.nju.edu.cn/lovedevpanda/rhex:latest
pull_policy: always
init: true
env_file:
- .env
volumes:
- /vol1/1000/docker/rhex/uploads:/app/uploads
- /vol1/1000/docker/rhex/addons:/app/addons
services:
postgres:
image: postgres:18
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-bbs}
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
TZ: ${TZ:-Asia/Shanghai}
volumes:
- postgres_data:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-bbs}"]
interval: 10s
timeout: 5s
retries: 10
start_period: 10s
redis:
image: redis:latest
restart: unless-stopped
command:
- sh
- -c
- |
set -eu
if [ -n "$${REDIS_PASSWORD:-}" ]; then
exec redis-server --appendonly yes --requirepass "$${REDIS_PASSWORD}"
fi
exec redis-server --appendonly yes
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD:-Redis@123}
volumes:
- redis_data:/data
healthcheck:
test: ["CMD-SHELL", "if [ -n \"$${REDIS_PASSWORD:-}\" ]; then redis-cli -a \"$${REDIS_PASSWORD}\" --no-auth-warning ping; else redis-cli ping; fi"]
interval: 10s
timeout: 5s
retries: 10
start_period: 5s
setup:
<<: *app-service
restart: on-failure
environment: *app-environment
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
command: ["pnpm", "run", "setup:prod"]
postgres-backup:
image: postgres:18
profiles:
- backup
restart: "no"
depends_on:
postgres:
condition: service_healthy
environment:
POSTGRES_DB: ${POSTGRES_DB:-bbs}
POSTGRES_USER: ${POSTGRES_USER:-postgres}
PGPASSWORD: ${POSTGRES_PASSWORD:-postgres}
TZ: ${TZ:-Asia/Shanghai}
volumes:
- /vol1/1000/docker/rhex/backups:/backups
command:
- sh
- -c
- |
set -eu
mkdir -p /backups
pg_dump -h postgres -U "$${POSTGRES_USER:-postgres}" -d "$${POSTGRES_DB:-bbs}" -Fc -f "/backups/rhex-$$(date +%Y%m%d-%H%M%S).dump"
web:
<<: *app-service
restart: unless-stopped
stop_grace_period: 30s
environment:
<<: *app-environment
HOSTNAME: ${HOSTNAME:-0.0.0.0}
PORT: ${PORT:-3000}
depends_on:
postgres:
condition: service_healthy
restart: true
redis:
condition: service_healthy
restart: true
setup:
condition: service_completed_successfully
ports:
- "4500:3000"
command: ["pnpm", "run", "start"]
worker:
<<: *app-service
restart: unless-stopped
stop_grace_period: 30s
environment:
<<: *app-environment
INTERNAL_REVALIDATION_ORIGIN: ${INTERNAL_REVALIDATION_ORIGIN:-http://web:3000}
depends_on:
postgres:
condition: service_healthy
restart: true
redis:
condition: service_healthy
restart: true
setup:
condition: service_completed_successfully
command: ["pnpm", "run", "worker"]
volumes:
postgres_data:
redis_data:
.env文件内容
ip 改成自己的 其它信息 默认也可
tsTZ=Asia/Shanghai
POSTGRES_DB=rhex_db
POSTGRES_USER=rhex_user
POSTGRES_PASSWORD=Rhex@DbPass1235555
REDIS_PASSWORD=Redis@12344444
REDIS_DB=0
PORT=3000
# 站点访问地址(你的NAS内网IP+4500端口)
SITE_URL=http://10.10.10.22:4500
APP_URL=http://10.10.10.22:4500
SESSION_SECRET=rhex-fnos-2026-random-secret-abc123xyz78944444
CAPTCHA_SECRET_KEY=rhex-captcha-key-nas-9876543215555