跳转至

部署

准备服务器

最低建议:

  • Linux 服务器一台
  • Docker 与 Docker Compose
  • 一个能访问服务器的域名,例如 https://img.example.com
  • 可选:Nginx、Caddy 或 Traefik 做 HTTPS 反向代理

如果只在内网使用,也可以直接暴露 http://服务器IP:8000

克隆并创建配置

git clone <your-repo-url> feishu-image-host
cd feishu-image-host
cp .env.example .env

编辑 .env,至少修改这些值:

APP_ENV=prod
APP_DOMAIN=https://img.example.com
APP_SECRET_KEY=替换成随机长字符串

INIT_ADMIN_NAME=admin
INIT_ADMIN_PASSWORD=替换成强密码
INIT_ADMIN_EMAIL=admin@example.com

IMAGE_HOST_FEISHU_APP_ID=飞书应用 App ID
IMAGE_HOST_FEISHU_APP_SECRET=飞书应用 App Secret
IMAGE_HOST_PUBLIC_BASE_URL=https://img.example.com

生产环境不要使用示例密码。APP_SECRET_KEYTWO_FACTOR_ENCRYPTION_KEY 都应使用随机长字符串。

启动服务

docker compose up -d --build

默认容器监听宿主机 8000 端口:

http://服务器IP:8000

容器会挂载:

  • ./data:/app/data:SQLite 数据库和图片缓存
  • ./logs:/app/logs:应用日志

容器启动时会:

  • 构建前端静态产物
  • 检查并备份现有 SQLite 数据库
  • 执行 alembic upgrade head
  • 启动 FastAPI,并由后端托管前端页面

配置 HTTPS 反向代理

以 Nginx 为例:

server {
    listen 80;
    server_name img.example.com;

    client_max_body_size 20m;

    location / {
        proxy_pass http://127.0.0.1:8000;
        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;
    }
}

建议在反向代理层配置 HTTPS 证书,并把 .env 中的 APP_DOMAINIMAGE_HOST_PUBLIC_BASE_URL 设置为 HTTPS 域名。

启用内置文档

默认不暴露内置文档站点。需要启用时,在 .env 中设置:

ENABLE_DOCS=true

重新构建并启动容器后,访问:

http://服务器IP:8000/mkdocs/docs/