DockWallet Get Started

Self-Hosted Digital Wallet

Your passes.
Your server.

DockWallet stores and manages your Apple Wallet passes on infrastructure you control. No cloud subscriptions. No third-party access. Deploy in minutes with Docker.

Boarding Pass

SFO → ZRH

Flight

DW 042

Passenger

C. Heinrich

Seat

14A

Gate

B12

Stored on DockWallet · dockwallet.app

Self-Hosted
Synced
Scroll

100%

Self-Hosted

Multi-User

Admin Control

.pkpass

Native Format

Android

Sync App

What you get

Everything you need.
Nothing you don't.

Docker Deployment

One docker compose up and you're running. Backend, frontend, and PostgreSQL, all wired together and ready.

Multi-User & Admin

Create accounts for your household or team. The admin dashboard gives you full visibility over users, passes, and system health.

MFA & Passkeys

Secure accounts with multi-factor authentication or hardware passkeys. Your passes are private by design.

Flexible Import

Upload .pkpass files directly, import via URL, or scan a QR code with your device camera. All roads lead to your wallet.

Real Barcodes

QR, Aztec, PDF417, and Code128 — rendered natively from your pass data, always accurate and ready to scan.

Android Sync

A dedicated Android app connects to your DockWallet instance and keeps passes synced across all your devices automatically.

Setup

Up in under a minute.

DockWallet is designed for self-hosters. No cloud accounts, no config complexity — point it at your server and go.

1

Create a compose file

Copy the docker-compose.yml from the repository into a directory on your server.

2

Create a .env file

Set DB_USER, DB_PASSWORD, and JWT_SECRET. The database healthcheck ensures the backend only starts when Postgres is ready.

3

Launch

Run the command. Log in with the default admin credentials and start adding passes.

docker-compose.yml

services:
  frontend:
    image: cheinisch/dockwallet-frontend:latest
    restart: unless-stopped
    ports:
      - "8080:80"
    depends_on:
      - backend
  backend:
    image: cheinisch/dockwallet-backend:latest
    restart: unless-stopped
    environment:
      DB_HOST: db
      DB_NAME: dockwallet
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
      JWT_SECRET: ${JWT_SECRET}
    depends_on:
      db:
        condition: service_healthy
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: dockwallet
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  postgres_data:

.env

DB_USER=dockwallet
DB_PASSWORD=your_secure_password
JWT_SECRET=your_jwt_secret

Terminal

$ docker compose up -d

→ Open http://your-server:8080 · Login: admin@local / admin

Android App

Your wallet, always with you.

The DockWallet Android app connects directly to your self-hosted instance. Passes sync automatically across every device — no intermediary, no data leaving your infrastructure.

  • Connects to any DockWallet server by URL
  • Automatic background sync keeps passes current
  • Full barcode display for boarding and events
  • Available on GitHub: cheinisch/dockwallet-app
Android App Repository
9:41

DockWallet

3 passes synced

Boarding

SFO → ZRH

Event

WWDC 2025

Loyalty

Coffee Card

Open Source

Built in the open.

DockWallet is fully open source. Inspect it, contribute to it, or run it on air-gapped hardware. Self-hosting means you're in control — and the code proves it.