| @@ -39,6 +39,7 @@ When you're done configuring DNS, proceed to [Configuring the playbook](configur | |||||
| | [Go-NEB](configuring-playbook-bot-go-neb.md) bot | CNAME | `goneb` | - | - | - | `matrix.<your-domain>` | | | [Go-NEB](configuring-playbook-bot-go-neb.md) bot | CNAME | `goneb` | - | - | - | `matrix.<your-domain>` | | ||||
| | [Sygnal](configuring-playbook-sygnal.md) push notification gateway | CNAME | `sygnal` | - | - | - | `matrix.<your-domain>` | | | [Sygnal](configuring-playbook-sygnal.md) push notification gateway | CNAME | `sygnal` | - | - | - | `matrix.<your-domain>` | | ||||
| | [ntfy](configuring-playbook-ntfy.md) push notifications server | CNAME | `ntfy` | - | - | - | `matrix.<your-domain>` | | | [ntfy](configuring-playbook-ntfy.md) push notifications server | CNAME | `ntfy` | - | - | - | `matrix.<your-domain>` | | ||||
| | [Etherpad](configuring-playbook-etherpad.md) collaborative text editor | CNAME | `etherpad` | - | - | - | `matrix.<your-domain>` | | |||||
| | [Hydrogen](configuring-playbook-client-hydrogen.md) web client | CNAME | `hydrogen` | - | - | - | `matrix.<your-domain>` | | | [Hydrogen](configuring-playbook-client-hydrogen.md) web client | CNAME | `hydrogen` | - | - | - | `matrix.<your-domain>` | | ||||
| | [Cinny](configuring-playbook-client-cinny.md) web client | CNAME | `cinny` | - | - | - | `matrix.<your-domain>` | | | [Cinny](configuring-playbook-client-cinny.md) web client | CNAME | `cinny` | - | - | - | `matrix.<your-domain>` | | ||||
| | [Buscarron](configuring-playbook-bot-buscarron.md) helpdesk bot | CNAME | `buscarron` | - | - | - | `matrix.<your-domain>` | | | [Buscarron](configuring-playbook-bot-buscarron.md) helpdesk bot | CNAME | `buscarron` | - | - | - | `matrix.<your-domain>` | | ||||
| @@ -68,6 +69,8 @@ The `sygnal.<your-domain>` subdomain may be necessary, because this playbook cou | |||||
| The `ntfy.<your-domain>` subdomain may be necessary, because this playbook could install the [ntfy](https://ntfy.sh/) UnifiedPush-compatible push notifications server. The installation of ntfy is disabled by default, it is not a core required component. To learn how to install it, see our [configuring ntfy guide](configuring-playbook-ntfy.md). If you do not wish to set up ntfy, feel free to skip the `ntfy.<your-domain>` DNS record. | The `ntfy.<your-domain>` subdomain may be necessary, because this playbook could install the [ntfy](https://ntfy.sh/) UnifiedPush-compatible push notifications server. The installation of ntfy is disabled by default, it is not a core required component. To learn how to install it, see our [configuring ntfy guide](configuring-playbook-ntfy.md). If you do not wish to set up ntfy, feel free to skip the `ntfy.<your-domain>` DNS record. | ||||
| The `etherpad.<your-domain>` subdomain may be necessary, because this playbook could install the [Etherpad](https://etherpad.org/) a highly customizable open source online editor providing collaborative editing in really real-time. The installation of etherpad is disabled by default, it is not a core required component. To learn how to install it, see our [configuring etherpad guide](configuring-playbook-etherpad.md). If you do not wish to set up etherpad, feel free to skip the `etherpad.<your-domain>` DNS record. | |||||
| The `hydrogen.<your-domain>` subdomain may be necessary, because this playbook could install the [Hydrogen](https://github.com/vector-im/hydrogen-web) web client. The installation of Hydrogen is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Hydrogen guide](configuring-playbook-client-hydrogen.md). If you do not wish to set up Hydrogen, feel free to skip the `hydrogen.<your-domain>` DNS record. | The `hydrogen.<your-domain>` subdomain may be necessary, because this playbook could install the [Hydrogen](https://github.com/vector-im/hydrogen-web) web client. The installation of Hydrogen is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Hydrogen guide](configuring-playbook-client-hydrogen.md). If you do not wish to set up Hydrogen, feel free to skip the `hydrogen.<your-domain>` DNS record. | ||||
| The `cinny.<your-domain>` subdomain may be necessary, because this playbook could install the [Cinny](https://github.com/ajbura/cinny) web client. The installation of cinny is disabled by default, it is not a core required component. To learn how to install it, see our [configuring cinny guide](configuring-playbook-client-cinny.md). If you do not wish to set up cinny, feel free to skip the `cinny.<your-domain>` DNS record. | The `cinny.<your-domain>` subdomain may be necessary, because this playbook could install the [Cinny](https://github.com/ajbura/cinny) web client. The installation of cinny is disabled by default, it is not a core required component. To learn how to install it, see our [configuring cinny guide](configuring-playbook-client-cinny.md). If you do not wish to set up cinny, feel free to skip the `cinny.<your-domain>` DNS record. | ||||
| @@ -1,12 +1,14 @@ | |||||
| # Setting up Etherpad (optional) | # Setting up Etherpad (optional) | ||||
| [Etherpad](https://etherpad.org) is is an open source collaborative text editor that can be embedded in a Matrix chat room using the [Dimension integrations manager](https://dimension.t2bot.io) | |||||
| [Etherpad](https://etherpad.org) is is an open source collaborative text editor that can be embedded in a Matrix chat room using the [Dimension integrations manager](https://dimension.t2bot.io) or used as standalone web app | |||||
| When enabled together with the Jitsi audio/video conferencing system (see [our docs on Jitsi](configuring-playbook-jitsi.md)), it will be made available as an option during the conferences. | When enabled together with the Jitsi audio/video conferencing system (see [our docs on Jitsi](configuring-playbook-jitsi.md)), it will be made available as an option during the conferences. | ||||
| ## Prerequisites | ## Prerequisites | ||||
| For the self-hosted Etherpad instance to be available to your users, you must first enable and configure the **Dimension integrations manager** as described in [the playbook documentation](configuring-playbook-dimension.md) | |||||
| The `etherpad.<your-domain>` DNS record must be created. See [Configuring your DNS server](configuring-dns.md) on how to set up DNS record correctly. | |||||
| You may enable and configure the **Dimension integrations manager** as described in [the playbook documentation](configuring-playbook-dimension.md) to integrate etherpad with Dimension. | |||||
| ## Installing | ## Installing | ||||
| @@ -16,16 +18,7 @@ For the self-hosted Etherpad instance to be available to your users, you must fi | |||||
| matrix_etherpad_enabled: true | matrix_etherpad_enabled: true | ||||
| ``` | ``` | ||||
| ## Set Dimension default to the self-hosted Etherpad | |||||
| The Dimension administrator users can configure the default URL template. The Dimension configuration menu can be accessed with the sprocket icon as you begin to add a widget to a room in Element. There you will find the Etherpad Widget Configuration action beneath the _Widgets_ tab. Replace `scalar.vector.im` with your own Dimension domain. | |||||
| ### Removing the integrated Etherpad chat | |||||
| If you wish to disable the Etherpad chat button, you can do it by appending `?showChat=false` to the end of the pad URL, or the template. | |||||
| Example: `https://dimension.<your-domain>/etherpad/p/$roomId_$padName?showChat=false` | |||||
| ### Etherpad Admin access (optional) | |||||
| ## Etherpad Admin access (optional) | |||||
| Etherpad comes with a admin web-UI which is disabled by default. You can enable it by setting a username and password in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): | Etherpad comes with a admin web-UI which is disabled by default. You can enable it by setting a username and password in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): | ||||
| @@ -36,11 +29,21 @@ matrix_etherpad_admin_password: some-password | |||||
| The admin web-UI should then be available on: `https://dimension.<your-domain>/etherpad/admin` | The admin web-UI should then be available on: `https://dimension.<your-domain>/etherpad/admin` | ||||
| ### Managing / Deleting old pads | |||||
| ## Managing / Deleting old pads | |||||
| If you want to manage and remove old unused pads from Etherpad, you will first need to able Admin access as described above. | If you want to manage and remove old unused pads from Etherpad, you will first need to able Admin access as described above. | ||||
| Then from the plugin manager page (`https://dimension.<your-domain>/etherpad/admin/plugins`), install the `adminpads2` plugin. Once installed, you should have a "Manage pads" section in the Admin web-UI. | |||||
| Then from the plugin manager page (`https://etherpad.<your-domain>/admin/plugins` or `https://dimension.<your-domain>/etherpad/admin/plugins`), install the `adminpads2` plugin. Once installed, you should have a "Manage pads" section in the Admin web-UI. | |||||
| ## Set Dimension default to the self-hosted Etherpad (optional) | |||||
| If you decided to install [Dimension integration manager](configuring-playbook-dimension.md) alongside with Etherpad, | |||||
| the Dimension administrator users can configure the default URL template. The Dimension configuration menu can be accessed with the sprocket icon as you begin to add a widget to a room in Element. There you will find the Etherpad Widget Configuration action beneath the _Widgets_ tab. Replace `scalar.vector.im` with your own Dimension domain. | |||||
| ### Removing the integrated Etherpad chat | |||||
| If you wish to disable the Etherpad chat button, you can do it by appending `?showChat=false` to the end of the pad URL, or the template. | |||||
| Example: `https://dimension.<your-domain>/etherpad/p/$roomId_$padName?showChat=false` | |||||
| ## Known issues | ## Known issues | ||||
| @@ -1486,6 +1486,8 @@ matrix_etherpad_enabled: false | |||||
| matrix_etherpad_container_http_host_bind_port: "{{ '' if matrix_nginx_proxy_enabled else '127.0.0.1:9001' }}" | matrix_etherpad_container_http_host_bind_port: "{{ '' if matrix_nginx_proxy_enabled else '127.0.0.1:9001' }}" | ||||
| matrix_etherpad_base_url: "{{ 'https://'+ matrix_server_fqn_dimension + matrix_etherpad_public_endpoint if matrix_dimension_enabled else 'https://' + matrix_server_fqn_etherpad + '/' }}" | |||||
| matrix_etherpad_systemd_required_services_list: | | matrix_etherpad_systemd_required_services_list: | | ||||
| {{ | {{ | ||||
| ['docker.service'] | ['docker.service'] | ||||
| @@ -1710,6 +1712,7 @@ matrix_nginx_proxy_proxy_hydrogen_enabled: "{{ matrix_client_hydrogen_enabled }} | |||||
| matrix_nginx_proxy_proxy_cinny_enabled: "{{ matrix_client_cinny_enabled }}" | matrix_nginx_proxy_proxy_cinny_enabled: "{{ matrix_client_cinny_enabled }}" | ||||
| matrix_nginx_proxy_proxy_buscarron_enabled: "{{ matrix_bot_buscarron_enabled }}" | matrix_nginx_proxy_proxy_buscarron_enabled: "{{ matrix_bot_buscarron_enabled }}" | ||||
| matrix_nginx_proxy_proxy_dimension_enabled: "{{ matrix_dimension_enabled }}" | matrix_nginx_proxy_proxy_dimension_enabled: "{{ matrix_dimension_enabled }}" | ||||
| matrix_nginx_proxy_proxy_etherpad_enabled: "{{ matrix_etherpad_enabled }}" | |||||
| matrix_nginx_proxy_proxy_bot_go_neb_enabled: "{{ matrix_bot_go_neb_enabled }}" | matrix_nginx_proxy_proxy_bot_go_neb_enabled: "{{ matrix_bot_go_neb_enabled }}" | ||||
| matrix_nginx_proxy_proxy_jitsi_enabled: "{{ matrix_jitsi_enabled }}" | matrix_nginx_proxy_proxy_jitsi_enabled: "{{ matrix_jitsi_enabled }}" | ||||
| matrix_nginx_proxy_proxy_grafana_enabled: "{{ matrix_grafana_enabled }}" | matrix_nginx_proxy_proxy_grafana_enabled: "{{ matrix_grafana_enabled }}" | ||||
| @@ -1837,6 +1840,8 @@ matrix_ssl_domains_to_obtain_certificates_for: | | |||||
| + | + | ||||
| ([matrix_server_fqn_dimension] if matrix_dimension_enabled else []) | ([matrix_server_fqn_dimension] if matrix_dimension_enabled else []) | ||||
| + | + | ||||
| ([matrix_server_fqn_etherpad] if matrix_etherpad_enabled else []) | |||||
| + | |||||
| ([matrix_server_fqn_bot_go_neb] if matrix_bot_go_neb_enabled else []) | ([matrix_server_fqn_bot_go_neb] if matrix_bot_go_neb_enabled else []) | ||||
| + | + | ||||
| ([matrix_server_fqn_jitsi] if matrix_jitsi_enabled else []) | ([matrix_server_fqn_jitsi] if matrix_jitsi_enabled else []) | ||||
| @@ -62,6 +62,9 @@ matrix_server_fqn_buscarron: "buscarron.{{ matrix_domain }}" | |||||
| # This is where you access the Dimension. | # This is where you access the Dimension. | ||||
| matrix_server_fqn_dimension: "dimension.{{ matrix_domain }}" | matrix_server_fqn_dimension: "dimension.{{ matrix_domain }}" | ||||
| # This is where you access the etherpad (if enabled via matrix_etherpad_enabled; disabled by default). | |||||
| matrix_server_fqn_etherpad: "etherpad.{{ matrix_domain }}" | |||||
| # For use with Go-NEB! (github callback url for example) | # For use with Go-NEB! (github callback url for example) | ||||
| matrix_server_fqn_bot_go_neb: "goneb.{{ matrix_domain }}" | matrix_server_fqn_bot_go_neb: "goneb.{{ matrix_domain }}" | ||||
| @@ -28,6 +28,7 @@ matrix_etherpad_container_http_host_bind_port: '' | |||||
| # A list of extra arguments to pass to the container | # A list of extra arguments to pass to the container | ||||
| matrix_etherpad_container_extra_arguments: [] | matrix_etherpad_container_extra_arguments: [] | ||||
| # Used for dimension only | |||||
| matrix_etherpad_public_endpoint: '/etherpad' | matrix_etherpad_public_endpoint: '/etherpad' | ||||
| # By default, the Etherpad app can be accessed within the Dimension domain | # By default, the Etherpad app can be accessed within the Dimension domain | ||||
| @@ -4,7 +4,7 @@ | |||||
| matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-etherpad.service'] }}" | matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-etherpad.service'] }}" | ||||
| when: matrix_etherpad_enabled | bool | when: matrix_etherpad_enabled | bool | ||||
| - when: matrix_etherpad_enabled | bool | |||||
| - when: matrix_etherpad_enabled | bool and matrix_dimension_enabled | default(False) | bool | |||||
| tags: | tags: | ||||
| - always | - always | ||||
| block: | block: | ||||
| @@ -1,11 +1,5 @@ | |||||
| --- | --- | ||||
| - name: Fail if Etherpad is enabled without the Dimension integrations manager | |||||
| ansible.builtin.fail: | |||||
| msg: >- | |||||
| To integrate Etherpad notes with Matrix rooms you need to set "matrix_dimension_enabled" to true | |||||
| when: "not matrix_dimension_enabled | bool" | |||||
| - name: Fail if no database is configured for Etherpad | - name: Fail if no database is configured for Etherpad | ||||
| ansible.builtin.fail: | ansible.builtin.fail: | ||||
| msg: >- | msg: >- | ||||
| @@ -192,6 +192,10 @@ matrix_nginx_proxy_proxy_matrix_federation_port: 8448 | |||||
| matrix_nginx_proxy_proxy_dimension_enabled: false | matrix_nginx_proxy_proxy_dimension_enabled: false | ||||
| matrix_nginx_proxy_proxy_dimension_hostname: "{{ matrix_server_fqn_dimension }}" | matrix_nginx_proxy_proxy_dimension_hostname: "{{ matrix_server_fqn_dimension }}" | ||||
| # Controls whether proxying the etherpad domain should be done. | |||||
| matrix_nginx_proxy_proxy_etherpad_enabled: false | |||||
| matrix_nginx_proxy_proxy_etherpad_hostname: "{{ matrix_server_fqn_etherpad }}" | |||||
| # Controls whether proxying the goneb domain should be done. | # Controls whether proxying the goneb domain should be done. | ||||
| matrix_nginx_proxy_proxy_bot_go_neb_enabled: false | matrix_nginx_proxy_proxy_bot_go_neb_enabled: false | ||||
| matrix_nginx_proxy_proxy_bot_go_neb_hostname: "{{ matrix_server_fqn_bot_go_neb }}" | matrix_nginx_proxy_proxy_bot_go_neb_hostname: "{{ matrix_server_fqn_bot_go_neb }}" | ||||
| @@ -373,6 +377,9 @@ matrix_nginx_proxy_proxy_buscarron_additional_server_configuration_blocks: [] | |||||
| # A list of strings containing additional configuration blocks to add to Dimension's server configuration (matrix-dimension.conf). | # A list of strings containing additional configuration blocks to add to Dimension's server configuration (matrix-dimension.conf). | ||||
| matrix_nginx_proxy_proxy_dimension_additional_server_configuration_blocks: [] | matrix_nginx_proxy_proxy_dimension_additional_server_configuration_blocks: [] | ||||
| # A list of strings containing additional configuration blocks to add to etherpad's server configuration (matrix-etherpad.conf). | |||||
| matrix_nginx_proxy_proxy_etherpad_additional_server_configuration_blocks: [] | |||||
| # A list of strings containing additional configuration blocks to add to GoNEB's server configuration (matrix-bot-go-neb.conf). | # A list of strings containing additional configuration blocks to add to GoNEB's server configuration (matrix-bot-go-neb.conf). | ||||
| matrix_nginx_proxy_proxy_bot_go_neb_additional_server_configuration_blocks: [] | matrix_nginx_proxy_proxy_bot_go_neb_additional_server_configuration_blocks: [] | ||||
| @@ -123,6 +123,13 @@ | |||||
| mode: 0644 | mode: 0644 | ||||
| when: matrix_nginx_proxy_proxy_dimension_enabled | bool | when: matrix_nginx_proxy_proxy_dimension_enabled | bool | ||||
| - name: Ensure Matrix nginx-proxy configuration for etherpad domain exists | |||||
| ansible.builtin.template: | |||||
| src: "{{ role_path }}/templates/nginx/conf.d/matrix-etherpad.conf.j2" | |||||
| dest: "{{ matrix_nginx_proxy_confd_path }}/matrix-etherpad.conf" | |||||
| mode: 0644 | |||||
| when: matrix_nginx_proxy_proxy_etherpad_enabled | bool | |||||
| - name: Ensure Matrix nginx-proxy configuration for goneb domain exists | - name: Ensure Matrix nginx-proxy configuration for goneb domain exists | ||||
| ansible.builtin.template: | ansible.builtin.template: | ||||
| src: "{{ role_path }}/templates/nginx/conf.d/matrix-bot-go-neb.conf.j2" | src: "{{ role_path }}/templates/nginx/conf.d/matrix-bot-go-neb.conf.j2" | ||||
| @@ -0,0 +1,108 @@ | |||||
| #jinja2: lstrip_blocks: "True" | |||||
| {% macro render_vhost_directives() %} | |||||
| gzip on; | |||||
| gzip_types text/plain application/json application/javascript text/css image/x-icon font/ttf image/gif; | |||||
| {% if matrix_nginx_proxy_hsts_preload_enabled %} | |||||
| add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; | |||||
| {% else %} | |||||
| add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; | |||||
| {% endif %} | |||||
| add_header X-XSS-Protection "{{ matrix_nginx_proxy_xss_protection }}"; | |||||
| add_header X-Content-Type-Options nosniff; | |||||
| {% if matrix_nginx_proxy_floc_optout_enabled %} | |||||
| add_header Permissions-Policy interest-cohort=() always; | |||||
| {% endif %} | |||||
| {% for configuration_block in matrix_nginx_proxy_proxy_etherpad_additional_server_configuration_blocks %} | |||||
| {{- configuration_block }} | |||||
| {% endfor %} | |||||
| location / { | |||||
| {% if matrix_nginx_proxy_enabled %} | |||||
| {# Use the embedded DNS resolver in Docker containers to discover the service #} | |||||
| resolver {{ matrix_nginx_proxy_http_level_resolver }} valid=5s; | |||||
| set $backend "matrix-etherpad:9001"; | |||||
| proxy_pass http://$backend; | |||||
| {# These are proxy directives needed specifically by Etherpad #} | |||||
| proxy_buffering off; | |||||
| proxy_http_version 1.1; {# recommended with keepalive connections #} | |||||
| proxy_pass_header Server; | |||||
| proxy_set_header Host $host; | |||||
| proxy_set_header X-Forwarded-Proto {{ matrix_nginx_proxy_x_forwarded_proto_value }}; {# for EP to set secure cookie flag when https is used #} | |||||
| {# WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html #} | |||||
| proxy_set_header Upgrade $http_upgrade; | |||||
| proxy_set_header Connection $connection_upgrade; | |||||
| {% else %} | |||||
| {# Generic configuration for use outside of our container setup #} | |||||
| # A good guide for setting up your Etherpad behind nginx: | |||||
| # https://docs.gandi.net/en/cloud/tutorials/etherpad_lite.html | |||||
| proxy_pass http://127.0.0.1:9001/; | |||||
| {% endif %} | |||||
| } | |||||
| {% endmacro %} | |||||
| server { | |||||
| listen {{ 8080 if matrix_nginx_proxy_enabled else 80 }}; | |||||
| listen [::]:{{ 8080 if matrix_nginx_proxy_enabled else 80 }}; | |||||
| server_name {{ matrix_nginx_proxy_proxy_etherpad_hostname }}; | |||||
| server_tokens off; | |||||
| root /dev/null; | |||||
| {% if matrix_nginx_proxy_https_enabled %} | |||||
| location /.well-known/acme-challenge { | |||||
| {% if matrix_nginx_proxy_enabled %} | |||||
| {# Use the embedded DNS resolver in Docker containers to discover the service #} | |||||
| resolver {{ matrix_nginx_proxy_http_level_resolver }} valid=5s; | |||||
| set $backend "matrix-certbot:8080"; | |||||
| proxy_pass http://$backend; | |||||
| {% else %} | |||||
| {# Generic configuration for use outside of our container setup #} | |||||
| proxy_pass http://127.0.0.1:{{ matrix_ssl_lets_encrypt_certbot_standalone_http_port }}; | |||||
| {% endif %} | |||||
| } | |||||
| location / { | |||||
| return 301 https://$http_host$request_uri; | |||||
| } | |||||
| {% else %} | |||||
| {{ render_vhost_directives() }} | |||||
| {% endif %} | |||||
| } | |||||
| {% if matrix_nginx_proxy_https_enabled %} | |||||
| server { | |||||
| listen {{ 8443 if matrix_nginx_proxy_enabled else 443 }} ssl http2; | |||||
| listen [::]:{{ 8443 if matrix_nginx_proxy_enabled else 443 }} ssl http2; | |||||
| server_name {{ matrix_nginx_proxy_proxy_etherpad_hostname }}; | |||||
| server_tokens off; | |||||
| root /dev/null; | |||||
| ssl_certificate {{ matrix_ssl_config_dir_path }}/live/{{ matrix_nginx_proxy_proxy_etherpad_hostname }}/fullchain.pem; | |||||
| ssl_certificate_key {{ matrix_ssl_config_dir_path }}/live/{{ matrix_nginx_proxy_proxy_etherpad_hostname }}/privkey.pem; | |||||
| ssl_protocols {{ matrix_nginx_proxy_ssl_protocols }}; | |||||
| {% if matrix_nginx_proxy_ssl_ciphers != '' %} | |||||
| ssl_ciphers {{ matrix_nginx_proxy_ssl_ciphers }}; | |||||
| {% endif %} | |||||
| ssl_prefer_server_ciphers {{ matrix_nginx_proxy_ssl_prefer_server_ciphers }}; | |||||
| {% if matrix_nginx_proxy_ocsp_stapling_enabled %} | |||||
| ssl_stapling on; | |||||
| ssl_stapling_verify on; | |||||
| ssl_trusted_certificate {{ matrix_ssl_config_dir_path }}/live/{{ matrix_nginx_proxy_proxy_etherpad_hostname }}/chain.pem; | |||||
| {% endif %} | |||||
| {% if matrix_nginx_proxy_ssl_session_tickets_off %} | |||||
| ssl_session_tickets off; | |||||
| {% endif %} | |||||
| ssl_session_cache {{ matrix_nginx_proxy_ssl_session_cache }}; | |||||
| ssl_session_timeout {{ matrix_nginx_proxy_ssl_session_timeout }}; | |||||
| {{ render_vhost_directives() }} | |||||
| } | |||||
| {% endif %} | |||||