Browse by type

面向 Emby / Jellyfin 的用户、邀请、卡码、Bot 与运维管理面板。
文档中心 · 安装部署 · Docker 部署 · Telegram 频道 · Telegram 群组
Twilight 是一个 Go 后端 + Next.js 前端的 Emby / Jellyfin 用户管理系统,适合需要注册审核、卡码续期、邀请关系、Telegram Bot 绑定、设备/IP 审查和后台运维能力的媒体服务器站点。
当前主线架构:
cmd/twilight,部署目标为 Linux + systemd,也支持 Docker。twilight_state 单行 JSONB,操作审计、运行日志、会话、播放记录、Telegram 花名册与轮询游标使用独立表以降低高频写放大和常驻内存。JSON 仅用于备份导出和旧数据导入。config.toml、config.local.toml 与 TWILIGHT_* 环境变量覆盖。| 模块 | 能力 |
|---|---|
| 用户管理 | 注册、登录、续期、禁用、删除、白名单、邮箱验证、设备与登录记录 |
| 媒体服务 | Emby / Jellyfin 账号绑定、开通、解绑、同步、线路下发、在线状态 |
| 卡码体系 | 注册码、续期码、白名单码、诱饵码、指名码、批量生成、使用审计 |
| 邀请系统管理 | 邀请码、续期邀请、邀请关系树、搜索、统计、管理员审查 |
| Telegram | Bot 绑定、通知、换绑审核、群组成员审查、自定义命令与开发者模式沙箱 |
| 求片系统 | TMDB / Bangumi 搜索、库存检查、用户提交、管理员审核、外部回调 |
| 安全中心 | 操作审计、实时日志、违规风控、设备/IP 审查入口、安全配置管理 |
| 运维后台 | 管理导航、配置热重载、数据库备份/恢复/迁移、调度任务、Git 更新 |
git clone https://github.com/Prejudice-Studio/Twilight.git
cd Twilight
cp deploy/docker/config.docker.toml config.toml
cp deploy/docker/.env.example .env
# 编辑 .env,修改 PostgreSQL 密码、内部密钥等部署项
docker compose up -d --build
# 默认访问
# WebUI: http://localhost:3000
# API: 默认仅在 Docker 网络内开放,由 WebUI 代理访问
首次初始化前,在 config.toml 任意结构块中临时写入 setup_mode = true 或 SetupMode = true,再打开 WebUI。若系统没有用户且没有管理员配置,会进入初始化向导。向导会创建首个管理员、写入 [Admin].usernames 与基础配置;Emby、Telegram 和邮箱等非必要项可以跳过,稍后在对应管理页继续完善。完成后初始化标记会从主配置中移除,入口会永久关闭。
完整说明见 Docker 部署。
生产部署建议使用 Linux + systemd + Nginx / HTTPS + PostgreSQL:
go build -o bin/twilight ./cmd/twilight
sudo bash deploy/setup-systemd.sh --dry-run
sudo bash deploy/setup-systemd.sh
完整流程见 安装部署。
后端:
gofmt -w ./cmd ./internal
go test ./...
go build -o bin/twilight ./cmd/twilight
go run ./cmd/twilight api --host 0.0.0.0 --port 5000 --config config.toml --debug
前端:
cd webui
pnpm install --frozen-lockfile
pnpm dev
pnpm lint
pnpm typecheck
pnpm build
更多约定见 开发指南 与 模块化架构与解耦指南。
| 文档 | 说明 |
|---|---|
| 文档中心 | 全部指南、参考文档和功能专题入口 |
| 安装部署 | Linux、systemd、1Panel、Nginx、PostgreSQL 部署 |
| Docker 部署 | Docker / Docker Compose 部署指南 |
| 开发指南 | 目录结构、开发命令、API 与安全规范、发布流程 |
| 模块化架构与解耦指南 | 分层边界、依赖方向、大文件拆分顺序与 review 清单 |
| 安全加固 | 生产安全基线、敏感信息处理和上线检查清单 |
| Go 后端架构与配置 | 后端架构、配置加载、环境变量、Redis、迁移 |
| API 路由索引 | /api/v1 路由清单与鉴权级别 |
| 后端 API 详参 | REST API 规范、认证、错误码、示例 |
| API Key 外部接入 | 第三方集成与权限矩阵 |
| 开发者 JS 沙箱参考 | Telegram Bot 自定义 JS 的内置对象、函数、权限边界与示例 |
| 许可证与二次开发 | 商业使用、修改版开源、网络部署源码提供与署名保留要求 |
| 邮箱验证 | SMTP、验证码、强制绑定、找回密码和邮箱管理 |
| 签到与积分续期 | 每日签到、手动积分续期与到期自动续期规则 |
| 注册码与卡码 | 注册码、续期码、白名单码算法和使用规则 |
| 邀请系统 | 邀请关系管理、级联删除与启停语义 |
| 邀请历史脏数据修复 | 防止断开上下级后被旧关系或旧邀请码占用记录恢复 |
| 求片系统 | 状态流转、活跃队列、管理员审核与外部回调语义 |
| 工单系统 | 双方回复、状态流转、并发限额与类型管理 |
| Telegram Bot 命令 | Bot 命令、权限边界、JS 自定义命令 |
| Bangumi 同步 | Emby Webhook 与 Bangumi Token 配置 |
开发者模式通过仪表盘输入 DEBUGMODE 并二次验证管理员密码开启;再次输入 DEBUGMODE 可关闭。关闭后已保存的 JS 预设和 Telegram 指令配置会保留,但所有 js: / js:preset:<id> 指令及相关 JS 交互会被服务端阻断。JS 沙箱使用 Goja,提供受控 users.*、db.*、interactions.*、exit()、assert()、受限 fetch() 和风险提示;不会暴露原始数据库、敏感配置、Token、密码、Telegram ID 或 Emby ID。完整接口见 开发者 JS 沙箱参考。
setup_mode = true 后使用网页初始化向导,或直接在配置文件中明确指定管理员;普通首个注册用户不会自动成为管理员。提交前建议至少执行:
gofmt -w ./cmd ./internal
go test ./...
cd webui && pnpm lint && pnpm typecheck && pnpm build
涉及架构、权限、配置、审计、缓存或外部副作用的改动,请先阅读 模块化架构与解耦指南。
当前版本采用 GNU AGPL v3 或更高版本,并受 NOTICE 中依据 GNU AGPL 第 7(b) 条声明的署名保留条款约束:
https://github.com/Prejudice-Studio/Twilight。法律文本以 LICENSE 和 NOTICE 为准。详细说明见 许可证与二次开发。已经在旧 MIT 许可证下公开的历史版本不受本次换证追溯影响,历史许可证文本保留于 LICENSES/MIT-legacy.txt。
如果 Twilight 对你有帮助,欢迎点一个 Star。
Made by Prejudice Studio
browse all types & interfaces →
$ claude mcp add Twilight \
-- python -m otcore.mcp_server <graph>