Skip to main content
Hyper 8 Spacefun Videos

Cryptpad - sicher zusammen an Dokumenten arbeiten

Hallo liebe Thermianer:innen. In diesem Video  möchte ich euch die Lösung Cryptpad genauer   00:00
vorstellen. Bei Cryptpad handelt es sich um  eine Open-Source-Cloud-Lösung, mit der ihr   00:06
kollaborativ, also gemeinsam, Dokumente bearbeiten  könnt. Die könnt ihr nutzen für euch privat und   00:13
natürlich mit euren Freunden zusammen oder einem  Verein, aber auch in einer kleinen Firma. Cryptpad   00:19
ist im Gegensatz zu den anderen Lösungen, die ich  euch bereits vorgestellt habe, etwas komplizierter   00:26
zu installieren. Ich möchte euch aber hier  Schritt für Schritt durch die Installation   00:31
durchführen. Wir benötigen als Voraussetzung  einmal zwei Domains. Da Cryptpad besonders auf   00:36
Sicherheit ausgelegt ist, arbeitet es mit einer  zweiten Domain, die zusätzlich vor sogenannten   00:44
Cross-Site-Scripting-Attacken schützt. Diese zwei  Domains habe ich aber jetzt erst einmal nicht,   00:51
weil ich möchte das ganze ja bei mir zu Hause  im Selfhosting betreiben und dafür habe ich hier   00:57
auf meinem Router nur eine Domain eingerichtet,  und zwar mit DynDNS. Die habe ich hier aktiviert.   01:02
Die läuft über freedens.afraid.org. Ihr könntet  jetzt auf der Domain, auf freedens.afraid.org,   01:08
einfach die Wildcard-Domain aktivieren  und dann könntet ihr einfach 01:15
irgendwas.tuxwiz.mooo.com einrichten und  auch nutzen. Ich möchte das aber nicht.   01:20
Ich habe nämlich hier bei meinem  Hoster auch noch meine richtige   01:26
Domain spacefun.ch und ich möchte die gerne  nutzen. Ich zeige euch jetzt einen Trick,   01:30
mit dem ihr ganz einfach auch für das Selfhosting  eine offizielle Domain nutzen könnt und nicht nur   01:35
auf diese DynDNS-Adresse zugreifen müsst.  Ich bin hier dazu im Verwaltungspanel für   01:42
die DNS-Konfiguration von meiner Domain  bei meinem Hoster und kann hier einen   01:49
sogenannten CNAME hinzufügen. Ein CNAME  ist so etwas wie ein Alias und dieses   01:55
Alias zeigt dann auf meine DynDNS-Domain.  Ich habe jetzt z.B. hier ein Alias erstellt 02:00
cryptpad.spacefun.ch. Das ist eine TTL  (Time to live) und hier wird der Name des   02:07
Ziels mit einem Punkt am Ende angegeben.  Also 'cryptpad.spacefun.ch' zeigt jetzt   02:15
auf 'tuxwiz.mooo.com.' und das Gleiche  könnte ich jetzt für die zweite Domain   02:21
machen. Das habe ich hier schon mal  vorbereitet. Da gibt es eine zweite 02:26
cryptpad-sandbox.spacefun.ch und die zeigt  ebenfalls hier auf tuxwis.mooo.com und so   02:29
kann ich dann einfach über diese offiziellen  Namen auf meine Selfhosting-Lösung zugreifen.   02:38
Das ist wirklich eine ganz tolle Sache, das habe  ich jetzt hier im Vorfeld schon mal vorbereitet.   02:43
Zusätzlich müsst ihr natürlich auch auf eurem  Server das Port-Forwarding aktivieren. Also ich   02:48
möchte ja gerne, dass mein Server aus dem Internet  erreichbar ist und dazu muss ich die IP-Adresse   02:53
kennen. Ich installiere meine Lösung hier wie  üblich auf meiner eigenen Linux-Distribution,   02:59
die heißt TuxWiz. TuxWiz Mini eignet sich super  für die Installation von einem Server. Die ist   03:04
ganz schlank und mit wenig Software ausgestattet,  hat aber trotzdem eine grafische Oberfläche. Ich   03:09
kann hier also im Terminal erst einmal die  IP-Adresse herausfinden 'ip a s' und hier   03:15
sehe ich schon meine IP-Adresse in meinem LAN.  Das muss ich jetzt in meinem Router natürlich   03:20
noch entsprechend forwarden. Ich habe das  hier in dem Fall schon mal vorbereitet.   03:26
Hier in den Bereich NAT kann ich die Protokolle  HTTP, das wäre Port 80, und HTTPS forwarden, auf diese   03:30
Zieladresse. Das sieht bei euch vielleicht ein bisschen anders aus, aber im Grunde genommen   03:38
ist das überall gleich, auch auf einer Fritzbox.  So, das nur zur Vorbereitung. Jetzt möchte ich   03:42
aber eigentlich die Software installieren  und die heißt Cryptpad. Da schauen wir mal, 03:48
https://cryptpad.org, wie das Ganze denn hier so  aussieht. Hier finde ich auch die Dokumentation,   03:52
die ist sehr ausführlich. Ich möchte jetzt erst  einmal die Administrationsanleitung sehen, denn   04:00
da wird mir genau erklärt, wie die ganze Software  installieren kann. Hier wird als allererstes schon   04:05
mal angezeigt, dass ich zwei Domains brauche. Ich  kann das ganze hier auch auf Deutsch umstellen.   04:12
Manche Sachen sind auf Deutsch, hier wird es immer  noch in Englisch angezeigt. Da müsst ihr schauen,   04:17
was bereits übersetzt ist und was noch  nicht. Also ich habe zwei Domains. Das   04:22
sind die Hardwarevoraussetzungen. Ich brauche  also einen Server. Ich habe jetzt hier natürlich   04:26
ein Debian-System. TuxWiz basiert auf Debian. 2  CPUs und 20 GB Storage. Also, auch wenn ihr das   04:30
in einer virtuellen Maschine installiert, solltet  ihr die entsprechend ausrüsten. Das habe ich jetzt also.  04:36
Ich brauche dann als weiteres git, Node.js,  npm. Also sie empfehlen das ganze von NodeSource   04:41
zu installieren und das machen wir jetzt auch als  allererstes Mal. Node.js ist zwar auch in Debian   04:49
enthalten, wir möchten aber hier die empfohlene  Lösung über das Repository des Projektes wählen.   04:55
Dazu gehe ich hier auf 'nodesource' und kann dann  hier die entsprechende Anleitung dann befolgen.   05:02
Da suche ich mal nach LTS. Da gibt es das für  Ubuntu und dann gibt es das hier für Debian.   05:07
Das kann ich dann entsprechend so aufsetzen. Ich  habe das ganze wie üblich hier in so einem Cheat   05:15
Sheet vorbereitet. Das teile ich natürlich auch  gerne mit euch in unserer Telegram-Community. Also   05:20
kommt in unsere Telegram Community. Dazu könnt  ihr einfach hier auf https://spacefun.ch dann auf   05:25
Telegram klicken und schon seid ihr drin. Und dann  könnt ihr auch dieses Cheat Sheet sehen. Also hier   05:30
ist diese Installationsanleitung. Da habe ich mir  die wichtigsten Punkte schon mal rauskopiert. Ich   05:35
mache das ganze jetzt mal als Root. Also ich mache  'sudo bash', gebe mein Passwort ein und kann die   05:39
Befehle dann als Root ausführen. Hier installiere  ich als allererstes Mal curl. curl wird benötigt,   05:46
um das Installationsscript herunterzuladen.  Das kann ich dann hier herunterladen   05:52
'-o' sagt mir, ich möchte es unter einem  bestimmten Namen speichern. Ich gehe mit   05:57
cd in mein Home-Verzeichnis des Users 'root'.  'pwd' '/root', da bin ich schon drin. Also mit   06:02
curl lade ich das runter und habe jetzt hier in  meinem Home-Verzeichnis des Users Root dieses   06:08
Setupscript. Das führe ich jetzt aus mit 'bash'  und dem Scriptnamen. Ich könnte es auch ausführbar   06:14
machen mit 'chmod +x' und './' und den Scriptnamen  angeben. Das hat er jetzt gemacht und er sagt mir   06:21
jetzt auch genau schon, was ich da tun sollte.  Nämlich hier das 'nodejs' installieren. Das paste   06:28
ich jetzt hier auch mal rein. Hier wird jetzt  'nodejs' im Hintergrund bereits eingerichtet.   06:34
Das wird benötigt, für die weitere Installation.  Wir möchten jetzt die Software natürlich nicht   06:40
als Benutzer Root laufen lassen, sondern als ein  dedizierter Benutzeraccount. Mein Benutzer hier,   06:46
den ich hier verwenden möchte, den nenne ich  auch gleich mal 'cryptpad' und so richte ich   06:52
den dann entsprechend ein. Hier kann ich mit  dem Kommando 'useradd -m cryptpad -s /bin/bash'   06:57
den Benutzer anlegen und habe dann schon den  entsprechenden Benutzeraccount aktiv. Da rein   07:06
kann ich wechseln mit 'su - cryptpad' und bin dann  schon als Benutzer cryptpad unterwegs und kann   07:13
die weiteren Schritte hier ausführen. Hier clone  ich dann als allererstes mal das Repository des   07:20
Projektes. Das wird in der Installationsanleitung  auch hier im Detail beschrieben, wie das ganze   07:26
funktioniert. Das mache ich jetzt hier mal in  einen Ordner 'cryptpad'. Also das ist 'git clone',   07:31
damit clone ich das Repository. Das ist das  Repository '.git' und das ist das Verzeichnis,   07:38
in das ich das ganze dann gerne clonen möchte.  Das passiert jetzt hier alles automatisch im   07:44
Hintergrund. Nachher kann ich die Installation  dann in diesem Verzeichnis als der Benutzer   07:50
cryptpad ausführen. Ich kann jetzt hier parallel  noch mal ein weiteres Terminal aufmachen und wir   07:55
hatten ja eben den Befehl useradd genutzt und ich  möchte euch jetzt noch zeigen, was der Parameter   08:02
'-m' bedeutet. Also dazu kann ich mal 'man  useradd' aufrufen und kann hier in der Manpage   08:09
auch suchen mit '/'. Und dann z.B. '-m' und Enter  und dann kann ich jetzt hier mit 'n' weitersuchen,   08:16
für next 'n' steht da für next, und hier  sehe ich auch schon der Parameter '-m' oder   08:24
'--create-home'. Das sorgt dafür, dass auch für  den Benutzer ein Home-Verzeichnis erstellt wird.   08:30
Denn normalerweise wird bei 'useradd' im Gegensatz  zu Befehl 'adduser' kein Home-Verzeichnis   08:34
angelegt. Das hat er hier also gemacht. Ich habe  jetzt hier auch ein Home-Verzeichnis. Das kann ich   08:41
mir auch anschauen im Ordner '/home'. Hier cloned  er jetzt hier im Hintergrund die ganzen Objekte,   08:46
also er checkt die ganzen Objekte des Projektes  aus. Das ist natürlich sehr umfangreich und das   08:52
kann natürlich zum Teil ein wenig dauern. Im  nächsten Schritt möchten wir dann, wie hier   08:58
in der Anleitung beschrieben, die Dependencies  installieren und die jeweiligen Komponenten.   09:04
Dazu gehe ich dann in das Verzeichnis. Das kann  ich hier schon mal aufrufen. Ich warte jetzt hier   09:13
noch einen Moment. So, 'cd cryptpad' und kann  jetzt hier schon den Befehl 'npm ci' ausführen.   09:19
Das macht er jetzt hier bereits im Hintergrund  und ich kann dann schon die einzelnen Komponenten,   09:29
die benötigt werden, installieren.  Weil die werden natürlich nicht in   09:37
dem Git-Repository mit ausgeliefert, sondern  die werden über den Paketmanager von Node.js 09:42
nachinstalliert. Wir brauchen dann nachher  neben der eigentlichen Software auch noch   09:49
einen Proxyserver davor. Denn die Software  selbst läuft auf einem dedizierten Port und   09:56
wir möchten sie ja nachher über HTTP und HTTPS  erreichbar machen. Ich führe jetzt den Befehl 'npm   10:01
run install:components' aus, um die Komponenten,  die benötigt werden, tatsächlich auch   10:08
nachzuinstallieren. Das hat er hier jetzt sogar  schon gemacht. Er ist also damit schon sozusagen   10:14
durch. Diese Schritte habe ich jetzt hier bereits  alle befolgt und ich könnte jetzt noch optional   10:19
ONLYOFFICE mit installieren. 'ONLYOFFICE' ist eine  Zusatzkomponente, die ist so halb-proprietär und   10:28
die bietet dir an, z.B. auch Tabellen gemeinsam zu  bearbeiten, falls du das möchtest. Da gibt es hier   10:35
ein Script 'install-onlyoffice.sh'. Das könntest  du hier einfach ausführen. Ich lasse das jetzt   10:40
in dem Fall erst einmal weg. Jetzt möchten wir  natürlich noch eine Konfigurationsdatei erstellen   10:45
und dazu kann ich die Beispielkonfiguration hier  in die 'config.js' kopieren. Dazu führe ich 'cp   10:51
config/config.example.js config/config.js'  aus. Die kann ich dann mit Nano bearbeiten. 10:59
'nano config/config.js'. Hier gibt es jetzt  einige wichtige Punkte, die wir beachten   11:06
müssen. Das ist die eigentliche Konfiguration der  Software, und zwar als erstes Mal müssen wir die   11:13
URL angeben. Ich habe euch ja gesagt, wir haben  zwei Domains. Eine 'safe' und eine 'unsafe'. Die   11:19
'unsafe' ist die normale URL, über die  die User nachher zugreifen. Ich möchte   11:24
das ganze über HTTPS machen. Ich gebe also  'https' an und dann gebe ich hier den Domainnamen,   11:29
den ersten Domainnamen, den ich eingerichtet  habe, an. Also, es wäre in meinem Fall 11:34
cryptpad.spacefun.ch. Das ist jetzt hier  also fertig. Dann gibt es noch diese zweite   11:39
URL. Die ist jetzt hier noch auskommentiert die  'httpSafeOrigin'. Die muss ich hier entfernen,   11:48
die zwei '//' und dann kann ich hier auch  entsprechend schauen, dass ich da die richtige   11:54
URL eintrage. Und das wäre jetzt hier in meinem  Fall die zweite Domain, die ich angelegt habe. 12:00
cryptpad-sandbox.spacefun.ch. Diese URLs können  bei dir natürlich variieren, das kann deine   12:07
DynDNS-Domain sein mit einer Subdomain. Das musst  du für dich selbst entscheiden, ob du da eine   12:18
offizielle Domain verwenden möchtest oder nicht.  Also diese zwei Werte haben wir hier schon mal   12:23
ausgefüllt. Das ist also schon mal sehr gut. Das  kann ich jetzt speichern 'Ctrl' oder 'Strg+O',   12:28
Enter, 'Ctrl+X' und bin schon raus. Jetzt führe  ich einige Schritte wieder als Root-Benutzer aus.   12:34
Ich gebe also 'exit' ein und bin dann wieder  root, weil ich ja vorher root war und habe nur   12:40
in den Kontext des cryptpad Users gewechselt.  Hier möchte ich dann als nächstes Mal noch   12:44
einen systemd-Service zum Starten der Applikation  installieren. Dazu kopiere ich hier diese Zeile   12:49
und mit der Zeile sollte dann ein entsprechendes  systemd-File hier erstellt werden. Und zwar sagt   12:56
er das wieder hier. Das Projekt stellt  eine Service-Definition zur Verfügung   13:03
und ich möchte das in das Zielverzeichnis  '/etc/systemd/system/cryptpad.service'   13:08
reinkopieren. Und da sehe ich auch schon meine  systemd-Definition. Falls Ihr hier jetzt einen   13:14
anderen User verwendet habt, oder ein anderes  Home-Verzeichnis, dann müsstet ihr das natürlich   13:19
hier entsprechend anpassen. Denn das ist alles  auf dem Benutzer cryptpad ausgelegt. Das haben   13:23
wir hier gemacht und jetzt könnten wir diesen  systemd-Service auch schon aktivieren. Das kann   13:29
ich hier als root mit 'systemctl enable --now  cryptpad', das startet den auch gleich Cryptpad,   13:34
machen. Jetzt kann ich dann als Nächstes noch  mal schauen, ob du das wirklich gemacht hat 13:41
'systemctl status cryptpad'. Das sieht doch ganz  gut aus. Er sagt hier aktiv. Ich kann das ganze   13:46
auch mit 'netstat -antp' noch prüfen und sehe  hier, da lauscht was auf Port 3000 und 3003. Das   13:58
hat doch schon mal super geklappt. Jetzt möchten  wir als Nächstes den Proxyserver installieren. Da   14:06
wird's jetzt noch mal ein bisschen kompliziert.  Der Proxyserver hängt vor der Applikation,   14:11
schützt die auch noch mal zusätzlich und dient  dem Bereitstellen der Webseite im Internet.   14:15
Also damit kannst du die nachher über HTTP und  HTTPS erreichen. Dazu installiere ich den nginx   14:22
Proxyserver, das ist eigentlich ein Webserver, der  auch als Proxy genutzt werden kann. Und der wird   14:29
hier im Hintergrund dann schon installiert. Dann  mache ich jetzt hier schon mal ein Verzeichnis und   14:36
möchte dann jetzt hier noch die OpenSSL dhparams  für zusätzliche Sicherheit generieren. Das dauert   14:40
ein bisschen, deswegen mache ich das jetzt hier  im Vorfeld schon im Hintergrund. 'openssl dhparam   14:45
-out /etc/nginx/dhparam.pem 4096' und das macht  er jetzt hier fleissig im Hintergrund. Ich kann jetzt   14:53
also in einem weiteren Terminal-Tab hier schon  weiterarbeiten. Ich mache wieder eine Root-Konsole   15:00
auf und kann dann entsprechend weiterarbeiten.  Ich möchte jetzt hier natürlich, dass das   15:05
ganze auch mit Let's Encrypt verschlüsselt  wird. Das mache ich wie üblich mit certbot,   15:11
das ist eine ganz super Lösung. Die macht mir  das alles automatisch. Die muss ich natürlich   15:15
erst installieren. Dazu kann ich 'sudo apt  install certbot' und die nginx-Integration   15:19
mit 'python3-certbot-nginx' installieren.  Das erfolgt jetzt hier im Hintergrund und   15:25
ich kann dann schon meine SSL-Zertifikate für  meine Domain beziehen. Und zwar mache ich das   15:32
wie folgt. Hier muss ich jetzt eigentlich kein  sudo angeben, weil ich ja jetzt als Root arbeite   15:38
'certbot --nginx certonly -d' und dann kann ich  zwei Domains angeben. Ich möchte, dass beide   15:45
Domains in diesem Zertifikat enthalten sind, also  cryptpad.mydomain.com, das müsst ihr natürlich   15:49
bei euch entsprechend anpassen. Bei mir heißt es  jetzt spacefun ch. Und das ist die Sandbox Domain,   15:55
die auch wieder spacefun.ch und dann schauen wir  doch mal, ob er es jetzt schafft, hier schon ein   16:01
Zertifikat für mich zu generieren. Jetzt muss  ich hier noch eine E-Mail-Adresse hinterlegen 16:08
astronaut AT spacefun.ch. Dann werde  ich jetzt noch gefragt, ob ich den   16:13
Nutzungsbedingungen zustimme. Da sage ich jetzt  ja. Ob ich meine E-Mail-Adresse teilen will.   16:21
Das möchte ich jetzt nicht machen  und jetzt versucht er hier im   16:27
Hintergrund das Zertifikat auch schon  zu beziehen. cryptpad.spacefun.ch und 16:31
cryptpad-sandbox.spacefun.ch und hier sehe  ich, hier hatte jetzt meine Zertifikate auch   16:37
gespeichert. Das eine ist das Zertifikat und  das andere ist der Key. Das kann ich mir hier   16:43
auch noch mal weg kopieren. Also hier habe  ich das für euch auch schon mal vorbereitet,   16:48
mit einem allgemeinen Namen. Das hier,  das entspricht dann eurer Domain,   16:54
ist ja ganz klar. Jetzt stellt das Projekt  auch eine nginx-Konfiguration zur Verfügung.   16:59
Also das ist natürlich eine super Sache,  die möchten wir auch als Beispiel nehmen.   17:04
Und die kopiere ich mir jetzt hier dann  entsprechend auch weg. Dazu markiere ich   17:08
mir jetzt die Zeile und kann jetzt hier als  Root diese Datei 'example.nginx.conf' nach 17:13
'/etc/nginx/conf.d/cryptpad.conf' herunterladen.  Diese Konfigurationsdatei muss ich jetzt natürlich   17:20
bearbeiten. Dazu schreibe ich euch hier auch noch  ein 'nano' davor, dass ihr das dann wisst und da   17:27
noch einige Änderungen durchführen, weil da sind  ja natürlich noch einige Anpassungen notwendig.   17:35
Das haben wir jetzt hier nicht das 'include  letsencrypt-webroot;'. Da sind zusätzliche   17:40
Sicherheitseinstellungen drin, die, wenn man  z.B. acme.sh verwendet, integriert werden.   17:45
Certbot arbeitet da ein bisschen anders, was  hier jetzt wichtig ist, ist, dass wir hier   17:50
den Servername entsprechend anpassen, also da  müssen auch wieder beide Domains mit rein also 17:55
cryptpad.spacefun.ch 18:03
cryptpad-sandbox.spacefun.ch.   18:11
Dann sind hier die Zertifikate natürlich ganz  wichtig. Da haben wir einmal das Zertifikat und   18:19
den Key. Die habe ich ja hier vorher erstellt.  Bei mir ist das jetzt hier das Zertifikat, 18:23
das kopiere ich mal hier rein. Dazu  lösche ich diese Zeile. Wichtig ist,   18:32
dass beim nginx diese Konfigurationszeilen immer  mit dem Semikolon abgeschlossen werden, sonst kann   18:37
er die nicht richtig interpretieren. Und dann habe  ich hier noch meinen Key. Den kopiere ich ja auch 18:43
mal. Also, das ist noch das dhparams-File. Das  wird im Hintergrund hier immer noch generiert.   18:48
Das dauert, wie gesagt, ganz schön lange. Da  müsst ihr vielleicht bisschen Geduld haben,   18:59
bis das dann tatsächlich auch durch ist. Jetzt  schauen wir mal, ob wir hier noch andere Sachen   19:03
einstellen müssen. Nein, hier ist eigentlich die  Konfiguration dann so weit auch schon fertig. Wir   19:09
möchten dann nachher natürlich noch einige  Einstellungen vornehmen an der Installation,   19:16
und zwar schauen wir uns das hier auch noch mal  an. Das haben wir gemacht. Wir haben jetzt systemd   19:24
installiert. Das Ganze gibt es auch als Docker,  die sind aber noch nicht ganz so weit. Das habe   19:29
ich mir zunächst angeguckt und es wird auch noch  nicht empfohlen. Ich kann euch das auch nicht   19:32
empfehlen. In dem Fall installiert es wirklich  lieber selbst. Hier sind die Domänen. Da sind wir   19:36
jetzt. Wir sind dabei, den nginx zu konfigurieren.  Da ist auch noch mal die dhparams-Konfiguration   19:42
und dann können wir hier, also das ist die  Konfiguration, das haben wir auch schon gemacht,   19:48
und dann können wir nachher hier auch noch einen  Administrator konfigurieren in der Config. Das ist   19:53
auch noch ganz wichtig. Das können wir dann  machen, wenn der erste Benutzeraccount erstellt   19:59
worden ist. Wir möchten das ganze nachher  dann auch noch ein bisschen absichern,   20:03
denn ich möchte, dass nur angemeldete Benutzer  diese Lösung nutzen können. Denn sonst ist das   20:06
Ganze offen für jedermann und jede Frau. Also  da kann dann jeder wirklich mit arbeiten und   20:13
ich möchte das ganze wirklich nur für meine  Bekannten, meine Freunde und die Familie   20:18
öffnen, weil die sollen damit arbeiten  können. Hier seht ihr dann auch noch   20:23
die Proxy-Konfiguration in nginx. Übrigens, da  leitet ihr dann die Requests auf den localhost,   20:27
Port 3000 und Port 3003, die wir vorhin mit  'netstat' gesehen haben, weiter. Ich sage jetzt   20:32
hier schon mal 'Ctrl+O' und 'Ctrl+X'. Während er  jetzt hier im Hintergrund quasi noch zugange ist,   20:38
mit der dhparams-Konfiguration, kann ich  hier schon mal beginnen, die Konfiguration   20:47
entsprechend nachher anzupassen. Das ist aber  wichtig, weil wir müssen uns jetzt gleich erst   20:52
einmal anmelden, damit wir dann die entsprechenden  Rechte auch vergeben können. Das ganze erfolgt   20:57
dann wieder als cryptpad Benutzer. Alle Änderungen  an der cryptpad Konfiguration mache ich immer als   21:04
cryptpad User also 'su - cryptpad'. Dann bin  ich wieder der cryptpad Benutzer und das ganze   21:09
ist ja hier installiert in dem Verzeichnis  cryptpad. Also, das ist eigentlich soweit   21:16
alles fertig. Da kann ich jetzt hier dann schon  mal einen Ordner vorbereiten 'mkdir customize'   21:21
und kann dann diese Beispielkonfigurationen  dort reinkopieren. Ich kopiere als erstes Mal 21:30
'cp   21:35
customize.dist/application_config.js customize/',  'cp www/common/application_config_internal.js   21:36
customize/application_config.js', dann habe  ich schon mal so eine Konfiguration hier,   21:42
mit der ich nachher arbeiten kann und dann kann  ich hier diese Parameter hier aus dieser Datei,   21:47
die aktuell aktiv ist. Eigentlich  kann ich die auch einfach übernehmen,   21:56
oder ich kann jetzt statt dieser Konfiguration,  direkt diese hier, die interne Konfiguration,   21:59
reinschreiben. Ich glaube, ich mache das  lieber. Also ich konfiguriere jetzt das   22:04
dann direkt in dieser Konfigurationsdatei. Und in  dieser Konfigurationsdatei werden dann nachher   22:07
die einzelnen Einstellungen von der App selbst  vorgenommen. Die kann ich dann auch wieder mit   22:14
'nano' öffnen und da können wir dann natürlich  noch einzelne Konfiguration hier vornehmen,   22:19
wie z.B. den Zugriff einzuschränken,  dass wirklich nur registrierte   22:24
Benutzer darauf zugreifen können. Hier könnt  ihr z.B. 'AppConfig.disableAnonymousStore'   22:28
und 'AppConfig.disableAnonymousPadCreation' schon  mal aktivieren. Das heißt, dass anonyme Benutzer   22:38
einfach nicht in der Lage sind, direkt den  Speicherplatz zu nutzen oder auch sogenannte Pads   22:44
zu generieren. Das kann ich hier in der Config  schon mal einstellen. Da suche ich mal hier nach Anonymous. 22:50
'AnonymousStore', hier. Da hätten  wir jetzt hier 'AppConfig.disableAnonymousStore'   23:10
. Das ist halt der Storage. Das Ganze hat auch  ein Drive, so ähnlich wie die Nextcoud. Da   23:13
kann ich dann meine Daten drin abspeichern.  Weil ansonsten werden meine Cryptpads nach   23:19
einer gewissen Zeit automatisch wieder gelöscht.  Das ist auch sinnvoll, weil man ja nicht möchte,   23:24
dass diese Daten dauerhaft irgendwo im Internet  erreichbar sein sollen. Also sage ich jetzt hier   23:29
'AppConfig.disableAnonymousStore' sage ich jetzt  hier 'true'. Wichtig ist, das ist eigentlich nur   23:34
ein Client-Side-Setting. Da müsst ihr euch halt  bewusst sein, was das bedeutet. Und hier sage ich   23:41
auch noch 'AppConfig.disableAnonymousPadCreation'  auch noch mal 'true'. Das ist jetzt schon mal eine   23:47
ganz wichtige Einstellung. Und damit kann ich das  Ganze auch schon mal entsprechend absichern. Wenn   23:54
ihr das überhaupt nicht möchtet, wenn ihr möchtet,  dass eigentlich gar keiner wirklich diese Software   24:00
nutzen kann, der nicht ein Account hat, da müsst  ihr aber für jeden Benutzer Account erstellen,   24:04
dann könnt ihr auch diese Einstellung hier  vornehmen. Das habe ich euch auch noch mal   24:09
hier herausgesucht 'AppConfig.registeredOnlyTypes  = AppConfig.availablePadTypes;'. Die ist hier   24:13
relativ weit am Anfang zu finden  'availablePadTypes'. Da da müsstet   24:18
ihr das hier auskommentieren, auch wieder mit  den zwei '//' und dann könntet ihr das hier   24:26
reinpasten 'AppConfig.registeredOnlyTypes =  AppConfig.availablePadTypes;' und dann können   24:31
wirklich nur noch registrierte Benutzer mit dieser  App arbeiten. Dabei müsst ihr aber bedenken,   24:35
dass das auch bedeutet, dass dann auch Dateien  nur noch mit Leuten geteilt werden können,   24:40
also ihr könnt ja da Links sharen und dann  gemeinsam an Dateien arbeiten, die auch ein   24:47
Konto auf eurer Cryptpad-Installation haben.  Das ist noch ganz wichtig und das ist manchmal   24:51
ein bisschen aufwendig, weil da müsst ihr für  jeden User einen eigenen Account erstellen.   24:56
Damit macht ihr das Ganze aber natürlich noch  sicherer. Das ist wirklich das sicherste,   25:01
was ihr dort einstellen könnt. Ich sage jetzt  hier aber mal 'Ctrl+O' ja, gespeicht 'Ctrl+X',   25:04
beenden. Wenn ihr da noch mehr zu wissen wollt,  dann könnt ihr wirklich hier diesen Punkt auch   25:11
noch mal anschauen, weil hier wird dann im Detail  noch mal erklärt, wie ihr diese Einstellung halt   25:17
vornehmen könnt. Wir wollen nachher auch natürlich  noch die Registrierung deaktivieren, denn ich   25:24
möchte nachher, dass Menschen sich wirklich nur  dort anmelden können, wenn ich ihnen ein Invite   25:30
Code erstellt habe, oder ein Useraccount für sie  angelegt ist. Ich möchte nicht, dass sich jeder   25:35
selbst an meiner Instanz anmelden kann. Dazu  muss ich natürlich erstmal Admin sein. Also   25:40
hier machen wir jetzt noch den nächsten Schritt.  Wir müssen hier den Admin-Key dann nachher noch   25:45
in die Config packen. Das ist noch ganz wichtig.  Wir schauen mal, ob sich der nginx jetzt schon   25:50
starten lässt, auch mit der unvollständigen  dhparams-Konfiguration. Sonst müssen wir hier   25:55
halt noch ein wenig abwarten. 'systemctl status  nginx' als root wieder und jetzt machen wir mal 26:00
'reload'. Da sagt jetzt, er ist noch failed.  Da können wir jetzt mal schauen, warum. Ja,   26:08
ihm fehlt jetzt halt diese dhparams-Datei.  Also da müssen wir jetzt im Hintergrund noch   26:17
ein bisschen abwarten. Wenn ihr Cryptpad einfach  nur mal ausprobieren wollt, dann könnt ihr das   26:22
auch machen auf https://cryptpad.fr. Dort gibt  es eine Public Instanz direkt vom Projekt und   26:26
dort könnt ihr auch diese Sachen direkt alle  mal ausprobieren und ihr könnt euch da auch   26:33
einen gehosteten Account abonnieren für kleines  Geld. Also hier könntet dann nachher dann z.B.   26:37
einfach mal ein Pad erstellen, das mal teilen  und dann auch mal schauen, wie sich die Software   26:43
eigentlich hier genau anfühlt. Also ich habe jetzt  hier mein Pad offen, könnte das jetzt teilen,   26:49
mit anderen Usern und dann gemeinsam an dieser  Datei arbeiten. Das ist wirklich eine ganz feine   26:54
Sache. Und hier seht ihr dann natürlich auch das  Drive. Da kann ich dann meine Daten speichern,   26:59
wenn ich einen entsprechenden Account  habe. Es gibt noch andere Instanzen, z.B. 27:03
https://cryptpad.digitalcourage.de. Die ist  aktuell noch eine freie Instanz, die ihr einfach   27:08
nutzen könnt. cryptpad.digitalcourage.de.  Da könnt ihr euch auch registrieren und das   27:19
ganze dann dort bei ihnen nutzen. Ich möchte  das natürlich unter meiner eigenen Kontrolle   27:24
haben. Es sind meine eigenen Daten, deswegen  möchte ich meine Instanz natürlich gerne selber   27:28
hosten. Ich empfehle euch das auch, aber wenn ihr  wirklich die Software einfach mal anschauen wollt,   27:32
dann eignet sich sowas natürlich auch sehr gut.  Hier seht ihr auch schon den Funktionsumfang.   27:37
Hier gibt es einmal, wie gesagt, die Tabelle.  Das habt ihr standardmäßig nur, wenn ihr diese   27:43
ONLYOFFICE-Integration mit aktiviert habt.  Dann habt ihr hier noch Kanban-Boards, Code,   27:48
das ist Markdown, Formular, da könnt ihr Umfragen  mit erstellen. Auch eine ganz tolle Sache.   27:53
Diagramme könnt ihr zeichnen oder auch Markdown  Slides. Das finde ich halt auch noch wirklich   27:58
ganz fein und das könnt ihr alles mit dieser  Lösung machen und das ganze dann sharen, teilen,   28:04
gemeinsam bearbeiten und natürlich im Drive  abspeichern. Also hier könnte ich z.B. diese   28:09
Markdown Slides mal machen. Da sage ich jetzt mal  hier # Tolle Präsentation. Dann sage ich jetzt 28:14
* Punkt 1 und dann könnte ich sagen -- und habe  dann schon hier die zweite Folie. Ich sage jetzt   28:29
hier wieder # Zweite Folie und kann dann hier  z.B. die Präsentation auch direkt dann anzeigen   28:39
lassen. Dann hier durchscrollen. Also so könnt  ihr das Tool halt nutzen. Entdeckt das wirklich   28:48
mal wie das nachher auch funktioniert.  Was man damit alles machen kann. Also,   28:54
das ist wirklich sehr sehr umfangreich.  Ich finde es eine der tollsten Lösungen,   28:57
die es heutzutage gibt für das gemeinsame Arbeiten  an Dokumenten. Also es ist wirklich ganz toll und   29:01
wenn ihr das dann bei euch installiert habt,  dann könnt ihr das auch mit euren Freunden,   29:07
mit der Familie und so weiter zusammen  nutzen. Ich warte jetzt hier ein bisschen.   29:12
Ich spule das jetzt hier ein bisschen  vor, damit wir hier diese dhparams nachher   29:16
generiert haben und dann die Konfiguration  tatsächlich auch abschließen können. Also,   29:20
das ist der Punkt. Da müsst ihr euch  wirklich ein bisschen Zeit nehmen. Das   29:24
dauert leider etwas, aber nachher ist, das ist  eine einmalige Sache, und nachher ist das dann 29:27
fertig. So, jetzt ist er hier mit der Erstellung  der dhparams auch schon durch und ich kann jetzt   29:32
noch mal schauen, ob ich den nginx Webserver oder  Proxyserver jetzt neu starten kann. Dazu gebe ich   29:42
noch mal den Befehl 'systemctl restart nginx'  ein und jetzt hat er den hier auch sauber neu   29:48
gestartet. Ich schaue mir jetzt noch mit 'status'  an, ob er jetzt läuft. Ja, das sieht doch gut aus   29:54
und jetzt kann ich schon mal versuchen, ob ich  hier auf meine Domain cryptpad.spacefun.ch auch   29:59
drauf komme. Und das ist tatsächlich so. Es kann  jetzt noch sein, dass bei euch hier noch HTTP   30:05
standardmäßig aktiv ist. Da müsstet ihr noch  einen Redrirect erstellen. Das könnt ihr auch   30:11
in '/etc/nginx/conf.d/'. Z.B erstellt da eine  Datei 'nano redirect.conf' und könnt dort dann   30:16
alle Zugriff die über HTTP erfolgen direkt auf  HTTPS weiterleiten. Das sieht dann hier ungefähr   30:27
so aus. Das speichere ich jetzt hier mal ab  'Ctrl+O', 'Ctrl+X' und kann dann jetzt noch   30:34
mal den nginx Webserver neu starten. Wenn ich das  jetzt hier alles gemacht habe, dann habe ich jetzt   30:39
hier schon die Möglichkeit, mich hier einmalig  mal zu registrieren. Die Registrierung ist ja   30:47
im Moment noch offen. Ich gebe jetzt hier also mal  einen Benutzernamen an astronaut und ein Passwort.   30:52
Das muss ich mir natürlich merken, weil sonst  kommst Du nachher nicht mehr an deine Daten dran,   30:59
das sagt er hier auch noch mal. Jetzt wird dein  User auch entsprechend eingerichtet und halt dein   31:05
Account komplett verschlüsselt. Das Ganze ist  vollständig verschlüsselt, also du kannst dir   31:12
wirklich sicher sein, dass da nichts passiert.  Hier gehst du jetzt auf deinen Account und kannst   31:16
dann jetzt z.B. hier in den Einstellungen, da  müssen wir noch Pop-Ups erlauben. Das machen wir   31:21
und ich kann dann hier in den Einstellungen diesen  öffentlichen Schlüssel hier herauskopieren. Dieser   31:29
öffentliche Schlüssel ist auch das, mit  dem ich hier meinen Admin einrichte. Das   31:35
ist noch ganz wichtig, weil wir möchten  ja, dass ein Admin Account nachher auch   31:39
entsprechende Einstellung vornehmen kann.  Dazu öffne ich hier noch mal diese Doku,   31:45
denn dort wird das genau erklärt. Das  erfolgt jetzt wieder als cryptpad User   31:49
in der Hauptkonfiguration. Ich muss also 'su-  cryptpad' machen und kann jetzt hier 'nano' und   31:55
dann diese Config 'cryptpad/config/config.js'  machen. Und jetzt gibt es hier einen Punkt in   32:03
dem halt diese Admin-Accounts definiert werden.  Hier hatten wir vorhin die URL für die 'safe'   32:10
und 'unsafe' Zugriffe definiert und jetzt müssen  wir hier mal schauen. Hier werden die Ports auch   32:15
noch definiert. Die sind der standmäßig hier auf  3000 3003 und hier müssen wir jetzt mal schauen,   32:20
wo der Admin ist. Da sehe ich schon die Keys.  Also hier gibt es oben Beispiele und hier muss   32:25
ich jetzt meinen Key in dieser Form hier  entsprechend einfügen. Also ich mache jetzt   32:30
hier mal paar Spaces. Dann mache ich hier schon  mal ein Anführungszeichen und dann kommt jetzt   32:35
hier mein Key. Den habe ich jetzt hier in den  Einstellungen. Das ist mein persönlicher Key und   32:39
mit diesem Key kann ich jetzt hier meinen Admin  einrichten. Den paste ich jetzt hier rein. Da   32:45
muss das ganze wieder mit Anführungszeichen und  einem Komma abgeschlossen werden, hier in dieser   32:51
Konfigurationsdatei und ich kann das ganze  dann abspeichern und beenden. Jetzt gehe ich   32:56
wieder raus und kannte jetzt sagen 'systemctl  restart cryptpad' und kann dann mal schauen,   33:00
ob ich denn jetzt tatsächlich schon Administrator  bin. Jetzt mache ich hier mal einen reload im 33:07
Webbrowser und kann dann hier den Punkt  Administration auch schon aufrufen. Das   33:11
seht ihr hier, das ist hier Admin. Das  hat also super geklappt. Also hier kann   33:23
ich jetzt die Administrationseinstellungen  festlegen und hier kann ich dann auch noch   33:28
unter dem Bereich Users dann  die Registrierung tatsächlich   33:32
dann entsprechend disablen. Also hier kann ich  Registrierung deaktivieren und dann kann sich auch   33:37
kein Benutzer mehr an diesem System registrieren.  Ihr habt also mit Cryptpad eine super Lösung,   33:43
mit der ihr gemeinsam Dokumente bearbeiten  könnt, die ihr zentral verschlüsselt auf   33:50
eurem Server speichern könnt. Also ihr könnt hier  natürlich wie üblich über diese Punkte dann eure   33:55
entsprechenden Dokumente erstellen, die dann  auch teilen, hier über diesen 'Teilen'-Button.   34:02
Das haben wir so konfiguriert, dass das möglich  ist, auch ohne Account. Ich kann jetzt hier sagen,   34:06
teilen. Ich könnte jetzt hier den Link kopieren  und den könnte ich dann jemandem mitgeben,   34:11
der dann auch mit mir an diesem Dokument gemeinsam  arbeiten kann. Ich wünsche euch viel Spaß und   34:16
viel Erfolg beim Ausprobieren dieser Lösung.  Installiert sie. Diesmal ist es etwas schwieriger   34:22
als die Lösung die ich bisher vorgestellt habe,  aber es macht sehr viel Spaß. Es macht auch Spaß   34:27
diese Community zu entdecken. Esind alle sehr  freundlich. Also kommt vorbei und wenn ihr   34:31
Fragen habt, dann schaut auch bei uns in der  Telegram-Community vorbei. Dort helfen wir Dir   34:36
garantiert weiter. Ich wünsche dir viel Spaß beim  Ausprobieren und bis zum nächsten Mal. Tschüss. 34:41
Hello fellow Thermians. In this video, I'd like 00:00
to introduce you to the Cryptpad solution in more detail. Cryptpad is an open-source cloud solution that 00:06
allows you to edit documents collaboratively. You can use it privately, 00:13
with your friends, or with a club, but also in a small company. 00:19
Compared to the other solutions I've already introduced to you, Cryptpad is a bit more complicated 00:26
to install. However, I'd like to walk you through the installation step by step 00:31
. We need two domains as a prerequisite. Since Cryptpad 00:36
is particularly designed for security, it works with a second domain that 00:44
provides additional protection against so-called cross-site scripting attacks. I don't have these two domains at the moment, however, 00:51
because I want to run the whole thing self-hosted at home, and for that, I've 00:57
set up just one domain on my router, using DynDNS. I've activated it here. 01:02
It runs via freedens.afraid.org. You could now simply activate the wildcard domain 01:08
on the domain, freedens.afraid.org, and then you could simply 01:15
set up and use something.tuxwiz.mooo.com. But I don't want to do that. 01:20
I also have my real 01:26
domain, spacefun.ch, here with my host, and I'd like to use it. I'll show you a trick 01:30
that will allow you to easily use an official domain for self-hosting without 01:35
having to just access this DynDNS address. I'm in the administration panel for 01:42
the DNS configuration of my domain with my host, and I can 01:49
add a CNAME here. A CNAME is something like an alias, and this 01:55
alias points to my DynDNS domain. For example, I've created an alias here: 02:00
cryptpad.spacefun.ch. This is a TTL (time to live), and the target name is 02:07
specified with a period at the end. So, 'cryptpad.spacefun.ch' now points 02:15
to 'tuxwiz.mooo.com.' And I could do the same for the second domain 02:21
. I've already prepared that here. There's a second 02:26
cryptpad-sandbox.spacefun.ch, and that also points to tuxwis.mooo.com, so 02:29
I can then easily access my self-hosting solution using this official name. 02:38
That's really great; I've already prepared that here in advance. 02:43
Of course, you also need to enable port forwarding on your server. I 02:48
'd like my server to be accessible from the internet, and for that, I need to know the IP address 02:53
. As usual, I'm installing my solution here on my own Linux distribution, 02:59
called TuxWiz. TuxWiz Mini is great for installing on a server. It's 03:04
very streamlined and has minimal software, but still has a graphical interface. So, here in the terminal, I 03:09
can first find the IP address 'ip a s', and here 03:15
I can see my IP address in my LAN. I now have to 03:20
forward this accordingly in my router, of course. I've already prepared this in this case. 03:26
Here in the NAT area, I can forward the protocols HTTP, which would be port 80, and HTTPS to this 03:30
target address. It might look a little different for you, but basically 03:38
it's the same everywhere, even on a Fritzbox. So, that's just a preparation. Now I 03:42
actually want to install the software, and it's called Cryptpad. Let's see 03:48
what it looks like at https://cryptpad.org. I can also find the documentation here, 03:52
which is very detailed. I'd like to see the administration instructions first, because 04:00
they explain exactly how to install the entire software. The very first thing it 04:05
shows is that I need two domains. I can also change the whole thing to German here. 04:12
Some things are in German, but here it's still displayed in English. You have to look to see 04:17
what's already been translated and what isn't. So, I have two domains. These 04:22
are the hardware requirements. So, I need a server. I have a Debian system here, of course 04:26
. TuxWiz is based on Debian. 2 CPUs and 20 GB of storage. So, even if you 04:30
If you installed it in a virtual machine, you should equip it accordingly. So I have that now. 04:36
I also need git, Node.js, and npm. They recommend 04:41
installing everything from NodeSource, and we'll do that for the very first time. Node.js is also 04:49
included in Debian, but we want to choose the recommended solution via the project's repository. 04:55
To do this, I go to 'nodesource' and can then follow the corresponding instructions here. 05:02
I search for LTS. There's one for Ubuntu, and then there's this one for Debian. 05:07
I can then set it up accordingly. As usual, I've 05:15
prepared the whole thing here in a cheat sheet. Of course, I'm happy to share it with you in our Telegram community. So 05:20
join our Telegram community. To do so, simply go to https://spacefun.ch, then 05:25
click on Telegram, and you're in. And then you can also see this cheat sheet. Here 05:30
are the installation instructions. I've already copied the most important points from there. I 05:35
'll do the whole thing as root. So I do 'sudo bash', enter my password, and can 05:39
then execute the commands as root. The very first thing I'll do here is install curl. Curl is needed 05:46
to download the installation script. I can then download it here. 05:52
'-o' tells me I want to save it under a specific name. I 05:57
cd into my home directory of the 'root' user. 'pwd' '/root', I'm already in there. So 06:02
I download it with curl and now I have this setup script here in my home directory of the root user 06:08
. I run it with 'bash' and the script name. I could also 06:14
make it executable with 'chmod +x' and './' and specifying the script name. It's done that now, and it's 06:21
already telling me exactly what I should do. Namely, install 'nodejs' here. 06:28
I'll paste that in here too. 'nodejs' is now being set up in the background. 06:34
This is required for the further installation. We obviously don't want 06:40
to run the software as the root user, but rather as a dedicated user account. I'll 06:46
call the user I want to use here 'cryptpad' and set 06:52
it up accordingly. I can create the user with the command 'useradd -m cryptpad -s /bin/bash' 06:57
and then have the corresponding user account active. 07:06
I can switch to it with 'su -cryptpad' and am then already running as the cryptpad user and can 07:13
carry out the further steps here. The very first thing I'll do here is clone the project's repository 07:20
. The installation instructions describe how this all 07:26
works in detail. I'll do this in a folder called 'cryptpad'. This is 'git clone'; 07:31
I use this to clone the repository. This is the '.git' repository, and this is the directory 07:38
I'd like to clone the whole thing into. This all happens automatically in the 07:44
background. Afterward, I can run the installation in this directory as the 07:50
cryptpad user. I can now open another terminal in parallel. We 07:55
just used the useradd command, and I'd like to show you what the 08:02
'-m' parameter means. To do this, I can type 'man useradd' and search the man page 08:09
with '/'. And then, for example, '-m' and press Enter. Then I can continue searching with 'n', 08:16
for next. 'n' stands for next. And here I can also see the '-m' or 08:24
'--create-home' parameter. This ensures that a home directory is created for the user. 08:30
Unlike the 'adduser' command, 'useradd' doesn't normally 08:34
create a home directory. So, that's what it did here. I now have a home directory here too. I can 08:41
also see this in the '/home' folder. Here, it's now cloning all the objects in the background, 08:46
meaning it's checking out all the project's objects. This is, of course, very extensive and 08:52
can take some time. In the next step, we want to, as shown here, 08:58
As described in the instructions, install the dependencies and the respective components. 09:04
To do this, I then go to the directory. I can already access it here. I'll wait here 09:13
for a moment. So, 'cd cryptpad' and I can now execute the command 'npm ci'. 09:19
It's already doing this in the background, and I can then 09:29
install the individual components that are required. Because they are not, of course 09:37
, delivered in the Git repository; instead, they are 09:42
installed via the Node.js package manager. In addition to the actual software, we will also need 09:49
a proxy server in front of it. The software itself runs on a dedicated port, and 09:56
we want to make it accessible via HTTP and HTTPS. I will now execute the command 'npm 10:01
run install:components' to actually install the required components 10:08
. It has already done that here. So it's basically 10:14
done with it. I've already followed all of these steps, and I could now optionally 10:19
install ONLYOFFICE. 'ONLYOFFICE' is an additional component; it's semi-proprietary and 10:28
allows you to edit spreadsheets together, for example, if you'd like. There's 10:35
a script here called 'install-onlyoffice.sh'. You could simply run that here. I'll leave it 10:40
out for now. Now, of course, we want to create a configuration file 10:45
, and for that I can copy the example configuration into 'config.js'. To do this, I run 'cp 10:51
​​config/config.example.js config/config.js'. I can then edit it with Nano: 10:59
'nano config/config.js'. There are a few important points we need to note here 11:06
. This is the actual configuration of the software, and the first thing we need to do 11:13
is specify the URL. I told you we have two domains: one 'safe' and one 'unsafe'. The 11:19
'unsafe' is the normal URL that users will access later. I want 11:24
to do everything over HTTPS. So I'll specify 'https' and then I'll enter the domain name, 11:29
the first domain name I set up. So, in my case, it would be 11:34
cryptpad.spacefun.ch. That's finished now. Then there's this second 11:39
URL. 'httpSafeOrigin' is commented out here. I need to remove 11:48
those two '//'s, and then I can make sure I'm 11:54
entering the correct URL. And in my case, that would be the second domain I created: 12:00
cryptpad-sandbox.spacefun.ch. These URLs can vary for you, of course; it could 12:07
be your DynDNS domain with a subdomain. You have to decide for yourself whether you 12:18
want to use an official domain or not. We've already filled in these two values ​​here 12:23
, so that's already very good. I can now save this: 'Ctrl' or 'Strg+O', 12:28
Enter, 'Ctrl+X', and I'm out. Now I'll perform a few steps as the root user again. 12:34
I'll type 'exit' and then I'll be root again, because I was root before and only 12:40
switched to the context of the cryptpad user. Next, I want 12:44
to install a systemd service to start the application. To do this, I'll copy this line 12:49
, and with this line, a corresponding systemd file should be created here. 12:56
It says this again here. The project provides a service definition 13:03
, and I want to copy this into the target directory '/etc/systemd/system/cryptpad.service' 13:08
. And there I can already see my systemd definition. If you used a different user here 13:14
, or a different home directory, then you'll obviously have 13:19
to adjust it accordingly. Because everything is designed for the cryptpad user. We 've done that 13:23
here, and now we can enable this systemd service. 13:29
I can do that as root with 'systemctl enable --now cryptpad,' which also starts Cryptpad 13:34
. Next, I can check again to see if you've actually done that. 13:41
'systemctl status cryptpad'. That looks pretty good. It says "active" here. I can 13:46
also check the whole thing with 'netstat -antp' and see that something is listening on ports 3000 and 3003. That 13:58
worked great so far. Now we want to install the proxy server. This 14:06
is where things get a bit complicated. The proxy server sits in front of the application, 14:11
provides additional protection, and serves to make the website available on the internet. 14:15
So you can access it later via HTTP and HTTPS. To do this, I'm installing the nginx 14:22
proxy server, which is actually a web server that can also be used as a proxy. And it's 14:29
already installed here in the background. Now I'm going to create a directory here and 14:36
then generate the OpenSSL dhparams for additional security. This will take 14:40
a while, so I'm doing it here in the background beforehand. 'openssl dhparam 14:45
-out /etc/nginx/dhparam.pem 4096' and it's now diligently doing this in the background. I can now 14:53
continue working in another terminal tab here. I'll 15:00
open a root console again and can then continue working accordingly. Of course, I want the 15:05
whole thing to be encrypted with Let's Encrypt. I do this as usual with certbot; 15:11
it's a really great solution. It does everything automatically for me. Of course, I have to 15:15
install it first. To do this, I can use 'sudo apt install certbot' and 15:19
install the nginx integration with 'python3-certbot-nginx'. This now happens here in the background, and 15:25
I can then obtain my SSL certificates for my domain. 15:32
Here's how I do it. I don't actually need to specify sudo here because I'm now working as root: 15:38
'certbot --nginx certonly -d' and then I can specify two domains. I want both 15:45
domains to be included in this certificate, so cryptpad.mydomain.com, you'll have to 15:49
adjust that accordingly, of course. For me it's now spacefun ch. And that's the sandbox domain, 15:55
which is also spacefun.ch, and then we'll see if it can 16:01
generate a certificate for me. Now I have to enter an email address here: 16:08
astronaut AT spacefun.ch. Then I'm asked if I 16:13
agree to the terms of use. I say yes. And whether I want to share my email address. 16:21
I don't want to do that, and now it's trying 16:27
to get the certificate in the background: cryptpad.spacefun.ch and 16:31
cryptpad-sandbox.spacefun.ch. And here I can see that my certificates were saved here 16:37
. One is the certificate and the other is the key. I can 16:43
copy that over from here too. So I've already prepared this for you, 16:48
with a general name. This one, which corresponds to your domain, 16:54
is quite clear. The project also provides an nginx configuration. 16:59
So that's a great feature, of course; we'd like to use it as an example. 17:04
And I'll copy it over here as well. To do this, I'll highlight 17:08
the line and, as root, I can now 17:13
download this file 'example.nginx.conf' to '/etc/nginx/conf.d/cryptpad.conf'. I'll obviously have to edit this configuration file now 17:20
. I'll also put a 'nano' in front of it so you know that and 17:27
can make a few changes, because of course, some adjustments are still necessary. 17:35
We don't have the 'include letsencrypt-webroot;' here. There are additional 17:40
security settings in there that are integrated if you use acme.sh, for example. 17:45
Certbot works a little differently. What's important here is that we 17:50
adjust the server name accordingly. Both domains need to be included, like 17:55
cryptpad.spacefun.ch 18:03
and cryptpad-sandbox.spacefun.ch. 18:11
The certificates are, of course, very important here. We have the certificate and 18:19
the key. I created them here before. In my case, this is the certificate, 18:23
which I'll copy here. To do this, I'll delete this line. It's important, 18:32
that with nginx these configuration lines are always ended with a semicolon, otherwise 18:37
it can't interpret them correctly. And then I have my key here. I'll copy that too 18:43
. So, this is the dhparams file. It's still being generated in the background. 18:48
As I said, that takes quite a while. You might have to be patient 18:59
until it's actually finished. Now let's see if we need to configure anything else here 19:03
. No, the configuration is actually already complete. We 19:09
'd like to make a few more adjustments to the installation later, 19:16
so we'll take another look at this. We've done that. We've now 19:24
installed systemd. The whole thing is also available as Docker, but they're not quite as advanced yet. 19:29
I looked at that first and it's not recommended yet. I can't 19:32
recommend it either. In that case, it's really better to install itself. Here are the domains. That's where we are 19:36
now. We're in the process of configuring nginx. There's also the dhparams configuration 19:42
, and then we can—this is the configuration, we've already done that— 19:48
and then we can also configure an administrator in the config later. This is 19:53
also very important. We can do this once the first user account 19:59
has been created. We want to secure the whole thing a bit later, 20:03
because I want only registered users to be able to use this solution. Otherwise, the 20:06
whole thing is open to anyone. So anyone can really work with it, and 20:13
I really only want to open it up to my acquaintances, friends, and family 20:18
, because they should be able to use it. Here you can also see 20:23
the proxy configuration in nginx. By the way, this is where you forward the requests to localhost, 20:27
port 3000, and port 3003, which we saw earlier with 'netstat'. I'll say 20:32
'Ctrl+O' and 'Ctrl+X' here. While it's still working on the dhparams configuration 20:38
in the background , I can start 20:47
adjusting the configuration later. This is important because we need 20:52
to log in first so we can assign the appropriate permissions. The whole process is done 20:57
as the cryptpad user. I always make all changes to the cryptpad configuration as 21:04
the cryptpad user, i.e. 'su - cryptpad'. Then I'm the cryptpad user again, and the whole thing 21:09
is installed here in the cryptpad directory. So, basically 21:16
everything's ready. I can now prepare a folder here, 'mkdir customize,' 21:21
and then copy these example configurations into it. First I copy 21:30
'cp 21:35
customize.dist/application_config.js customize/', 'cp www/common/application_config_internal.js 21:36
customize/application_config.js', then I already have a configuration here 21:42
that I can work with later, and then I can use these parameters from the 21:47
currently active file. I can actually just adopt them, 21:56
or I can write in this, the internal configuration, instead of this configuration 21:59
. I think I'd rather do that. So I'll now configure it 22:04
directly in this configuration file. And 22:07
the individual settings for the app itself will be made in this configuration file. I can then 22:14
open it again with 'nano', and of course we can then make individual configuration changes here, 22:19
such as restricting access so that only registered 22:24
users can access it. Here you can 22:28
activate 'AppConfig.disableAnonymousStore' and 'AppConfig.disableAnonymousPadCreation', for example. This means that anonymous users 22:38
simply aren't able to directly use the storage space or 22:44
generate so-called pads. I can configure this here in the config. I'll search for Anonymous here. 22:50
'AnonymousStore', here. So we have 'AppConfig.disableAnonymousStore' here. 23:10
That's the storage. The whole thing also has a drive, similar to Nextcloud. 23:13
I can then save my data there. Otherwise, my Cryptpads would be 23:19
automatically deleted after a certain amount of time. That makes sense, too, because you don't want 23:24
this data to be permanently accessible somewhere on the internet. So, I'll say 'AppConfig.disableAnonymousStore' here, 23:29
and I'll say 'true' here. The important thing is, this is really only 23:34
a client-side setting, so you have to be aware of what that means. And here, I'll 23:41
also say 'AppConfig.disableAnonymousPadCreation' again, and 'true'. That's a 23:47
really important setting. And with it, I can secure the whole thing accordingly. If 23:54
you don't want that at all, if you want no one 24:00
to be able to use this software without an account—you'll have to create an account for each user— 24:04
then you can also make this setting here. I've picked that out for you again 24:09
here: 'AppConfig.registeredOnlyTypes = AppConfig.availablePadTypes;'. It 24:13
can be found pretty far at the beginning here: 'availablePadTypes'. 24:18
You would have to comment that out, again with the two '//'s, and then you could 24:26
paste this in: 'AppConfig.registeredOnlyTypes = AppConfig.availablePadTypes;' and then 24:31
only registered users will be able to work with this app. But you have to bear in mind 24:35
that this also means that files can only be shared with people 24:40
who also have an account on your Cryptpad installation. 24:47
So you can share links and then work on files together. This is really important and can be 24:51
a bit time-consuming, because you have to create a separate account for each user. 24:56
But this makes the whole thing even more secure, of course. This is really the most secure 25:01
thing you can set up there. But now I'll say 'Ctrl+O', yes, saved 'Ctrl+X', 25:04
quit. If you want to know more, you can 25:11
take another look at this point, because it explains in detail how 25:17
to configure this setting. We also want to deactivate registration later, of course, because I 25:24
only want people to be able to log in if I 25:30
've created an invite code for them or if a user account has been created for them. I don't want everyone 25:35
to be able to log in to my instance themselves. Of course, I have to be an admin first for that. So 25:40
we'll take the next step here. We have to add the admin key to the config later 25:45
. This is very important. We'll see if nginx 25:50
can be started now, even with the incomplete dhparams configuration. Otherwise, we'll 25:55
just have to wait a little longer. 'systemctl status nginx' as root again and now we'll do 26:00
'reload'. It says it's still failed. Now we can see why. Yes, 26:08
it's missing this dhparams file. So we'll have to 26:17
wait a bit in the background. If you just want to try out Cryptpad, you can 26:22
do that at https://cryptpad.fr. There's a public instance directly from the project, and 26:26
you can try out all of these things there, and you can also 26:33
subscribe to a hosted account for a small fee. So you could then, for example, 26:37
simply create a pad, share it, and then see 26:43
exactly how the software actually works. So I have my pad open here now, and I could share it 26:49
with other users and then work on this file together. That's a really nice 26:54
thing. And here you can also see the drive, of course. I can save my data there 26:59
if I have a corresponding account. There are other instances, e.g. 27:03
https://cryptpad.digitalcourage.de. This is currently a free instance that you 27:08
can just use. cryptpad.digitalcourage.de. You can also register there and 27:19
then use the whole thing there with them. Of course, I want to have it under my own control 27:24
. It's my own data, which is why I'd like 27:28
to host my instance myself. I recommend that too, but if you really just want to take a look at the software, 27:32
then something like that is of course very suitable. Here you can see the range of functions. 27:37
As I said, there is the table. You only have that by default if you 27:43
have activated the ONLYOFFICE integration. Then you have Kanban boards, code, 27:48
which is Markdown, forms, you can use to create surveys. Also a really great thing. 27:53
You can draw diagrams or Markdown slides. I think that's really 27:58
great, and you can do all of that with this solution and then share the whole thing, edit it 28:04
together, and of course save it in Drive. So here I could, for example, create these 28:09
Markdown slides. I'll say # Great presentation here. Then I'll say 28:14
* Point 1 and then I could say -- and then I already have the second slide here. I'll say 28:29
# Second slide again here and then I can, for example, display the presentation directly here 28:39
. Then scroll through here. So that's how you can use the tool. Really discover 28:48
how it works later. All the things you can do with it. 28:54
It really is very comprehensive. I think it's one of the best solutions 28:57
there is today for working on documents together. It's really great and 29:01
once you've installed it, you can 29:07
use it with your friends, family and so on. I'm going to wait a bit here. 29:12
I'm going to fast forward a bit so that we can generate these dhparams later 29:16
and then we can actually complete the configuration. So 29:20
that's the point. You really do have to take a bit of time. 29:24
Unfortunately it takes a while, but afterwards it's a one-time thing and then it's 29:27
finished. So, now it's finished creating the dhparams and I can now 29:32
check whether I can restart the nginx web server or proxy server. To do this, I 29:42
enter the command 'systemctl restart nginx' again and it has now 29:48
restarted that one cleanly. I'll now check whether it's running with 'status'. Yes, that looks good 29:54
and now I can try to access my domain cryptpad.spacefun.ch 29:59
. And that's actually the case. It's still possible that HTTP 30:05
is still active by default here. You would need to create a redirect. You can also do this 30:11
in '/etc/nginx/conf.d/'. For example, create a file 'nano redirect.conf' and there you can then 30:16
redirect all access via HTTP directly to HTTPS. It will then look something 30:27
like this. I'll save this here (Ctrl+O), (Ctrl+X) and then I can 30:34
restart the nginx web server. Once I've done all of that, I now have 30:39
the option of registering here once. Registration is 30:47
still open at the moment. So I'll give astronaut a username and a password. 30:52
I have to remember this, of course, because otherwise you won't be able to access your data later; 30:59
he says this again here. Now your user will be set up accordingly, and your 31:05
account will be completely encrypted. The whole thing is fully encrypted, so you can 31:12
be absolutely sure that nothing will happen. Now you go to your account and 31:16
then, for example, in the settings here, we need to allow pop-ups. We'll do that 31:21
, and then I can copy out this public key from here in the settings. This 31:29
public key is also what I'll use to set up my admin here. This 31:35
is really important because we want an admin account 31:39
to be able to make the appropriate settings later. To do this, I'll open this documentation again, 31:45
because it explains it in detail. This will now be done as a cryptpad user. 31:49
in the main configuration. So I have to do 'su-cryptpad' and can now 31:55
do 'nano' here and then this config 'cryptpad/config/config.js'. And now there is a point here where 32:03
these admin accounts are defined. We 32:10
defined the URL for 'safe' and 'unsafe' access here earlier and now we have to look here. The ports are also 32:15
defined here. By default they are 3000 3003 and here we have to look to see 32:20
where the admin is. I can already see the keys. There are examples above and here 32:25
I have to insert my key in this format. So I'm going to create 32:30
a few spaces here. Then I'm going to put a quotation mark here and then my key comes 32:35
here. I have it here in the settings. This is my personal key and 32:39
with this key I can now set up my admin here. I'm going to paste it here. The 32:45
whole thing has to be enclosed in quotation marks and a comma here in this 32:51
configuration file, and then I can save and exit. Now I go 32:56
back out and say 'systemctl restart cryptpad' and can then see 33:00
whether I am actually an administrator now. Now I do a reload in the 33:07
web browser and can then call up the Administration option. 33:11
You can see that here: this is Admin. That worked really well. Here 33:23
I can now define the administration settings, and here I can also 33:28
disable registration under the Users section 33:32
. Here I can deactivate registration, and then 33:37
no user can register on this system anymore. So with Cryptpad you have a great solution 33:43
with which you can edit documents together, which you can then save encrypted centrally on 33:50
your server. So you can of course create your corresponding documents here as usual using these options 33:55
, and then share them using this 'Share' button. 34:02
We have configured it so that this is possible, even without an account. I can now say 34:06
share. I could copy the link here and then give it to someone 34:11
who can then work with me on this document. I hope you have fun and 34:16
success trying out this solution. Install it. This time it's a bit more difficult 34:22
than the solution I've presented so far, but it's a lot of fun. It's also fun 34:27
to discover this community. Everyone is very friendly. So come by and if you 34:31
have any questions, take a look at our Telegram community. We're 34:36
sure to help you there. I hope you have fun trying it out and see you next time. Bye. 34:41

