Docker Setup¶
Run Maxwell's Wallet using Docker for easy deployment.
Quick Start¶
This pulls the latest published image and starts both the frontend (port 3000) and backend (port 3001).
Docker Compose Files¶
| File | Description | Image Source |
|---|---|---|
docker-compose.yaml |
Quick start | Pulls from registry |
docker-compose.dev.yaml |
Development/CI | Builds from source |
docker-compose.demo.yaml |
Demo mode | Pulls from registry |
Custom Data Location¶
To store data in a specific host directory:
docker run -d \
-p 3000:3000 -p 3001:3001 \
-v /path/to/your/data:/data \
ghcr.io/poindexter12/maxwells-wallet
Environment Variables¶
All settings can be supplied via the environment (e.g. in your compose file or
an .env file). The most common ones:
Core¶
| Variable | Default | Description |
|---|---|---|
DATABASE_URL |
sqlite+aiosqlite:////data/wallet.db |
Database connection string (async SQLite by default) |
Authentication¶
| Variable | Default | Description |
|---|---|---|
SECRET_KEY |
change-me-in-production-... |
JWT signing key. Set a long random value in production. |
TOKEN_EXPIRE_HOURS |
168 (1 week) |
How long a login session token stays valid |
See Authentication for the first-run setup and password reset.
AI Assistant¶
The assistant is configured entirely through the environment — nothing is
persisted to the database, and keys are never returned to the browser. Provide a
key for whichever provider you want; the provider auto-detects from the key
present, or set ASSISTANT_PROVIDER to choose explicitly.
| Variable | Default | Description |
|---|---|---|
ANTHROPIC_API_KEY |
(empty) | Enables the assistant using Anthropic models |
OPENAI_API_KEY |
(empty) | Enables the assistant using OpenAI models |
ASSISTANT_PROVIDER |
(auto-detect) | anthropic or openai to force a provider |
ASSISTANT_MODEL |
(provider default) | Optional model override |
If no key is set, the assistant UI simply reports that it is not configured. See the Assistant guide for details.
Demo Mode¶
| Variable | Default | Description |
|---|---|---|
DEMO_MODE |
false |
Block destructive operations and show a demo banner |
DEMO_RESET_INTERVAL_HOURS |
1 |
Hours between demo data resets |
Backups¶
| Variable | Default | Description |
|---|---|---|
BACKUP_DIR |
./data/backups |
Directory for backup files |
BACKUP_RETENTION |
10 |
Number of backups to keep (0 = unlimited) |
BACKUP_RETENTION_DAYS |
0 |
Delete backups older than N days (0 = disabled) |
AUTO_BACKUP_ENABLED |
false |
Enable scheduled automatic backups |
AUTO_BACKUP_INTERVAL_HOURS |
24 |
Hours between automatic backups |
Observability¶
OpenTelemetry tracing/metrics are configured via OTEL_* variables — see
Observability for the full list.
CORS¶
| Variable | Default | Description |
|---|---|---|
CORS_ORIGINS |
http://localhost:3000 |
Comma-separated list of allowed origins |
Container Commands¶
The all-in-one image accepts subcommands in addition to the default start:
docker compose run --rm maxwells-wallet migrate # Run migrations
docker compose run --rm maxwells-wallet seed # Seed sample data
docker compose run --rm maxwells-wallet demo-setup # Seed + create demo backup
docker compose run --rm maxwells-wallet reset-password <user> <pass> # Reset a password
Building from Source¶
Or with the just recipes: