Minimalistic web interface for Outline — displays VPN servers, access keys, and per-user data transfer metrics across multiple Outline server instances.
The app reads configuration from environment variables or a .env file in the working directory.
| Variable | Required | Default | Description |
|---|---|---|---|
OUTLINE_API_URL |
Yes | — | Comma-separated list of Outline API URLs (including the secret path) |
ADMIN_PASSWORD |
No | (none) | Password to protect the UI. If unset, the interface is publicly accessible |
ADDR |
No | 127.0.0.1 |
Address to bind the HTTP server to. Use 0.0.0.0 to listen on all interfaces |
PORT |
No | 8080 |
Port to listen on |
OUTLINE_API_URL accepts multiple servers separated by commas:
OUTLINE_API_URL=https://server1.example.com:63066/your_secret,https://server2.example.com:37444/your_secret
docker pull ghcr.io/reeywhaar/outline_web:latestdocker run --rm \
--env OUTLINE_API_URL=https://your-outline-server/api-secret \
--env ADMIN_PASSWORD=yourpassword \
--env ADDR=0.0.0.0 \
-p 8080:8080 \
ghcr.io/reeywhaar/outline_web:latestservices:
outline_web:
image: ghcr.io/reeywhaar/outline_web:latest
restart: unless-stopped
ports:
- "8080:8080"
environment:
OUTLINE_API_URL: https://your-outline-server/api-secret
ADMIN_PASSWORD: yourpassword
ADDR: 0.0.0.0docker build -t ghcr.io/reeywhaar/outline_web:latest .