Compare commits

..

No commits in common. "feature/multitenancy" and "master" have entirely different histories.

5 changed files with 36 additions and 45 deletions

View file

@ -26,15 +26,14 @@ Requirements
Role Variables Role Variables
-------------- --------------
| Variable | Description | Default | | Variable | Description | Default |
| --------------------------- | ------------------------------------------------------------------------------- | ------------------ | | --------------------------- | ------------------------------------------------------------------------------- | ------------------ |
| onlyoffice_install_user | The user who is going to manage/run the Docker Compose services | {{ ansible_user } | | docker_user | The user who is going to manage/run the Docker Compose services | deploy |
| onlyoffice_install_path | The location where the service should be deployed | /home/{{ onlyoffice_install_user }} | | onlyoffice_virtual_host | The host under which ONLYOFFICE is available from the outside (e.g. docsrv.example.org) | localhost |
| onlyoffice_virtual_host | The host under which ONLYOFFICE is available from the outside (e.g. docsrv.example.org) | localhost | | onlyoffice_allow_origin_list | Satisfy [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) [Access-Control-Allow-Origin](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin): <br>A comma-separated list of hosts incl. scheme, e.g. https://nextcloud.example.tld | localhost |
| onlyoffice_allow_origin_list | Satisfy [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) [Access-Control-Allow-Origin](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin): <br>A comma-separated list of hosts incl. scheme, e.g. https://nextcloud.example.tld | localhost | | onlyoffice_jwt_enabled | Whether JWT authentication should be used | "false" |
| onlyoffice_jwt_enabled | Whether JWT authentication should be used | false | | onlyoffice_jwt_secret | A shared secret used by ONLYOFFICE and the integrator apps, e.g. Nextcloud | "secret" |
| onlyoffice_jwt_secret | A shared secret used by ONLYOFFICE and the integrator apps, e.g. Nextcloud | "secret" |
| onlyoffice_jwt_header | The authorization header included in the JWT token | "Authorization" |
Dependencies Dependencies
------------ ------------

View file

@ -1,11 +1,4 @@
--- ---
# defaults file for ONLYOFFICE Document Server # defaults file for ONLYOFFICE Document Server
onlyoffice_install_user: '{{ ansible_user }}' # This user must be present on the host docker_user: deploy
onlyoffice_install_path: '/home/{{ onlyoffice_install_user }}'
onlyoffice_multitenant_label:
onlyoffice_virtual_host: localhost onlyoffice_virtual_host: localhost
onlyoffice_jwt_enabled: false
onlyoffice_jwt_secret: 'secret'
onlyoffice_jwt_header: 'Authorization'
# Internal variables
onlyoffice_multitenant_postfix: "{{ '_' + onlyoffice_multitenant_label if (onlyoffice_multitenant_label) else '' }}"

View file

@ -2,23 +2,23 @@
# tasks file for ONLYOFFICE Document Server # tasks file for ONLYOFFICE Document Server
- name: Ensure ONLYOFFICE Document Server config directory exists - name: Ensure ONLYOFFICE Document Server config directory exists
file: file:
path: "{{ onlyoffice_install_path }}/onlyoffice-document-server" path: /home/{{ docker_user }}/onlyoffice-document-server
state: directory state: directory
owner: '{{ onlyoffice_install_user }}' owner: '{{ docker_user }}'
group: '{{ onlyoffice_install_user }}' group: '{{ docker_user }}'
tags: config tags: config
- name: Provide docker-compose.yml - name: Provide docker-compose.yml
template: template:
src: templates/docker-compose.onlyoffice-document-server.yml.j2 src: templates/docker-compose.onlyoffice-document-server.yml.j2
dest: "{{ onlyoffice_install_path }}/onlyoffice-document-server/docker-compose.yml" dest: /home/{{ docker_user }}/onlyoffice-document-server/docker-compose.yml
owner: "{{ onlyoffice_install_user }}" owner: "{{ docker_user }}"
group: "{{ onlyoffice_install_user }}" group: "{{ docker_user }}"
mode: '0644' mode: '0644'
tags: config tags: config
- name: Output docker-compose.yml - name: Output docker-compose.yml
shell: cat {{ onlyoffice_install_path }}/onlyoffice-document-server/docker-compose.yml shell: cat /home/{{ docker_user }}/onlyoffice-document-server/docker-compose.yml
register: output register: output
tags: config tags: config
@ -28,21 +28,21 @@
- name: Provide env vars - name: Provide env vars
template: template:
src: templates/env.onlyoffice-document-server.j2 src: templates/env.onlyoffice-document-server.j2
dest: "{{ onlyoffice_install_path }}/onlyoffice-document-server/.env" dest: /home/{{ docker_user }}/onlyoffice-document-server/.env
owner: "{{ onlyoffice_install_user }}" owner: "{{ docker_user }}"
group: "{{ onlyoffice_install_user }}" group: "{{ docker_user }}"
mode: '0640' mode: '0640'
tags: config tags: config
- name: "docker-compose: Teardown existing service" - name: "docker-compose: Teardown existing service"
docker_compose: docker_compose:
project_src: "{{ onlyoffice_install_path }}/onlyoffice-document-server/" project_src: "/home/{{ docker_user }}/onlyoffice-document-server/"
state: absent state: absent
tags: ['never', 'teardown'] tags: ['never', 'teardown']
- name: "docker-compose: Bootstrap service" - name: "docker-compose: Bootstrap service"
docker_compose: docker_compose:
project_src: "{{ onlyoffice_install_path }}/onlyoffice-document-server/" project_src: "/home/{{ docker_user }}/onlyoffice-document-server/"
register: output register: output
- debug: - debug:

View file

@ -2,34 +2,33 @@ version: '3'
services: services:
onlyoffice-document-server: onlyoffice-document-server:
container_name: onlyoffice-document-server
image: onlyoffice/documentserver image: onlyoffice/documentserver
container_name: onlyoffice-document-server{{ onlyoffice_multitenant_label }}
hostname: onlyoffice-document-server{{ onlyoffice_multitenant_label }}
restart: unless-stopped restart: unless-stopped
environment: environment:
- JWT_ENABLED - JWT_ENABLED
- JWT_SECRET - JWT_SECRET
volumes: volumes:
- document_data{{ onlyoffice_multitenant_label }}:/var/www/onlyoffice/Data - document_data:/var/www/onlyoffice/Data
- document_log{{ onlyoffice_multitenant_label }}:/var/log/onlyoffice - document_log:/var/log/onlyoffice
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.docker.network=traefik_public" - "traefik.docker.network=traefik_public"
- "traefik.http.routers.onlyoffice{{ onlyoffice_multitenant_label }}.rule=Host(`{{ onlyoffice_virtual_host }}`)" - "traefik.http.routers.onlyoffice.rule=Host(`{{ onlyoffice_virtual_host }}`)"
- "traefik.http.routers.onlyoffice{{ onlyoffice_multitenant_label }}.entrypoints=websecure" - "traefik.http.routers.onlyoffice.entrypoints=websecure"
- "traefik.http.routers.onlyoffice{{ onlyoffice_multitenant_label }}.tls=true" - "traefik.http.routers.onlyoffice.tls=true"
- "traefik.http.routers.onlyoffice{{ onlyoffice_multitenant_label }}.tls.certresolver=defaultresolver" - "traefik.http.routers.onlyoffice.tls.certresolver=defaultresolver"
{% if onlyoffice_allow_origin_list %} {% if onlyoffice_allow_origin_list %}
- "traefik.http.middlewares.onlyoffice{{ onlyoffice_multitenant_label }}-headers.headers.accesscontrolalloworiginlist={{ onlyoffice_allow_origin_list }}" - "traefik.http.middlewares.onlyoffice-headers.headers.accesscontrolalloworiginlist={{ onlyoffice_allow_origin_list }}"
{% endif %} {% endif %}
- "traefik.http.middlewares.onlyoffice{{ onlyoffice_multitenant_label }}-headers.headers.customrequestheaders.X-Forwarded-Proto=https" - "traefik.http.middlewares.onlyoffice-headers.headers.customrequestheaders.X-Forwarded-Proto=https"
- "traefik.http.routers.onlyoffice{{ onlyoffice_multitenant_label }}.middlewares=onlyoffice{{ onlyoffice_multitenant_label }}-headers" - "traefik.http.routers.onlyoffice.middlewares=onlyoffice-headers"
networks: networks:
public: public:
volumes: volumes:
document_data{{ onlyoffice_multitenant_label }}: document_data:
document_log{{ onlyoffice_multitenant_label }}: document_log:
networks: networks:
public: public:

View file

@ -1,3 +1,3 @@
JWT_ENABLED={{ onlyoffice_jwt_enabled }} JWT_ENABLED={{ onlyoffice_jwt_enabled | default('false')}}
JWT_SECRET={{ onlyoffice_jwt_secret }} JWT_SECRET={{ onlyoffice_jwt_secret | default('secret') }}
JWT_HEADER={{ onlyoffice_jwt_header }} JWT_HEADER={{ onlyoffice_jwt_header | default('Authorization') }}