45 lines
1.1 KiB
Bash
45 lines
1.1 KiB
Bash
#!/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
|