Linux

Where Does Self-Hosted Kutt Store Config?

Kutt configures through .env (JWT_SECRET required) and stores links in SQLite by default. Postgres and Redis scale it up.

Last updated

Kutt keeps config in .env (copied from .example.env): JWT_SECRET (the one required value), database connection, Redis flags, mail, and limits. Links, users, and click stats live in SQLite by default, Postgres/MySQL optionally, with Redis as cache. Compose variants in the repo match each backend combo.

Custom themes and branding mount under custom/. The kutt.it domain warning matters operationally: the project lost kutt.it to a registrar dispute and moved to kutt.to, so self-hosters should set their own custom domain rather than depend on either. Back env with the database; one without the other restores sessions nobody can open or data nobody can sign into.

Where Kutt stores this, by platform

Linux
.env (Kutt root)

JWT_SECRET plus DB/Redis/mail/limits. _FILE suffix loads values from files for secrets. Compose variants per backend ship in repo. Back with the database as one unit.

Frequently asked questions

how do i back up self-hosted kutt

Copy .env plus the SQLite file (or dump Postgres/MySQL) with the app stopped. Links, users, and stats travel in the database; JWT_SECRET in .env signs sessions. Restore both; rotating the secret logs everyone out.

when does kutt need postgres and redis

Set REDIS_ENABLED plus DB_* vars and use the matching compose file (postgres/mariadb/sqlite-redis variants ship in repo). SQLite alone fits personal use; Redis plus Postgres fits public instances. _FILE suffix reads any value from a file for secrets.

Notice an outdated path? Let us know.