Mault / Self-hosting guide
Run Mault on your own server
Run Mault on your own hardware. Pick your setup and the guide shows only the steps you need. Progress is saved in this browser.
01 / Your setup
Choose your setup
Your choices are saved in the URL, so you can bookmark or share this guide.
Where are you hosting?
Accounts and database
02 / Requirements
Before you start
What to have ready.
docker compose version
03 / Configure
Configure
All settings live in one .env file in the repository root.
git clone https://github.com/dishwasher-detergent/mault.git cd maultcp .env.docker.example .envopenssl rand -hex 32Run the command once per secret.
04 / Start
Start the stack
Compose builds the images and starts every service.
docker compose up --build -ddocker compose logs -f server
05 / First sign-in
Create your account
Sign up, then add a game to match scans against.
Email verification, password editing, multi-session management and social sign-in need Neon.
INSERT INTO platform_user_roles (user_id, role) VALUES ('<own_auth_users.id>', 'admin') ON CONFLICT (user_id) DO UPDATE SET role = 'admin';
06 / Prices
Schedule price sync
Prices come from TCGplayer, Cardmarket and Card Kingdom. Sync once a day, never more often: sources block installs that poll harder.
0 4 * * * cd /opt/mault && docker compose exec -T server sh -c 'if [ "$AUTH_PROVIDER" = local ]; then export DATABASE_URL="${DATABASE_URL:-postgresql://mault:$POSTGRES_PASSWORD@postgres:5432/mault}" DATABASE_SSL="${DATABASE_SSL:-false}"; fi; exec node packages/server/dist/scripts/sync-prices.js' >> /var/log/mault-prices.log 2>&1Failed runs aren't retried. The next daily run catches up.
07 / Extras
Optional features
Each stays off until its variables are set. Restart or redeploy after changes.
docker compose --profile bot up --build -d
08 / Maintenance
Updates and backups
Stay current and protect your data.
git pull docker compose up --build -ddocker compose exec -T postgres pg_dump -U mault mault > mault-backup.sql