Maschinenraum/cp.uugrn.org: Unterschied zwischen den Versionen

Aus UUGRN
Zur Navigation springen Zur Suche springen
→‎Install Log: cp v2026.5.0
 
Zeile 224: Zeile 224:
===== NGINX installieren =====
===== NGINX installieren =====
<pre>
<pre>
sudo apt install nginx
apt update
apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
 
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
  | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# Signaturschlüssel installieren
 
mkdir -p /root/.gnupg
chmod 700 /root/.gnupg
gpg --dry-run --quiet --no-keyring --import --import-options import-show \
  /usr/share/keyrings/nginx-archive-keyring.gpg
# Fingerprint vergleichen nginx 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
 
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/debian trixie nginx" \
  | sudo tee /etc/apt/sources.list.d/nginx.list
# Repo-Eintrag für stable
 
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
  | sudo tee /etc/apt/preferences.d/99nginx
# Pinning setzen: nginx Pakete bevorzugen
 
cat /etc/apt/sources.list.d/nginx.list
# deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/debian trixie nginx
 
cat /etc/apt/preferences.d/99nginx
# Package: *
# Pin: origin nginx.org
# Pin: release o=nginx
# Pin-Priority: 900
 
apt update
apt policy nginx
# Ausgabe nginx:
# Installed: ...
# Candidate: 1.xx.x-1~trixie
# Version table:
#    1.xx.x-1~trixie 900
#      900 https://nginx.org/packages/debian trixie/nginx amd64 Packages
 
apt update
apt install nginx


mkdir -p /etc/nginx
mkdir -p /etc/nginx
mkdir -p /var/log/nginx
chown root:adm /var/log/nginx
chmod 755 /var/log/nginx


openssl dhparam -out /etc/nginx/dhparam.pem 4096
openssl dhparam -out /etc/nginx/dhparam.pem 4096
# Generierung dauert eine ganze Weile. Abwarten, bis beendet.
# Generierung dauert eine ganze Weile. Abwarten, bis beendet.
dpkg -l | grep -E 'nginx|libnginx'
# erwartet ii  nginx und ii  python3-certbot-nginx
systemctl enable --now nginx
# Dienst aktivieren, sonst könnte es beim Neustart klemmen
systemctl status nginx --no-pager
# Dienst aktiv und ohne Meldungen?
systemctl restart nginx
</pre>
===== NGINX aktualisieren =====
<pre>
cp -a /etc/nginx /etc/nginx.backup.$(date +%F-%H%M)
apt update
apt upgrade
nginx -t
systemctl reload nginx
nginx -v
journalctl -u nginx -b --no-pager
certbot certificates
certbot renew --dry-run
</pre>
</pre>



Aktuelle Version vom 23. Mai 2026, 01:08 Uhr

Admin Kontakt
sh[at]uugrn.org
Hostname
cp.uugrn.org
Aufgabe
Plattform für Echtzeit-Er-/Bearbeitung von Texten, Tabellen, Präsentationen, Kanban, Terminfindung…

Beschreibung[Bearbeiten]

Ein CryptPad sind Inhalte, die gemeinsam und gleichzeitig (kollaborativ) erarbeitet werden können. Im Vergleich zu Etherpad sind die Inhalte verschlüsselt auf dem Server gespeichert. Die Software ermöglicht das Erstellen und Bearbeiten von Inhalten mit mehreren Personen gleichzeitig. Es gibt verschiedene Dokumenttypen.

Anleitung an Dokumenten arbeiten

Dokumentation und Unterstützung[Bearbeiten]

CryptPad aktualisieren[Bearbeiten]

Wartungsarbeiten über die Mailingliste, IRC und Matrix ankündigen.

Prüfen, ob es eine Aktualisierung gibt: Releasenotes geben Hinweise zum Update von Version zu Version.

Was steht an: Plan für künfünftige Veröffentlichtungen. Kanban der öffentlichen Roadmap.

Diagnoseseite prüfen: https://cp.uugrn.org/checkup/

Prüfen was auf dem Server gerade los ist:

Liste aller laufenden Prozesse azeigen

ps aux
ps aux | grep nginx

Aktive Verbindungen und Sockets anzeigen

ss -ant
#nur hörende Verbindungen
ss -lt
# udp und tcp
ss -anut

Logs anzeigen allgemein und ausgaben zu Cryptpad prüfen

journalctl -f 
journalctl -u cryptpad -f

Aktive Verbindungen prüfen

# Zugriffsprotokolldatei von NGINX
sudo tail -f /var/log/nginx/access.log

# Welche IPs sind aktiv?
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head

