Easy to use reverse proxy with docker integration
Find a file
2024-10-04 10:04:18 +08:00
.github/workflows fixed container routes not being loaded, added X-Forwarded-{Scheme,Proto,Host}, fixed containers with no mapping being served 2024-09-30 18:04:47 +08:00
.vscode fixed event name missing 2024-10-04 06:51:26 +08:00
cmd added ls-icons command 2024-10-04 10:04:18 +08:00
docs replacing label parser map with improved deserialization implementation, API host check now disabled when in debug mode 2024-10-03 01:50:49 +08:00
examples added some docker compose examples; fixed defaults to wrong host; updated watcher behavior to retry connection every 3 secs until success or until cancelled 2024-09-22 04:00:08 +08:00
internal added ls-icons command 2024-10-04 10:04:18 +08:00
schema updated schema for homepage fields 2024-10-04 01:00:06 +08:00
showcase support '0' listening port, readme update, showcase added 2024-09-23 04:09:56 +08:00
.gitignore restructured the project to comply community guideline, for others check release note 2024-09-28 09:51:34 +08:00
.gitlab-ci.yml Dev 2024-04-08 05:07:27 +00:00
.gitmodules refactor file names, readme updates, removed frontend submodule as it is being built independently 2024-09-25 11:22:25 +08:00
compose.example.yml update compose example 2024-09-29 11:46:54 +08:00
config.example.yml added explicit only mode for docker provider, updated dependencies 2024-09-29 11:24:41 +08:00
Dockerfile go-proxy ls-route now query api server first, then fallback to read from config file 2024-09-30 15:56:03 +08:00
go.mod improved homepage labels 2024-10-03 04:00:02 +08:00
go.sum added explicit only mode for docker provider, updated dependencies 2024-09-29 11:24:41 +08:00
LICENSE added license 2024-04-01 04:08:48 +00:00
Makefile fixed issue for container not being excluded on restart 2024-09-30 15:19:59 +08:00
providers.example.yml example fix 2024-09-24 03:13:39 +08:00
README.md fixed middleware implementation, added middleware tracing for easier debug 2024-10-02 13:55:41 +08:00
README_CHT.md removed config example from README, check config.example.yml for complete explaination 2024-09-27 09:59:36 +08:00

go-proxy

Quality Gate Status Lines of Code Security Rating Maintainability Rating Vulnerabilities

繁體中文文檔請看此

A lightweight, easy-to-use, and performant reverse proxy with a web UI.

Join our Discord for help and discussions

Table of content

Key Points

  • Easy to use
    • Effortless configuration
    • Simple multi-node setup
    • Error messages is clear and detailed, easy troubleshooting
  • Auto SSL cert management (See Supported DNS Challenge Providers)
  • Auto configuration for docker containers
  • Auto hot-reload on container state / config file changes
  • idlesleeper: stop containers on idle, wake it up on traffic (optional, see showcase)
  • HTTP(s) reserve proxy
  • HTTP middleware support (experimental)
  • Custom error pages support
  • TCP and UDP port forwarding
  • Web UI for configuration and monitoring (See screenshots)
  • Supports linux/amd64, linux/arm64, linux/arm/v7, linux/arm/v6 multi-platform
  • Written in Go

🔼Back to top

Getting Started

Setup

  1. Pull docker image

    docker pull ghcr.io/yusing/go-proxy:latest
    
  2. Create new directory, cd into it, then run setup

    docker run --rm -v .:/setup ghcr.io/yusing/go-proxy /app/go-proxy setup
    
  3. Setup DNS Records point to machine which runs go-proxy, e.g.

    • A Record: *.y.z -> 10.0.10.1
    • AAAA Record: *.y.z -> ::ffff:a00:a01
  4. Setup docker-socket-proxy other docker nodes (if any) (see example) and then them inside config.yml

  5. Done. You may now do some extra configuration

    • With text editor (e.g. Visual Studio Code)
    • With Web UI via gp.y.z
    • For more info, See docker.md

🔼Back to top

Commands line arguments

Argument Description Example
empty start proxy server
validate validate config and exit
reload trigger a force reload of config
ls-config list config and exit go-proxy ls-config | jq
ls-route list proxy entries and exit go-proxy ls-route | jq
debug-ls-mtrace list middleware trace (works only in debug mode) go-proxy debug-ls-mtrace | jq

run with docker exec go-proxy /app/go-proxy <command>

Environment variables

Environment Variable Description Default Values
GOPROXY_NO_SCHEMA_VALIDATION disable schema validation false boolean
GOPROXY_DEBUG enable debug behaviors false boolean
GOPROXY_HTTP_ADDR http server listening address :80 [host]:port
GOPROXY_HTTPS_ADDR https server listening address (if enabled) :443 [host]:port
GOPROXY_API_ADDR api server listening address 127.0.0.1:8888 [host]:port

Use JSON Schema in VSCode

Copy .vscode/settings.example.json to .vscode/settings.json and modify it to fit your needs

🔼Back to top

Config File

See config.example.yml

🔼Back to top

Include Files

These are files that include standalone proxy entries

See Fields

See providers.example.yml for examples

🔼Back to top

Showcase

idlesleeper

idlesleeper

🔼Back to top

Build it yourself

  1. Clone the repository git clone https://github.com/yusing/go-proxy --depth=1

  2. Install / Upgrade go (>=1.22) and make if not already

  3. Clear cache if you have built this before (go < 1.22) with go clean -cache

  4. get dependencies with make get

  5. build binary with make build

🔼Back to top