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.

01

Where are you hosting?

02

Accounts and database

02 / Requirements

0/4

Before you start

What to have ready.

  1. docker compose version

03 / Configure

0/5

Configure

All settings live in one .env file in the repository root.

  1. git clone https://github.com/dishwasher-detergent/mault.git
    cd mault
  2. cp .env.docker.example .env
  3. openssl rand -hex 32

    Run the command once per secret.

04 / Start

0/3

Start the stack

Compose builds the images and starts every service.

  1. docker compose up --build -d
  2. docker compose logs -f server

05 / First sign-in

0/3

Create your account

Sign up, then add a game to match scans against.

  1. Email verification, password editing, multi-session management and social sign-in need Neon.

  2. 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

0/2

Schedule price sync

Prices come from TCGplayer, Cardmarket and Card Kingdom. Sync once a day, never more often: sources block installs that poll harder.

  1. 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>&1

    Failed runs aren't retried. The next daily run catches up.

07 / Extras

0/4

Optional features

Each stays off until its variables are set. Restart or redeploy after changes.

  1. docker compose --profile bot up --build -d

08 / Maintenance

0/3

Updates and backups

Stay current and protect your data.

  1. git pull
    docker compose up --build -d
  2. docker compose exec -T postgres pg_dump -U mault mault > mault-backup.sql