Systemd Deployment

Run Mnemosyne as a systemd service on Linux.

Service File

Create /etc/systemd/system/mnemosyne.service:

[Unit]
Description=Mnemosyne Memory Server
After=network.target

[Service]
Type=simple
User=mnemosyne
Group=mnemosyne
WorkingDirectory=/opt/mnemosyne
Environment="MNEMOSYNE_DATA_DIR=/opt/mnemosyne/data"
ExecStart=/opt/mnemosyne/venv/bin/python -m mnemosyne --host 0.0.0.0 --port 8090 --db-path /opt/mnemosyne/data/mnemosyne.db
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Setup

# Create user
sudo useradd -r -s /bin/false mnemosyne

# Create directories
sudo mkdir -p /opt/mnemosyne/data
sudo chown -R mnemosyne:mnemosyne /opt/mnemosyne

# Install in virtualenv
sudo -u mnemosyne bash -c '
cd /opt/mnemosyne
python3 -m venv venv
venv/bin/pip install mnemosyne-memory
'

# Copy service file
sudo cp mnemosyne.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable mnemosyne
sudo systemctl start mnemosyne

Management

# Status
sudo systemctl status mnemosyne

# Logs
sudo journalctl -u mnemosyne -f

# Restart
sudo systemctl restart mnemosyne

# Stop
sudo systemctl stop mnemosyne

Log Rotation

Create /etc/logrotate.d/mnemosyne:

/var/log/mnemosyne/*.log {
  daily
  rotate 7
  compress
  delaycompress
  missingok
  notifempty
  create 0640 mnemosyne mnemosyne
}
Security

Run as a dedicated non-root user. Use firewall rules to restrict access. Consider Unix socket binding instead of TCP for local-only deployments.