[Unit] Description=JMRI Server (JmriFaceless) Documentation=https://www.jmri.org/ After=network.target # Give USB devices time to enumerate after boot After=dev-{{ jmri_serial_device | basename }}.device Wants=dev-{{ jmri_serial_device | basename }}.device [Service] Type=simple User={{ jmri_user }} Group={{ jmri_group }} WorkingDirectory={{ jmri_install_dir }} # JmriFaceless requires a profile ID # Find yours: ls ~/.jmri/profiles/ ExecStart={{ jmri_install_dir }}/JmriFaceless --profile={{ jmri_profile_id }} # Restart on failure, not on clean exit (e.g. intentional shutdown from Jython) Restart=on-failure RestartSec=10 # Give hardware time to settle before retry TimeoutStartSec=30 # Logging — view with: journalctl -u jmri -f StandardOutput=journal StandardError=journal SyslogIdentifier=jmri # Serial device access SupplementaryGroups=dialout [Install] WantedBy=multi-user.target