Easy to use reverse proxy with docker integration
Find a file
2024-10-30 06:52:18 +08:00
.github/workflows improved idlewatcher and content type matching, update CI 2024-10-07 17:41:08 +08:00
.trunk correcting some behaviors for $DOCKER_HOST, now uses container's private IP instead of localhost 2024-10-11 09:13:38 +08:00
.vscode fixed event name missing 2024-10-04 06:51:26 +08:00
cmd migrated from logrus to zerolog, improved error formatting, fixed concurrent map write, fixed crash on rapid page refresh for idle containers, fixed infinite recursion on gotfiy error, fixed websocket connection problem when using idlewatcher 2024-10-29 11:34:58 +08:00
examples refactored http import name, fixed and simplified idlewatcher/idlewaker implementation, dependencies update 2024-10-07 12:45:07 +08:00
internal fixed config reload 2024-10-30 06:52:18 +08:00
pkg added package version api, dependencies upgrade 2024-10-06 09:23:41 +08:00
schema initial gotify support 2024-10-22 05:38:09 +08:00
screenshots fixed idlewatcher panics and incorrect behavior, update screenshot 2024-10-06 16:17:52 +08:00
scripts added package version api, dependencies upgrade 2024-10-06 09:23:41 +08:00
.gitignore fixed loadbalancer with idlewatcher, fixed reload issue 2024-10-20 09:46:02 +08:00
.gitlab-ci.yml added package version api, dependencies upgrade 2024-10-06 09:23:41 +08:00
.gitmodules refactor file names, readme updates, removed frontend submodule as it is being built independently 2024-09-25 11:22:25 +08:00
.golangci.yml correcting some behaviors for $DOCKER_HOST, now uses container's private IP instead of localhost 2024-10-11 09:13:38 +08:00
compose.example.yml refactored http import name, fixed and simplified idlewatcher/idlewaker implementation, dependencies update 2024-10-07 12:45:07 +08:00
config.example.yml added explicit only mode for docker provider, updated dependencies 2024-09-29 11:24:41 +08:00
Dockerfile refactored http import name, fixed and simplified idlewatcher/idlewaker implementation, dependencies update 2024-10-07 12:45:07 +08:00
go.mod implemented login and jwt auth 2024-10-30 06:25:32 +08:00
go.sum implemented login and jwt auth 2024-10-30 06:25:32 +08:00
LICENSE added license 2024-04-01 04:08:48 +00:00
Makefile fixed notification not being sent 2024-10-30 06:44:10 +08:00
providers.example.yml readme updates, docs moved to wiki 2024-10-04 11:27:11 +08:00
README.md refactored http import name, fixed and simplified idlewatcher/idlewaker implementation, dependencies update 2024-10-07 12:45:07 +08:00
README_CHT.md readme updates, docs moved to wiki 2024-10-04 11:27:11 +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 and dashboard.

Screenshot

Join our Discord for help and discussions

Table of content

Key Features

  • Easy to use
    • Effortless configuration
    • Simple multi-node setup
    • Error messages is clear and detailed, easy troubleshooting
  • Auto SSL cert management (See Supported DNS-01 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 screenshots)
  • HTTP(s) reserve proxy
  • HTTP middleware support
  • Custom error pages support
  • TCP and UDP port forwarding
  • Web UI with App dashboard
  • Supports linux/amd64, linux/arm64
  • 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 Multi docker nodes setup) and then them inside config.yml

  5. Run go-proxy docker compose up -d then list all routes to see if further configurations are needed: docker exec go-proxy /app/go-proxy ls-routes

  6. You may now do some extra configuration

    • With text editor (e.g. Visual Studio Code)
    • With Web UI via http://localhost:3000 or https://gp.y.z
    • For more info, See Wiki

🔼Back to top

Use JSON Schema in VSCode

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

🔼Back to top

Screenshots

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