Files
PortRelay/deploy/install-server.sh
T
DeepFal 86e159b3f0 PortRelay:把内网服务临时、可控地开放给同事
边缘网关 + Agent 的端口中继:Agent 主动连出到网关,把内网目标挂到网关端口上;
通过邀请链接按设备授权,可选审批,首次连接起计时,到期、闲置自动收回。

- portrelay-server:边缘网关(端口池、白名单与授权租约、邀请与授权网页)
- portrelay-agent:Agent(yamux 隧道、本地 API 与网页面板、流量统计)
- mac-native:SwiftUI 菜单栏 App
2026-10-13 16:33:17 +08:00

50 lines
1.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
# 在 Linux 网关上安装 / 升级 PortRelay 服务端(systemd)。
#
# sudo ./install-server.sh ./portrelay-server
#
# 首次安装会生成随机 token 写入 /etc/portrelay-server.env;升级时保留已有配置。
set -eu
BIN="${1:-./portrelay-server}"
HERE="$(cd "$(dirname "$0")" && pwd)"
ENV_FILE=/etc/portrelay-server.env
UNIT=/etc/systemd/system/portrelay-server.service
if [ "$(id -u)" -ne 0 ]; then
echo "请用 root 运行:sudo $0 $*" >&2
exit 1
fi
if [ ! -x "$BIN" ]; then
echo "找不到可执行文件 $BIN" >&2
exit 1
fi
if [ -f /usr/local/bin/portrelay-server ]; then
cp /usr/local/bin/portrelay-server "/usr/local/bin/portrelay-server.bak-$(date +%Y%m%d-%H%M%S)"
fi
install -m 755 "$BIN" /usr/local/bin/portrelay-server
if [ ! -f "$ENV_FILE" ]; then
if command -v openssl >/dev/null 2>&1; then
TOKEN="$(openssl rand -hex 24)"
else
TOKEN="$(head -c 24 /dev/urandom | od -An -tx1 | tr -d ' \n')"
fi
umask 077
sed "s/^PORTRELAY_TOKEN=.*/PORTRELAY_TOKEN=$TOKEN/" "$HERE/portrelay-server.env.example" > "$ENV_FILE"
chmod 600 "$ENV_FILE"
echo "已生成 token 并写入 $ENV_FILE"
fi
install -m 644 "$HERE/portrelay-server.service" "$UNIT"
systemctl daemon-reload
systemctl enable portrelay-server >/dev/null
systemctl restart portrelay-server
sleep 1
systemctl --no-pager --lines=5 status portrelay-server || true
echo
echo "完成。查看 token:sudo grep PORTRELAY_TOKEN $ENV_FILE"
echo "防火墙需放通 TCP 33000-34000(控制端口 + 通道端口池)"