diff --git a/docs/services/collabora-online.md b/docs/services/collabora-online.md new file mode 100644 index 0000000..4b4ac39 --- /dev/null +++ b/docs/services/collabora-online.md @@ -0,0 +1,56 @@ +# Collabora Online + +The [Collabora Online Development Edition (CODE)](https://www.collaboraoffice.com/) office suite, together with the [Office App](https://apps.nextcloud.com/apps/richdocuments) for [Nextcloud](nextcloud.md) enables you to edit office documents online. + + +## Dependencies + +This service requires the following other services: + +- a [Postgres](postgres.md) database +- a [Traefik](traefik.md) reverse-proxy server + + +## Configuration + +To enable this service, add the following configuration to your `vars.yml` file and re-run the [installation](../installing.md) process: + +```yaml +######################################################################## +# # +# collabora-online # +# # +######################################################################## + +collabora_online_enabled: true + +collabora_online_hostname: collabora.example.com + +# A password for the admin interface, available at: https://COLLABORA_ONLINE_DOMAIN/browser/dist/admin/admin.html +collabora_online_env_variable_password: '' + +collabora_online_aliasgroup: "https://{{ nextcloud_hostname | replace('.', '\\.') }}:443" + +######################################################################## +# # +# /collabora-online # +# # +######################################################################## +``` + +In the example configuration above, we configure the service to be hosted at `https://collabora.example.com`. + + +## Integrating with Nextcloud + +To learn how to integrate Collabora Online with Nextcloud, see the [Collabora Online section](nextcloud.md#collabora-online) in our Nextcloud documentation. + + +## Admin Interface + +There's an admin interface with various statistics and information at: `https://COLLABORA_ONLINE_DOMAIN/browser/dist/admin/admin.html` + +Use your admin credentials for logging in: + +- the default username is `admin`, as specified in `collabora_online_env_variable_username` +- the password is the one you've specified in `collabora_online_env_variable_password` diff --git a/docs/services/nextcloud.md b/docs/services/nextcloud.md index 0115d79..31d194e 100644 --- a/docs/services/nextcloud.md +++ b/docs/services/nextcloud.md @@ -18,7 +18,7 @@ To enable this service, add the following configuration to your `vars.yml` file ```yaml ######################################################################## # # -# nextcloud # +# nextcloud # # # ######################################################################## @@ -29,7 +29,7 @@ nextcloud_path_prefix: /nextcloud ######################################################################## # # -# /nextcloud # +# /nextcloud # # # ######################################################################## ``` @@ -48,3 +48,30 @@ You can choose any username/password for your account. In **Storage & database**, you should choose PostgreSQL (changing the default **SQLite** choice), with the credentials you see after running `just run-tags print-nextcloud-db-credentials` Once you've fully installed Nextcloud, you'd better adjust its default configuration (URL paths, trusted reverse-proxies, etc.) by running: `just run-tags adjust-nextcloud-config` + + +## Recommended other services + +### Collabora Online + +To integrate the [Collabora Online](collabora-online.md) office suite, first install it by following its dedicated documentation page. + +Then add the following **additional** Nextcloud configuration: + +```yaml +nextcloud_collabora_app_wopi_url: "{{ collabora_online_url }}" + +# By default, various private IPv4 networks are whitelited to connect to the WOPI API (document serving API). +# If your Collabora Online installation does not live on the same server as Nextcloud, +# you may need to adjust the list of networks. +# If necessary, redefined the `nextcloud_collabora_app_wopi_allowlist` environment variable here. +``` + +There's **no need** to [re-run the playbook](../installing.md) after adjusting your `vars.yml` file. +You should, however run: `just run-tags install-nextcloud-app-collabora` + +This will install and configure the [Office](https://apps.nextcloud.com/apps/richdocuments) app for Nextcloud. + +You should then be able to click any document (`.doc`, `.odt`, `.pdf`, etc.) in Nextcloud Files and it should automatically open a Collabora Online editor. + +You can also create new documents via the "plus" button. diff --git a/docs/supported-services.md b/docs/supported-services.md index 42c1998..26f458e 100644 --- a/docs/supported-services.md +++ b/docs/supported-services.md @@ -2,6 +2,7 @@ | Name | Description | Documentation | | ------------------------------ | ------------------------------------- | ------------- | +| [Collabora Online](https://www.collaboraoffice.com/) | Your Private Office Suite In The Cloud | [Link](services/collabora-online.md) | | [Docker](https://www.docker.com/) | Open-source software for deploying containerized applications | [Link](services/docker.md) | | [Gitea](https://gitea.io/) | A painless self-hosted Git service. | [Link](services/gitea.md) | | [Miniflux](https://miniflux.app/) | Minimalist and opinionated feed reader. | [Link](services/miniflux.md) | diff --git a/group_vars/mash_servers b/group_vars/mash_servers index 638b198..ce0902c 100644 --- a/group_vars/mash_servers +++ b/group_vars/mash_servers @@ -8,6 +8,8 @@ devture_systemd_service_manager_services_list_auto: | {{ + ([{'name': (collabora_online_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'collabora-online']}] if collabora_online_enabled else []) + + ([{'name': (devture_postgres_identifier + '.service'), 'priority': 500, 'groups': ['mash', 'postgres']}] if devture_postgres_enabled else []) + ([{'name': (devture_container_socket_proxy_identifier + '.service'), 'priority': 2900, 'groups': ['mash', 'reverse-proxies', 'container-socket-proxy']}] if devture_container_socket_proxy_enabled else []) @@ -20,7 +22,7 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': (gitea_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'gitea', 'gitea-server']}]) + - ([{'name': (nextcloud_identifier + '-server.service'), 'priority': 1000, 'groups': ['mash', 'nextcloud', 'nextcloud-server']}] if nextcloud_enabled else []) + ([{'name': (nextcloud_identifier + '-server.service'), 'priority': 2000, 'groups': ['mash', 'nextcloud', 'nextcloud-server']}] if nextcloud_enabled else []) + ([{'name': (nextcloud_identifier + '-cron.timer'), 'priority': 2500, 'groups': ['mash', 'nextcloud', 'nextcloud-cron']}] if nextcloud_enabled else []) + @@ -28,7 +30,7 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': (radicale_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'radicale']}] if radicale_enabled else []) + - ([{'name': (vaultwarden_identifier + '.service'), 'priority': 1000, 'groups': ['mash', 'vaultwarden', 'vaultwarden-server']}] if vaultwarden_enabled else []) + ([{'name': (vaultwarden_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'vaultwarden', 'vaultwarden-server']}] if vaultwarden_enabled else []) + ([{'name': (uptime_kuma_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'uptime-kuma']}] if uptime_kuma_enabled else []) }} @@ -224,6 +226,37 @@ devture_timesync_installation_enabled: false # # ######################################################################## +######################################################################## +# # +# collabora-online # +# # +######################################################################## + +collabora_online_enabled: false + +collabora_online_identifier: "{{ mash_playbook_service_identifier_prefix }}collabora-online" + +collabora_online_base_path: "{{ mash_playbook_base_path }}/collabora-online" + +collabora_online_uid: "{{ mash_playbook_uid }}" +collabora_online_gid: "{{ mash_playbook_gid }}" + +collabora_online_container_additional_networks: | + {{ + ([mash_playbook_reverse_proxyable_services_additional_network] if mash_playbook_reverse_proxyable_services_additional_network else []) + }} + +collabora_online_container_labels_traefik_enabled: "{{ mash_playbook_traefik_labels_enabled }}" +collabora_online_container_labels_traefik_docker_network: "{{ mash_playbook_reverse_proxyable_services_additional_network }}" +collabora_online_container_labels_traefik_entrypoints: "{{ devture_traefik_entrypoint_primary }}" +collabora_online_container_labels_traefik_tls_certResolver: "{{ devture_traefik_certResolver_primary }}" + +######################################################################## +# # +# /collabora-online # +# # +######################################################################## + ######################################################################## diff --git a/requirements.yml b/requirements.yml index 5f17eaf..d58b5b9 100644 --- a/requirements.yml +++ b/requirements.yml @@ -58,4 +58,8 @@ - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-nextcloud.git name: nextcloud - version: v25.0.4-0 + version: v25.0.4-1 + +- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-collabora-online.git + name: collabora_online + version: v22.05.12.1.1-0 diff --git a/setup.yml b/setup.yml index b27ad3d..020fa58 100644 --- a/setup.yml +++ b/setup.yml @@ -44,6 +44,8 @@ - role: galaxy/com.devture.ansible.role.traefik + - role: galaxy/collabora_online + - role: galaxy/gitea - role: galaxy/miniflux