77 lines
2.0 KiB
Bash
77 lines
2.0 KiB
Bash
#!/bin/bash
|
|
# frpc deployment script for TrueNAS
|
|
# Run from Fedora: bash plans/frpc-truenas-deploy.sh
|
|
# Installs frpc on TrueNAS and sets up tunnel to expose Gitea publicly
|
|
|
|
TRUENAS="root@192.168.188.119"
|
|
VPS_IP="85.214.154.199"
|
|
FRP_TOKEN="5f64a6f20bb2cb8c3133ecac8ca3f0571d7d64dff910225040bfc0c60a106c81"
|
|
FRP_VERSION="0.68.1"
|
|
|
|
echo "=== Deploying frpc on TrueNAS ==="
|
|
|
|
ssh -i /home/pplate/.ssh/id_ed25519_homelab $TRUENAS << REMOTE
|
|
set -e
|
|
|
|
# TrueNAS root filesystem is read-only — install to /mnt which is persistent ZFS
|
|
INSTALL_DIR=/mnt/VM_SSD_Pool/frp
|
|
mkdir -p \$INSTALL_DIR
|
|
|
|
# Download frpc binary
|
|
echo "Downloading frp ${FRP_VERSION}..."
|
|
curl -sL https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz \
|
|
-o /tmp/frp.tar.gz
|
|
tar xzf /tmp/frp.tar.gz -C /tmp/
|
|
cp /tmp/frp_${FRP_VERSION}_linux_amd64/frpc \$INSTALL_DIR/frpc
|
|
chmod +x \$INSTALL_DIR/frpc
|
|
\$INSTALL_DIR/frpc --version
|
|
|
|
# Write frpc config
|
|
cat > \$INSTALL_DIR/frpc.toml << 'TOML'
|
|
serverAddr = "${VPS_IP}"
|
|
serverPort = 7000
|
|
auth.method = "token"
|
|
auth.token = "${FRP_TOKEN}"
|
|
log.to = "/tmp/frpc.log"
|
|
log.level = "info"
|
|
|
|
[[proxies]]
|
|
name = "gitea"
|
|
type = "tcp"
|
|
localIP = "127.0.0.1"
|
|
localPort = 30008
|
|
remotePort = 30008
|
|
TOML
|
|
|
|
echo "frpc config written:"
|
|
cat \$INSTALL_DIR/frpc.toml
|
|
|
|
# Create init script (TrueNAS uses systemd-like init but custom)
|
|
# Use /etc/local.d/ for persistent startup scripts on TrueNAS SCALE
|
|
# Actually TrueNAS SCALE uses systemd — write a service to /etc/systemd/system/
|
|
cat > /etc/systemd/system/frpc.service << 'SVCEOF'
|
|
[Unit]
|
|
Description=frp client - tunnel to plate.software VPS
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStart=/mnt/VM_SSD_Pool/frp/frpc -c /mnt/VM_SSD_Pool/frp/frpc.toml
|
|
Restart=on-failure
|
|
RestartSec=10s
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
SVCEOF
|
|
|
|
systemctl daemon-reload
|
|
systemctl enable frpc
|
|
systemctl start frpc
|
|
sleep 3
|
|
systemctl status frpc --no-pager | head -15
|
|
echo ""
|
|
echo "=== frpc deployed and running ==="
|
|
echo "Gitea should now be reachable at https://git.plate.software"
|
|
REMOTE
|