Easy to use reverse proxy with docker integration
Find a file
2025-02-11 12:45:34 +08:00
.github fixed a few stuff 2025-02-11 01:10:09 +08:00
.trunk refactor and remove unused code 2025-02-11 01:10:09 +08:00
.vscode update readme 2025-01-31 03:33:20 +08:00
agent fix agent hot-reload issue and added list agents endpoint 2025-02-11 12:45:34 +08:00
cmd fix serving wrong cert 2025-02-11 06:20:09 +08:00
examples n8n compose example 2024-12-11 07:21:04 +08:00
internal fix agent hot-reload issue and added list agents endpoint 2025-02-11 12:45:34 +08:00
pkg implement godoxy-agent 2025-02-11 01:10:09 +08:00
schemas Feat/fileserver (#60) 2025-02-06 18:23:10 +08:00
screenshots fixed idlewatcher panics and incorrect behavior, update screenshot 2024-10-06 16:17:52 +08:00
.env.example update files for agent, deps upgrade 2025-02-11 01:10:07 +08:00
.gitignore update files for agent, deps upgrade 2025-02-11 01:10:07 +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 Feat/fileserver (#60) 2025-02-06 18:23:10 +08:00
agent.compose.yml simplify setup process 2025-02-11 05:05:56 +08:00
bun.lock fix npm package 2025-01-25 02:36:22 +08:00
compose.example.yml update files for agent, deps upgrade 2025-02-11 01:10:07 +08:00
config.example.yml adjusted and simplified default config and compose.yml 2025-02-04 07:04:05 +08:00
Dockerfile Fix dockerfile and makefile 2025-02-11 01:10:09 +08:00
go.mod api: added network and sensors system info 2025-02-11 05:26:37 +08:00
go.sum api: added network and sensors system info 2025-02-11 05:26:37 +08:00
LICENSE added license 2024-04-01 04:08:48 +00:00
Makefile Fix dockerfile and makefile 2025-02-11 01:10:09 +08:00
next-release.md simplify setup process 2025-02-11 05:05:56 +08:00
package.json Feat/fileserver (#60) 2025-02-06 18:23:10 +08:00
providers.example.yml readme updates, docs moved to wiki 2024-10-04 11:27:11 +08:00
README.md update files for agent, deps upgrade 2025-02-11 01:10:07 +08:00
README_CHT.md update README 2025-02-06 18:31:49 +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

  1. 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
  1. Create shell alias:

    # for main server
    alias godoxy="docker exec godoxy /app/godoxy"
    
    # for agent server
    alias godoxy-agent="docker exec godoxy-agent /app/godoxy-agent"
    

Setup

NOTE: GoDoxy is designed to be (and only works when) running in host network mode, do not change it. To change listening ports, modify .env.

  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

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