117 lines
2.8 KiB
Bash
117 lines
2.8 KiB
Bash
#!/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 <<EOL
|
|
[Unit]
|
|
Description=MITM Traffic Target
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
WorkingDirectory=$APP_DIR
|
|
ExecStart=$TARGET_SCRIPT_PATH
|
|
Restart=always
|
|
RestartSec=5
|
|
User=root
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOL
|
|
|
|
systemctl daemon-reload
|
|
systemctl enable "$TARGET_SERVICE"
|
|
systemctl restart "$TARGET_SERVICE"
|
|
|
|
echo "==> 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 <<EOL
|
|
[Unit]
|
|
Description=Gitea Actions Runner (act_runner)
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
ExecStartPre=/bin/sleep 10
|
|
ExecStart=$RUNNER_DIR/act_runner daemon
|
|
WorkingDirectory=$RUNNER_DIR
|
|
Restart=always
|
|
RestartSec=5
|
|
User=root
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOL
|
|
|
|
systemctl daemon-reload
|
|
systemctl enable gitea-act-runner
|
|
systemctl restart gitea-act-runner
|
|
|
|
echo "==> Setup complete"
|
|
echo "Traffic target service: systemctl status ${TARGET_SERVICE}"
|
|
echo "Act runner service: systemctl status gitea-act-runner"
|