Cryptpad: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
K (Aktualisierung auf Version 2024.9.0)
 
(31 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 9: Zeile 9:
= Installation =
= Installation =


Mitglieder, die einen Managed Webspace im Shared Hosting nutzen, müssen für ihre Cryptpad-Installation eien "eigenen Serverdienst" beim Hostsharing-Service anmelden. Diese Option ist im Shared Hosting kostenpflichtig. Für den Serverdienst wird ein IP-Port mit dem Server vereinbart. Im Beispiel wird Port '30001' genutzt.
Mitglieder, die einen Managed Webspace im Shared Hosting nutzen, müssen für ihre Cryptpad-Installation einen "eigenen Serverdienst" beim Hostsharing-Service anmelden. Diese Option ist im Shared Hosting kostenpflichtig. Für den Serverdienst wird ein IP-Port mit dem Server vereinbart. Im Beispiel wird Port '30001' genutzt.


Für die Installation werden mit Hilfe von HSAdmin ein User (hier: 'xyz00-cryptpad') und eine Domain angelegt (hier: 'cryptpad.hs-example.de'). Die Entwickler empfehlen die Nutzung von zwei Domains für eine Cryptpad Installation. Wir nutzen hier eine 'leichtgewichtige' Subdomain 'api.cryptpad.hs-example.de', die bei Hostsharing ohne weitere Konfiguration nutzbar ist.  
Für die Installation werden mit Hilfe von HSAdmin ein User (hier: 'xyz00-cryptpad') und eine Domain angelegt (hier: 'cryptpad.hs-example.de'). Die Entwickler empfehlen die Nutzung von zwei Domains für eine Cryptpad Installation. Wir nutzen hier eine 'leichtgewichtige' Subdomain 'api.cryptpad.hs-example.de', die bei Hostsharing ohne weitere Konfiguration nutzbar ist.  


Nach dem Aufschalten der Domain 'cryptpad.hs-example.de' passen wird die generierte Verzeichnisstruktur der Domain wie folgt angepasst:
Für die aktuelle Version wird Node LTS (Version 20.x) empfohlen. Zur Installation (erfolgt weiter unten) siehe
[[NodeJS]]. Es kann aber auch das Node 18 von Debian Bookworm verwendet werden.


cd ~/doms/cryptpad.hs-example.de
== Webserver Konfiguration ==
rm -rf subs/www subs-ssl/www htdocs-ssl/.htaccess
 
mkdir subs/api subs-ssl/api
Nach dem Aufschalten der Domain 'cryptpad.hs-example.de' passen wir die generierte Verzeichnisstruktur der Domain wie folgt an:
 
<syntaxhighlight lang=shell>
cd ~/doms/cryptpad.hs-example.de
rm -rf subs/www subs-ssl/www htdocs-ssl/.htaccess
mkdir subs/api subs-ssl/api
</syntaxhighlight>


In die Verzeichnisse 'subs/api', 'subs-ssl/api' und 'htdocs-ssl' werden jeweils Dateien mit dem Namen '.htaccess' zur Konfiguration des Apache Webserver abgelegt:
In die Verzeichnisse 'subs/api', 'subs-ssl/api' und 'htdocs-ssl' werden jeweils Dateien mit dem Namen '.htaccess' zur Konfiguration des Apache Webserver abgelegt:


  cd ~/doms/cryptpad.hs-example.de
<syntaxhighlight lang=apache line>
# cd ~/doms/cryptpad.hs-example.de
# cat subs/api/.htaccess
 
Redirect permanent / https://api.cryptpad.hs-example.de/
# cat subs-ssl/api/.htaccess
 
DirectoryIndex disabled
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:UPGRADE} ^WebSocket$          [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$          [NC]
RewriteRule .* ws://127.0.0.1:30001%{REQUEST_URI}  [proxy]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1:30001%{REQUEST_URI} [proxy,last]
# cat htdocs-ssl/.htaccess
 
DirectoryIndex disabled
RewriteEngine On
RewriteBase / 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP:UPGRADE} ^WebSocket$          [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$          [NC]
RewriteRule .* ws://127.0.0.1:30001%{REQUEST_URI} [proxy]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1:30001%{REQUEST_URI} [proxy,last]
</syntaxhighlight>
 
Eine weitere '.htaccess'-Datei liegt direkt im Hauptverzeichnis der Domain (die überlangen Zeilen beachten):
 
<syntaxhighlight lang=apache line>
# cd ~/doms/cryptpad.hs-example.de
# cat .htaccess
Header Set Access-Control-Allow-Origin "https://api.cryptpad.hs-example.de"
Header Set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header Set Access-Control-Allow-Headers "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range"
Header Set Access-Control-Max-Age "1728000"
Header Set X-XSS-Protection "1; mode=block"
Header Set X-Content-Type-Options "nosniff"
Header Set Cross-Origin-Resource-Policy "cross-origin"
Header Set Cross-Origin-Embedder-Policy "require-corp"
Header Set Content-Security-Policy "default-src 'none'; child-src https://cryptpad.hs-example.de; worker-src 'self'; media-src blob:; style-src 'unsafe-inline' 'self' https://cryptpad.hs-example.de; script-src 'self' resource: https://cryptpad.hs-example.de; connect-src 'self' blob: https://cryptpad.hs-example.de https://api.cryptpad.hs-example.de wss://cryptpad.hs-example.de; font-src 'self' data: https://cryptpad.hs-example.de; img-src 'self' data: blob: https://cryptpad.hs-example.de; frame-src 'self' blob: https://api.cryptpad.hs-example.de; frame-ancestors 'self' https://cryptpad.hs-example.de;" "expr=%{REQUEST_URI} !~ m#^/(sheet|common)/#"
Header Set Content-Security-Policy "default-src 'none'; child-src https://cryptpad.hs-example.de; worker-src 'self'; media-src blob:; style-src 'unsafe-inline' 'self' https://cryptpad.hs-example.de; script-src 'self' resource: https://cryptpad.hs-example.de 'unsafe-eval' 'unsafe-inline'; connect-src 'self' blob: https://cryptpad.hs-example.de https://api.cryptpad.hs-example.de wss://cryptpad.hs-example.de; font-src 'self' data: https://cryptpad.hs-example.de; img-src 'self' data: blob: https://cryptpad.hs-example.de; frame-src 'self' blob: https://api.cryptpad.hs-example.de; frame-ancestors 'self' https://cryptpad.hs-example.de;" "expr=%{REQUEST_URI} =~ m#^/(sheet|common)/#"
</syntaxhighlight>
 
Zwei Datenverzeichnisse werden angelegt und direkt ins 'htdocs-ssl' verlinkt:
 
<syntaxhighlight lang=shell>
cd $HOME
mkdir data
mkdir data/blob
mkdir data/block
cd $HOME/doms/cryptpad.hs-example.de/htdocs-ssl/
ln -s /home/pacs/xyz00/users/cryptpad/data/blob .
ln -s /home/pacs/xyz00/users/cryptpad/data/block .
</syntaxhighlight>
 
Dieser Link muss angepasst werden, wenn der Blob-Speicher in den Zusatzspeicher unter /home/storage verschoben wird (siehe unten)!
 
== Installation von NodeJS ==
 
Nach dieser [https://wiki.hostsharing.net/index.php?title=NodeJS Anleitung] hier im Wiki kann mit Hilfe von 'nvm' 'node' in der Version 20 installiert werden.
 
Es geht aber auch ohne selbstinstalliertes Node: die Version 18 von Debian Bookworm lässt sich ebenso gut verwenden.
 
== Installation des Cryptpad ==
 
<syntaxhighlight lang=shell>
cd $HOME
npm install -g bower
git clone https://github.com/xwiki-labs/cryptpad.git cryptpad
cd cryptpad
# aktuelle Version nachsehen
git checkout 2024.9.0
npm install
bower install
cd config
cp config.example.js config.js
vi config.js
</syntaxhighlight>
 
Meine Konfiguration in der 'config.js':
 
<syntaxhighlight lang=javascript line>
// $ cat config.js
module.exports = {
   
   
cat subs/api/.htaccess
  httpUnsafeOrigin: 'https://cryptpad.hs-example.de',
Redirect permanent / https://api.cryptpad.hs-example.de/
  httpSafeOrigin: "https://api.cryptpad.hs-example.de",
  httpAddress: '127.0.0.1',
  httpPort: 30001,
  maxWorkers: 4,
  /*
  adminKeys: [
      "[admin@cryptpad.hs-example.de/xxxxxxxxxxxxxxxxxxxxxxxx=]",
  ],
  */
  inactiveTime: 90, // days
  archiveRetentionTime: 15,
  accountRetentionTime: 365,
  maxUploadSize: 8 * 1024 * 1024,
  filePath: '/home/pacs/xyz00/users/cryptpad/data/file/',
  archivePath: '/home/pacs/xyz00/users/cryptpad/data/archive/',
  pinPath: '/home/pacs/xyz00/users/cryptpad/data/pins',
  taskPath: '/home/pacs/xyz00/users/cryptpad/data/tasks',
  blockPath: '/home/pacs/xyz00/users/cryptpad/data/block',
  blobPath: '/home/pacs/xyz00/users/cryptpad/data/blob',
  blobStagingPath: '/home/pacs/xyz00/users/cryptpad/data/blobstage',
  decreePath: '/home/pacs/xyz00/users/cryptpad/data/decrees',
  logPath: '/home/pacs/xyz00/users/cryptpad/data/logs',
  logToStdout: true,
  logLevel: 'info',
  logFeedback: false,
  verbose: false,
  installMethod: 'unspecified',
};
</syntaxhighlight>
 
Der Admin-Key wird später ergänzt. Der erste registrierte User im Cryptpad kann den Schlüssel aus seinem Profil herauskopieren.
 
Wenn größere Datenmengen erwartet werden, kann der 'blobPath' in den Zusatzspeicher verlegt werden:
 
<syntaxhighlight lang=javascript line>
  blobPath: '/home/storage/xyz00/users/cryptpad/data/blob',
</syntaxhighlight>
 
== Start des Cryptpad ==
 
Ich starte das Cryptpad zunächst einfach mit dem 'nohup'-Kommando:
 
<syntaxhighlight lang=shell>
cd ~/cryptpad
nohup node server &
</syntaxhighlight>
 
== Cryptpad als Dienst starten ==
 
Die Cryptpad-Prozesse sollen von Systemd als Dienst automatisch gestartet werden.
 
Dazu legen wir eine Systemd-Unit an:
 
<syntaxhighlight lang=shell>
mkdir -p $HOME/.config/systemd/user/
vi $HOME/.config/systemd/user/cryptpad.service
</syntaxhighlight>
 
Der Inhalt der Datei soll sein:
 
<syntaxhighlight lang=ini line>
[Unit]
Description=Cryptpad
After=network.target
   
   
cat subs-ssl/api/.htaccess
[Service]
DirectoryIndex disabled
Type=simple
RewriteEngine On
WorkingDirectory=%h/cryptpad
RewriteBase /
Environment="NODE_ENV=production"
RewriteCond %{HTTP:UPGRADE} ^WebSocket$          [NC,OR]
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
RewriteCond %{HTTP:CONNECTION} ^Upgrade$          [NC]
ExecStart=/usr/bin/node server.js
RewriteRule .* ws://127.0.0.1:30001%{REQUEST_URI}  [proxy]
Restart=always
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
PrivateTmp=true
RewriteRule .* http://127.0.0.1:30001%{REQUEST_URI} [proxy,last]
NoNewPrivileges=true
   
   
cat htdocs-ssl/.htaccess
[Install]
DirectoryIndex disabled
WantedBy=default.target
RewriteEngine On
</syntaxhighlight>
RewriteBase / 
 
RewriteCond %{REQUEST_FILENAME} !-f
(Die Node-Version im Pfad muss ggf. korrigiert werden)
RewriteCond %{HTTP:UPGRADE} ^WebSocket$          [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$          [NC]
RewriteRule .* ws://127.0.0.1:30001%{REQUEST_URI}  [proxy]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1:30001%{REQUEST_URI} [proxy,last]


Eine weitere '.htaccess'-Datei liegt direkt im Hauptverzeichnis der Domain (die überlangen Zeilen beachten):
Der Dienst wird aktiviert und gestartet mit:


  cd ~/doms/cryptpad.hs-example.de
  systemctl --user daemon-reload
cat .htaccess
  systemctl --user enable cryptpad.service
Header Set Access-Control-Allow-Origin "*"
  systemctl --user start cryptpad.service
  Header Set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header Set Access-Control-Allow-Headers "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range"
Header Set Access-Control-Max-Age "1728000"
  Header Set Cross-Origin-Resource-Policy "cross-origin"
Header Set Cross-Origin-Embedder-Policy "require-corp"
Header Set Content-Security-Policy "default-src 'none'; child-src https://cryptpad.hs-example.de; worker-src https://cryptpad.hs-example.de; media-src * blob:; style-src 'unsafe-inline' 'self' cryptpad.hs-example.de; script-src 'self' 'unsafe-inline' 'unsafe-eval' resource: cryptpad.hs-example.de; connect-src 'self' https://cryptpad.hs-example.de cryptpad.hs-example.de https://api.cryptpad.hs-example.de blob: wss://api.cryptpad.hs-example.de api.cryptpad.hs-example.de; font-src 'self' data: cryptpad.hs-example.de; img-src data: * blob:; frame-src 'self' blob: api.cryptpad.hs-example.de cryptpad.hs-example.de https://cryptpad.hs-example.de https://api.cryptpad.hs-example.de;"


= weiterführende Links =
= weiterführende Links =
Zeile 65: Zeile 211:
* [https://docs.cryptpad.fr/de/ Dokumentation in deutscher Sprache]
* [https://docs.cryptpad.fr/de/ Dokumentation in deutscher Sprache]
* [https://docs.cryptpad.fr/de/admin_guide/installation.html Installationanleitung]
* [https://docs.cryptpad.fr/de/admin_guide/installation.html Installationanleitung]
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/cryptpad Ansible Playbook für Hostsharing]




Zeile 72: Zeile 219:
[[Kategorie:Software]]
[[Kategorie:Software]]
[[Kategorie:CalDAV]]
[[Kategorie:CalDAV]]
[[Kategorie:Ansible Playbook]]

Aktuelle Version vom 3. Oktober 2024, 07:43 Uhr

Cryptpad

Cryptpad ist ein Online-Office, dass in erster Linie im Internet-Browser zu bedienen ist. Das Alleinstellungsmerkmal ist die Ende-zu-Ende-Verschlüsselung aller Dokumente. Die Entschlüsselung und die Verschlüsselung erfolgen im Browser. Auf dem Server sind keinerlei lesbare Daten abgelegt.

Cryptpad bietet Editoren für formatierte Textdokumente (im HTML-Format) und für Markdown-Dateien und andere Textdateien. Der Anwendungsfall der Tabellenkalkulation wird durch Onlyoffice-Tabellen abgedeckt. Präsentationen können mit Hilfe von Markdown erstellt werden. Bilder und PDF-Dokumente können in die Umgebung hochgeladen und im Browser betrachtet werden. Ein Kalender und ein Kanbanboard zur Aufgabenverwaltung vervollständigen das Angebot.

Das Projekt stellt eine gute Installationsanleitung bereit. Leider ist die Konfiguration des Webservers nur für NGinX dokumentiert, so dass für die Konfiguration des Apache Webserver einige Experimente notwendig wurden.

Installation

Mitglieder, die einen Managed Webspace im Shared Hosting nutzen, müssen für ihre Cryptpad-Installation einen "eigenen Serverdienst" beim Hostsharing-Service anmelden. Diese Option ist im Shared Hosting kostenpflichtig. Für den Serverdienst wird ein IP-Port mit dem Server vereinbart. Im Beispiel wird Port '30001' genutzt.

Für die Installation werden mit Hilfe von HSAdmin ein User (hier: 'xyz00-cryptpad') und eine Domain angelegt (hier: 'cryptpad.hs-example.de'). Die Entwickler empfehlen die Nutzung von zwei Domains für eine Cryptpad Installation. Wir nutzen hier eine 'leichtgewichtige' Subdomain 'api.cryptpad.hs-example.de', die bei Hostsharing ohne weitere Konfiguration nutzbar ist.

Für die aktuelle Version wird Node LTS (Version 20.x) empfohlen. Zur Installation (erfolgt weiter unten) siehe NodeJS. Es kann aber auch das Node 18 von Debian Bookworm verwendet werden.

Webserver Konfiguration

Nach dem Aufschalten der Domain 'cryptpad.hs-example.de' passen wir die generierte Verzeichnisstruktur der Domain wie folgt an:

cd ~/doms/cryptpad.hs-example.de
rm -rf subs/www subs-ssl/www htdocs-ssl/.htaccess
mkdir subs/api subs-ssl/api

In die Verzeichnisse 'subs/api', 'subs-ssl/api' und 'htdocs-ssl' werden jeweils Dateien mit dem Namen '.htaccess' zur Konfiguration des Apache Webserver abgelegt:

# cd ~/doms/cryptpad.hs-example.de
# cat subs/api/.htaccess 

Redirect permanent / https://api.cryptpad.hs-example.de/
 
# cat subs-ssl/api/.htaccess 

DirectoryIndex disabled
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:UPGRADE} ^WebSocket$           [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$          [NC]
RewriteRule .* ws://127.0.0.1:30001%{REQUEST_URI}  [proxy]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1:30001%{REQUEST_URI} [proxy,last]
 
# cat htdocs-ssl/.htaccess 

DirectoryIndex disabled
RewriteEngine On
RewriteBase /   
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP:UPGRADE} ^WebSocket$           [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$          [NC]
RewriteRule .* ws://127.0.0.1:30001%{REQUEST_URI}  [proxy]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1:30001%{REQUEST_URI} [proxy,last]

Eine weitere '.htaccess'-Datei liegt direkt im Hauptverzeichnis der Domain (die überlangen Zeilen beachten):

# cd ~/doms/cryptpad.hs-example.de
# cat .htaccess 
Header Set Access-Control-Allow-Origin "https://api.cryptpad.hs-example.de"
Header Set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header Set Access-Control-Allow-Headers "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range"
Header Set Access-Control-Max-Age "1728000"
Header Set X-XSS-Protection "1; mode=block"
Header Set X-Content-Type-Options "nosniff"
Header Set Cross-Origin-Resource-Policy "cross-origin"
Header Set Cross-Origin-Embedder-Policy "require-corp"
Header Set Content-Security-Policy "default-src 'none'; child-src https://cryptpad.hs-example.de; worker-src 'self'; media-src blob:; style-src 'unsafe-inline' 'self' https://cryptpad.hs-example.de; script-src 'self' resource: https://cryptpad.hs-example.de; connect-src 'self' blob: https://cryptpad.hs-example.de https://api.cryptpad.hs-example.de wss://cryptpad.hs-example.de; font-src 'self' data: https://cryptpad.hs-example.de; img-src 'self' data: blob: https://cryptpad.hs-example.de; frame-src 'self' blob: https://api.cryptpad.hs-example.de; frame-ancestors 'self' https://cryptpad.hs-example.de;" "expr=%{REQUEST_URI} !~ m#^/(sheet|common)/#"
Header Set Content-Security-Policy "default-src 'none'; child-src https://cryptpad.hs-example.de; worker-src 'self'; media-src blob:; style-src 'unsafe-inline' 'self' https://cryptpad.hs-example.de; script-src 'self' resource: https://cryptpad.hs-example.de 'unsafe-eval' 'unsafe-inline'; connect-src 'self' blob: https://cryptpad.hs-example.de https://api.cryptpad.hs-example.de wss://cryptpad.hs-example.de; font-src 'self' data: https://cryptpad.hs-example.de; img-src 'self' data: blob: https://cryptpad.hs-example.de; frame-src 'self' blob: https://api.cryptpad.hs-example.de; frame-ancestors 'self' https://cryptpad.hs-example.de;" "expr=%{REQUEST_URI} =~ m#^/(sheet|common)/#"

Zwei Datenverzeichnisse werden angelegt und direkt ins 'htdocs-ssl' verlinkt:

cd $HOME
mkdir data
mkdir data/blob
mkdir data/block
cd $HOME/doms/cryptpad.hs-example.de/htdocs-ssl/
ln -s /home/pacs/xyz00/users/cryptpad/data/blob .
ln -s /home/pacs/xyz00/users/cryptpad/data/block .

Dieser Link muss angepasst werden, wenn der Blob-Speicher in den Zusatzspeicher unter /home/storage verschoben wird (siehe unten)!

Installation von NodeJS

Nach dieser Anleitung hier im Wiki kann mit Hilfe von 'nvm' 'node' in der Version 20 installiert werden.

Es geht aber auch ohne selbstinstalliertes Node: die Version 18 von Debian Bookworm lässt sich ebenso gut verwenden.

Installation des Cryptpad

cd $HOME
npm install -g bower
git clone https://github.com/xwiki-labs/cryptpad.git cryptpad
cd cryptpad 
# aktuelle Version nachsehen
git checkout 2024.9.0
npm install
bower install 
cd config
cp config.example.js config.js
vi config.js

Meine Konfiguration in der 'config.js':

// $ cat config.js
module.exports = {
 
   httpUnsafeOrigin: 'https://cryptpad.hs-example.de',
   httpSafeOrigin: "https://api.cryptpad.hs-example.de",
   httpAddress: '127.0.0.1',
   httpPort: 30001,
   maxWorkers: 4,
   /*
   adminKeys: [
       "[admin@cryptpad.hs-example.de/xxxxxxxxxxxxxxxxxxxxxxxx=]",
   ],
   */
   inactiveTime: 90, // days
   archiveRetentionTime: 15,
   accountRetentionTime: 365,
   maxUploadSize: 8 * 1024 * 1024,
   filePath: '/home/pacs/xyz00/users/cryptpad/data/file/',
   archivePath: '/home/pacs/xyz00/users/cryptpad/data/archive/',
   pinPath: '/home/pacs/xyz00/users/cryptpad/data/pins',
   taskPath: '/home/pacs/xyz00/users/cryptpad/data/tasks',
   blockPath: '/home/pacs/xyz00/users/cryptpad/data/block',
   blobPath: '/home/pacs/xyz00/users/cryptpad/data/blob',
   blobStagingPath: '/home/pacs/xyz00/users/cryptpad/data/blobstage',
   decreePath: '/home/pacs/xyz00/users/cryptpad/data/decrees',
   logPath: '/home/pacs/xyz00/users/cryptpad/data/logs',
   logToStdout: true,
   logLevel: 'info',
   logFeedback: false,
   verbose: false,
   installMethod: 'unspecified',
};

Der Admin-Key wird später ergänzt. Der erste registrierte User im Cryptpad kann den Schlüssel aus seinem Profil herauskopieren.

Wenn größere Datenmengen erwartet werden, kann der 'blobPath' in den Zusatzspeicher verlegt werden:

   blobPath: '/home/storage/xyz00/users/cryptpad/data/blob',

Start des Cryptpad

Ich starte das Cryptpad zunächst einfach mit dem 'nohup'-Kommando:

cd ~/cryptpad
nohup node server &

Cryptpad als Dienst starten

Die Cryptpad-Prozesse sollen von Systemd als Dienst automatisch gestartet werden.

Dazu legen wir eine Systemd-Unit an:

mkdir -p $HOME/.config/systemd/user/
vi $HOME/.config/systemd/user/cryptpad.service

Der Inhalt der Datei soll sein:

[Unit]
Description=Cryptpad
After=network.target
 
[Service]
Type=simple
WorkingDirectory=%h/cryptpad
Environment="NODE_ENV=production"
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
ExecStart=/usr/bin/node server.js
Restart=always
PrivateTmp=true
NoNewPrivileges=true
 
[Install]
WantedBy=default.target

(Die Node-Version im Pfad muss ggf. korrigiert werden)

Der Dienst wird aktiviert und gestartet mit:

systemctl --user daemon-reload
systemctl --user enable cryptpad.service
systemctl --user start cryptpad.service

weiterführende Links