Skip to main content
The recommended way to run tuliprox in production is with Docker. Pre-built Alpine images are published to the GitHub Container Registry. Available image: ghcr.io/euzu/tuliprox-alpine:latest

Quick start with Docker Compose

1

Create a docker-compose.yml

Create a docker-compose.yml file in your working directory:
docker-compose.yml
2

Start the container

3

Open the Web UI

Navigate to http://localhost:8901 in your browser and complete the initial configuration.

Volume mounts

Map these volumes to host directories you control. All paths inside the container are relative to /app.

Environment variables

Port mapping

tuliprox listens on port 8901 by default. The compose snippet "8901:8901" publishes it on the same host port.

Restart policies

Use restart: unless-stopped for most setups. For tighter control, use restart: on-failure.

Healthcheck

tuliprox supports a built-in healthcheck command:
Wire this into Docker’s healthcheck:

Running with docker run

For a quick test without Compose:

Building the image from source

To build a local image from the repository root:
You can target specific architectures or final stages:
Available RUST_TARGET values: x86_64-unknown-linux-musl, aarch64-unknown-linux-musl, armv7-unknown-linux-musleabihf. After building, update your compose file to reference your local image:

Container templates

The repository ships ready-to-use Docker Compose templates for common production stacks under docker/container-templates/.

Setting up the full stack

1

Create shared Docker networks

2

Start Traefik

Edit .env to set TZ, TRAEFIK_DASHBOARD_CREDENTIALS, CF_API_EMAIL, and CF_DNS_API_TOKEN_FILE. Then start:
3

Start Gluetun (optional VPN egress)

Edit container-templates/gluetun/gluetun-02/.env.wg-02 with your WireGuard credentials, then:
4

Start tuliprox

5

Start CrowdSec (optional)

Traefik labels for tuliprox

The tuliprox template includes Traefik labels. Adjust the hostnames and middlewares for your domain:
Replace cdn.example.com and all other placeholder hostnames with your actual domain. The templates ship with example domains like cdn.tuliprox.io that are not functional.