Revline 1 Self-Hosted
Run Revline 1 on your own infrastructure with no limitations. One license gives all users of your instance access to the features of the selected tier. Whether you're a weekend wrench or a track junkie, Revline 1 self-hosted gives you total control.
Frontend (Client)
This container serves the web interface and connects to your Revline API backend. Make sure you configure the environment variables correctly:
AUTH_SECRET
: A cryptographically secure string with at least 32 characters. You can generate one withopenssl rand -base64 32
.AUTH_TRUST_HOST
: Should be set totrue
in most self-hosted environments unless you're proxying differently.S3_URL
: The endpoint of your MinIO or S3-compatible object storage instance (e.g.https://s3.yourdomain.com
).SERVER_URL
: The full base URL to your Revline backend (e.g.https://api.revline.yourdomain.com
).INTERNAL_SERVER_URL
: Used in environments without a reverse proxy. This should point to the backend service’s internal hostname and port (e.g.,http://server:4000
) so the frontend can communicate with the backend directly within the same Docker network.AUTH_PROVIDERS
: A JSON array defining one or more OAuth providers. For example:[ { "id": "oidc", "issuer": "https://auth.yourdomain.com/", "name": "My OIDC Provider", "clientId": "your-client-id", "clientSecret": "your-client-secret" } ]
docker run -d \
--name revline-client \
-p 3000:3000 \
--env AUTH_SECRET=your_secure_random_string_here_32_characters_min \
--env AUTH_TRUST_HOST=true \
--env S3_URL=https://s3.yourdomain.com \
--env SERVER_URL=https://api.yourdomain.com \
--env AUTH_PROVIDERS='$AUTH_PROVIDERS' \
ghcr.io/dan6erbond/revline-client:main
Hosting Under a Subpath
If you want to host the frontend under a subpath (e.g. /revline
), you can do so by setting the BASE_PATH
environment variable. Note that if your app is behind a reverse proxy, it must not strip the base path. The frontend expects to receive requests like /revline/...
, not /...
.
Backend (Server)
This container runs the core Revline API and handles data persistence. It expects a YAML configuration file at /revline/config.yaml
.
docker run -d \
--name revline-server \
-p 4000:4000 \
-v "$(pwd)/config.yaml:/revline/config.yaml" \
ghcr.io/dan6erbond/revline-server:main
Sample Configuration
The server uses a config.yaml
file to configure its environment, including database, auth providers, S3 integration, and license key:
environment: development
databaseUrl: postgresql://postgres:postgres@localhost:5432/revline
auth:
providers:
- name: oidc
type: oidc
issuerUrl: https://auth.yourdomain.com
emailClaim: email
s3:
endpoint: https://s3.yourdomain.com
bucket: revline
accessKey: <your-minio-access-key>
secretAccessKey: <your-minio-secret-key>
useSsl: false
region: local
server:
host: 0.0.0.0
publicUrl: https://api.revline.yourdomain.com
publicUrl: https://revline.yourdomain.com
licenseKey: <your-license-jwt>
One-Click Docker Compose Deployment
For a hassle-free setup, you can deploy both the Revline 1 frontend and backend together using our official Docker Compose file.
Simply grab the docker-compose.yml
from our official GitHub repository and run docker-compose up -d
. This setup is ideal if you want to quickly start self-hosting without manually configuring each service.
For advanced customization, you can always tweak the compose file or split frontend and backend deployment as described above.
Pricing
Choose your tier and unlock access for all users on your instance:
Frequently Asked Questions
Everything you need to know about running Revline 1 self-hosted