One-shot setup scripts for Forgejo Actions runners — Linux (Ubuntu/Fedora/Debian) and Windows 11 Pro. Installs ALL build dependencies for crashmedia repos.
- PowerShell 59.3%
- Shell 40.7%
- setup-forgejo-runner.sh: Linux (Ubuntu 22.04/24.04/25.04, Debian 12/13, Fedora 41/42) Installs: build tools, CMake, Ninja, GCC/Clang, .NET 8, Rust, Node.js, Go, Python, PHP 8.3+, PowerShell, Boost, OpenSSL, FFmpeg, CUDA 12.x, MariaDB/MySQL, PostgreSQL, SQLite, Docker, Podman + 50+ libs - setup-forgejo-runner.ps1: Windows 11 Pro Installs: VS 2022 Build Tools, MSYS2 UCRT64, .NET 8+9, Rust (MSVC+GNU), Node.js (fnm), Go, Python, PHP 8.3+, vcpkg libs, CUDA 12.x, MariaDB, PostgreSQL, Docker Desktop + Forgejo runner as Scheduled Task Both scripts are fully idempotent and install ALL build dependencies across the crashmedia organization's 13+ active repositories. |
||
|---|---|---|
| README.md | ||
| setup-forgejo-runner.ps1 | ||
| setup-forgejo-runner.sh | ||
ForgejoRunners
One-shot setup scripts for Forgejo Actions runners. Installs every conceivable build dependency for all crashmedia repos on both Linux and Windows.
Quick Install
Linux (Ubuntu/Debian/Fedora)
# Run as root or with sudo
sudo bash -c "$(curl -fsSL https://git.crashmedia.ca/crashmedia/ForgejoRunners/raw/branch/main/setup-forgejo-runner.sh)"
Windows 11 Pro
# Run as Administrator
iwr -useb https://git.crashmedia.ca/crashmedia/ForgejoRunners/raw/branch/main/setup-forgejo-runner.ps1 | iex
Both scripts are fully idempotent — run them as many times as you like. They only install/update what's missing.
What Gets Installed
Linux Script (setup-forgejo-runner.sh)
| Phase | What | Repos That Need It |
|---|---|---|
| Build Tools | CMake 3.30+, Ninja, GCC/G++ 13+14, Clang/LLVM, autotools, ccache, pkg-config | Apollo, inputtino, libdisplaydevice |
| .NET 8 SDK | dotnet-sdk-8.0, ASP.NET runtime | CMRemote, CrashCraftsMic (companion) |
| Rust | rustup + stable toolchain, cargo | CMRemote agent-rs, CrashCraftsMic, CrashCraftsGameSync, webrtc-cmremote |
| Node.js | NVM (LTS), npm, pnpm, yarn | Apollo (web UI), CMRemote, Cm_comic, Arctic_Wolves, opencode, shared-web, Decky plugin |
| Go | Latest Go toolchain | Cm_comic, goreleaser (mirror) |
| Python 3 | python3, pip, venv, dev headers | CrashCraftsMic (Decky), flatpak-builder-tools, audit |
| PHP 8.3+ | php-cli, mysql, sqlite3, curl, gd, mbstring, xml, zip, intl | Arctic_Wolves |
| PowerShell | pwsh (cross-platform) | computer-setup |
| C++ Libraries | Boost (all), OpenSSL, curl, FFmpeg (full), VA-API, DRM/KMS, evdev, PulseAudio, Opus, miniupnpc, X11, Wayland, libcap, libnuma, libnotify, appindicator, libgbm, xkbcommon, pipewire, nlohmann-json, Google Test | Apollo, inputtino, libdisplaydevice |
| CUDA 12.x | NVIDIA CUDA toolkit (auto-detects GPU) | Apollo (NVENC) |
| Databases | MariaDB/MySQL, PostgreSQL, SQLite3 | Arctic_Wolves (MySQL), CMRemote (SQLite), Cm_comic (SQLite) |
| Containers | Docker CE + compose, Podman + Buildah (Fedora) | CrashCraftsGameSync, Apollo |
| Extra Tools | git-lfs, jq, xvfb, doxygen, graphviz, rsync, NSIS, Mono, Java JDK, Ruby, Lua, Flatpak, patchelf | Docs, testing, packaging |
| Forgejo Runner | Latest binary, systemd service, dedicated user, config at /etc/forgejo-runner/ |
CI/CD |
Windows Script (setup-forgejo-runner.ps1)
| Phase | What | Notes |
|---|---|---|
| Prerequisites | Chocolatey, Git, 7-Zip, vcredist-all | Auto-installs Chocolatey if missing |
| VS Build Tools | VS 2022 + C++ workload, Windows SDK, CMake, Ninja, ccache | Required for .NET + native C++ builds |
| MSYS2 UCRT64 | GCC, Boost, OpenSSL, curl, FFmpeg, Opus, libevdev, PulseAudio | Cross-compilation for Apollo |
| Languages | .NET 8+9 SDK, Rust (MSVC+GNU), Node.js (fnm), Go, Python 3, PHP 8.3+, PowerShell Core | All runtimes |
| C++ Libs | vcpkg (Boost, OpenSSL, curl, FFmpeg...), MinHook, ViGEmClient | Windows-native builds |
| CUDA 12.x | NVIDIA CUDA toolkit (auto-detects GPU) | For Apollo NVENC |
| Databases | MariaDB, PostgreSQL, SQLite | Local dev/test databases |
| Docker | Docker Desktop + WSL2 | Container builds |
| Forgejo Runner | Latest binary, Scheduled Task auto-start, config at C:\ProgramData\ForgejoRunner\ |
CI/CD |
Supported Distros
| Platform | Versions |
|---|---|
| Ubuntu | 22.04 (jammy), 24.04 (noble), 25.04 (plucky) |
| Debian | 12 (bookworm), 13 (trixie) |
| Fedora | 41, 42 |
| Windows | 11 Pro (22H2+) |
Architecture Support
- x86_64 / amd64 — fully tested
- aarch64 / arm64 — Linux only (script auto-detects)
Post-Install: Register the Runner
After the script finishes, you still need to register the runner with your Forgejo instance:
# Linux
sudo forgejo-runner register --config /etc/forgejo-runner/runner-config.yml
sudo systemctl enable --now forgejo-runner
# Windows (run as Administrator)
& "C:\Program Files\ForgejoRunner\forgejo-runner.exe" register --config "C:\ProgramData\ForgejoRunner\runner-config.yml"
Get a registration token from: Repository → Settings → Actions → Runners → Generate Registration Token
License
MIT