Pocket ID
Pocket ID 是一款轻量级的 OpenID Connect(OIDC)提供者,仅支持基于 passkey 的身份认证(无密码),适合自托管、隐私优先的场景。
主要特性包括:
- Passkey 登录:完全无密码认证,支持 WebAuthn,例如 YubiKey 或浏览器内置 passkey。
- 灵活注册策略:支持管理员手动创建用户、生成注册链接或开放注册。
- LDAP 同步、REST API 管理、审计日志、邮件提醒、深色/浅色模式等。
推荐使用 Docker Compose 快速部署。官方文档明确指出 HTTPS 要求,否则无法使用 passkey 功能。
环境变量说明
必填配置(MUST change)
变量名 | 说明 |
---|---|
APP_URL |
实例访问地址,须为 HTTPS(例如:https://auth.example.com ) |
TRUST_PROXY |
启用代理支持,设为 true 或设置 CIDR 段,如 192.168.0.0/24 ,视部署而定。 |
ENCRYPTION_KEY |
用于加密敏感数据,应使用 openssl rand -base64 32 生成 |
默认设置(一般无需更改)
变量名 | 默认值 | 说明 |
---|---|---|
HOST |
0.0.0.0 |
容器监听接口 |
PORT |
9000 |
容器监听端口 |
PUID / PGID |
1000 |
容器内部运行的用户/组 ID |
DB_PROVIDER |
sqlite |
当前仅支持 SQLite 或 Postgres(根据需求选) |
DB_CONNECTION_STRING |
file:data/pocket-id.db |
SQLite 存储路径 |
UPLOAD_PATH |
data/uploads |
用于用户上传内容 |
KEYS_STORAGE |
database |
passkey 与内部密钥存储方式 |
可选配置
还可配置:MaxMind GeoIP(需许可证)、LDAP 参数、审计日志设置、邮件通知、SMTP 参数等,详见官方文档:
官方环境变量配置说明
使用说明
默认通过 Traefik(或其他 HTTPS 反向代理)暴露服务,无需直接映射容器端口。
首次访问 https://<your-domain>/login/setup
页面设置管理员账户和第一个 passkey。
运行后用户只能通过 passkey 登录,且必须使用 HTTPS 环境。
数据目录结构
所有数据持久化在宿主机 ./data
:
pocket-id.db
:SQLite 数据库文件uploads/
:用户上传存储
(若使用 PostgreSQL,请按照 CONNECTION_STRING 覆盖配置)