[Unit] Description=Gitea Actions Runner %i ({% if runner_mode == 'docker' %}docker{% else %}binary{% endif %}) After=network.target{% if runner_mode == 'docker' %} docker.service Requires=docker.service{% endif %} [Service] {% if runner_mode == 'docker' %} Type=oneshot RemainAfterExit=yes ExecStartPre=-/usr/bin/docker rm -f gitea-runner-%i ExecStart=/usr/bin/docker run -d --name gitea-runner-%i \ --restart=no \ -v /var/run/docker.sock:/var/run/docker.sock \ -v {{ gitea_runner_base_data_dir }}/%i:/data \ -w /data \ {{ gitea_runner_docker_image }}:{{ gitea_runner_version | regex_replace('^v', '') }} \ daemon --config /data/config.yaml ExecStop=/usr/bin/docker stop -t 30 gitea-runner-%i ExecStopPost=-/usr/bin/docker rm -f gitea-runner-%i Restart=on-failure RestartSec={{ gitea_runner_service_restart_sec }} {% else %} Type=simple ExecStart={{ gitea_runner_binary_path }} daemon --config {{ gitea_runner_base_config_dir }}/%i/config.yaml WorkingDirectory={{ gitea_runner_base_data_dir }}/%i ExecStop=/bin/kill -TERM $MAINPID TimeoutStopSec=30 Restart=on-failure RestartSec={{ gitea_runner_service_restart_sec }} User={{ gitea_runner_service_user }} Group=docker {% endif %} [Install] WantedBy=multi-user.target