Files

22 lines
907 B
Plaintext
Raw Permalink Normal View History

# Settings for the mtgc-server container, for `docker run --env-file`. Copy to
# .env (which git ignores) and fill in. See the README's "Running the sync
# server" for the full list.
# Where users reach the server, exactly as they reach it: through your ingress
# in production, or the forwarded port locally (http://localhost:8080).
Replace folder sync with an HTTP sync server, keeping the app offline-first Folder sync left too much to the user's sync tool: platform file access (the Android SAF plugin), choosing the document, merging conflict copies — and its merge base could fall out of step with the document (absorbing conflict copies, "forget", picking a new Android folder), reading every difference as a deletion. The new mtgc-server crate stores one versioned library per user and accepts a write only when it names the version it replaces. It never merges: devices still do that with merge3, through a new sync cycle over a `Remote` trait in mtgc-core. The base advances only on knowledge — to what was read, or to a write the server confirmed — and is stored with the server and account it belongs to, so a different account starts from an empty ancestor instead of deleting. The working copy is only rewritten under the app-state lock, and sync commands now run off the main thread. Sign-in happens in the browser on the server's pages, via the owner's OIDC provider and/or local username/password accounts (Argon2id, managed with `mtgc-server user ...`), and returns a per-device revocable token to the app by PKCE-protected code: a loopback port on desktop, the mtgc:// scheme on Android. The Info tab gains sign-in, the first-sync combine/replace choice, the account's devices, and JSON export/import; the top bar shows sync state. Includes a Dockerfile, Compose/Caddy example, and scripts to build and push ${DOCKER_REGISTRY}/mtgc/sync-server.
2026-10-08 22:32:08 -05:00
MTGC_PUBLIC_URL=https://mtgc.example.com
# Username/password accounts, managed with `mtgc-server user ...`.
# Set to false to allow single sign-on only.
MTGC_LOCAL_AUTH=true
# Single sign-on (optional). Register a confidential OIDC client with the
# redirect URI ${MTGC_PUBLIC_URL}/auth/callback.
#MTGC_OIDC_ISSUER=https://auth.example.com/application/o/mtgc/
#MTGC_OIDC_CLIENT_ID=
#MTGC_OIDC_CLIENT_SECRET=
#MTGC_OIDC_NAME=Authentik
#MTGC_OIDC_SCOPES=openid email profile
# Comma-separated; leave unset to let the provider decide who may sign in.
#MTGC_ALLOWED_EMAILS=