Description
Retrouvez ci-dessous la traduction EN → FR de l’article “Host your Cryptpad web office suite with OpenBSD”, écrit par Solène Rapenne.
Héberger votre suite web office Cryptpad sous OpenBSD
Dans cet article, j’expliquerai comment déployer votre propre instance de Cryptpad sous OpenBSD. Cryptpad est une suite web office permettant de collaborer en temps réel sur des documents. Cryptpad est écrit en JavaScript et le démon agit en tant que serveur web.
Pré-requis
Vous avez besoin d’installer les paquets git, node, automake et autoconfig afin d’être capable de récupèrer les sources et d’exécuter le programme.
# pkg_add node git autoconf--%2.69 automake--%1.16
Un autre logiciel en amont est requis pour assurer les connexions TLS et sécuriser les accès réseaux à l’instance Cryptpad. Cela peut être relayd, haproxy, nginx ou lighttpd. Je couvre le paramétrage en utilisant httpd, et relayd. Notez que les développeurs de Cryptpad ne fournissent du support que seulement pour les utilisateurs de Nginx.
Installation
Je recommande réellement l’utilisation d’utilisateur dédié au service. Nous créerons un nouvel utilisateur par la commande :
# useradd -m _cryptpad
Ensuite, nous continuerons l’installation logiciel avec l’utilisateur
_cryptpad
.
# su -l _cryptpad
Nous suivrons principalement le guide d’installation officiel à certaines exceptions près afin d’adapter à OpenBSD :
$ git clone https://github.com/xwiki-labs/cryptpad
$ cd cryptpad
$ env AUTOMAKE_VERSION=1.16 AUTOCONF_VERSION=2.69 CC=clang CXX=clang++ npm install
$ env AUTOMAKE_VERSION=1.16 AUTOCONF_VERSION=2.69 CC=clang CXX=clang++ npm install bower
$ node_modules/.bin/bower install
$ cp config/config.example.js config/config.js
Configuration
Voici les quelques variables importantes à personnaliser :
- httpUnsafeOrigin devrait être l’adresse publique sur laquelle Cryptpad
sera disponible. Cela devrait être certainement un lien HTTPS avec un
nom d’hôte. J’utiliserais
https://cryptpad.kongroo.eu
. - httpSafeOrigin devrait être une adresse publique différente de la
précédente. Cryptpad requiert deux adresses différentes pour fonctionner.
J’utiliserais
https://api.cryptpad.kongroo.eu
. - adminEmail doit être une adresse de courriel valide utilisé par l’administrateur (certainement vous-même).
Créer un fichier rc pour démarrer le service
Nous avons besoin d’automatiser le démarrage proprement, en même temps que celui du système.
Créez le fichier /etc/rc.d/cryptpad
:
#!/bin/ksh
daemon="/usr/local/bin/node"
daemon_flags="server"
daemon_user="_cryptpad"
location="/home/_cryptpad/cryptpad"
. /etc/rc.d/rc.subr
rc_start() {
${rcexec} "cd ${location}; ${daemon} ${daemon_flags}"
}
rc_bg=YES
rc_cmd $1
Activez et démarrez le service avec le contrôleur rcctl
:
# rcctl enable cryptpad
# rcctl start cryptpad
Fonctionnement
Création d’un compte administrateur
Enregistrez-vous sur votre instance Cryptpad puis allez à la page “Settings” de votre profil : copiez votre clé public de signature.
Éditez le fichier config.js
et cherchez adminKeys
; décommentez la section
en supprimant les /*
et */
autour, puis supprimez la clé d’exemple pour
copier la vôtre, tel ce qui suit :
adminKeys: [
"[solene@cryptpad.kongroo.eu/YzfbEYwZq6Xhl7ET6AHD01w3QqOE7STYgGglgSTgWfk=]",
],
Redémarrez Cryptpad ; l’utilisateur est maintenant administrateur et a accès au nouveau panel d’administration depuis l’application web.
Sauvegarde
Vous avez besoin de sauvegarder les répertoires data
et datastore
qui
sont dans le répertoire de Cryptpad.
Configuration supplémentaire
Dans cette section, j’expliquerai comment générer votre certificat TLS avec acme-client et comment configurer httpd et relayd pour publier cryptpad. Je considère cela en plus de l’actuel article, car si vous utilisez déjà nginx, et avez une installation pour générer des certificats, vous n’en avez pas besoin. Si vous démarrez de zéro, c’est la manière la plus simple pour obtenir un résultat.
À partir de là, je considère que vous utilisez OpenBSD et que vos fichiers de configuration sont vierges.
J’utiliserai pour l’exemple le domaine kongroo.eu.
httpd
Nous utiliserons httpd d’une manière trés simple. Il écoutera seulement sur le port 80 pour tous les domaines, permettant à acme-client de fonctionner et redirigera aussi automatiquement les requêtes HTTP vers HTTPS.
# cp /etc/examples/httpd.conf /etc/httpd.conf
# rcctl enable httpd
# rcctl start httpd
acme-client
Nous utiliserons le fichier exemple par défaut :
# cp /etc/examples/acme-client.conf /etc/acme-client.conf
Éditez le fichier /etc/acme-client.conf
et changez le dernier bloc domain
;
remplacez example.com
et secure.example.com
par votre domaine, tels que
cryptpad.kongroo.eu
et api.cryptpad.kongroo.eu
en tant que nom alternatif.
Pour des raisons pratiques, nous allons remplacer le chemin du certificat
full chain pour avoir hostname.crt
au lieu de hostname.fullchain.pem
pour correspondre aux attentes de relayd.
Voici à quoi ressemble ce paragraphe sur mon paramétrage :
domain kongroo.eu {
alternative names { api.cryptpad.kongroo.eu cryptpad.kongroo.eu }
domain key "/etc/ssl/private/kongroo.eu.key"
domain full chain certificate "/etc/ssl/kongroo.eu.crt"
sign with buypass
}
Notez qu’avec le fichier acme-client.conf par défaut, vous pouvez utiliser letsencrypt ou buypass en tant qu’autorité de certification.
Vous devriez maintenant être capable de créer vos certificats.
# acme-client kongroo.eu
C’est fait !
Vous souhaitez que le certificat soit renouvellé automatiquement et que
relayd redémarre après le changement de certificat ? Comme l’indique la
page de manuel d’acme-client.conf, ajoutez ce qui suit à la crontab de root
en utilisant la commande crontab -e
:
~ * * * * acme-client kongroo.eu && rcctl reload relayd
relayd
Cette configuration est assez simple : remplacez kongroo.eu
par votre
domaine.
Créez un fichier /etc/relayd.conf avec le contenu suivant :
tcp protocol "https" {
tls keypair kongroo.eu
}
relay "https" {
listen on egress port 443 tls
protocol https
forward to 127.0.0.1 port 3000
}
Activez et démarrez relayd en utilisant rcctl :
# rcctl enable relayd
# rcctl start relayd
Conclusion
Vous devriez être capable d’atteindre votre instance Cryptpad en utilisant maintenant votre URL publique. Félicitations !