#!/usr/bin/env bash # Copyright (c) 2021-2026 community-scripts ORG # Author: Simon Friedrich # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://forgejo.org/ source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors setting_up_container network_check update_os if [[ -z "$var_forgejo_instance" ]]; then read -rp "Forgejo Instance URL (e.g. https://code.forgejo.org): " var_forgejo_instance fi if [[ -z "$var_forgejo_runner_token" ]]; then read -rp "Forgejo Runner Registration Token: " var_forgejo_runner_token echo fi if [[ -z "$var_forgejo_instance" || -z "$var_forgejo_runner_token" ]]; then echo "❌ Forgejo instance URL and runner token are required." exit 1 fi export FORGEJO_INSTANCE="$var_forgejo_instance" export FORGEJO_RUNNER_TOKEN="$var_forgejo_runner_token" msg_info "Installing dependencies" $STD apt install -y \ jq git \ podman podman-docker msg_ok "Dependencies installed" msg_info "Enabling Podman socket" systemctl enable --now podman.socket msg_ok "Podman socket enabled" RAW_ARCH=$(uname -m) ARCH=$(echo "$RAW_ARCH" | sed 's/x86_64/amd64/;s/aarch64/arm64/') msg_info "Detected architecture: $ARCH" msg_info "Fetching latest Forgejo Runner release" RUNNER_VERSION=$( curl -fsSL https://data.forgejo.org/api/v1/repos/forgejo/runner/releases/latest | jq -r .name | sed 's/^v//' ) [[ -z "$RUNNER_VERSION" ]] && { msg_error "Unable to determine Forgejo Runner version" exit 1 } msg_ok "Forgejo Runner v${RUNNER_VERSION}" FORGEJO_URL="https://code.forgejo.org/forgejo/runner/releases/download/v${RUNNER_VERSION}/forgejo-runner-${RUNNER_VERSION}-linux-${ARCH}" msg_info "Downloading Forgejo Runner" wget -q -O /usr/local/bin/forgejo-runner "$FORGEJO_URL" chmod +x /usr/local/bin/forgejo-runner msg_ok "Runner installed" msg_info "Registering Forgejo Runner" export DOCKER_HOST="unix:///run/podman/podman.sock" forgejo-runner register \ --instance "$FORGEJO_INSTANCE" \ --token "$FORGEJO_RUNNER_TOKEN" \ --name "$HOSTNAME" \ --labels "linux-${ARCH}:docker://node:20-bookworm" \ --no-interactive msg_ok "Runner registered" msg_info "Creating systemd service" cat </etc/systemd/system/forgejo-runner.service [Unit] Description=Forgejo Runner Documentation=https://forgejo.org/docs/latest/admin/actions/ After=podman.socket Requires=podman.socket [Service] User=root WorkingDirectory=/root Environment=DOCKER_HOST=unix:///run/podman/podman.sock ExecStart=/usr/local/bin/forgejo-runner daemon Restart=on-failure RestartSec=10 TimeoutSec=0 [Install] WantedBy=multi-user.target EOF systemctl enable -q --now forgejo-runner msg_ok "Forgejo Runner service enabled" motd_ssh customize cleanup_lxc