Skip to content

Deployment

Plugwerk can be deployed in several ways. Choose the option that best fits your infrastructure.

The simplest way to run Plugwerk with PostgreSQL:

services:
postgres:
image: postgres:18-alpine
environment:
POSTGRES_DB: plugwerk
POSTGRES_USER: plugwerk
POSTGRES_PASSWORD: plugwerk
volumes:
- pgdata:/var/lib/postgresql/data
plugwerk:
image: plugwerk/plugwerk-server:latest
ports:
- "8080:8080"
environment:
PLUGWERK_DB_URL: jdbc:postgresql://postgres:5432/plugwerk
PLUGWERK_DB_USERNAME: plugwerk
PLUGWERK_DB_PASSWORD: plugwerk
PLUGWERK_STORAGE_ROOT: /data/artifacts
PLUGWERK_JWT_SECRET: your-secret-key-min-32-characters-long
PLUGWERK_ENCRYPTION_KEY: exactly16charss
JAVA_OPTS: "-Xms256m -Xmx512m"
depends_on:
- postgres
volumes:
pgdata:
Terminal window
docker run -d \
--name plugwerk \
-p 8080:8080 \
-e PLUGWERK_DB_URL=jdbc:postgresql://host.docker.internal:5432/plugwerk \
-e PLUGWERK_DB_USERNAME=plugwerk \
-e PLUGWERK_DB_PASSWORD=plugwerk \
-e PLUGWERK_STORAGE_ROOT=/data/artifacts \
-e PLUGWERK_JWT_SECRET=your-secret-key-min-32-characters-long \
-e PLUGWERK_ENCRYPTION_KEY=exactly16charss \
plugwerk/plugwerk-server:latest

Download the distribution ZIP from GitHub Releases and extract it:

Terminal window
unzip plugwerk-server-*.zip
cd plugwerk-server-*/
chmod +x start.sh
./start.sh
Terminal window
java -jar plugwerk-server-backend-*.jar

Customize the JVM with JAVA_OPTS:

Terminal window
export JAVA_OPTS="-Xms512m -Xmx1g -XX:+UseZGC"
./start.sh

See Configuration for the full environment variable reference.