#!/bin/bash set -euo pipefail REPO_URL="${REPO_URL:-https://gitea.malmert.de/marcus/mitm-webserver.git}" APP_DIR="${APP_DIR:-/opt/mitm-webserver}" TARGET_SCRIPT_REL="${TARGET_SCRIPT_REL:-tools/traffic-target.sh}" TARGET_SERVICE="${TARGET_SERVICE:-mitm-traffic-target}" RUNNER_DIR="${RUNNER_DIR:-/opt/gitea-act-runner}" RUNNER_BIN_URL="${RUNNER_BIN_URL:-https://gitea.com/gitea/act_runner/releases/download/v0.2.13/act_runner-0.2.13-linux-amd64}" RUNNER_INSTANCE_URL="${RUNNER_INSTANCE_URL:-https://gitea.malmert.de/}" RUNNER_NAME="${RUNNER_NAME:-traffic-target-runner}" RUNNER_LABELS="${RUNNER_LABELS:-traffic-target:host}" RUNNER_TOKEN="${RUNNER_TOKEN:-}" if [[ -z "$RUNNER_TOKEN" ]]; then echo "RUNNER_TOKEN must be set before running this script." >&2 exit 1 fi echo "==> Update system packages" apt update apt upgrade -y DEBIAN_FRONTEND=noninteractive apt install -y \ git \ curl \ wget \ python3 \ openssl \ socat \ iperf3 echo "==> Setup repository" if [[ ! -d "$APP_DIR/.git" ]]; then git clone "$REPO_URL" "$APP_DIR" else cd "$APP_DIR" git fetch origin main git checkout main git merge --ff-only origin/main fi TARGET_SCRIPT_PATH="$APP_DIR/$TARGET_SCRIPT_REL" if [[ ! -x "$TARGET_SCRIPT_PATH" ]]; then chmod +x "$TARGET_SCRIPT_PATH" fi echo "==> Setup traffic target systemd service" cat >/etc/systemd/system/${TARGET_SERVICE}.service < Install Gitea Act Runner" mkdir -p "$RUNNER_DIR" cd "$RUNNER_DIR" if [[ ! -x "$RUNNER_DIR/act_runner" ]]; then wget -O act_runner "$RUNNER_BIN_URL" chmod +x act_runner fi if [[ ! -f "$RUNNER_DIR/.runner" ]]; then ./act_runner register \ --instance "$RUNNER_INSTANCE_URL" \ --token "$RUNNER_TOKEN" \ --name "$RUNNER_NAME" \ --labels "$RUNNER_LABELS" \ --no-interactive else echo "==> Runner already registered" fi echo "==> Setup Gitea Act Runner systemd service" cat >/etc/systemd/system/gitea-act-runner.service < Setup complete" echo "Traffic target service: systemctl status ${TARGET_SERVICE}" echo "Act runner service: systemctl status gitea-act-runner"