go-proxy

module
v0.9.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 23, 2025 License: MIT

README ΒΆ

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 | δΈ­ζ–‡

Currently working on feat/godoxy-agent.
Fork this instead of default branch.

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

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. Prepare a new directory for docker compose and config files.

  2. Run setup script inside the directory, or set up manually

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/yusing/go-proxy/main/scripts/setup.sh)"
    
  3. Start the container docker compose up -d and wait for it to be ready

  4. You may now do some extra configuration on WebUI https://godoxy.yourdomain.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/main/config.example.yml -O config/config.yml

  2. Grab .env.example into .env

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

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

    wget https://raw.githubusercontent.com/yusing/go-proxy/main/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
β”œβ”€β”€ data
β”‚   β”œβ”€β”€ metrics # metrics data
β”‚   β”‚   β”œβ”€β”€ uptime.json
β”‚   β”‚   └── system_info.json
└── .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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL