#!/usr/bin/env bash set -euo pipefail # Reproducible Forgejo + CI runner setup. # Run on a fresh Ubuntu 22.04/24.04 server with root. # Requires: docker, docker compose, git already installed. REPO_ORIGIN="https://git.slaid098.dev/slaid098/forgejo-infra.git" DEPLOY_DIR="/root/dockers/forgejo" echo "==> Cloning forgejo-infra config..." git clone "$REPO_ORIGIN" /tmp/forgejo-infra-clone echo "==> Creating $DEPLOY_DIR..." mkdir -p "$DEPLOY_DIR/app_data/forgejo" "$DEPLOY_DIR/app_data/runner" cp /tmp/forgejo-infra-clone/compose/docker-compose.yml "$DEPLOY_DIR/docker-compose.yml" cp /tmp/forgejo-infra-clone/compose/runner-config.yaml "$DEPLOY_DIR/app_data/runner/config.yaml" cp -r /tmp/forgejo-infra-clone/runner-image "$DEPLOY_DIR/runner-image" echo "==> Building runner image..." cd "$DEPLOY_DIR/runner-image" docker build -t git.slaid098.dev/slaid098/runner:latest . echo "==> Pushing runner image to Forgejo registry..." # Requires: docker login git.slaid098.dev done beforehand (with a token that has package:write scope) docker push git.slaid098.dev/slaid098/runner:latest echo "==> Starting Forgejo + runner..." cd "$DEPLOY_DIR" docker compose up -d echo "==> Done. Forgejo will be at http://localhost:3000 — configure NPM/reverse proxy + DNS separately." echo " Register the runner: docker compose run --rm runner act_runner register --instance http://forgejo:3000 --token --name linux-2 --labels ubuntu-latest:docker://git.slaid098.dev/slaid098/runner:latest --no-interactive"