From 07b2594d46656ae04dd62d818c43ad91ce37f72c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20Le=C3=9Fmann=20=28=40MarkL4YG=29?= Date: Tue, 7 Jan 2025 16:34:07 +0100 Subject: [PATCH 1/2] Add some useful systemd commands --- docs/hosting-runners.md | 204 ++++++++++++++++++++-------------------- 1 file changed, 104 insertions(+), 100 deletions(-) diff --git a/docs/hosting-runners.md b/docs/hosting-runners.md index a778c80..03308ca 100644 --- a/docs/hosting-runners.md +++ b/docs/hosting-runners.md @@ -1,101 +1,105 @@ -# Creating a new ForgeJo Runner Host - -## Machine Setup - -### 1. Install Ubuntu (24.04) - -For example on the Hetzner cloud. - -### 2. Create a new user for the runner - -Since we don't want to the new forgejo runner to be ``root`` on out machine, we create a new user for it: -```bash -# As root -useradd -s /bin/bash --create-home forgejo-runner -loginctl enable-linger forgejo-runner -``` - -### 3. Install podman (rootless) - -```bash -# As root -apt install -y podman -echo "forgejo-runner:10000:12000" >> /etc/subuid -echo "forgejo-runner:10000:12000" >> /etc/subgid -``` - -#### Enable Podman docker-socket on user - -```bash -# As root -apt install -y systemd-container -machinectl shell --uid forgejo-runner # <-- This is basically "sudo -Hi XXX" but makes sure the systemd container is switched too. -``` - -```bash -systemctl enable --user podman.socket -echo 'export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock' >> ~/.profile -``` - -#### Automatic podman cleanup on reboot - -```bash -crontab -e -``` -```cronexp -@reboot podman system cleanup --all --force -``` - -### 4. Install the forgejo-runner - -```bash -# As forgejo-runner -# Verify these URLs are still the version you want to install!!! -DOWNLOAD_URL="https://code.forgejo.org/forgejo/runner/releases/download/v5.0.4/forgejo-runner-5.0.4-linux-amd64" -SIG_URL="https://code.forgejo.org/forgejo/runner/releases/download/v5.0.4/forgejo-runner-5.0.4-linux-amd64.asc" -gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710 # Installs the signing key used by forgejo for their releases -wget -O forgejo-runner "$DOWNLOAD_URL" -wget -O forgejo-runner.asc "$SIG_URL" -gpg --verify forgejo-runner.asc forgejo-runner -# The output should now contain the following: -# Good signature from "Forgejo " -# aka "Forgejo Releases " - -mkdir -p ~/.local/bin -mv ./forgejo-runner ~/.local/bin/forgejo-runner -chmod 750 ~/.local/bin/forgejo-runner -``` - -### 5. Configure and register the forgejo-runner - -__The official runner registration is__ [here](https://forgejo.org/docs/v8.0/admin/runner-installation/#standard-registration) -Or, if you're volunteering another runner for our instance, please contact us to receive the necessary registration information. :) - -```bash -# As forgejo-runner -forgejo-runner generate-config > config.yml - -# We're about to enter secrets into the terminal, disable history: -set +o history -RUNNER_INST_URL="https://git.forsaken-ashbirds.net" -RUNNER_NAME="" -RUNNER_TOKEN="" -RUNNER_LABELS="ubuntu-24.04,docker,podman,self-hosted" # Update these labels if you intend to change stuff! - -# Re-enable history :) -set -o history -forgejo-runner register --instance "$RUNNER_INST_URL" --name "$RUNNER_NAME" --token "$RUNNER_TOKEN" --labels "$RUNNER_LABELS" --no-interactive -# You should see the following afterwards: -# INFO Runner registered successfully -``` - -#### Check the runner is working - -```bash -# As forgejo-runner -mkdir -p ~/.config/systemd/user -# Download the file "docs/forgejo-runner.service" from this repository to "~/.config/systemd/user" -systemctl --user enable --now forgejo-runner -``` - +# Creating a new ForgeJo Runner Host + +## Machine Setup + +### 1. Install Ubuntu (24.04) + +For example on the Hetzner cloud. + +### 2. Create a new user for the runner + +Since we don't want to the new forgejo runner to be ``root`` on out machine, we create a new user for it: +```bash +# As root +useradd -s /bin/bash --create-home forgejo-runner +loginctl enable-linger forgejo-runner +``` + +### 3. Install podman (rootless) + +```bash +# As root +apt install -y podman +echo "forgejo-runner:10000:12000" >> /etc/subuid +echo "forgejo-runner:10000:12000" >> /etc/subgid +``` + +#### Enable Podman docker-socket on user + +```bash +# As root +apt install -y systemd-container +machinectl shell --uid forgejo-runner # <-- This is basically "sudo -Hi XXX" but makes sure the systemd container is switched too. +``` + +```bash +systemctl enable --user podman.socket +echo 'export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock' >> ~/.profile +``` + +#### Automatic podman cleanup on reboot + +```bash +crontab -e +``` +```cronexp +@reboot podman system cleanup --all --force +``` + +### 4. Install the forgejo-runner + +```bash +# As forgejo-runner +# Verify these URLs are still the version you want to install!!! +DOWNLOAD_URL="https://code.forgejo.org/forgejo/runner/releases/download/v5.0.4/forgejo-runner-5.0.4-linux-amd64" +SIG_URL="https://code.forgejo.org/forgejo/runner/releases/download/v5.0.4/forgejo-runner-5.0.4-linux-amd64.asc" +gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710 # Installs the signing key used by forgejo for their releases +wget -O forgejo-runner "$DOWNLOAD_URL" +wget -O forgejo-runner.asc "$SIG_URL" +gpg --verify forgejo-runner.asc forgejo-runner +# The output should now contain the following: +# Good signature from "Forgejo " +# aka "Forgejo Releases " + +mkdir -p ~/.local/bin +mv ./forgejo-runner ~/.local/bin/forgejo-runner +chmod 750 ~/.local/bin/forgejo-runner +``` + +### 5. Configure and register the forgejo-runner + +__The official runner registration is__ [here](https://forgejo.org/docs/v8.0/admin/runner-installation/#standard-registration) +Or, if you're volunteering another runner for our instance, please contact us to receive the necessary registration information. :) + +```bash +# As forgejo-runner +forgejo-runner generate-config > config.yml + +# We're about to enter secrets into the terminal, disable history: +set +o history +RUNNER_INST_URL="https://git.forsaken-ashbirds.net" +RUNNER_NAME="" +RUNNER_TOKEN="" +RUNNER_LABELS="ubuntu-24.04,docker,podman,self-hosted" # Update these labels if you intend to change stuff! + +# Re-enable history :) +set -o history +forgejo-runner register --instance "$RUNNER_INST_URL" --name "$RUNNER_NAME" --token "$RUNNER_TOKEN" --labels "$RUNNER_LABELS" --no-interactive +# You should see the following afterwards: +# INFO Runner registered successfully +``` + +#### Check the runner is working + +```bash +# As forgejo-runner +mkdir -p ~/.config/systemd/user +# Download the file "docs/forgejo-runner.service" from this repository to "~/.config/systemd/user" +systemctl --user enable --now forgejo-runner +# View logs by using: +journalctl -xe --user-unit=forgejo-runner +# View status by using: +systemctl --user status forgejo-runner +``` + __Go into Forgejo and check that your runner is shown as UP__. \ No newline at end of file From 1104473546c0498b57ade8ee9d8d8a978cde58d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20Le=C3=9Fmann=20=28=40MarkL4YG=29?= Date: Tue, 7 Jan 2025 16:35:57 +0100 Subject: [PATCH 2/2] Add editorconfig for docs project --- .editorconfig | 8 ++++++++ docs/forgejo-runner.service | 32 ++++++++++++++++---------------- docs/hosting-runners.md | 2 +- 3 files changed, 25 insertions(+), 17 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..9141329 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_style = space +indent_size = 4 diff --git a/docs/forgejo-runner.service b/docs/forgejo-runner.service index c731825..10b7b2a 100644 --- a/docs/forgejo-runner.service +++ b/docs/forgejo-runner.service @@ -1,16 +1,16 @@ -[Unit] -Description=Forgejo Runner -Documentation=https://forgejo.org/docs/latest/admin/actions/ -After=podman-socket.service - -[Service] -ExecStart=/home/forgejo-runner/.local/bin/forgejo-runner daemon -ExecReload=/bin/kill -s HUP $MAINPID -WorkingDirectory=/home/forgejo-runner - -Restart=on-failure -TimeoutSec=0 -RestartSec=10 - -[Install] -WantedBy=default.target +[Unit] +Description=Forgejo Runner +Documentation=https://forgejo.org/docs/latest/admin/actions/ +After=podman-socket.service + +[Service] +ExecStart=/home/forgejo-runner/.local/bin/forgejo-runner daemon +ExecReload=/bin/kill -s HUP $MAINPID +WorkingDirectory=/home/forgejo-runner + +Restart=on-failure +TimeoutSec=0 +RestartSec=10 + +[Install] +WantedBy=default.target diff --git a/docs/hosting-runners.md b/docs/hosting-runners.md index 03308ca..3ef5bbe 100644 --- a/docs/hosting-runners.md +++ b/docs/hosting-runners.md @@ -102,4 +102,4 @@ journalctl -xe --user-unit=forgejo-runner systemctl --user status forgejo-runner ``` -__Go into Forgejo and check that your runner is shown as UP__. \ No newline at end of file +__Go into Forgejo and check that your runner is shown as UP__.