Mavri Get started

How to install Mavri on CasaOS or ZimaOS.

Run self-hosted invoicing on your home server in a few clicks, with your data in your own AppData folder.

Updated 15 October 2026 · Works on amd64 and arm64

The short versionDownload the Mavri compose file, then in CasaOS open App Store → Custom Install → Import, choose the file and install. Open http://<your-server>:8473 and create the owner account.

Before you start

  • A server running CasaOS or ZimaOS (Docker is built in), reachable from your browser.
  • An amd64 or arm64 machine. Both are listed in the app manifest.
  • Port 8473 free on the server.
  • Internet access on the server for the first install, so it can pull the container images.

Step 1. Get the compose file

Download docker-compose.yml from the Mavri repository. On the server (or any computer):

curl -fsSLO https://raw.githubusercontent.com/Raktim94/mavri/main/casaos/docker-compose.yml

Or open the file in your browser and save it. You will also see this file in the repository as casaos/docker-compose.yml.

Step 2. Import it into CasaOS

  1. Open the CasaOS dashboard and go to the App Store.
  2. Choose Custom Install, then Import.
  3. Upload the compose file (or paste its contents).
  4. Review the settings it fills in, then press Install.

The file defines two containers: Mavri itself, and a small updater that powers the in-app Update now button.

Step 3. Open Mavri

http://<your-server-ip>:8473

The first visit asks you to create the owner account (an email and a password of at least 8 characters with letters and numbers). A short guided setup follows. After that, see How to use Mavri.

What the install sets up

SettingValue
Web addresshttp://<server>:8473 (container port 3001)
Your data/DATA/AppData/nodedr-invoice/data: the SQLite database, session secret and encryption key. Back this up.
COOKIE_SECUREfalse for plain LAN use. Set true only behind real HTTPS.
TRUST_PROXY0 for direct LAN use. Set 1 behind a reverse proxy or Cloudflare Tunnel.
UpdaterA second container that needs the Docker socket and only acts when you press Update now.

Updating

Open Settings → Updates and press Update now. With the bundled updater, Mavri pulls the newer image and recreates the Mavri container, and your data in /DATA/AppData is untouched. Download a backup first. If you don’t want the updater to have Docker socket access, remove that container and update manually.

Backups

Use Settings → Backup for a one-file export of your records, and also copy /DATA/AppData/nodedr-invoice/data to another disk or machine. The folder includes the keys that protect store secrets, which the backup file does not. See how to back up Mavri.

Before you uninstall or reinstallDownload a backup and copy the data folder first. Depending on your CasaOS version and the options you pick, removing an app can remove its data too.

HTTPS and remote access

Put Mavri behind a reverse proxy or a Cloudflare Tunnel for HTTPS, then edit the app’s environment: COOKIE_SECURE=true and TRUST_PROXY=1. Leave them at their defaults for LAN-only use.

Troubleshooting

  • The image will not pull. This route pulls published container images from GitHub Container Registry. If the pull fails, use the Docker Compose route, which builds Mavri from source.
  • Port already in use. Change the published port in the compose file before importing.
  • Cannot open the page. Check the server’s IP address, the port, and any firewall in between.
  • Sign-in loops behind HTTPS. Check COOKIE_SECURE and TRUST_PROXY as above.

Prefer a different route?