Files
narl-workspace/.env.example
T
nvrl 3d6944c860 uploads: stream to disk instead of holding them in memory
Media uploads and imports now write each multipart field to uploads/ a
chunk at a time, and a zip is unpacked from disk on the blocking pool,
so the limit bounds disk rather than memory. What an archive unpacks to
is held to the same limit. The default goes from 64 MB to 1024 MB.
2026-10-19 15:23:44 +02:00

93 lines
3.8 KiB
Bash

# Every setting is read as WORKSPACE_<NAME>. The old DIARY_<NAME> 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, so the cookie gets `Secure`.
WORKSPACE_SECURE_COOKIE=0
# --- SFTP mount --------------------------------------------------------------
# Off until this is set. Once it's up, register a key with `:sshkey add <name>
# <ssh-ed25519 ...>` in the app, then `sshfs -P <port> 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 `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
# --- 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