# ─── Backspace Configuration ──────────────────────────────── # Copy to .env and configure, or run ./install.sh to generate automatically. # Your server's public domain name (required) DOMAIN=example.com # ─── Server ───────────────────────────────────────────────── # Production/Docker listen port (Caddy reverse-proxies to it). Local development # ignores this and uses 3005 — the Vite dev proxy target — set by `pnpm dev`. PORT=3000 HOST=0.0.0.0 # ─── Authentication (REQUIRED) ────────────────────────────── # Secret that signs login tokens. This MUST be set to a strong random value. # Leaving it empty is intentional — `docker compose up` then fails immediately # with a clear message instead of the server boot-looping. Generate one with: # # openssl rand -hex 32 # # (./install.sh fills this in for you automatically — you only touch this when # configuring by hand.) Must be at least 32 characters. JWT_SECRET= # Registration — set to false to close signups after initial setup REGISTRATION_OPEN=true # Max file upload size in bytes (default: 100MB) MAX_UPLOAD_SIZE=104857600 # ─── AGPL-3.0 § 13 Source Offer ──────────────────────────── # Backspace is AGPL-3.0. Network users can obtain the source of the running # version via GET /api/instance/info and in-app "Source code (AGPL)" links. # If you MODIFY Backspace and self-host it, you MUST point this at YOUR fork's # source so the offer stays accurate. Defaults to the upstream repository. # BACKSPACE_SOURCE_URL=https://github.com/TheZwiss/backspace # # Short git commit/tag of the running build. Injected automatically at Docker # build time by deploy.sh (--build-arg BACKSPACE_COMMIT). Leave unset for local # dev — the app reports commit=null. Set manually only for custom build pipelines. # BACKSPACE_COMMIT= # ─── LiveKit Voice/Video ─────────────────────────────────── # To enable voice/video, fill in all three values below and add: # COMPOSE_PROFILES=voice # Leave empty to run Backspace without voice features. LIVEKIT_URL= LIVEKIT_API_KEY= LIVEKIT_API_SECRET= # ─── Desktop App (Electron) ─────────────────────────────── # Override the URL that the desktop app loads (auto-detects in dev/prod) # BACKSPACE_URL=https://my-instance.com # Auto-update server URL for electron-updater (optional) # BACKSPACE_UPDATE_URL=https://releases.example.com # ─── Docker Compose ──────────────────────────────────────── # Uncomment to enable the LiveKit service: # COMPOSE_PROFILES=voice # ─── Database Backups ────────────────────────────────────── # Automatic SQLite snapshots: pre-migration (always, when a migration is pending), # scheduled (every BACKUP_INTERVAL_HOURS), and manual (./backup.sh). Rotated per type. # BACKUP_DIR=./data/backups # default: /backups # BACKUP_INTERVAL_HOURS=24 # BACKUP_KEEP_SCHEDULED=7 # BACKUP_KEEP_PREMIGRATION=5 # BACKUP_KEEP_MANUAL=10 # Off-box replication hook — receives the new snapshot path as $1 (e.g. rclone/rsync/aws s3 cp): # BACKUP_OFFSITE_CMD= # BACKUP_DISABLED=false