Cree una sesión tmux al inicio antes de iniciar sesión como usuario (no root)

Cree una sesión tmux al inicio antes de iniciar sesión como usuario (no root)

Estoy alojando un pequeño servidor de Minecraft para mis amigos en mi casa y, para facilitarme las cosas, quería que cuando encendiera la PC que se usa como servidor, se iniciara automáticamente el servidor de Minecraft. La cosa es que uso tmux para poder gestionar el servidor en caso de que lo necesite. Para eso, tengo este script:

#!/bin/bash

SESSION="server"
SESSIONEXISTS=$(tmux list-sessions | grep -w "$SESSION")

if [ "$SESSIONEXISTS" = "" ]
then

  tmux new-session -d -s "$SESSION" -d -x "$(tput cols)" -y "$(tput lines)"

  tmux rename-window -t 0 'mc'
  tmux send-keys -t 'mc' 'cd magma-1.18.2-40.2.10 && ./run.sh && sudo shutdown now' C-m
  tmux splitw -v

  tmux send-keys -t 'mc' 'glances' C-m
  tmux select-pane -t 0
  tmux splitw -h

  tmux send-keys -t 'mc' 'ngrok start --all' C-m

  tmux select-pane -t 0

fi

tmux attach-session -t "$SESSION":0

Intenté usar cron sin éxito:

@reboot bash /home/fpp/startup.sh

Simplemente no inicia la sesión tmux.

También probé con una unidad systemd: [Unidad]

Description=mcnrelated.service

After=default.target

[Service]

ExecStart=bash /home/fpp/startup.sh

[Install]

WantedBy=default.target

pero al iniciar, pude ver que el servicio no se inició debido a un error.

Como última opción intenté usar rc.local:

#!/bin/bash
sudo su -c "./home/fpp/startup.sh" -s /bin/sh fpp
exit 0

pero nuevamente, no se inició ninguna sesión tmux.

¿Puede este problema estar relacionado con tmux? o estoy haciendo algo mal?

EDITAR: El camino a seguir es con systemd.

Después de conversar mucho con ChatGPT, pude descubrir que en mi script estaba usando tputpara obtener las filas y columnas del terminal. El problema con esto es que no devolverá un valor cuando se ejecute como servicio, porque no se ejecuta en una terminal e hizo que el script fallara. Por eso, cambié al archivo .tmux.conf, así puedo simplemente llamar tmux -t .tmux.confy de esa manera evito usar tput.

Además, como recomendó ChatGPT, ahora estoy usando una unidad systemd a nivel de usuario:

[Unit]
Description=Launch Minecraft Server and Related Services
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/tmux -u -f /home/fpp/tmux-config/tmux.conf
RemainAfterExit=true

[Install]
WantedBy=default.target

El problema ahora es que tmux se queja de no tener terminal para abrir:

fpp@fpp-server:~$ systemctl --user status mcnrelated.service
× mcnrelated.service - Launch Minecraft Server and Related Services
     Loaded: loaded (/home/fpp/.config/systemd/user/mcnrelated.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Thu 2023-09-21 11:42:09 -03; 8min ago
    Process: 1319 ExecStart=/usr/bin/tmux -u -f /home/fpp/.tmux.conf (code=exited, status=1/FAILURE)
   Main PID: 1319 (code=exited, status=1/FAILURE)
        CPU: 37ms

sep 21 11:42:09 fpp-server systemd[550]: Starting mcnrelated.service - Launch Minecraft Server and Related Services...
sep 21 11:42:09 fpp-server tmux[1319]: open terminal failed: not a terminal
sep 21 11:42:09 fpp-server systemd[550]: mcnrelated.service: Main process exited, code=exited, status=1/FAILURE
sep 21 11:42:09 fpp-server systemd[550]: mcnrelated.service: Failed with result 'exit-code'.
sep 21 11:42:09 fpp-server systemd[550]: Failed to start mcnrelated.service - Launch Minecraft Server and Related Services.

y ahí es donde estoy ahora. Intenté usarlo -upero no tuvo éxito.

El problema es algo relacionado con tmux, al menos por ahora. Una vez que pueda iniciar con éxito el servicio, intentaré ver si se inició automáticamente en el arranque.

información relacionada