# Every setting is read as WORKSPACE_. The old DIARY_ spelling is # still accepted, so a deployment configured before the rename keeps running. # The one and only account. Both are checked in constant time on login. WORKSPACE_USER=narl WORKSPACE_PASSWORD=change-me # Signs session cookies. Rotate it to log every device out. 32+ random chars. # Generate one with: openssl rand -base64 32 WORKSPACE_SECRET=replace-with-32-random-characters # Where the SQLite database and uploaded media live. WORKSPACE_DATA_DIR=./data # Address to listen on. Put a TLS terminating reverse proxy in front of this. WORKSPACE_BIND=127.0.0.1:4242 # How long a login lasts, in days. WORKSPACE_SESSION_DAYS=30 # Largest upload, in megabytes: one request, or what an imported zip unpacks # to. Uploads stream to disk, so this bounds the disk, not the memory. WORKSPACE_MAX_UPLOAD_MB=1024 # Set to 1 once the app is served over HTTPS: the cookie gets `Secure` and the # `__Host-` prefix (everyone is logged out once), and browsers are told to use # HTTPS only (HSTS). The server refuses to start with the example secret or # password above still in place. WORKSPACE_SECURE_COOKIE=0 # --- SFTP mount -------------------------------------------------------------- # Off until this is set. Once it's up, register a key with `:sshkey add # ` in the app, then `sshfs -P anything@host:/ mnt/` # (the username is ignored — only the key decides who gets in). # # On the mount, `mkdir` at the root makes a space and anywhere else a folder; # a new `.md` file is a new document. A leading `# Heading` is the document's # title. Editor temp, swap and backup files are kept in memory for the session # only, and renaming one onto a `.md` name saves it into that document. # # Under Docker, bind 0.0.0.0 (not 127.0.0.1) as the app listens inside the # container — the host-side address in compose.yml's `ports:` is what # actually restricts who can reach it. # WORKSPACE_SFTP_BIND=127.0.0.1:2222 # --- Proton Drive backup ----------------------------------------------------- # Off until `:backup login ` in the workspace (or `narl-workspace # proton-login`) stores a session under WORKSPACE_DATA_DIR. # These only shape how often the mirror runs. # The device the server registers in Proton Drive; its sync root is the folder # the diary is mirrored into. WORKSPACE_PROTON_DEVICE=narl-workspace # Backstop between runs, in minutes. 0 leaves it change-driven only. WORKSPACE_BACKUP_INTERVAL_MIN=60 # How long the diary must be quiet after a change before it is mirrored, so a # writing session uploads once rather than after every save. WORKSPACE_BACKUP_DEBOUNCE_SEC=300 # Set to 1 to let a deletion here trash the mirrored file there. Off by # default: a backup that forgets on command is one accident from being none. WORKSPACE_BACKUP_PRUNE=0 # Seal the stored Proton session under a key kept off the data volume, so a # copy of the volume alone carries no usable session. Point it at a Docker # secret (see compose.override.yml.example); `openssl rand -base64 32` makes # the key. Losing the key costs a new `proton-login`, nothing more. # WORKSPACE_SESSION_KEY_FILE=/run/secrets/session_key # --- Notification mail ------------------------------------------------------- # Off until WORKSPACE_SMTP_URL is set. Nothing is even queued while it is unset. # The relay. `smtps://host:465` is implicit TLS, `smtp://host:587?tls=required` # is STARTTLS, and a bare `smtp://host:1025` is plain — which only belongs on a # local mail catcher. Credentials may live in the URL or in the two variables # below. # WORKSPACE_SMTP_URL=smtps://mail.example.org:465 # WORKSPACE_SMTP_USER= # WORKSPACE_SMTP_PASSWORD= # Where the mail comes from and goes to. FROM defaults to TO. # WORKSPACE_MAIL_FROM=workspace@example.org # WORKSPACE_MAIL_TO=you@example.org # "Did I write today?" and "is this due today?" are local-day questions, and the # answer changes with the timezone rather than with a fixed offset. WORKSPACE_TIMEZONE=Europe/Berlin # When to ask about the diary, if nothing was written in it that day. `off` # turns it into no reminder at all. WORKSPACE_REMINDER_AT=20:00 # When to mail about cards that are due today or already overdue. WORKSPACE_CARD_DUE_AT=08:00 # Weekday and time of the weekly digest. WORKSPACE_DIGEST_AT=sun 18:00 # Which of the four kinds may be sent. Drop one from the list to switch it off. WORKSPACE_MAIL_KINDS=reminder,card_due,digest,login # --- Vault, trash and history ------------------------------------------------ # Minutes the vault stays open with nothing using it, before it locks itself. # It also locks on logout and whenever the server restarts. WORKSPACE_VAULT_IDLE_MIN=15 # Days a deleted document, folder, file or space waits in the trash, where # :trash can bring it back, before it and its files are deleted for good. WORKSPACE_TRASH_DAYS=30 # Days a document's earlier versions are kept for :history. The newest 20 of # every document are kept however old they are. WORKSPACE_REVISION_DAYS=90