Hello guys!

I’m experimenting with Reticulum at the moment and I’ve setup a stationary node on a Raspberry Pi 4. So far, it works very well. Now, I ran into a problem with creating a systemd-service for the application nomadnet.

I’m logging in via SSH and user ‘admin’. nomadnet has been installed via pipx install nomadnet and can be started with nomadnet, which seems to work very well too. The executable can be found under /home/admin/.local/bin/nomadnet

My goal is: I want the application to keep running, when I’m closing the SSH-connection.

Right now, I’m not very experienced with systemd, but I’ve asked AI for some help (probably not a good idea…?):

[Unit]
Description=Nomadnet Service
After=network.target

[Service]
Type=simple
ExecStart=/home/admin/.local/bin/nomadnet
Restart=on-failure
User=admin
Group=admin

[Install]
WantedBy=multi-user.target

The nomadnet.service is now running, but when I take a look at journalctl -u nomadnet there seems to be an error loop:

Dec 13 16:11:20 reticulum-base systemd[1]: nomadnet.service: Main process exited, code=exited, status=1/FAILURE
Dec 13 16:11:20 reticulum-base systemd[1]: nomadnet.service: Failed with result 'exit-code'.
Dec 13 16:11:21 reticulum-base systemd[1]: nomadnet.service: Scheduled restart job, restart counter is at 71.
Dec 13 16:11:21 reticulum-base systemd[1]: Started nomadnet.service - Nomadnet Service.
Dec 13 16:11:24 reticulum-base nomadnet[3380]: stty: 'standard input': Inappropriate ioctl for device
Dec 13 16:11:24 reticulum-base nomadnet[3383]: stty: 'standard input': Inappropriate ioctl for device
Dec 13 16:11:24 reticulum-base nomadnet[3365]: [2025-12-13 16:11:21] [Notice]   Opening serial port /dev/ttyUSB0...
Dec 13 16:11:24 reticulum-base nomadnet[3365]: [2025-12-13 16:11:24] [Notice]   RNodeInterface[RNode] is configured and powered up
Dec 13 16:11:24 reticulum-base nomadnet[3365]: [95B blob data]
Dec 13 16:11:24 reticulum-base nomadnet[3385]: stty: 'standard input': Inappropriate ioctl for device
Dec 13 16:11:24 reticulum-base systemd[1]: nomadnet.service: Main process exited, code=exited, status=1/FAILURE
Dec 13 16:11:24 reticulum-base systemd[1]: nomadnet.service: Failed with result 'exit-code'.
Dec 13 16:11:25 reticulum-base systemd[1]: nomadnet.service: Scheduled restart job, restart counter is at 72.
Dec 13 16:11:25 reticulum-base systemd[1]: Started nomadnet.service - Nomadnet Service.
Dec 13 16:11:28 reticulum-base nomadnet[3403]: stty: 'standard input': Inappropriate ioctl for device
Dec 13 16:11:28 reticulum-base nomadnet[3406]: stty: 'standard input': Inappropriate ioctl for device
Dec 13 16:11:28 reticulum-base nomadnet[3388]: [2025-12-13 16:11:25] [Notice]   Opening serial port /dev/ttyUSB0...
Dec 13 16:11:28 reticulum-base nomadnet[3388]: [2025-12-13 16:11:28] [Notice]   RNodeInterface[RNode] is configured and powered up
Dec 13 16:11:28 reticulum-base nomadnet[3388]: [95B blob data]
Dec 13 16:11:28 reticulum-base nomadnet[3408]: stty: 'standard input': Inappropriate ioctl for device
Dec 13 16:11:28 reticulum-base systemd[1]: nomadnet.service: Main process exited, code=exited, status=1/FAILURE
Dec 13 16:11:28 reticulum-base systemd[1]: nomadnet.service: Failed with result 'exit-code'.
Dec 13 16:11:29 reticulum-base systemd[1]: nomadnet.service: Scheduled restart job, restart counter is at 73.

I don’t have an idea, how to do it properly, but hopefully, someone can help me here :(.

~sp3ctre

  • WIPocket@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    7 小时前

    stty: 'standard input': Inappropriate ioctl for device means that nomadnet needs to be started in a terminal. You probably want to either add the --daemon flag of nomadnet if you just want to run it in the background (ExecStart=/home/admin/.local/bin/nomadnet --daemon), or run it under tmux instead of systemd to be able to access the interface.

    • sp3ctre@feddit.orgOP
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      16 小时前

      You’re my hero! It now works.

      [Unit]
      Description=Nomadnet Service
      After=network.target
      
      [Service]
      Type=simple
      ExecStart=/home/admin/.local/bin/nomadnet --daemon
      Restart=on-failure
      User=admin
      Group=admin
      
      [Install]
      WantedBy=multi-user.target
      
      

      So, now the service runs as a daemon. Is it a problem to login via SSH and use the command nomadnet (no daemon), while the daemon-service is running? Because it seems to be working when I try it?