diff --git a/roles/etherpad/defaults/main.yaml b/roles/etherpad/defaults/main.yaml index ed6395f..7e1952a 100644 --- a/roles/etherpad/defaults/main.yaml +++ b/roles/etherpad/defaults/main.yaml @@ -1,4 +1,4 @@ -nodejs_version: node_18.x +nodejs_version: 22.x etherpad_db_user: etherpad etherpad_db_password: "{{ lookup('password', '/tmp/etherpad_db_password length=32') }}" etherpad_db_name: etherpad diff --git a/roles/etherpad/tasks/main.yaml b/roles/etherpad/tasks/main.yaml index 1718016..8da9d4b 100644 --- a/roles/etherpad/tasks/main.yaml +++ b/roles/etherpad/tasks/main.yaml @@ -3,11 +3,12 @@ block: - name: Install dependencies apt: - name: [ gpg, nginx, postgresql, python3-psycopg2 ] + name: [ gpg, nginx, postgresql, python3-psycopg2, apt-transport-https ] - name: Import nodesource signing key - apt_key: - url: https://deb.nodesource.com/gpgkey/nodesource.gpg.key + shell: curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg + args: + creates: /usr/share/keyrings/nodesource.gpg notify: apt update - name: Install nodesource source list @@ -19,6 +20,15 @@ mode: 0644 notify: apt update + - name: Install nodejs apt preference + template: + src: nodejs-apt-pref + dest: /etc/apt/preferences.d/nodejs + owner: root + group: root + mode: 0644 + notify: apt update + - meta: flush_handlers - name: Install nodejs diff --git a/roles/etherpad/templates/etherpad.service b/roles/etherpad/templates/etherpad.service index c2cb06e..19d11e4 100644 --- a/roles/etherpad/templates/etherpad.service +++ b/roles/etherpad/templates/etherpad.service @@ -1,4 +1,4 @@ -# Managed by Ansible +# {{ ansible_managed }} [Unit] Description=Etherpad @@ -8,10 +8,10 @@ After=network.target Type=simple Restart=always RestartSec=10s -ExecStart=/opt/etherpad/src/bin/run.sh /var/log/etherpad.log +ExecStartPre=+/usr/bin/npm install pnpm -g +ExecStart=/opt/etherpad/bin/run.sh /var/log/etherpad.log User=etherpad Environment="NODE_ENV=production" [Install] WantedBy=multi-user.target - diff --git a/roles/etherpad/templates/nginx-site.conf b/roles/etherpad/templates/nginx-site.conf index 9910a4d..b4c1fde 100644 --- a/roles/etherpad/templates/nginx-site.conf +++ b/roles/etherpad/templates/nginx-site.conf @@ -1,3 +1,5 @@ +# {{ ansible_managed }} + server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; @@ -13,8 +15,10 @@ server { location / { proxy_pass http://127.0.0.1:9001/; include proxy_params; + + proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection $http_connection; } include "snippets/acme.conf"; diff --git a/roles/etherpad/templates/nodejs-apt-pref b/roles/etherpad/templates/nodejs-apt-pref new file mode 100644 index 0000000..47eaac5 --- /dev/null +++ b/roles/etherpad/templates/nodejs-apt-pref @@ -0,0 +1,5 @@ +# {{ ansible_managed }} + +Package: nodejs +Pin: origin deb.nodesource.com +Pin-Priority: 600 diff --git a/roles/etherpad/templates/nodesource.list b/roles/etherpad/templates/nodesource.list index 1d17937..43defab 100644 --- a/roles/etherpad/templates/nodesource.list +++ b/roles/etherpad/templates/nodesource.list @@ -1,4 +1,3 @@ -# Managed by Ansible +# {{ ansible_managed }} -deb https://deb.nodesource.com/{{ nodejs_version }} {{ ansible_facts.distribution_release }} main -deb-src https://deb.nodesource.com/{{ nodejs_version }} {{ ansible_facts.distribution_release }} main +deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_{{ nodejs_version }} nodistro main diff --git a/roles/etherpad/templates/settings.json b/roles/etherpad/templates/settings.json index 4d83360..e2e8818 100644 --- a/roles/etherpad/templates/settings.json +++ b/roles/etherpad/templates/settings.json @@ -1,4 +1,4 @@ -// Managed by Ansible +// {{ ansible_managed }} { "title": "Bitlair Etherpad", @@ -61,7 +61,7 @@ "suppressErrorsInPadText": false, "requireSession": false, "editOnly": false, - "minify": true, + "minify": false, "maxAge": 21600, // 60 * 60 * 6 = 6 hours "abiword": null, "soffice": null, @@ -85,8 +85,7 @@ "percentageToScrollWhenUserPressesArrowUp": 0 }, - - "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"], + "socketTransportProtocols" : ["websocket", "polling"], "socketIo": { "maxHttpBufferSize": 10000 },