跳到主要内容

私有部署

本文档提供使用 Docker 私有部署 TianGong LCA 应用的说明。该设置包括 TianGong LCA Next 应用以及完整的 Supabase 后端。

先决条件

  • DockerDocker Compose
  • Git
  • Docker 至少需要 4GB 可用内存
  • 至少 10GB 可用磁盘空间
  • 基本终端/命令行操作知识

安装

1. 克隆仓库

TODO: 将仓库 URL 替换为你自己的
git clone https://github.com/linancn/tiangong-lca-next.git
cd tiangong-lca-next

2. 配置环境变量

cd docker
cp .env.example .env

编辑 .env 文件以设置你的配置:

重要的配置变量包括:

  • POSTGRES_PASSWORD:为你的 PostgreSQL 数据库设置强密码
  • JWT_SECRET:设置一个安全的 JWT 密钥(至少 32 个字符)
  • ANON_KEYSERVICE_ROLE_KEY:用于 Supabase 认证的 JWT 令牌
  • DASHBOARD_USERNAMEDASHBOARD_PASSWORD:Supabase 仪表板的登录凭据
  • SMTP_*:需要配置邮件设置以启用邮件认证
  • POOLER_TENANT_ID:Pooler 服务的租户 ID

3. 启动服务

# 启动所有服务
docker compose up -d

这将启动以下服务:

  • TianGong LCA Next 应用
  • Supabase 服务(包括 PostgreSQL、认证、REST API、实时、存储等)
  • 辅助服务(如 Vector、Imgproxy 等)

4. 访问应用

在所有服务运行后,你可以访问:

  • TianGong LCA 应用http://localhost:8000

    • 为登录本地部署的TianGong LCA应用,需在.env文件中配置SMTP服务(参考SMTP 服务说明与推荐),并使用SMTP服务发送邮件进行注册认证。
  • Supabase Studiohttp://localhost:54321

    • 使用在 .env 文件中配置的 DASHBOARD_USERNAMEDASHBOARD_PASSWORD 作为用户名和密码 登录。
    DASHBOARD_USERNAME=supabase
    DASHBOARD_PASSWORD=this_password_is_insecure_and_should_be_updated
  • Postgres

    • 用于基于会话的连接(相当于直接连接 Postgres):

      psql 'postgres://postgres.your-tenant-id:your-super-secret-and-long-postgres-password@localhost:5432/postgres'
    • 用于池化的事务连接:

      psql 'postgres://postgres.your-tenant-id:your-super-secret-and-long-postgres-password@localhost:6543/postgres'
  • 关于如何使用 Supabase Studio 和 Postgres 的更多信息,请参阅 Supabase 文档

Docker 服务管理

启动服务

启动 Docker 服务有几种方式:

# 以后台模式启动所有服务
docker compose up -d

# 启动所有服务并在终端显示日志
docker compose up

停止服务

# 停止所有服务,但保留容器
docker compose stop

# 停止所有服务并移除容器
docker compose down

# 停止所有服务、移除容器并删除数据卷(注意:此操作将删除所有数据)
docker compose down -v

重启服务

# 重启所有服务
docker compose restart

检查服务状态

# 列出所有服务及其状态
docker compose ps

# 检查指定服务的详细状态
docker compose ps app

# 查看所有服务的资源使用情况
docker stats

重建服务

如果你修改了应用代码:

# 为 app 服务重建并重启
docker compose up -d --build app

# 重建所有服务
docker compose up -d --build

配置选项

Edge Functions

该设置支持 Supabase Edge Functions,函数存储在 docker/volumes/functions 目录中。

要从外部仓库同步 Edge Functions,请按照以下步骤操作:

# 创建临时目录
mkdir -p temp_repo

# 克隆 Edge Functions 仓库
git clone --depth 1 https://github.com/linancn/tiangong-lca-edge-functions.git temp_repo

# 将 Edge Functions 复制到 Docker 数据卷目录
mkdir -p docker/volumes/functions
cp -r temp_repo/supabase/functions/* docker/volumes/functions/

# 将 Edge Functions 复制到本地 Supabase 目录
cp -r temp_repo/supabase/functions/* supabase/functions/

# 清理临时目录
rm -rf temp_repo

SMTP 服务说明与推荐

TianGong LCA 应用依赖 SMTP 服务发送注册和认证邮件。你需要在 .env 文件中正确配置 SMTP 相关变量,常见变量包括:

  • SMTP_ADMIN_EMAIL:SMTP 管理员邮箱
  • SMTP_HOST:SMTP 服务器地址
  • SMTP_PORT:SMTP 端口(通常为 465/587/25,取决于服务商和加密方式)
  • SMTP_USER:SMTP 登录用户名(通常为邮箱地址)
  • SMTP_PASS:SMTP 登录密码或授权码
  • SMTP_SENDER_NAME:发件人名称

推荐的 SMTP 服务

你可以选择以下常见的 SMTP 服务:

  • 企业微信邮箱(推荐,支持 SSL/TLS,适合企业用户)企业微信邮箱SMTP配置
  • QQ 企业邮箱
  • 阿里云邮箱
  • 163 企业邮箱
  • SendGrid、Mailgun、Amazon SES(国际第三方邮件服务,适合大规模邮件发送)

企业微信邮箱 SMTP 配置示例

以企业微信邮箱为例,.env 文件配置如下:

SMTP_ADMIN_EMAIL=your_account@yourcompany.com
SMTP_HOST=smtp.exmail.qq.com
SMTP_PORT=465
SMTP_USER=your_account@yourcompany.com
SMTP_PASS=your_password_or_auth_code
SMTP_SENDER_NAME=your_account@yourcompany.com

注意:部分邮箱服务(如 QQ、163)需开启“SMTP服务”并使用授权码而非登录密码。请参考对应邮箱服务的官方文档获取详细配置方法。

维护

更新

若要更新服务,请执行:

# 拉取最新镜像
docker compose pull

# 重启服务
docker compose up -d

备份

备份 PostgreSQL 数据库:

# 创建 PostgreSQL 数据库备份
docker exec -t supabase-db pg_dumpall -c -U postgres > backup_$(date +%Y-%m-%d_%H-%M-%S).sql

恢复

从备份恢复数据:

# 停止服务
docker compose down

# 重置数据库卷
rm -rf ./volumes/db/data

# 启动数据库服务
docker compose up -d db

# 等待数据库准备就绪
sleep 10

# 从备份文件恢复
cat your_backup_file.sql | docker exec -i supabase-db psql -U postgres

# 启动所有服务
docker compose up -d

重置环境

若需完全重置环境:

# 运行重置脚本
./reset.sh

此脚本将执行以下操作:

  1. 停止并移除所有容器
  2. 删除所有数据卷
  3. .env 文件重置为默认值

故障排查

常见问题

服务未能启动

检查日志以查看错误信息:

docker compose logs

查看特定服务的日志:

docker compose logs app
docker compose logs db

数据库连接问题

确保数据库正在运行且状态正常:

docker compose ps db

查看数据库日志:

docker compose logs db

查看日志

# 查看所有日志信息
docker compose logs -f

# 查看指定服务的日志
docker compose logs -f app
docker compose logs -f db
docker compose logs -f auth

安全注意事项

对于生产环境部署,请考虑以下安全措施:

  1. 更改默认凭据:更新 .env 文件中所有默认密码和密钥
  2. 使用 HTTPS:配置带 SSL/TLS 的反向代理以确保安全连接
  3. 限制访问:使用防火墙规则限制对服务的访问
  4. 定期备份:实施定期备份策略
  5. 升级更新:保持 Docker 镜像和主机系统处于最新状态

附加资源