54 lines
3.0 KiB
Markdown
54 lines
3.0 KiB
Markdown
## Pocket ID
|
||
|
||
[官网](https://pocket-id.org)|[GitHub 项目](https://github.com/pocket-id/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 参数等,详见官方文档:
|
||
[官方环境变量配置说明](https://pocket-id.org/docs/configuration/environment-variables/)
|
||
|
||
### 使用说明
|
||
|
||
默认通过 Traefik(或其他 HTTPS 反向代理)暴露服务,无需直接映射容器端口。
|
||
首次访问 `https://<your-domain>/login/setup` 页面设置管理员账户和第一个 passkey。
|
||
运行后用户只能通过 passkey 登录,且必须使用 HTTPS 环境。
|
||
|
||
### 数据目录结构
|
||
|
||
所有数据持久化在宿主机 `./data`:
|
||
|
||
- `pocket-id.db`:SQLite 数据库文件
|
||
- `uploads/`:用户上传存储
|
||
(若使用 PostgreSQL,请按照 CONNECTION_STRING 覆盖配置)
|