边缘网关 + Agent 的端口中继:Agent 主动连出到网关,把内网目标挂到网关端口上; 通过邀请链接按设备授权,可选审批,首次连接起计时,到期、闲置自动收回。 - portrelay-server:边缘网关(端口池、白名单与授权租约、邀请与授权网页) - portrelay-agent:Agent(yamux 隧道、本地 API 与网页面板、流量统计) - mac-native:SwiftUI 菜单栏 App
22 lines
986 B
Docker
22 lines
986 B
Docker
# PortRelay 边缘网关(服务端)镜像
|
|
# docker build -t portrelay-server .
|
|
# docker run -d --network host -e PORTRELAY_TOKEN=... -v portrelay:/var/lib/portrelay portrelay-server
|
|
# 请使用 host 网络:白名单依赖访问者的真实来源 IP,端口映射可能把它变成网桥地址。
|
|
FROM golang:1.23-alpine AS build
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY . .
|
|
ARG VERSION=dev
|
|
RUN CGO_ENABLED=0 go build -trimpath -ldflags "-s -w -X main.version=${VERSION}" \
|
|
-o /out/portrelay-server ./cmd/portrelay-server \
|
|
&& mkdir -p /out/state
|
|
|
|
FROM gcr.io/distroless/static-debian12:nonroot
|
|
COPY --from=build /out/portrelay-server /usr/local/bin/portrelay-server
|
|
COPY --from=build --chown=65532:65532 /out/state /var/lib/portrelay
|
|
VOLUME ["/var/lib/portrelay"]
|
|
EXPOSE 33000-34000
|
|
ENTRYPOINT ["/usr/local/bin/portrelay-server"]
|
|
CMD ["-listen", ":33000", "-port-min", "33000", "-port-max", "34000", "-state", "/var/lib/portrelay/leases.json"]
|