diff --git a/defaults/main.yml b/defaults/main.yml index 86cbfa4..bb0aec9 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -2,7 +2,10 @@ # defaults file for ONLYOFFICE Document Server onlyoffice_install_user: '{{ ansible_user }}' # This user must be present on the host onlyoffice_install_path: '/home/{{ onlyoffice_install_user }}' +onlyoffice_multitenant_label: onlyoffice_virtual_host: localhost onlyoffice_jwt_enabled: false onlyoffice_jwt_secret: 'secret' -onlyoffice_jwt_header: 'Authorization' \ No newline at end of file +onlyoffice_jwt_header: 'Authorization' +# Internal variables +onlyoffice_multitenant_postfix: "{{ '_' + onlyoffice_multitenant_label if (onlyoffice_multitenant_label) else '' }}" diff --git a/templates/docker-compose.onlyoffice-document-server.yml.j2 b/templates/docker-compose.onlyoffice-document-server.yml.j2 index 574ff83..b4230a2 100644 --- a/templates/docker-compose.onlyoffice-document-server.yml.j2 +++ b/templates/docker-compose.onlyoffice-document-server.yml.j2 @@ -2,33 +2,34 @@ version: '3' services: onlyoffice-document-server: - container_name: onlyoffice-document-server image: onlyoffice/documentserver + container_name: onlyoffice-document-server{{ onlyoffice_multitenant_label }} + hostname: onlyoffice-document-server{{ onlyoffice_multitenant_label }} restart: unless-stopped environment: - JWT_ENABLED - JWT_SECRET volumes: - - document_data:/var/www/onlyoffice/Data - - document_log:/var/log/onlyoffice + - document_data{{ onlyoffice_multitenant_label }}:/var/www/onlyoffice/Data + - document_log{{ onlyoffice_multitenant_label }}:/var/log/onlyoffice labels: - "traefik.enable=true" - "traefik.docker.network=traefik_public" - - "traefik.http.routers.onlyoffice.rule=Host(`{{ onlyoffice_virtual_host }}`)" - - "traefik.http.routers.onlyoffice.entrypoints=websecure" - - "traefik.http.routers.onlyoffice.tls=true" - - "traefik.http.routers.onlyoffice.tls.certresolver=defaultresolver" + - "traefik.http.routers.onlyoffice{{ onlyoffice_multitenant_label }}.rule=Host(`{{ onlyoffice_virtual_host }}`)" + - "traefik.http.routers.onlyoffice{{ onlyoffice_multitenant_label }}.entrypoints=websecure" + - "traefik.http.routers.onlyoffice{{ onlyoffice_multitenant_label }}.tls=true" + - "traefik.http.routers.onlyoffice{{ onlyoffice_multitenant_label }}.tls.certresolver=defaultresolver" {% if onlyoffice_allow_origin_list %} - - "traefik.http.middlewares.onlyoffice-headers.headers.accesscontrolalloworiginlist={{ onlyoffice_allow_origin_list }}" + - "traefik.http.middlewares.onlyoffice{{ onlyoffice_multitenant_label }}-headers.headers.accesscontrolalloworiginlist={{ onlyoffice_allow_origin_list }}" {% endif %} - - "traefik.http.middlewares.onlyoffice-headers.headers.customrequestheaders.X-Forwarded-Proto=https" - - "traefik.http.routers.onlyoffice.middlewares=onlyoffice-headers" + - "traefik.http.middlewares.onlyoffice{{ onlyoffice_multitenant_label }}-headers.headers.customrequestheaders.X-Forwarded-Proto=https" + - "traefik.http.routers.onlyoffice{{ onlyoffice_multitenant_label }}.middlewares=onlyoffice{{ onlyoffice_multitenant_label }}-headers" networks: public: volumes: - document_data: - document_log: + document_data{{ onlyoffice_multitenant_label }}: + document_log{{ onlyoffice_multitenant_label }}: networks: public: