安装部署
环境变量
启动期环境变量速查表
环境变量分两类:
- 启动期变量: 进程启动时读取, 不可热更; 改完必须重启
- 运行时配置: 落
settings表, admin 后台改完即时生效, 不需要重启 (站点信息 / 注册策略 / 邮箱 SMTP / 存储 / 支付 / License 等)
本页只覆盖启动期变量。运行时配置见各功能章节。
完整清单
| 变量 | 默认 | 是否必填 | 说明 |
|---|---|---|---|
LISTEN_ADDR | :8080 | 否 | HTTP 监听地址, 反代场景一般保持 :8080 |
DB_DRIVER | sqlite | 否 | sqlite 或 postgres |
DB_DSN | ./data/imagic.db | 视 driver | SQLite 是文件路径; PG 是连接串 |
REDIS_URL | redis://localhost:6379/0 | 是 | Redis 连接串, ping 不通 fatal |
DATA_DIR | ./data | 否 | 本地图片存储根目录, S3 模式下仍用于挂载 SQLite 等 |
LICENSE_KEY | (空) | Docker 版必填 | Docker 版 JWT, 由销售提供 |
GIN_MODE | release | 否 | release / debug / test, debug 下打路由与请求级日志 |
DB_DSN 详解
SQLite
直接给文件路径, 文件不存在会自动创建:
DB_DSN=./data/imagic.db # 容器内常见
DB_DSN=/var/lib/imagic/db.sqlite # 自定义路径容器化部署时, 该路径所在目录必须挂载为持久卷, 否则容器重启数据丢失。
仓库默认把 ./data/imagic 挂到容器 /app/data (与同 compose 内 redis / postgres
各自的 ./data/redis / ./data/postgres 子目录隔离), 数据库自然落在卷里。
PostgreSQL
两种格式都支持:
# URL 风格 (推荐)
DB_DSN=postgresql://user:pass@host:5432/imagic?sslmode=disable
# KV 风格
DB_DSN=host=db port=5432 user=imagic password=imagic dbname=imagic sslmode=disable常用 sslmode:
disable— 容器内网 / 同 VPC 内网通信require— 公网链路, 仅校验 TLS 握手verify-full— 校验 TLS + 证书 CN, 安全级别最高, 需要 CA 文件
REDIS_URL 详解
redis://[user[:password]@]host[:port][/db]
rediss://... # TLS- 缺省 host=localhost, port=6379, db=0
- 用户名仅 Redis 6 ACL 启用时需要; 绝大多数场景只填密码即可
- TLS 接入云 Redis 时必须用
rediss://
LICENSE 相关
源码版
部署在客户域名下时, 设置:
LICENSE_DOMAIN=app.customer.com启动期 / 心跳期会做 host 比对; 留空表示不做域名校验。
Docker 版
签发 JWT 后塞进环境变量:
LICENSE_KEY=eyJhbGciOiJSUzI1NiIs...LICENSE_KEY 在启动期由后端写入 settings.license.key, 之后 admin 也能通过后台界面替换。
公钥内嵌在二进制内 (server/initapp/keys/public.pem), 私钥严格保留在 license 签发方手里。
运行时配置在哪改
启动后用 admin 账号登录, 进 /admin/settings, 分组覆盖以下大类:
- site: 站点名 / Logo / footer 文案
- register: 注册开关 / 模式 (open / invite / admin) / 默认点数 / 邮箱白黑名单
- email: SMTP 主机 / 凭证 / 发件人 / 是否在注册时验邮箱
- storage: 驱动 (
local/s3) 与对应参数 — 见 图片存储 - alipay: 支付宝凭证、是否开启 QR / Page 模式
- invite: 邀请奖励开关与点数
- license: License Key / Domain (Docker 版)
字段含义见 功能介绍 各章。