Run A Maker Unattended
Use a service only after interactive maker startup works. This example is for a native Linux installation with systemd. Raspiblitz manages its own service through the terminal menu; container operators should use the maker Compose configuration.
Decide How To Unlock The Wallet
A service cannot answer an interactive password prompt. For unattended startup,
it needs the wallet-file password and, if used, the BIP39 passphrase. The
[wallet] settings mnemonic_password and bip39_passphrase supply them, but
store them in plain text. Restrict the config to its owner with chmod 600 and
protect the host and its backups. An attacker able to read the encrypted wallet
and these credentials can spend its funds.
MNEMONIC_PASSWORD in a protected systemd EnvironmentFile is an alternative
to the config entry, not a way to avoid storing a secret. For interactive-only
unlocking, keep using jm-maker start from a terminal; do not enable boot startup.
Create The Service
Create /etc/systemd/system/jm-maker.service, replacing youruser, paths, and
the backend/Tor unit names with those on your host:
[Unit]
Description=JoinMarket NG Maker
After=network-online.target bitcoind.service tor.service
Wants=network-online.target bitcoind.service tor.service
StartLimitIntervalSec=0
[Service]
Type=simple
User=youruser
ExecStart=/home/youruser/.joinmarket-ng/venv/bin/jm-maker start --mnemonic-file /home/youruser/.joinmarket-ng/wallets/default.mnemonic
Restart=on-failure
RestartSec=30
NoNewPrivileges=true
PrivateTmp=true
[Install]
WantedBy=multi-user.target
The service user needs access to its wallet, config, and Tor control cookie. Dependencies start services in order; they do not prove the backend has synced. Check the journal after startup and resolve repeated errors.
For a separate configuration location, add --config-file /etc/joinmarket/config.toml
and --data-dir /var/lib/joinmarket to ExecStart, with a matching wallet path
and ownership. Do not copy another wallet's data directory over this one.
Start And Check
After arranging noninteractive credentials:
sudo systemctl daemon-reload
sudo systemctl start jm-maker
journalctl -u jm-maker -f
Confirm that offers are published. Only then enable boot startup:
sudo systemctl enable jm-maker
Use sudo systemctl stop jm-maker before maintaining or moving the wallet.
Do not start an interactive maker while the service is using it.