services:
netshoot:
image: nicolaka/netshoot
container_name: netshoot
command: ["tail", "-f", "/dev/null"] # Keeps the container running
networks:
- pet-backend
restart: unless-stopped
openldap:
container_name: openldap
image: bitnami/openldap:latest
hostname: ldap.apps.pet
environment:
- LDAP_ADMIN_PASSWORD=${LDAP_ADMIN_PASSWORD}
- LDAP_ADMIN_USERNAME=admin
- LDAP_DOMAIN=apps.pet
- LDAP_ORGANIZATION="Privacy Enhancing Technologies"
- LDAP_ROOT=dc=apps,dc=pet
- LDAP_ADMIN_DN=cn=admin,dc=apps,dc=pet
- LDAP_TLS_ENABLED=yes
- LDAP_TLS_CERT=/opt/bitnami/openldap/certs/server-cert.pem
- LDAP_TLS_KEY=/opt/bitnami/openldap/certs/server-key.pem
ports:
- "127.0.0.1:389:1389"
- "127.0.0.1:636:1636"
volumes:
- ./data/openldap_data:/bitnami/openldap
- ./ssl/certs/ldap.crt:/opt/bitnami/openldap/certs/server-cert.pem:ro
- ./ssl/private/ldap.key:/opt/bitnami/openldap/certs/server-key.pem:ro
networks:
- pet-backend
mariadb:
image: mariadb:10.11
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: ***
volumes:
- ./data/mariadb:/var/lib/mysql
- ./data/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
# ports: []
ports:
- "127.0.0.1:3306:3306"
restart: unless-stopped
networks:
- pet-backend
postgres:
image: postgres:15
container_name: synapse-postgres
restart: unless-stopped
environment:
POSTGRES_DB: synapse
POSTGRES_USER: synapse
POSTGRES_PASSWORD: ***
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C --lc-collate=C --lc-ctype=C"
volumes:
- ./data/postgres:/var/lib/postgresql/data
networks:
- pet-backend
caddy:
image: caddy:latest
container_name: caddy
ports:
- "80:80" # HTTP
- "443:443" # HTTPS
- "8448:8448" # HTTPS
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data # Stores Let's Encrypt certificates
- caddy_config:/config
networks:
- pet-backend
hugo:
image: hugomods/hugo:latest
container_name: hugo
command: server -D --bind=0.0.0.0 --disableFastRender
volumes:
- ./hugo-site:/src
- ./hugo-site/config.toml:/src/config.toml:ro
- ./hugo-site/themes/bootstrap-bp-startpage:/src/themes/bootstrap-bp-startpage:ro
networks:
- pet-backend
ports: []
# - "127.0.0.1:1313:1313" # Expose port 1313 for accessing the site in the browser
self-service-password:
image: self-service-password:latest # Reference to the local image
container_name: self-service-password
environment:
# LDAP Configuration
LDAP_URL: "ldap://openldap:1389" # URL of your LDAP server
LDAP_BINDDN: "cn=admin,dc=apps,dc=pet" # Bind DN for LDAP authentication
LDAP_BINDPASS: "***" # Password for the Bind DN
LDAP_BASE: "ou=users,dc=apps,dc=pet" # Base DN for LDAP search
# Email Configuration
MAIL_FROM: "noreply@apps.pet" # Sender email address
SMTP_HOST: "172.17.0.1" # SMTP server hostname
SMTP_PORT: "25" # SMTP server port (25, 587, or 465)
# SMTP_USER: "smtp-user@example.com" # SMTP authentication username
# SMTP_PASS: "smtp-password" # SMTP authentication password
SMTP_SECURE: "none" # Use TLS (values: none, ssl, tls)
# Web Interface Configuration
SSP_SELF_URL: "https://account.apps.pet" # Base URL of the web interface
SSP_LANGUAGE: "en" # Default language (e.g., en, de, fr)
PASSWORD_POLICY_CHECK: "1" # Enable password policy checks
KEYPHRASE: "secret"
volumes:
- ./self-service-password/config/config.inc.local.php:/var/www/conf/config.inc.local.php
- ./self-service-password/htdocs/sendtoken.php:/var/www/htdocs/sendtoken.php
- ./self-service-password/pet:/var/www/htdocs/images/pet:ro
restart: unless-stopped
networks:
- pet-backend
gitea:
image: docker.io/gitea/gitea:latest
container_name: gitea
environment:
# Database Configuration
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=mariadb:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea_user
- GITEA__database__PASSWD=***
# Config moved to gitea/gitea/conf/app.ini as environment variables are unreliable
restart: always
networks:
- pet-backend
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
# - "3000:3000"
- "22:22"
depends_on:
- mariadb
- openldap
bookstack:
image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- APP_URL=https://wiki.apps.pet
- APP_KEY=
- DB_HOST=mariadb
- DB_PORT=3306
- DB_USERNAME=wikijs_user
- DB_PASSWORD=***
- DB_DATABASE=wiki
- QUEUE_CONNECTION= #optional
volumes:
- ./bookstack/config:/config
restart: unless-stopped
networks:
- pet-backend
depends_on:
- mariadb
- openldap
synapse:
image: matrixdotorg/synapse:latest
container_name: matrix-synapse
restart: always
depends_on:
- postgres
volumes:
- ./synapse:/data
networks:
- pet-backend
element:
image: vectorim/element-web:latest
container_name: matrix-element
restart: always
volumes:
# - ./element:/app/config
- ./element/config.json:/app/config.json
- ./element/img/logos/element-app-logo.png:/app/themes/element/img/logos/element-app-logo.png
- ./element/img/logos/element-app-logo.svg:/app/themes/element/img/logos/element-app-logo.svg
- ./element/img/logos/element-app-logo.svg:/app/themes/element/img/logos/element-logo.svg
- ./element/img/backgrounds/lake.jpg:/app/themes/element/img/backgrounds/lake.jpg
environment:
- DEFAULT_HS_URL=https://matrix.apps.pet
- DEFAULT_IS_URL= # No Identity Server
networks:
- pet-backend
redmine:
image: redmine:latest
container_name: redmine
restart: unless-stopped
depends_on:
- postgres
networks:
- pet-backend
environment:
REDMINE_DB_POSTGRES: postgres
REDMINE_DB_USERNAME: redmine
REDMINE_DB_PASSWORD: ***
REDMINE_DB_DATABASE: redmine
REDMINE_SECRET_KEY_BASE: "***"
volumes:
- ./redmine/files:/usr/src/redmine/files
- ./redmine/plugins:/usr/src/redmine/plugins
- ./redmine/themes:/usr/src/redmine/public/themes
- ./redmine/config/configuration.yml:/usr/src/redmine/config/configuration.yml:ro
snipeit:
image: snipe/snipe-it:latest
container_name: snipeit
restart: unless-stopped
depends_on:
- mariadb
- openldap
environment:
- APP_URL=https://inventory.apps.pet
- APP_KEY=base64:***=
- DB_HOST=mariadb
- DB_DATABASE=snipeit
- DB_USERNAME=snipeit
- DB_PASSWORD=***
- MAIL_MAILER=smtp
- MAIL_HOST=172.17.0.1
- MAIL_PORT=25
- MAIL_USERNAME=null
- MAIL_PASSWORD=null
- MAIL_TLS_VERIFY_PEER=false
- MAIL_FROM_ADDR=noreply@apps.pet
- MAIL_FROM_NAME='PETIT Asset Management'
- MAIL_REPLYTO_ADDR=petit+e192-08@tuwien.ac.at
- MAIL_REPLYTO_NAME='PETIT Asset Managemen'
- MAIL_AUTO_EMBED_METHOD='attachment'
volumes:
- ./snipeit:/var/lib/snipeit
networks:
- pet-backend
volumes:
caddy_data:
caddy_config:
networks:
pet-backend:
driver: bridge
bridge