voltproxy is a reverse proxy designed to simplify the process of proxying Docker containers and other services. With voltproxy, you can easily manage and redirect traffic to different services using a single YAML configuration file.
- Single configuration for all your services with YAML.
- Streamlined Docker integration.
- Simply provide a Docker container's name and network and voltproxy will do the rest.
- No need to define per-container labels.
- Automatic HTTPS with support for ACME-based certificates.
- Load Balancing to enhance service scalability.
- Customize service selection strategy.
- Optionally persist client sessions through cookies.
- Health Checking functionality to facilitate failover schemes.
- Middlewares to attach additional functionality to existing services.
- Customized structured logging options to provide detailed logs for monitoring.
Here is a simple configuration to get started:
# config.yml
services:
foo:
host: foo.plam.dev
redirect: "http://192.168.0.1:3000"
bar:
host: bar.plam.dev
tls: true
container:
name: "/bar"
network: "bar_default"
port: 8080
This configuration instructs voltproxy to proxy incoming requests with the URL http://foo.plam.dev
to http://192.168.0.1:3000
and proxy incoming requests with the URL https://bar.plam.dev
to the specified Docker container.
See the documentation for more details.
These examples can be found in integration/examples.
- 🔧 Basic Configuration
- ⚖️ Load Balancing
- 🏥 Health Checking
- 🔗 Multiple Middlewares
- ➕ Additional Configuration
- 🔑 Auth Forward
- 🔒 IP Allow
You can either run voltproxy locally or deploy with Docker.
Ensure you have Go 1.21 or newer.
- Clone the repository:
$ git clone "https://github.com/plamorg/voltproxy.git"
- Build voltproxy:
$ cd voltproxy/
$ go build
-
Create voltproxy configuration
config.yml
. -
Create Docker Compose file
docker-compose.yml
. Example:
# docker-compose.yml
version: "3.3"
services:
voltproxy:
container_name: voltproxy
image: claby2/voltproxy:latest
restart: unless-stopped
ports:
- 80:80
- 443:443
volumes:
- "./_certs:/usr/src/voltproxy/_certs"
- "./config.yml:/usr/src/voltproxy/config.yml"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
# If proxying a Docker container, ensure the containers are connected to the same network.
- service_net
networks:
service_net:
external: true
- Run container with Docker Compose:
$ docker compose up -d --force-recreate
- Additional load balancing selection strategies.
- More middlewares.