# Zeigt alle Prozesse, die gerade eine aktive Verbindung zum TCP-Port 3000 haben 
sudo lsof -i :3000 -i :3001 | grep ESTABLISHED
# alternativ
sudo lsof -i | egrep ':3000|:3001' | grep ESTABLISHED

# gibt es aktive Verbindungen auf den Ports 3000 und 3001
ss -antp | egrep ':3000|:3001' | grep ESTABLISHED

Per ssh mit der Konsole des Servers bei Hetzner verbinden:

ssh  -4 -i ./.ssh/ssh-rsa-private-4096-key root@cp.uugrn.org

Sicherung anlegen (als root im Ordner /root) und Aktualisierung Debian:

# Prüfung und Installation von Debian Updates
apt update
apt upgrade
# Gegebenenfalls Neustart des Servers einplanen.

#Server stoppen
sudo systemctl stop cryptpad

#Sichern
tar czf ~/cryptpad-backup-$(date +%F).tar.gz /home/cryptpad/cryptpad

#Server wieder starten oder gleich das Update nachziehen
sudo systemctl start cryptpad

---

Vor Update den CP-Dienst als root stoppen

sudo systemctl stop cryptpad


Als Benutzer cryptpad, im Ordner /home/cryptpad/cryptpad arbeiten:

su cryptpad

cd /home/cryptpad/cryptpad

Installationshinweise bei den Releasenotes ansehen!

# Beispiel Autumn release (2025.9.0)
git fetch --depth 1 origin tag 2025.9.0
git checkout 2025.9.0
npm ci
npm run install:components
#./install-onlyoffice.sh

#Prüfen, gibt es Unterschiede an der Standardkonfigurationsdatei, die in die eigene Konfiguration übernommen werden müssen?
diff config/config.example.js config/config.js

als Benutzer root

# Server starten
sudo systemctl start cryptpad

# Nach Änderungen den Dienst neustarten
sudo systemctl restart cryptpad

# Status des Dienstes ansehen
sudo systemctl status cryptpad

Diagnoseseite prüfen: https://cp.uugrn.org/checkup/

CryptPad lässt sich auch mittels npm starten. Vorteil: es spuckt Informationen und ggf. Fehlermeldungen aus:

npm = Node Package Manager

# Cryptpad Dienst starten und Logausgaben prüfen
cd /home/cryptpad/cryptpad
npm start

Admin Log[Bearbeiten]

Install Log[Bearbeiten]

OS: Debian (13) Hetzner cx22, 2 CPU, 40 GB SSD, 4 GB Ram

Installierte Software

  • cryptpad: v2026.5.0
  • nginx (als reverse proxy)

Anleitung:

Diagnose: https://cp.uugrn.org/checkup/

Vorbereitungen[Bearbeiten]
2 Domains werden benötigt, die beide auf den Server zeigen
cp.uugrn.org sandboxcp.uugrn.org (für erweiterten Schutz gegen CSS)

apt install -y curl

curl -fsSL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh

bash nodesource_setup.sh

apt install -y nodejs
Benutzer anlegen[Bearbeiten]
useradd -m cryptpad -s /bin/bash

CryptPad läuft unter dem Benutzer „cryptpad“.

Das Home-Verzeichnis ist /home/cryptpad/cryptpad.

CryptPad installieren[Bearbeiten]
su - cryptpad

git clone https://github.com/cryptpad/cryptpad.git cryptpad

cd cryptpad

npm ci

npm run install:components

./install-onlyoffice.sh

# Beispielkonfiguration an den richtigen Ort kopieren
cp config/config.example.js config/config.js

# Konfiguration anpassen
nano config/config.js

# httpUnsafeOrigin: 'https://cp.uugrn.org',
# httpSafeOrigin: 'https://sandboxcp.uugrn.org',

# cryptpad als Service eintragen
# als Root
wget https://raw.githubusercontent.com/cryptpad/cryptpad/main/docs/cryptpad.service -O /etc/systemd/system/cryptpad.service

# Dienst aktivieren
systemctl enable --now cryptpad

systemctl start cryptpad # Starten des Dienstes
systemctl status cryptpad # Info über den Dienst
systemctl stop cryptpad # Stoppen des Dienstes
systemctl restart cryptpad # Neustarten des Dienstes
ss -ant # hier kann man schauen, ob am Port 3000 und 3001 Verbindungen akzeptiert werden
NGINX installieren[Bearbeiten]
apt update
apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
  | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# Signaturschlüssel installieren

mkdir -p /root/.gnupg
chmod 700 /root/.gnupg
gpg --dry-run --quiet --no-keyring --import --import-options import-show \
  /usr/share/keyrings/nginx-archive-keyring.gpg
# Fingerprint vergleichen nginx 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/debian trixie nginx" \
  | sudo tee /etc/apt/sources.list.d/nginx.list