Cryptpad ist eine datenschutzfreundliche Open-Source-Kollaborationsplattform, mit der du gemeinsam und sicher an Dokumenten, Tabellen, Präsentationen und mehr arbeiten kannst – ganz ohne die Kontrolle über deine Daten zu verlieren. Ob privat, im Verein oder in einer kleinen Firma: Mit Cryptpad behältst du die Hoheit über deine Inhalte und musst dich nicht auf externe Anbieter verlassen.

Die Installation ist etwas anspruchsvoller als bei anderen Lösungen, aber dafür bekommst du maximale Sicherheit. Für den Betrieb werden zwei Domains empfohlen, was vor allem vor Cross-Site-Scripting-Angriffen schützt. Im Video wird erklärt, wie du auch mit nur einer DynDNS-Adresse und einem CNAME-Eintrag im DNS deine eigene Domain für das Selfhosting nutzen kannst. Damit ist Cryptpad auch zu Hause auf deinem Server oder Raspberry Pi problemlos einsetzbar.

Nach der Vorbereitung mit Portweiterleitungen für HTTP und HTTPS richtest du Cryptpad auf einem Debian-basierten System ein. Dazu installierst du Node.js, npm und weitere Abhängigkeiten, legst einen eigenen Benutzer für Cryptpad an und klonst das Projekt-Repository. Die Installation der notwendigen Komponenten erfolgt über den Node-Paketmanager. Für zusätzliche Funktionen wie Tabellenbearbeitung kannst du optional ONLYOFFICE einbinden.

Die Konfiguration läuft über eine zentrale Datei, in der du die beiden Domains einträgst und weitere Einstellungen vornimmst. Ein systemd-Service sorgt dafür, dass Cryptpad automatisch startet. Für den sicheren Betrieb im Internet wird ein Proxyserver wie NGINX vorgeschaltet, der die Anwendung über HTTP und HTTPS erreichbar macht und zusätzliche Sicherheit bietet.

Mit Cryptpad hast du eine leistungsfähige, sichere und flexible Plattform für die Zusammenarbeit an Dokumenten, die du vollständig selbst kontrollierst – ideal für alle, die Wert auf Datenschutz und Unabhängigkeit legen.

Navigation

Video Player