Docker Compose
Here are basic and simple docker-compose configuration files that will enable you to quickly deploy your own instance manually. We also assume in this example, that all services will be deployed on dedicated servers/VMs - separating them physically, thus each compose is for a separate service.
Please not that we also offer docker-compose deployment with one-line quick deployment, but this method is recommended for PoC/quick deployment as it launches everything on one server and all services in one docker compose.
We use "latest" (latest production images) tags in the examples below, but you can use others - more info here.
Core
Here is the docker-compose.yaml for the core and database. Configuration is split to the .env file (see below):
services:
core:
image: ghcr.io/defguard/defguard:latest
restart: always
container_name: "defguard"
env_file: .env
ports:
# HTTP port - open on localhost, should be secured by reverse-proxy
- "127.0.0.1:8000:8000"
# gRPC port for gateway to connect to
# open on all interfaces/IPs - whould be secured with custom CA (see .env)
- "50055:50055"
depends_on:
- db
volumes:
# more info here:
# https://docs.defguard.net/deployment-strategies/openid-rsa-key
- ./rsakey.pem:/keys/rsakey.pem
# more info about custom CA here:
# https://docs.defguard.net/deployment-strategies/grpc-ssl-communication#custom-ssl-ca-and-certificates
- ./ca.pem:/keys/ca.pem
db:
image: postgres:17-alpine
container_name: "defguard-db"
env_file: .env
volumes:
- db:/var/lib/postgresql/dataNGINX reverse-proxy
Now that you have core running, here is an example NGINX configuration to provide SSL termination:
The configuration
Here is the .env file with all configuration variables:
Proxy
Here is the docker-compose.yaml for the public proxy (enrollment service as well as desktop client configuration service).
To secure the gRPC communication, please generate the proxy CA and certificate, more info here.
NGINX reverse-proxy
Now that you have proxy running, here is an example NGINX configuration to provide SSL termination:
Gateway
For gateway to control the WireGuard kernel as well as network, it's recommended to run in the host network mode as well as there are needed some docker CAPs:
Last updated
Was this helpful?