安装 Selega
Selega 使用 Docker 自托管。所提供的 docker-compose.yml 会启动两个容器——Selega 及其自带的 PostgreSQL——外加一个用于存放数据的卷。你无需另行安装或配置数据库。
- 带有 Compose 插件的 Docker(
docker compose)。 - 一个供 Web 界面使用的主机端口(默认
8088)。 - 用于生产环境:一个带 HTTPS/TLS 的反向代理(Caddy、nginx,或你面板内置的 TLS)。
容器镜像基于 node:22-slim 构建,并内置了 Tesseract OCR(含西班牙语语言包)以及用于处理扫描版 PDF 的 poppler-utils。它以非 root 用户运行。
一分钟安装(Docker)
Section titled “一分钟安装(Docker)”git clone https://github.com/diegoparras/selega.git && cd selegacp .env.example .env # 编辑 POSTGRES_PASSWORD(使用足够强的密码)docker compose up -d --builddocker compose logs selega # 生成的管理员密码会在此处打印(仅一次)# → http://localhost:8088就这么简单:两个容器(selega + selega-db)和一个用于存放数据的卷。
如何获取镜像
Section titled “如何获取镜像”Selega 在每次推送时都会发布到 GHCR,镜像名为 ghcr.io/diegoparras/selega:latest,而 docker-compose.yml 同时也声明了 build: .。因此你既可以从仓库构建,也可以拉取已发布的镜像:
git clone https://github.com/diegoparras/selega.git && cd selegacp .env.example .envdocker compose up -d --build如果你的面板只允许粘贴一份 compose 文件而无法克隆仓库,请使用下面这段仅含镜像的代码块——它会从 GHCR 拉取已发布的镜像:
services: db: image: postgres:16-alpine environment: POSTGRES_USER: selega POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set a strong password} POSTGRES_DB: selega volumes: [ "selega-pg:/var/lib/postgresql/data" ] healthcheck: test: ["CMD-SHELL", "pg_isready -U selega -d selega"] interval: 5s timeout: 3s retries: 12 restart: unless-stopped selega: image: ghcr.io/diegoparras/selega:latest ports: [ "8088:8080" ] environment: SELEGA_ADMIN_EMAIL: ${SELEGA_ADMIN_EMAIL:-admin@selega.local} SELEGA_ADMIN_PASS: ${SELEGA_ADMIN_PASS:-} SELEGA_SECURE_COOKIE: ${SELEGA_SECURE_COOKIE:-0} DATABASE_URL: "postgresql://selega:${POSTGRES_PASSWORD}@db:5432/selega" depends_on: db: { condition: service_healthy } restart: unless-stoppedvolumes: selega-pg:将 .env.example 复制为 .env 并填入真实值。切勿将 .env 提交到 git。
| 变量 | 默认值 | 用途 |
|---|---|---|
POSTGRES_PASSWORD | —(必填) | 数据库密码。请使用足够强的密码。 |
SELEGA_ADMIN_EMAIL | admin@selega.local | 首位超级管理员的用户。 |
SELEGA_ADMIN_PASS | (空) | 留空 → 系统会生成一个密码并在日志中打印一次。 |
SELEGA_SECURE_COOKIE | 0 | 在 HTTPS/TLS 后方时设为 1(会话 cookie 仅通过 HTTPS 发送)。 |
SELEGA_PORT | 8088 | 主机端口(应用在容器内监听 8080)。 |
OPENROUTER_KEY | (空) | 可选的云端 AI 密钥。建议从管理后台加载(以只写方式存储)。 |
POSTGRES_USER / POSTGRES_DB | selega | 数据库用户 / 名称。 |
- 运行
docker compose logs selega(或查看你面板的日志),复制生成的管理员密码。它仅打印一次。 - 使用
SELEGA_ADMIN_EMAIL和该密码登录。此时你即为超级管理员。 - 打开三点菜单(⋮)→ 系统:选择本次安装服务于哪些辖区,并配置各引擎。
- 打开三点菜单(⋮)→ 管理:创建用户(受理员 / 主管 / 审计员 / 管理员)并编辑规则。
在面板上部署
Section titled “在面板上部署”Dokploy、Easypanel、Coolify 和 Portainer 全都支持 Docker Compose。推荐做法是连接这个 GitHub 仓库,让面板替你构建镜像;如果你的面板只接受粘贴的 compose,请使用上面那段仅含镜像的代码块。
唯一必填的变量是 POSTGRES_PASSWORD。请将 SELEGA_ADMIN_PASS 留空,以便 Selega 生成管理员密码并在容器日志中打印一次。当面板提供 TLS 时(Dokploy、Easypanel 和 Coolify 会自动提供),请设置 SELEGA_SECURE_COOKIE=1。
git pull && docker compose up -d --build # 从仓库构建# 或者,使用已发布的镜像:docker compose pull && docker compose up -d生产环境检查清单
Section titled “生产环境检查清单”- TLS:将 Selega 置于带 HTTPS 的反向代理之后,并设置
SELEGA_SECURE_COOKIE=1。 - 在
.env中使用强密钥;切勿提交.env。SELEGA_ADMIN_PASS留空 → 自动生成。 - 关闭 Postgres 端口——在生产环境中不要将
db服务暴露给主机。 - 备份
selega-pg卷——它是合法化记录所在。
容器以非 root 用户运行,配有 CSP 和安全响应头、scrypt 密码哈希、HMAC 会话、登录锁定以及参数化查询。它通过 semgrep、OWASP ZAP、Trivy 和 gitleaks 进行审计。