Pocket ID
Single sign-on server that signs users in with passkeys.
- Replaces
-
Paid identity and login services, such as Okta.
All open-source alternatives to Okta
- Difficulty
-
Difficulty: Easy
1 service, 1 volume mount, 1 env value to set, no elevated host access. Heuristic score 1 of 11: easy.
- Stack
Go (language)
- Deployment
docker_compose
- Requirements
Not stated.
- License
-
BSD-2-Clause(OSI-approved open source)Read from github.com/pocket-id/pocket-id/blob/b023bc3/LICENSE
- Business model
-
Unknown
The README at the pinned commit does not state a business model, so it stays unknown.
Source: github.com/pocket-id/pocket-id/blob/b023bc3/README.md, read on .
- Repository
GitHub stats
- Stars
- 9,669
- Forks
- 342
- Open issues and pull requests
- 103
- Last push
- 2026-10-22
- Latest release
- v2.19.1
- Released
- 2026-10-22
From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as BSD-2-Clause.
Compose file
services:
pocket-id:
image: pocketid/pocket-id:v2 # or ghcr.io/pocket-id/pocket-id:v2
restart: unless-stopped
env_file: .env
ports:
- 1411:1411
volumes:
- "./data:/app/data"
# Optional healthcheck
healthcheck:
test: [ "CMD", "/app/pocket-id", "healthcheck" ]
interval: 1m30s
timeout: 5s
retries: 2
start_period: 10s
From the app's own repository: github.com/pocket-id/pocket-id/blob/b023bc3/docker-compose.yml.
Compose file from the app repository.
Install
- Docker with the Compose plugin (github.com/pocket-id/website/blob/7118232/src/content/docs/docs/setup/installation.mdx)
A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
- Save the compose file as docker-compose.yml (github.com/pocket-id/pocket-id/blob/b023bc3/docker-compose.yml)
Use the compose file shown above.
- Save as .env next to the compose file (github.com/pocket-id/pocket-id/blob/b023bc3/.env.example)
# See the documentation for more information: https://pocket-id.org/docs/configuration/environment-variables # These variables must be configured for your deployment: APP_URL=https://your-pocket-id-domain.com # Encryption key (choose one method): # Method 1: Direct key (simple but less secure) # Generate with: openssl rand -base64 32 ENCRYPTION_KEY= # Method 2: File-based key (recommended) # Put the base64 key in a file and point to it here. # ENCRYPTION_KEY_FILE=/path/to/encryption_key # These variables are optional but recommended to review: TRUST_PROXY=false MAXMIND_LICENSE_KEY= PUID=1000 PGID=1000 - What the compose file check ran with (github.com/pocket-id/website/blob/7118232/src/content/docs/docs/setup/installation.mdx)
The compose file check ran together with .env.example from the same commit, saved as .env. The folder held only these files. The installation guide tells the reader to download docker-compose.yml and .env.example (saved as .env), set the address and an encryption key in .env and run docker compose up -d.
- Start it (github.com/pocket-id/website/blob/7118232/src/content/docs/docs/setup/installation.mdx)
docker compose up -d - Open the app (github.com/pocket-id/pocket-id/blob/b023bc3/docker-compose.yml)
Open http://localhost:1411. The compose file publishes host port 1411 for the pocket-id service.
Compose file check: config_ok on 2026-10-22.
Gotchas and maintenance
Gotchas
- The compose file publishes host ports. Host ports: 1411 (pocket-id). A port without a host address listens on all host network interfaces. (github.com/pocket-id/pocket-id/blob/b023bc3/docker-compose.yml, checked 2026-10-22)
- The compose file mounts host folders. Host paths mounted into containers: ./data at /app/data (pocket-id). (github.com/pocket-id/pocket-id/blob/b023bc3/docker-compose.yml, checked 2026-10-22)
Signals
- Open issues and pull requests: 103
- Last push: 2026-10-22 (0 days before this page was built)
- Latest release: v2.19.1 on 2026-10-22 (0 days before this page was built)