mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-09 05:24:49 +09:00
Self-hosted tunneled reverse proxy: a service on a NAT'd host (e.g. a home Jellyfin box) gets a public HTTPS hostname with no port-forwarding, by pairing two agents over WireGuard. Implements Phases 0-3 of docs/REMOTE_ACCESS_ROADMAP.md. Agent (Go): - new internal/wireguard package: Manager interface + kernel backend (wg/ip) and a userspace netstack backend (wireguard-go + gVisor) so Windows/macOS peers need no driver/admin; in-process keygen returns only the public key (private keys never leave the host) - wireguard:keygen/interface/peer/status/forward/unforward + firewall :allow_port/:deny_port commands; wireguard + firewall capability probes - TCP forwarder (tnet.ListenTCP / net.Listen -> dial localhost) carries traffic to the real service behind a netstack peer Backend (Python): - Tunnel + ExposedService models; tunnel_netutil (subnet allocator, health); tunnel_broker_service (keygen->up->peer->verify, firewall open, reconcile-on- reconnect); tunnel_publish_service (forward -> nginx -> DNS -> auth -> cert) - nginx remote-upstream vhost (WebSocket + proxy_buffering off) - /api/v1/tunnels CRUD + /<id>/services publish/unpublish - panel-authoritative reconcile hooked into the agent gateway on reconnect Frontend (React): - Remote Access page (tunnels + exposed services, status, teardown) and an "Expose a Local Service" wizard; new services/api/tunnels.js Verified: go build (win/linux) + vet + go tests (forwarder + no-leak parsers); py_compile + pytest (netutil, reconcile, nginx template); create_app boot; eslint + npm run build. Live multi-host run pending. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
57 lines
2.3 KiB
AMPL
57 lines
2.3 KiB
AMPL
module github.com/serverkit/agent
|
|
|
|
go 1.23.1
|
|
|
|
require (
|
|
fyne.io/systray v1.11.0
|
|
github.com/creack/pty v1.1.21
|
|
github.com/docker/docker v24.0.7+incompatible
|
|
github.com/docker/go-connections v0.4.0
|
|
github.com/gorilla/websocket v1.5.1
|
|
github.com/jchv/go-webview2 v0.0.0-20260205173254-56598839c808
|
|
github.com/lxn/walk v0.0.0-20210112085537-c389da54e794
|
|
github.com/shirou/gopsutil/v3 v3.24.1
|
|
github.com/spf13/cobra v1.8.0
|
|
golang.org/x/sys v0.32.0
|
|
golang.org/x/term v0.31.0
|
|
golang.zx2c4.com/wireguard v0.0.0-20260522210424-ecfc5a8d5446
|
|
gopkg.in/natefinch/lumberjack.v2 v2.2.1
|
|
gopkg.in/yaml.v3 v3.0.1
|
|
)
|
|
|
|
require (
|
|
github.com/Microsoft/go-winio v0.6.1 // indirect
|
|
github.com/distribution/reference v0.5.0 // indirect
|
|
github.com/docker/distribution v2.8.3+incompatible // indirect
|
|
github.com/docker/go-units v0.5.0 // indirect
|
|
github.com/go-ole/go-ole v1.3.0 // indirect
|
|
github.com/godbus/dbus/v5 v5.1.0 // indirect
|
|
github.com/gogo/protobuf v1.3.2 // indirect
|
|
github.com/google/btree v1.1.2 // indirect
|
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
|
github.com/jchv/go-winloader v0.0.0-20250406163304-c1995be93bd1 // indirect
|
|
github.com/lufia/plan9stats v0.0.0-20231016141302-07b5767bb0ed // indirect
|
|
github.com/lxn/win v0.0.0-20210218163916-a377121e959e // indirect
|
|
github.com/moby/term v0.5.0 // indirect
|
|
github.com/morikuni/aec v1.0.0 // indirect
|
|
github.com/opencontainers/go-digest v1.0.0 // indirect
|
|
github.com/opencontainers/image-spec v1.1.0 // indirect
|
|
github.com/pkg/errors v0.9.1 // indirect
|
|
github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect
|
|
github.com/shoenig/go-m1cpu v0.1.6 // indirect
|
|
github.com/spf13/pflag v1.0.5 // indirect
|
|
github.com/tklauser/go-sysconf v0.3.13 // indirect
|
|
github.com/tklauser/numcpus v0.7.0 // indirect
|
|
github.com/yusufpapurcu/wmi v1.2.3 // indirect
|
|
golang.org/x/crypto v0.37.0 // indirect
|
|
golang.org/x/mod v0.21.0 // indirect
|
|
golang.org/x/net v0.39.0 // indirect
|
|
golang.org/x/sync v0.8.0 // indirect
|
|
golang.org/x/time v0.7.0 // indirect
|
|
golang.org/x/tools v0.26.0 // indirect
|
|
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect
|
|
gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect
|
|
gotest.tools/v3 v3.5.1 // indirect
|
|
gvisor.dev/gvisor v0.0.0-20250503011706-39ed1f5ac29c // indirect
|
|
)
|