DailyTxT is a self-hosted diary and journal web app that encrypts every entry before it is written to the server’s storage. It is built with Svelte and Go and shipped as a Docker image for AMD64 and ARM64, so a private, calendar-driven journal runs on your own hardware instead of someone else’s cloud.
When you log in, your password derives a key with Argon2id; that derived key decrypts your personal encryption key, which is what actually protects the entries and uploaded files. Encryption uses ChaCha20-Poly1305, and the encryption key never leaves the server. The project is explicit about the trade-off: there is no client-side end-to-end encryption, because the search function would then have to send all of your data to the browser. Everything is stored as plain JSON files rather than in a database, which keeps the data portable and readable for the long term — you can copy the data directory and walk away with it.
The project ships a docker-compose.yml that mounts a single ./data volume and needs one secret: a SECRET_TOKEN generated with openssl rand -base64 32, plus an ADMIN_PASSWORD for the admin panel. Registration is enabled for the first account and can be turned on temporarily later from the admin panel. Version 2 is a full rewrite — anyone upgrading from 1.0.x should follow the migration notes, which cover renamed environment variables and an automatic per-user re-encryption on first login.
DailyTxT is a journal first: it is organised by day, not by notebook or graph. If what you want is a private place to write down what happened, with photos, location and a searchable archive, it fits well. If you need wikilinks, backlinks or collaborative editing, a notes app is the better tool.