Guide d'installation d'un serveur Gemini

Posted on

Guide d’installation d’un serveur Gemini

Bonjour à tous,
Il y a en ce moment une certaine effervescence autour du protocol Gemini en ce moment, et certains ont peur de ce lancer dans l’aventure.

Mais avec les bons liens, commencer à creer du contenu sur le réseau est très simple. Il vous suffit de

  • Un serveur gemini (qui retourne des fichiers statiques dans notre cas)
  • Un editeur de texte

Pour ma pars j’ai choisis d’utilisé Agate comme serveur gemini. Il est simple et efficace : en une commande le serveur est lancé sur un repertoire et retournera les fichiers qui lui sont demandés. De plus c’est du rust compilé en statique (très pratique pour ma debian viellissante) on dézip un binaire et ça fonctionne.

Alternative à l’hebergement via serveur en ligne

  • Vous avez toujours la possibilité de faire tourner un serveur gemini en autohebergé à la maison (sur un raspberry pi par exemple) mais je vous souhaite bon courrage sur certaines restrictions imposé par certains opérateurs.
  • Trouvez un espace d’hebergement gemini ou vous aurez juste à téléverser votre contenu via sftp / ftp.

En voici quelques uns :

Je vous laisse chercher un peu si vous ne pouvez pas vous auto-heberger. Il y a probablement pleins de site de ce genre.

On me fait un petit rappel dans l’oreillette que des services pour outrepasser certaines restrictions réseau existent

À tester pour ceux qui veulent s’autohéberger à la maison sans être trop embêté par son réseau.

Préparation de l’environnement

Je pars du principe que vous avez déjà un VPS ou similaire avec un serveur web de configuré (apache ou nginx par exemple) avec un repertoire /var/www et un user / group www-data.

On va créer un dossier /var/gemini et le donner à l’user:group www-data.

PS je fais toutes mes commandes avec l’user root, ne faites pas ça c’est dangereux parait-il ;-) n’hesitez pas à préfixer vos commande par sudo si besoin.

mkdir /var/gemini
echo '# Hello World' > /var/gemini/index.gmi
chown -R www-data:www-data /var/gemini

Vous voila avec un repertoire et un fichier d’index ou vous pourrez mettre et lier tout vos fichiers .gmi pour alimenter le gemini space !

Téléchargement de Agate

C’est un petit binaire à télécharger dans les release github du projet. on va le placer dans le repertoire /opt idéal pour placer les binaires non-intégrés au système via le gestionnaire de paquet.

cd /opt
wget https://github.com/mbrubeck/agate/releases/download/v1.3.0/agate.x86_64-unknown-linux-gnu.gz
gunzip -d agate.x86_64-unknown-linux-gnu.gz
mv agate.x86_64-unknown-linux-gnu.gz agate
chmod +x agate

Vous voici avec le binaire executable d’agate pour un système x86–64 classique pour du VPS.

Maintenant il va falloir un certificat TLS. Pour ma pars je me suis contenté de reprendre celui fourni par let’s encrypt. Sinon vous pouvez utiliser une commande openssl pour vous auto-certifier.

Le certificat TLS

Copie de let’s encrypt

Utilisant un script pour me générer mon certificat je l’ai modifié pour me copier à un endroit ou www-data peut le lire mais que agate (ou nginx) n’ira pas risquer de fournir.

Cette commande est :

mkdir -p /var/gemini-cert
cp -rL /etc/lestencrypt/live/<nom-de-domaine>/* /var/gemini-cert/
chown -R www-data:www-data /var/gemini-cert

Le cp -L permet de copier les fichier en eux-même et non les liens symboliques. le dossier live étant un ensemble de lien symbolique, c’est à savoir.

Agate lisant le certificat à chaque requete, pas besoin de redémarer le serveur lors de l’actualisation du certificat. Un mal pour un bien.

Génération d’un certificat autogénéré

mkdir -p /var/gemini-cert
cd /var/gemini-cert
openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem \
	-days 3650 -nodes -subj "/CN=<nom-de-domaine>"
chown -R www-data:www-data .

Pensez bien à changer le CN

Le lancement test

# certif letsencrypt
/opt/agate [::]:1965 /var/gemini/ /var/gemini-cert/fullchain.pem /var/gemini-cert/privkey.pem

# certif autosigné
/opt/agate [::]:1965 /var/gemini/ /var/gemini-cert/cert.pem /var/gemini-cert/key.rsa

Ouvrez un client gemini sur votre nom de domaine et vérifier si vous avez bien le Hello World de votre index.gmi

Lancement via un daemon / service

Coupez votre serveur agate (un simple ctrl+c devrait suffire).

On va maintenant créer un service grâce à systemd. Certains l’aime, d’autre le déteste, je n’ai pas trop cherché à rentrer dans le débat. Il est utilisé dans ma version de debian, je m’en sers quand c’est opportun car bien plus simple à mes yeux que des scripts de daemon géré par d’autres system d’init.

On va donc créer un fichier agate.service pour configurer le daemon agate.

touch /etc/systemd/system/agate.service

Ouvrez ce fichier avec l’editeur de votre choix. nano, vim, emacs peu importe tant que vous savez copier-coller sauvegarder et fermer ;-) Voici le contenu à saisir dedans :

[Unit]
Description=Agate Daemon - gemini static file serve
After=network-online.target

[Service]
Type=simple

User=www-data
Group=www-data

Environment=RUST_BACKTRACE=full
# certif letsencrypt
ExecStart=/opt/agate [::]:1965 /var/gemini/ /var/gemini-cert/fullchain.pem /var/gemini-cert/privkey.pem
# certif autosigné
ExecStart=/opt/agate [::]:1965 /var/gemini/ /var/gemini-cert/cert.pem /var/gemini-cert/key.rsa

Restart=on-failure

# Configures the time to wait before service is stopped forcefully.
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target

Utilisez la bonne ligne ExecStart selon si vous utilisez letsencrypt ou un certificat autosigné.

Ensuite executez les commandes suivantes :

systemctl enable agate.service # active le service au lancement de la machine
systemctl start agate.service # démare le service

Actualisez votre page sur votre client gemini et vérifiez que ça fonctionne toujours. Si ce n’est pas le cas regardez dans les logs

journalctl -u agate.service

Les problèmes que j’avais rencontré c’était des fichiers créé en root mais que j’avais oublié de donner à www-data via chown.

Conclusion

Vous êtes maintenant paré pour écrire des articles et des pages et les diffuser sur le réseau Gemini. Au final ce n’était pas très compliqué !

Remerciements

Un grand merci à Stéphane Bortmeyer pour son article sur Gemini qui m’a guidé pour mon installation. Rien que le choix du serveur fut une aide précieuse !

À tout ceux qui on participé de prêt ou de loin à la création de gemini

Comments

You can use your Mastodon account to reply to this post.

Reply

Loading...