# Pocket ID

Single sign-on server that signs users in with passkeys.

- Replaces: [Okta](https://openlogs.fyi/alternatives/okta)
- Summary: Paid identity and login services, such as Okta.
- Stack: Go (language)
- Deployment: docker_compose
- License: BSD-2-Clause (osi) [source](https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/LICENSE)
- Business model: unknown. The README at the pinned commit does not state a business model, so it stays unknown. ([source](https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/README.md), read 2026-10-22)
- Difficulty: easy. 1 service, 1 volume mount, 1 env value to set, no elevated host access. Heuristic score 1 of 11: easy.
- Requirements: not stated
- Repository: [pocket-id/pocket-id](https://github.com/pocket-id/pocket-id)

## Install

1. Docker with the Compose plugin ([source](https://github.com/pocket-id/website/blob/71182329deb7386342b8293a8aef7055ba2aac4e/src/content/docs/docs/setup/installation.mdx))

   ```text
   A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
   ```

2. Save the compose file as docker-compose.yml ([source](https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/docker-compose.yml))

   ```yaml
   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
   ```

3. Save as .env next to the compose file ([source](https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/.env.example))

   ```dotenv
   # 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
   ```

4. What the compose file check ran with ([source](https://github.com/pocket-id/website/blob/71182329deb7386342b8293a8aef7055ba2aac4e/src/content/docs/docs/setup/installation.mdx))

   ```text
   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.
   ```

5. Start it ([source](https://github.com/pocket-id/website/blob/71182329deb7386342b8293a8aef7055ba2aac4e/src/content/docs/docs/setup/installation.mdx))

   ```bash
   docker compose up -d
   ```

6. Open the app ([source](https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/docker-compose.yml))

   ```text
   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. ([source](https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/docker-compose.yml), checked 2026-10-22)
- The compose file mounts host folders: Host paths mounted into containers: ./data at /app/data (pocket-id). ([source](https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/docker-compose.yml), checked 2026-10-22)

### Signals

Computed from a GitHub snapshot taken 2026-10-22.

- Open issues and pull requests: 103
- Stars: 9669, forks: 342
- Last push: 2026-10-22 (0 days ago)
- Latest release: v2.19.1 on 2026-10-22 (0 days ago)

## Sources

- [Repository: https://github.com/pocket-id/pocket-id](https://github.com/pocket-id/pocket-id)
- [License: https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/LICENSE](https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/LICENSE)
- [Business model: https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/README.md](https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/README.md)
- [Compose file: https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/docker-compose.yml](https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/docker-compose.yml)
- [Install step: https://github.com/pocket-id/website/blob/71182329deb7386342b8293a8aef7055ba2aac4e/src/content/docs/docs/setup/installation.mdx](https://github.com/pocket-id/website/blob/71182329deb7386342b8293a8aef7055ba2aac4e/src/content/docs/docs/setup/installation.mdx)
- [Install step: https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/.env.example](https://github.com/pocket-id/pocket-id/blob/b023bc3d57adbe1f0bf087c3171d7ced58db9991/.env.example)

---
Canonical: https://openlogs.fyi/tools/pocket-id  
Last updated: 2026-10-22
