#!/usr/bin/env bash set -euo pipefail RATHOLE_VERSION="${RATHOLE_VERSION:-v0.4.3}" RATHOLE_URL="${RATHOLE_URL:-https://github.com/rapiz1/rathole/releases/download/${RATHOLE_VERSION}/rathole-x86_64-unknown-linux-gnu.zip}" CONFIG_SOURCE="${CONFIG_SOURCE:-/tmp/rathole-client.toml}" sudo install -d -m 0755 /etc/rathole sudo install -d -m 0755 /opt/rathole tmp_dir="$(mktemp -d)" trap 'rm -rf "$tmp_dir"' EXIT cd "$tmp_dir" curl -fL "$RATHOLE_URL" -o rathole.zip python3 - <<'PY' import zipfile z = zipfile.ZipFile("rathole.zip") z.extractall(".") PY sudo install -m 0755 rathole /usr/local/bin/rathole sudo install -m 0600 "$CONFIG_SOURCE" /etc/rathole/client.toml cat <<'EOF' | sudo tee /etc/systemd/system/rathole-client.service >/dev/null [Unit] Description=Desineuron Rathole Client After=network-online.target Wants=network-online.target [Service] Type=simple ExecStart=/usr/local/bin/rathole /etc/rathole/client.toml Restart=always RestartSec=5 User=root [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl enable --now rathole-client.service sudo systemctl status --no-pager rathole-client.service || true