A high-performance dynamic reverse proxy written in Go.
396
A high-performance dynamic reverse proxy written in Go with a professional Vue 3 web dashboard. Route traffic with static or dynamic targets, enforce IP blocklists, validate requests through middleware, and manage Let's Encrypt SSL certificates — all from a single binary.
2xx.403 Forbidden.autocert with per-domain toggle.embed.FS. No external web server needed.linux/amd64 + linux/arm64 via buildx.docker run -d \
-p 80:80 \
-p 443:443 \
-p 8080:8080 \
-p 8000:8000 \
-v golang-proxy-data:/app/database \
-e SERVER_USERNAME=admin \
-e SERVER_PASSWORD=admin \
--name golang-proxy \
jefriherditriyanto/golang-proxy:latest
Mount
-v golang-proxy-data:/app/databaseto persist routes, logs, blocklist, and SSL certs across container restarts.
Dashboard: http://localhost:8000 (login: admin / admin)
Proxy listener: http://localhost:8080
# Frontend
bun install
bun run build
# Backend
go build -o go-proxy .
./go-proxy
Requires Go 1.22+ and Bun (or Node 20+).
| Variable | Default | Description |
|---|---|---|
LISTEN_PORT | 8080 | Port for incoming proxy traffic |
SERVER_PORT | 8000 | Port for admin dashboard + API |
SERVER_USERNAME | admin | Basic auth username for dashboard |
SERVER_PASSWORD | admin | Basic auth password for dashboard |
GO_ENV | — | Set to local to proxy frontend assets to Vite dev server at localhost:5173 |
SSL is enabled per-route via the
ssl_activefield in the Routes dashboard. The Let's Encrypt infrastructure (ports 80/443) runs automatically — just toggle SSL on any route and certs are provisioned.
┌─────────────────┐
│ Golang Proxy │
│ │
Client ──────────► │ LISTEN :8080 │ ──► Target Server
│ • Route match │
│ • IP blocklist │
│ • Validation │
│ • SSL (ACME) │
│ │
Admin ──────────► │ SERVER :8000 │
│ • Dashboard UI │
│ • REST API │
│ • SSE Streams │
│ • Basic Auth │
│ │
│ SQLite (GORM) │
└─────────────────┘
| Layer | Technology |
|---|---|
| Proxy Engine | Go 1.24, net/http, autocert |
| ORM | GORM + SQLite3 |
| Frontend | Vue 3, TypeScript, Vite |
| Styling | Tailwind CSS v4 |
| State | Pinia |
| Charts | Highcharts |
| Icons | vue-icons-plus |
| Terminal | xterm.js |
| Validation | Zod |
| Dev Tools | ESLint, Oxlint, vue-tsc, vue-doctor |
| Page | Description |
|---|---|
| Overview | Real-time metrics (SSE): total requests, success rate, latency, volume/status charts |
| Routes | CRUD proxy routes (static/dynamic), Log URL Prefix filter, live traffic terminal per route |
| Block List | Add/remove IPs from the blocklist with reason tracking |
| Logs | Request log stream with detail inspector (headers, body, status, latency) and clear-all |
MIT
Content type
Image
Digest
sha256:74fb51fa0…
Size
41.1 MB
Last updated
3 months ago
docker pull jefriherditriyanto/golang-proxy