mirror of
https://github.com/Haxxnet/Compose-Examples.git
synced 2025-12-16 20:08:29 +01:00
88 lines
3.1 KiB
YAML
88 lines
3.1 KiB
YAML
services:
|
||
|
||
guacd:
|
||
image: guacamole/guacd
|
||
container_name: guacamole-guacd
|
||
restart: always
|
||
depends_on:
|
||
- gluetun
|
||
volumes:
|
||
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/guacd/drive:/drive:rw
|
||
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/guacd/record:/record:rw
|
||
network_mode: container:gluetun
|
||
|
||
postgres:
|
||
image: postgres:16-alpine
|
||
container_name: guacamole-db
|
||
restart: always
|
||
depends_on:
|
||
- gluetun
|
||
environment:
|
||
- PGDATA=/var/lib/postgresql/data/guacamole
|
||
- POSTGRES_DB=guacamole_db
|
||
- POSTGRES_USER=guacamole_user
|
||
- POSTGRES_PASSWORD=ChooseYourOwnPasswordHere1234
|
||
volumes:
|
||
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/psql/init:/docker-entrypoint-initdb.d:z
|
||
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/psql/data:/var/lib/postgresql/data:Z
|
||
network_mode: container:gluetun
|
||
|
||
guacamole:
|
||
image: guacamole/guacamole
|
||
container_name: guacamole-ui
|
||
restart: always
|
||
depends_on:
|
||
- guacd
|
||
- postgres
|
||
- gluetun
|
||
environment:
|
||
- GUACD_HOSTNAME=localhost
|
||
- POSTGRESQL_HOSTNAME=localhost
|
||
- POSTGRESQL_DATABASE=guacamole_db
|
||
- POSTGRESQL_USER=guacamole_user
|
||
- POSTGRESQL_PASSWORD=ChooseYourOwnPasswordHere1234
|
||
- OPENID_ENABLED=true
|
||
- OPENID_AUTHORIZATION_ENDPOINT=https://authentik.example.com/application/o/authorize/
|
||
- OPENID_JWKS_ENDPOINT=https://authentik.example.com/application/o/guacamole-oidc/jwks/
|
||
- OPENID_ISSUER=https://authentik.example.com/application/o/guacamole-oidc/
|
||
- OPENID_CLIENT_ID=<masked>
|
||
- OPENID_REDIRECT_URI=https://guacamole.example.com/guacamole
|
||
- OPENID_USERNAME_CLAIM_TYPE=preferred_username
|
||
- OPENID_SCOPE=openid email profile
|
||
network_mode: container:gluetun
|
||
|
||
gluetun:
|
||
image: qmcgaw/gluetun:latest
|
||
container_name: gluetun
|
||
cap_add:
|
||
- NET_ADMIN
|
||
expose:
|
||
- 8080 # guacamole
|
||
- 5432 # psql guac
|
||
environment:
|
||
- VPN_SERVICE_PROVIDER=custom
|
||
- VPN_TYPE=wireguard
|
||
- DNS_ADDRESS=1.1.1.1,1.0.0.1
|
||
- WIREGUARD_ENDPOINT_IP=127.0.0.1 # add your wan ipv4 here of wg server
|
||
- WIREGUARD_ENDPOINT_PORT=51820
|
||
- WIREGUARD_PUBLIC_KEY='<PUBKEY>' # add your wg public key here
|
||
- WIREGUARD_PRIVATE_KEY='<PRIVKEY>' # add your wg private key here
|
||
- WIREGUARD_PRESHARED_KEY='<PSK>' # add your wg pre-shared key here
|
||
- WIREGUARD_ADDRESSES='0.0.0.0/32' # add your client ipv4/ipv6 here
|
||
volumes:
|
||
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/gluetun/configs/gluetun:/gluetun
|
||
restart: always
|
||
networks:
|
||
- proxy
|
||
labels:
|
||
- traefik.enable=true
|
||
- traefik.docker.network=proxy
|
||
- traefik.http.routers.guacamole.rule=Host(`guacamole.example.com`) && PathPrefix(`/guacamole`) || Host(`guacamole.example.com`) && PathPrefix(`/outpost.goauthentik.io`)
|
||
- traefik.http.routers.guacamole.service=guacamole
|
||
- traefik.http.services.guacamole.loadbalancer.server.port=8080
|
||
- traefik.http.routers.guacamole.middlewares=authentik@docker
|
||
|
||
networks:
|
||
proxy:
|
||
external: true
|