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.
