btcpayserver-infra/docker-compose.yml
2026-05-04 22:19:29 +09:00

150 lines
4.5 KiB
YAML

version: "3"
services:
nginx:
restart: unless-stopped
image: nginx:1.25.3-bookworm
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- "nginx_conf:/etc/nginx/conf.d"
- "nginx_vhost:/etc/nginx/vhost.d"
- "nginx_html:/usr/share/nginx/html"
- "nginx_certs:/etc/nginx/certs:ro"
nginx-gen:
restart: unless-stopped
image: btcpayserver/docker-gen:0.10.7
container_name: nginx-gen
volumes:
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro"
- "nginx_conf:/etc/nginx/conf.d"
- "nginx_vhost:/etc/nginx/vhost.d"
- "nginx_html:/usr/share/nginx/html"
- "nginx_certs:/etc/nginx/certs:ro"
entrypoint: /usr/local/bin/docker-gen -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
links:
- nginx
letsencrypt-nginx-proxy-companion:
restart: unless-stopped
image: btcpayserver/letsencrypt-nginx-proxy-companion:2.2.9-2
container_name: letsencrypt-nginx-proxy-companion
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "nginx_conf:/etc/nginx/conf.d"
- "nginx_vhost:/etc/nginx/vhost.d"
- "nginx_html:/usr/share/nginx/html"
- "nginx_certs:/etc/nginx/certs:rw"
- "acme:/etc/acme.sh"
environment:
NGINX_DOCKER_GEN_CONTAINER: "nginx-gen"
NGINX_PROXY_CONTAINER: "nginx"
ACME_CA_URI: ${ACME_CA_URI:-https://acme-v01.api.letsencrypt.org/directory}
links:
- nginx-gen
- mattermost_app
mattermost_db:
image: btcpayserver/postgres:18.1
volumes:
- mm-dbdata:/var/lib/postgresql
- /etc/localtime:/etc/localtime:ro
environment:
- POSTGRES_HOST_AUTH_METHOD=trust
- POSTGRES_USER=mmuser
- POSTGRES_PASSWORD=mmuser_password
- POSTGRES_DB=mattermost
restart: unless-stopped
expose:
- 5432
mattermost_app:
restart: unless-stopped
image: mattermost/mattermost-team-edition:10.4.1
volumes:
- mm-config:/mattermost/config:rw
- mm-data:/mattermost/data:rw
- mm-logs:/mattermost/logs:rw
- mm-plugins:/mattermost/plugins:rw
- /etc/localtime:/etc/localtime:ro
environment:
# use service's hostname
MM_SQLSETTINGS_DRIVERNAME: postgres
MM_SQLSETTINGS_DATASOURCE: postgres://mmuser:mmuser_password@mattermost_db:5432/mattermost?sslmode=disable&connect_timeout=10
MM_SERVICESETTINGS_SITEURL: https://${MATTERMOST_HOST}
DOMAIN: ${MATTERMOST_HOST}
VIRTUAL_PORT: "8065"
VIRTUAL_HOST: ${MATTERMOST_HOST}
VIRTUAL_NETWORK: "nginx-proxy"
LETSENCRYPT_HOST: ${MATTERMOST_HOST}
LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-<no value>}
EDITION: "team"
depends_on:
- mattermost_db
mattermost_bridge:
restart: unless-stopped
image: 42wim/matterbridge:1.26.0
volumes:
- ./matterbridge.toml:/matterbridge.toml
configurator:
restart: unless-stopped
image: ghcr.io/btcpayserver/btcpayserver-configurator:0.0.28
environment:
LETSENCRYPT_HOST: ${CONFIGURATOR_HOST}
LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-<no value>}
VIRTUAL_HOST: ${CONFIGURATOR_HOST}
expose:
- "80"
fireflyiii:
image: fireflyiii/core:version-5.7.15
environment:
- APP_ENV=local
- APP_KEY=MustBe32DropDbAndChangeItIfUWant
- APP_URL=https://${FIREFLY_HOST}
- TRUSTED_PROXIES=**
- DB_CONNECTION=pgsql
- DB_HOST=postgres
- DB_PORT=5432
# Need to manually create fireflyiii database since fireflyiii doesn't create it automatically
- DB_DATABASE=fireflyiii
- DB_USERNAME=postgres
- DB_PASSWORD=
- VIRTUAL_HOST_NAME=fireflyiii
- VIRTUAL_HOST=${FIREFLY_HOST}
- VIRTUAL_PORT=8080
- LETSENCRYPT_HOST=${FIREFLY_HOST}
expose:
- 8080
volumes:
- firefly_iii_export:/var/www/html/storage/export
- firefly_iii_upload:/var/www/html/storage/upload
depends_on:
- postgres
postgres:
restart: unless-stopped
image: btcpayserver/postgres:18.1
command: [ "-c", "random_page_cost=1.0", "-c", "shared_preload_libraries=pg_stat_statements" ]
environment:
POSTGRES_HOST_AUTH_METHOD: trust
volumes:
- "postgres_datadir:/var/lib/postgresql"
volumes:
nginx_conf:
nginx_vhost:
nginx_html:
nginx_certs:
mm-dbdata:
mm-config:
mm-data:
mm-logs:
mm-plugins:
firefly_iii_export:
firefly_iii_upload:
postgres_datadir:
acme: