Self Hosting Revision
Self-hosting allows Revision to run entirely on an organization’s own infrastructure, without any external dependencies or required internet access.
The complete application, database, and background processing operate within the organization’s network and environment.
Self-hosted overview
- Deploys Revision using standard Docker containers on any infrastructure capable of running containers.
- Access to images from Revision image repository (
ghcr.io/revision-org). - Stores all data — including diagrams, models, attachments, and logs — locally within the organization’s environment.
- Does not require any connection to
revision.appor other external services once deployed. - Places responsibility for updates, backups, monitoring, and scaling with the organization’s IT operations.
Self-hosting provides full ownership of data, security, and operational control, making it suitable for environments with strict compliance, data residency, or offline requirements.
Requirements
A self-hosted deployment of Revision requires a container-capable environment and access to a few supporting services.
The setup is lightweight and can run on a single host or be distributed across multiple nodes, depending on scale and internal policies.
Specifications
- Container runtime: Docker Engine or a compatible runtime (e.g., Podman, containerd, OpenShift, Azure Container Apps, or Kubernetes).
- Compose or orchestration tool: Docker Compose (v2+) or equivalent orchestration support.
- Storage: Persistent storage volumes for database, attachments, and generated files.
- Network access: Internal network connectivity between all containers. Internet access is optional but recommended for image updates.
- PostgreSQL 14: Used as the main database. A standard Docker image or managed Postgres service can be used.
- SMTP server: Required for sending transactional emails such as password resets and invitations.
- Reverse proxy / SSL: An HTTPS endpoint for secure external access.
- Access to Revision container registry: Credentials to pull official images from
ghcr.io/revision-org.
Architecture Overview
A self-hosted Revision deployment is composed of a small number of containerized services that together provide the full application stack.
Each service runs independently but communicates over the internal network defined by the container runtime or orchestrator.
Core Components
| Service | Image | Description |
| revision-app | ghcr.io/revision-org/revision-app:latest | The main web application providing the user interface and API endpoints. |
| revision-worker | ghcr.io/revision-org/revision-worker:latest | Handles background jobs such as API integrations. |
| revision-db | postgres:14 | The PostgreSQL 14 database storing all models, diagrams, attributes, and metadata. |
Data Persistence
A self-hosted Revision deployment relies on persistent storage to ensure that data remains available across container restarts, upgrades, or host reboots.
Persistent volumes are used to store critical application data, database content, and generated files.
Backup Recommendations
- Database backups: Use standard PostgreSQL tools such as
pg_dumporpg_basebackup. - File storage backups: Regularly archive the attachment-data and image-data volumes.
Updates and Upgrades
Self-hosted installations of Revision can be updated by pulling the latest container images from the Revision image registry and restarting the stack.
Updates are typically backward compatible, and database migrations are applied automatically on startup.
Versioning
- Revision images are tagged with semantic versions (e.g.,
ghcr.io/revision-org/revision-app:1.12.3). - The
latesttag always points to the most recent stable release. - For production environments, pin specific versions in your compose or orchestration configuration to ensure controlled rollouts.
Environment Variables
Environment variables control how each container in a self-hosted Revision setup behaves.
Most configurations can be kept as defaults, but database, mail, and internal URLs must be adjusted for your environment.
revision-app
| Variable | Description | Required | Example |
|---|---|---|---|
| DATABASE_URL | Connection string for the PostgreSQL database. | ✅ | postgresql://postgres:postgres@revision-db:5432/postgres |
| SMTP_HOST | Hostname or IP of the SMTP mail server. | ✅ | smtp.company.local |
| SMTP_PORT | Port used for outgoing email (usually 25, 465, or 587). | ❌ | 587 |
| SMTP_USER | Username for SMTP authentication. | ❌ | no-reply@company.local |
| SMTP_PASS | Password for SMTP authentication. | ❌ | ******** |
| PORT | Port exposed inside the container (default 3000). | ❌ | 3000 |
revision-worker
| Variable | Description | Required | Example |
|---|---|---|---|
| DATABASE_URL | Connection string for the PostgreSQL database. | ✅ | postgresql://postgres:postgres@revision-db:5432/postgres |
revision-db
| Variable | Description | Required | Example |
|---|---|---|---|
| POSTGRES_USER | ✅ | postgres |
|
| POSTGRES_PASSWORD | ✅ | postgres |
|
| POSTGRES_DB | Database name (default is postgres) |
❌ | revision |