Easy to use reverse proxy with docker integration
Find a file
2025-02-06 04:44:19 +08:00
.github Create FUNDING.yml 2025-02-06 04:44:19 +08:00
.trunk fix proxy rules behavior and implemented a few more rules and commands, dependencies upgrade 2025-01-11 12:22:42 +08:00
.vscode update readme 2025-01-31 03:33:20 +08:00
cmd fix main.go and update next release doc 2025-02-01 12:51:52 +08:00
examples n8n compose example 2024-12-11 07:21:04 +08:00
internal add test for the previous commit 2025-02-06 02:33:30 +08:00
pkg added package version api, dependencies upgrade 2024-10-06 09:23:41 +08:00
schemas Feat/ntfy (#57) 2025-02-01 13:07:44 +08:00
screenshots fixed idlewatcher panics and incorrect behavior, update screenshot 2024-10-06 16:17:52 +08:00
.env.example api: move prometheus handler inside api handler /v1/metrics 2025-02-01 02:09:43 +08:00
.gitignore fix npm package 2025-01-25 02:36:22 +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 refactor and typo fixes 2024-11-02 03:14:47 +08:00
bun.lock fix npm package 2025-01-25 02:36:22 +08:00
compose.example.yml readme and docker compose example amendment 2025-02-06 00:56:11 +08:00
config.example.yml adjusted and simplified default config and compose.yml 2025-02-04 07:04:05 +08:00
Dockerfile remove schema from dockerfile and code, dependencies upgrade 2025-01-30 00:43:25 +08:00
go.mod remove schema from dockerfile and code, dependencies upgrade 2025-01-30 00:43:25 +08:00
go.sum remove schema from dockerfile and code, dependencies upgrade 2025-01-30 00:43:25 +08:00
LICENSE added license 2024-04-01 04:08:48 +00:00
Makefile small fix on Makefile and update dependencies 2025-01-26 14:45:19 +08:00
next-release.md fix main.go and update next release doc 2025-02-01 12:51:52 +08:00
package.json Feat/ntfy (#57) 2025-02-01 13:07:44 +08:00
providers.example.yml readme updates, docs moved to wiki 2024-10-04 11:27:11 +08:00
README.md README: move auth docs to wiki 2025-02-06 03:12:34 +08:00
README_CHT.md README: move auth docs to wiki 2025-02-06 03:12:34 +08:00
tsconfig.json fix npm package 2025-01-25 02:36:22 +08:00

GoDoxy

Quality Gate Status GitHub last commit Lines of Code

A lightweight, simple, and performant reverse proxy with WebUI.

For full documentation, check out Wiki

EN | 中文

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
  • OpenID Connect support
  • HTTP middleware support
  • Custom error pages support
  • TCP and UDP port forwarding
  • Web UI with App dashboard and config editor
  • Supports linux/amd64, linux/arm64
  • Written in Go

🔼Back to top

Prerequisites

Setup DNS Records point to machine which runs GoDoxy, e.g.

  • A Record: *.y.z -> 10.0.10.1
  • AAAA Record: *.y.z -> ::ffff:a00:a01

Setup

  1. Pull the latest docker images

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

    docker run --rm -v .:/setup ghcr.io/yusing/go-proxy /app/godoxy setup
    
  3. (Optional) setup docker-socket-proxy other docker nodes (see Multi docker nodes setup) then add them inside config.yml

  4. Start the container docker compose up -d

  5. You may now do some extra configuration on WebUI https://godoxy.domain.com

🔼Back to top

Manual Setup

  1. Make config directory then grab config.example.yml into config/config.yml

    mkdir -p config && wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/config.example.yml -O config/config.yml

  2. Grab .env.example into .env

    wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/.env.example -O .env

  3. Grab compose.example.yml into compose.yml

    wget https://raw.githubusercontent.com/yusing/go-proxy/v0.9/compose.example.yml -O compose.yml

Folder structrue

├── certs
│   ├── cert.crt
│   └── priv.key
├── compose.yml
├── config
│   ├── config.yml
│   ├── middlewares
│   │   ├── middleware1.yml
│   │   ├── middleware2.yml
│   ├── provider1.yml
│   └── provider2.yml
└── .env

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