docker-apps/onlyoffice/stacks/compose.yml
2025-04-03 22:57:52 +02:00

240 lines
8.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# before stopping only-office execute:
# docker exec <CONTAINER> documentserver-prepare4shutdown.sh
#
# https://gist.github.com/kvaps/6ac945e6c2e2e41bd536b7486a7dea4a
name: onlyoffice
secrets:
onlyoffice_postgresql_database:
file: ${SECRETSDIR}/onlyoffice_postgresql_database
onlyoffice_postgresql_password:
file: ${SECRETSDIR}/onlyoffice_postgresql_password
onlyoffice_postgresql_username:
file: ${SECRETSDIR}/onlyoffice_postgresql_username
onlyoffice_jwt_secret:
file: ${SECRETSDIR}/onlyoffice_jwt_secret
onlyoffice_redis_password:
file: ${SECRETSDIR}/onlyoffice_redis_password
networks:
traefik-net:
external: true
postgres-net:
external: true
backend:
name: onlyoffice-net
driver: bridge
driver_opts:
com.docker.network.bridge.name: "br-onlyoffice"
services:
documentserver:
image: "onlyoffice/documentserver:latest"
hostname: onlyoffice_documentserver
env_file: .documentserver.env
privileged: true
stdin_open: true
tty: true
volumes:
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
- "${DATADIR}/redis:/var/lib/redis"
- "${DATADIR}/rabbitmq:/var/lib/rabbitmq"
- "${DATADIR}/pgdata:/var/lib/postgresql"
- "${DATADIR}/documentserver/logs:/var/log/onlyoffice"
- "${DATADIR}/documentserver/data:/var/www/onlyoffice/Data"
- "${DATADIR}/documentserver/lib:/var/lib/onlyoffice"
# - "${DATADIR}/documentserver/public:/var/www/onlyoffice/documentserver-example/public/files"
# - "${DATADIR}/documentserver/fonts:/usr/share/fonts"
networks:
- traefik-net
- backend
- postgres-net
secrets:
- onlyoffice_postgresql_database
- onlyoffice_postgresql_password
- onlyoffice_postgresql_username
- onlyoffice_jwt_secret
- onlyoffice_redis_password
environment:
# The IP address or the name of the host where the database server is running.
DB_HOST: onlyoffice_postgresql
# The IP address or the name of the host where the Redis server is running.
REDIS_SERVER_HOST: onlyoffice_rabbitmq
# The AMQP URI to connect to message broker server.
AMQP_URI: amqp://guest:guest@onlyoffice_rabbitmq
depends_on:
postgresql:
condition: service_healthy
rabbitmq:
condition: service_healthy
redis:
condition: service_started
restart: unless-stopped
stop_grace_period: 60s
labels:
- traefik.enable=true
- traefik.docker.network=traefik-net
#
- "traefik.http.middlewares.onlyoffice_documentserver-https-redirect.redirectscheme.scheme=https"
- "traefik.http.middlewares.onlyoffice_documentserver-https-redirect.redirectscheme.permanent=true"
#
- "traefik.http.services.onlyoffice_documentserver-svc.loadbalancer.server.port=${WEBUI_PORT}"
#
- "traefik.http.routers.onlyoffice_documentserver-rtr.entrypoints=web"
- "traefik.http.routers.onlyoffice_documentserver-rtr.rule=Host(`onlyoffice.${DOMAINNAME}`)&& PathPrefix(`/`)"
- "traefik.http.routers.onlyoffice_documentserver-rtr.middlewares=onlyoffice_documentserver-https-redirect"
- "traefik.http.routers.onlyoffice_documentserver-rtr.service=onlyoffice_documentserver-svc"
#
- "traefik.http.routers.onlyoffice_documentserver-secure-rtr.entrypoints=websecure"
- "traefik.http.routers.onlyoffice_documentserver-secure-rtr.rule=Host(`onlyoffice.${DOMAINNAME}`)&& PathPrefix(`/`)"
- "traefik.http.routers.onlyoffice_documentserver-secure-rtr.tls=true"
- "traefik.http.routers.onlyoffice_documentserver-secure-rtr.tls.certresolver=sthomeresolver"
- "traefik.http.routers.onlyoffice_documentserver-secure-rtr.service=onlyoffice_documentserver-svc"
rabbitmq:
image: rabbitmq
restart: unless-stopped
healthcheck:
test: rabbitmq-diagnostics -q ping
interval: 30s
timeout: 30s
retries: 3
networks:
backend:
aliases: ["onlyoffice_rabbitmq"]
# https://stackoverflow.com/questions/66738931/how-to-set-password-for-redis-server
# I managed to set the password permanently for the default user. Adding these 2 parameters in the file "redis.conf" requirepass newpass123 masterauth newpass123 And in the file "sentinel.conf" sentinel auth-pass mymaster newpass123 Thanks
#user14867757
# CommentedMar 24, 2021 at 4:19
redis:
image: docker.io/library/redis:alpine
#command: --save 60 1 --loglevel warning
command: sh -c "redis-server --requirepass ${REDIS_PASSWORD}" && --save 60 1 && --loglevel warning
env_file: .redis.env
restart: unless-stopped
expose:
- ${REDIS_PORT}
# healthcheck:
# test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
# start_period: 20s
# interval: 30s
# retries: 5
# timeout: 3s
secrets:
- onlyoffice_redis_password
networks:
backend:
aliases: ["onlyoffice_redis"]
volumes:
- "$DATADIR/redis/data:/data"
# mailserver:
# init: true
# hostname: "mail.${DOMAINNAME}"
# image: onlyoffice/mailserver
# env_file: .mailserver.env
# networks:
# backend:
# aliases: ["onlyoffice_mailserver"]
# privileged: true
# stdin_open: true
# tty: true
# restart: always
# ports:
# - 25:25
# - 143:143
# - 587:587
# environment:
# MYSQL_SERVER: onlyoffice_mysql
# volumes:
# - "${BULKSTORE}/mailserver/data:/var/vmail"
# - "${DATADIR}/mailserver/data/certs:/etc/pki/tls/mailserver"
# - "${DATADIR}/mailserver/logs:/var/log"
#
# communityserver:
# image: onlyoffice/communityserver
# env_file: .communityserver.env
# networks:
# backend:
# aliases: ["onlyoffice_communityserver"]
# stdin_open: true
# tty: true
# privileged: true
# restart: always
## ports:
## - 80:80
## - 443:443
## - 5222:5222
# cgroup: host
# environment:
# MYSQL_SERVER_HOST: onlyoffice_mysql
# MAIL_SERVER_DB_HOST: onlyoffice_mysql
# DOCUMENT_SERVER_PORT_80_TCP_ADDR: onlyoffice_documentserver
# volumes:
# - "${DATADIR}/communityserver/data:/var/www/onlyoffice/Data"
# - "${DATADIR}/communityserver/logs:/var/log/onlyoffice"
# - "${DATADIR}/communityserver/letsencrypt:/etc/letsencrypt"
# - "/sys/fs/cgroup:/sys/fs/cgroup:rw"
# labels:
# - traefik.enable=true
# - traefik.docker.network=traefik-net
# #
# - "traefik.http.middlewares.onlyoffice_communityserver-https-redirect.redirectscheme.scheme=https"
# - "traefik.http.middlewares.onlyoffice_communityserver-https-redirect.redirectscheme.permanent=true"
# #
# - "traefik.http.services.onlyoffice_communityserver-svc.loadbalancer.server.port=${WEBUI_PORT}"
# #
# - "traefik.http.routers.onlyoffice_communityserver-rtr.entrypoints=web"
# - "traefik.http.routers.onlyoffice_communityserver-rtr.rule=Host(`onlyoffice_communityserver.${DOMAINNAME}`)&& PathPrefix(`/`)"
# - "traefik.http.routers.onlyoffice_communityserver-rtr.middlewares=onlyoffice_communityserver-https-redirect"
# - "traefik.http.routers.onlyoffice_communityserver-rtr.service=onlyoffice_communityserver-svc"
# #
# - "traefik.http.routers.onlyoffice_communityserver-secure-rtr.entrypoints=websecure"
# - "traefik.http.routers.onlyoffice_communityserver-secure-rtr.rule=Host(`onlyoffice_communityserver.${DOMAINNAME}`)&& PathPrefix(`/`)"
# - "traefik.http.routers.onlyoffice_communityserver-secure-rtr.tls=true"
# - "traefik.http.routers.onlyoffice_communityserver-secure-rtr.tls.certresolver=sthomeresolver"
# - "traefik.http.routers.onlyoffice_communityserver-secure-rtr.service=onlyoffice_communityserver-svc"
postgresql:
image: postgres:16-alpine
hostname: "onlyoffice_postgresql"
shm_size: 128mb # https://hub.docker.com/_/postgres
restart: unless-stopped
env_file: .postgresql.env
healthcheck:
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
start_period: 20s
interval: 30s
retries: 5
timeout: 5s
networks:
postgres-net:
aliases: ["onlyoffice_postgresql"]
secrets:
- onlyoffice_postgresql_database
- onlyoffice_postgresql_password
- onlyoffice_postgresql_username
volumes:
- "${DATADIR}/pgdata:/var/lib/postgresql/data"
- "${DATADIR}/pgbackups:/mnt/backups"
# mysql:
# image: mysql:5.7
# restart: always
# env_file: .mysql.env
# networks:
# backend:
# aliases: ["onlyoffice_mysql"]
# ports:
# # <Port exposed> : <MySQL Port running inside container>
# - '3306:3306'
# expose:
# # Opens port 3306 on the container
# - '3306'
# # Where our data will be persisted
# volumes:
# - "${DATADIR}/mysqldata:/var/lib/mysql"