Install without the script
Fill in .env yourself and start Mantle with Docker Compose.
Before you start
- Everything in Install on a server.
- The deploy bundle: download
mantle-deploy-<version>.tar.gzfrom the releases page and unpack it on the server.
The bundle also contains the configurator. bash scripts/install.sh in the unpacked directory does all of the steps below for you, without the download.
Steps
-
Copy the template:
Terminal window cp .env.prod.example .env -
Fill in these values in
.env:Variable Value SESSION_SECRETopenssl rand -base64 48MANTLE_MASTER_KEYopenssl rand -base64 32. Back it up and never change it: it decrypts your stored keys and mail passwords.POSTGRES_PASSWORD,S3_ACCESS_KEY,S3_SECRET_KEYStrong random values, for example openssl rand -hex 16MANTLE_SETUP_CODEAny hard-to-guess string. Sign-up asks for it until the first account exists. MANTLE_SITE_ADDRESSYour domain, for HTTPS. Or :80for plain HTTP.MANTLE_PUBLIC_URLhttps://plus your domain. Leave it out without a domain.MANTLE_SERVER_ORIGINThe address people open in the browser, with the port if it is not 80 or 443 MANTLE_STACK_DIRThis directory’s full path (the output of pwd -P). The in-app updater needs it.MANTLE_DATA_DIRWhere all data is stored (default ./data)Leave
ALLOWED_USER_IDblank. For a this-machine-only install, also setMANTLE_BIND_ADDR=127.0.0.1. -
Start the brain:
Terminal window docker compose pull && docker compose up -d --wait -
Start the owner UI, which is a separate stack. Without it there is no sign-up screen.
Terminal window docker compose -f docker-compose.client.yml --project-directory . pulldocker compose -f docker-compose.client.yml --project-directory . up -d --wait -
Restart the front door so it routes to the UI:
Terminal window docker compose up -d --force-recreate caddy
Check it worked
bash scripts/install.sh --checkThen open the address you set in MANTLE_SERVER_ORIGIN.