Héberger votre suite web office Cryptpad sous OpenBSD

Article publié, le et modifié le
5 minute(s) de lecture

Cet article contient 855 mots.
Source brute de l'article : MD

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 !