This page documents the v1 line of the Plumber Platform (repository github.com/getplumber/platform), kept here for existing installations. New installations use v2: see the current installation documentation. v1 and v2 are not compatible, they do not share a database, and there is no automated migration.
This page describes how to set up a self-managed instance of Plumber using Docker-compose.
💻 Requirements
GitLab instance version >=17.7
The system requires a Linux server. It runs in 🐳 Docker containers using a docker-compose configuration. Specifications:
OS: Ubuntu or Debian (tested and supported)
Hardware
CPU x86_64/amd64 with at least 2 cores
4 GB RAM
100 GB of storage for Plumber
Network
Users must be able to reach the Plumber server on TCP ports 80 and 443
The Plumber server must be able to access internet
The Plumber server must be able to communicate with GitLab instance
The installation process requires write access to the DNS Zone to set up Plumber domain
Plumber’s install scripts are designed for native Linux environments (Ubuntu, Debian). Some users have successfully installed Plumber through WSL (Windows Subsystem for Linux), but we do not officially support this setup. Depending on your WSL configuration, how you cloned the repository, and your Git settings, you may need to adjust script files manually. If you see CRLF-related errors (for example bad interpreter: /bin/bash^M), or \r convert line endings with dos2unix.
🚀 Installation
1. Configure your DNS
Create a DNS A record pointing your chosen domain to your server’s public IP address:
If you want to connect Plumber to a specific GitLab group only: add the group path as defined in GitLab in the ORGANIZATION variable (to run the onboarding, you must be at least Maintainer in this group). On GitLab.com or non‑self‑hosted instances, this path may differ from the display name of the group, and GitLab can append extra characters to make it unique. Check the group settings (or the GitLab API full_path) to copy the exact value.
.env
ORGANIZATION="<group-path>"
If you want to connect Plumber to the whole GitLab instance: let the ORGANIZATION variable empty (to run the onboarding, you must be a GitLab instance Admin)
.env
ORGANIZATION=""
Step 3: Configure Domain name and GitLab URL
Edit the .env file by updating value of DOMAIN_NAME and JOBS_GITLAB_URL variables
If you are using an external PostgreSQL database, remove ,internal-db from COMPOSE_PROFILES and configure your database connection by uncommenting and updating the following variables in your .env file:
If your GitLab instance (or Plumber with custom certificates) uses a TLS certificate signed by your own Certificate Authority (CA), add the CA certificate file (.pem or .crt) in .docker/ca-certificates/: