Skip to content

๐Ÿ›ก๏ธ Admin Manual

This manual is for the people who install and run LibreFolio. Most administration happens from the command line, through environment variables, or in the app's Admin settings tab.


๐Ÿ“š Guides

๐Ÿณ Deployment & Exposure

  • ๐Ÿ“ฆ Host Installation: Manual setup using Python, Node.js, and Pipenv directly on the host machine.
  • ๐Ÿณ Advanced Docker: Containerized deployment using Docker Compose, volume bindings, and user GID/UID ownership configuration.
  • ๐ŸŒ Expose Securely: Securely expose your private LibreFolio instance over the internet.
  • ๐Ÿ” Check Connection Security: Verify that your users connect securely, and fix the session cookie or the reverse proxy when they do not.

โš™๏ธ System Configuration

  • ๐Ÿ“ Environment Variables: Full list of supported .env variables (PORT, JWT_SECRET, LIBREFOLIO_DATA_DIR, etc.) and variable resolution precedence.
  • โš™๏ธ Global Settings: Configure system-wide runtime settings (session TTL, upload limits, market data sync intervals).

๐Ÿงน Maintenance & Operations

  • ๐Ÿ› ๏ธ CLI Admin Tools: How to use the dev.py script for administrative tasks (user management, database upgrades).
  • ๐Ÿ“‚ Filesystem Structure: Details on where databases, logs, uploads, and temporary folders are stored, and how to perform backups.

๐Ÿ”” Update Notifications

When an administrator signs in, LibreFolio checks GitHub for a newer stable release. If there is one, the New version available window shows your version and the latest side by side, with a How to update link to the updating guide and a Release notes on GitHub link.

Update available modal with current and latest version
  • Remind me later closes the window until a later sign-in.
  • Skip this version stops the automatic prompt for that version; a newer one is announced again.
  • A release is announced only once its Docker image can be downloaded, and the window waits until no other window or guide is open.
  • Without internet access, the automatic check fails silently: no error, no banner.
  • To check right away, use Check for updates in the changelog: it reports errors, and versions you skipped too.
๐Ÿ‘ฅ Other users โ€” when someone who is not an administrator checks

For users who are not administrators, no check runs at sign-in. If one of them runs Check for updates and a newer release exists, the Update available โ€” contact an administrator dialog lists the administrators, with their e-mail addresses when available, so they know whom to ask.


๐Ÿ” Keep Users Signed In After a Restart

LibreFolio signs every login session with a secret key, JWT_SECRET.

  • Not set (the default): a new random key is made at every start, so everyone must log in again after a restart or an update.
  • Set: sessions survive restarts. Set it also if several separate LibreFolio servers share the same users behind a load balancer.

๐Ÿ”‘ 1. Generate a key

python3 -c "import secrets; print(secrets.token_urlsafe(64))"

No Python on the host? Run it inside the container instead:

docker exec librefolio python -c "import secrets; print(secrets.token_urlsafe(64))"

๐Ÿ“ 2. Add it to .env and restart

JWT_SECRET=paste-the-generated-value-here

Restart LibreFolio (with Docker Compose: docker compose up -d). Keep the key private: whoever knows it can forge a session.

The workers of a single ./dev.py server --workers โ€ฆ share one key on their own. How long a session lasts is the Session Duration in Global Settings. For the details, see the developer page Security Architecture.