# Repo-Eintrag für stable

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
  | sudo tee /etc/apt/preferences.d/99nginx
# Pinning setzen: nginx Pakete bevorzugen

cat /etc/apt/sources.list.d/nginx.list
# deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/debian trixie nginx

cat /etc/apt/preferences.d/99nginx
# Package: *
# Pin: origin nginx.org
# Pin: release o=nginx
# Pin-Priority: 900

apt update
apt policy nginx
# Ausgabe nginx:
# Installed: ...
# Candidate: 1.xx.x-1~trixie
# Version table:
#    1.xx.x-1~trixie 900
#       900 https://nginx.org/packages/debian trixie/nginx amd64 Packages

apt update
apt install nginx

mkdir -p /etc/nginx
mkdir -p /var/log/nginx
chown root:adm /var/log/nginx
chmod 755 /var/log/nginx

openssl dhparam -out /etc/nginx/dhparam.pem 4096
# Generierung dauert eine ganze Weile. Abwarten, bis beendet.

dpkg -l | grep -E 'nginx|libnginx'
# erwartet ii  nginx und ii  python3-certbot-nginx

systemctl enable --now nginx
# Dienst aktivieren, sonst könnte es beim Neustart klemmen

systemctl status nginx --no-pager
# Dienst aktiv und ohne Meldungen?

systemctl restart nginx
NGINX aktualisieren[Bearbeiten]
 cp -a /etc/nginx /etc/nginx.backup.$(date +%F-%H%M)
apt update
apt upgrade
nginx -t
systemctl reload nginx
nginx -v
journalctl -u nginx -b --no-pager
certbot certificates
certbot renew --dry-run
Let's Encrypt installieren und Zertifikat generieren[Bearbeiten]
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx certonly -d cp.uugrn.org -d sandboxcp.uugrn.org
sudo systemctl enable certbot.timer

Certificate is saved at: /etc/letsencrypt/live/cp.uugrn.org/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/cp.uugrn.org/privkey.pem


NGINX konfigurieren[Bearbeiten]
wget https://raw.githubusercontent.com/cryptpad/cryptpad/main/docs/example.nginx.conf -O /etc/nginx/conf.d/cryptpad.conf

Anschließend die Datei bearbeiten.
Domains eintragen und die Lets-Encrypt-Pfade.

Es gibt auch eine erweiterte Beispieldatei: https://github.com/cryptpad/cryptpad/blob/main/docs/example-advanced.nginx.conf


Anpassungen als CryptPad Benutzer[Bearbeiten]
su - cryptpad

cd ~/cryptpad
mkdir customize
cp customize.dist/application_config.js customize/

# Zeilen aus der Datei www/common/application_config_internal.js kopieren und zutreffende in die application_config.js einfügen

nano customize/application_config.js 

Ohne Anmeldung dürfen Pads und Dokumente erstellt werden. Sie werden nach 90 Tagen automatisch gelöscht. Es kann auf geteilte Dokumente zugegriffen werden.

AppConfig.disableAnonymousStore = true;
AppConfig.disableAnonymousPadCreation = false;

Nach einem Neustart von cryptpad und nginx sollte sich die Seite aufrufen lassen: https://cp.uugrn.org/

Crontab als CryptPad Benutzer einrichten[Bearbeiten]

Aufrufe zu node scripts/evict-inactive.js

und node scripts/evict-archived.js

Räumen alte Dokumente weg, die Benutzer ohne Konto angelegt haben und schon älter als 90 Tage sind und archivierte Dokumente.

su - cryptpad

cd ~/cryptpad

crontab -e

zwei Jobs ergänzen:

30 1 1,15 * * (cd cryptpad; node scripts/evict-inactive.js > /dev/null)

30 1 7,22 * * (cd cryptpad; node scripts/evict-archived.js > /dev/null)


Nun ein Benutzerkonto einrichten und in der Konfiguration als Administrator eintragen.

Benutzerkonto Administrator-Rechte geben[Bearbeiten]
1. öffentlichen Schlüssel kopieren. benutzereinstellungen.
2. Datei bearbeiten /home/cryptpad/cryptpad/config/config.js.
3. Diese stelle finden und wie im Beispiel Benutzer hinzufügen:
    adminKeys: [
        "[cryptpad-user1@my.awesome.website/YZgXQxKR0Rcb6r6CmxHPdAGLVludrAF2lEnkbx1vVOo=]",
    ],
3. CryptPad Server neu starten.

Registrierung deaktivieren

https://cryptpad.mydomain.com/admin/#users

Mehr https://docs.cryptpad.org/en/admin_guide/customization.html#restricting-guest-access