Jélatine

Nextcloud

Petit point annuel sur mon environnement numérique qui me permet d'héberger un certain nombre de services (si je m'y tiens, je m'impressionnerai tout seul...).

Matériel

Toujours le vieux XPS de 2015 derrière la Freebox. Rien n'a vraiment changé finalement. On peut dire qu'il est amorti !

Logiciel

La base n'a pas changé non plus (à part les versions bien sûr) : Fedora Server sur le XPS – que j'administre à partir de l'interface web Cockpit –, qui gère une machine virtuelle #Yunohost.

Ce Yunohost gère quant à lui deux domaines, le perso calut.fr et un autre pro, avec les e-mails bien sûr.

Blog

J'ai laissé tombé Pelican pour WriteFreely. J'aimais beaucoup le côté statique de Pelican, et ma bidouille pour le faire marcher avec Nextcloud était presque pas trop mal. Mais force est de constater que je ne m'en suis pas servi !

Avec #WriteFreely, je me dis que la diffusion sur le fediverse me motivera un peu plus. J'ai rapatrié mes posts #Pelican (il y a une fonction d'import, pas trop d'effort à fournir), l'interface est ultra-sobre... On verra !

Microblog

Plus ça allait, et plus mon instance #Misskey me faisait soucis. Le “Drive” intégré ne me permettait plus de télécharger des fichiers, plus de photos à partager donc, plus d'image de profil, et la documentation est peu instructive tout comme les fils des tickets github.

Après tergiversations et scrutation du catalogue yunohost, j'ai décidé de migrer vers une instance #mastodon. @djelouze@social.calut.fr est donc devenu @djelouze@mstdn.calut.fr, parce que je n'ai pas trouvé le moyen de conservé le sous-domaine social.

La migration n'a pas été compliquée, à part quelques bidouillages côté misskey pour l'export des abonnements. J'y reviendrai dans un autre post je pense.

Cloud

#Nextcloud est toujours en service, c'est la plus vieille application de mon yunohost et je lui ai adjoint #Collabora pour de l'édition WYSIWYG.

Gestionnaire de mot de passe

Je suis en train de passer de KeepassXC (que j'utilisais sur mes différents terminzux grâce à nextcloud) à Vaultwarden, un fork de Bitwarden. Le but est de proposer le service à une personne que je ne vois pas gérer des synchronisations nextcloud.

En vrac

  • Dépôt de code : #Forgejo est très mieux, j'en ai deux, mais je les utilise peu
  • Funkwhale, toujours là, je n'utilise pas la fédération pour l'instant
  • Calibre-web pour partager mes livres avec mes collègues
  • Dolibarr pour la gestion de ma petite entreprise
  • SoGo pour que le fiston puisse aller voir ses mails de partout
  • Kresus pour la gestion des finances quotidiennes
  • Et plein d'autres que je teste !

Une mise en veille (un peu) longue

Ceci n'est pas un billet technique

Ou pas que. La sortie d'hibernation concerne uniquement ce blog, qui n'a pas eu de nouveau billet depuis 2 ans. Et il s'en est passé, des choses, depuis...

(À commencer par ma reprise d'étude, que j'espérais raconter depuis la décision en 2021!)

Évolution de mon auto-hébergement

Donc voyons voir. À l'époque, je me lançais dans l'auto-hébergement. Une machine à la maison (XPS de 2015) derrière une freebox pour différents services ludiques, un VPS chez hetzner pour un nextcloud familial et un nom de domaine chez gandi qui gérait également mes mails.

Le XPS est sur une Fedora server pour gérer quelques machines virtuelles, dont une Yunohost – et c'est la seule, finalement !

Yunohost a fait largement ses preuves depuis, et je ne l'ai pas épargné : installation d'applications en tout genre “pour voir”, désinstallation évidemment parce que “en fait je m'en sers pas”, serveur minetest pour l'ado qui finalement préfère fortnite sur switch, mon instance Misskey qui me relie au fédivers,...

La première grande évolution a été de laisser Yunohost gérer mes mails perso, Gandi ne devenant plus qu'un fournisseur de nom de domaine. Ça fait maintenant plus d'un an que c'est le cas. Je n'ai pas souvenir de problème de configuration, éventuellement quelques passages en spam chez quelques destinataires, mais rien d'alarmant.

La deuxième évolution importante : rapatrier mon nextcloud (et accessoirement un serveur Calibre et ce blog) à la maison pour fermer le VPS et faire quelques économies. Encore une fois, Yunohost gère très bien Nextcloud, Pelican et Calibre-web donc à part le temps de transfert des données ça n'a pas été très difficile[1]. J'ai juste fait attention avec les enregistrements DNS, les IP ayant changé ! Et justement...

Dernière évolution : le passage de Gandi à Infomaniak pour le nom de domaine. Là, j'ai perdu un peu de confort, car Yunohost gére automatiquement les enregistrements DNS avec Gandi. Ce n'est pas le cas (pour l'instant ?) avec Infomaniak. J'ai commencé par exporter les enregistrements Gandi, effectuer le transfert vers infomaniak, puis mettre à jour quelques enregistrements. Et voilà (en anglais dans le texte).

Aujourd'hui

Pour résumer, tout est chez moi sur un PC de 10 ans d'âge. Le serveur Fedora avec son interface Cockpit ne gère qu'une seule VM Yunohost, aussi je me tâte à tout simplement installer Yunohost directement sur la machine. Mais je dois avouer que pour les sauvegardes, faire un petit snapshot de la VM de temps en temps, c'est facile quand même 😅

Le passage à Yunohost 12 a quand même fait une victime collatérale : mon instance Funkwhale[^2], que j'appréciais pour écouter mes musiques ailleurs que chez moi. Je n'ai pas le temps de m'occuper de ça, et heureusement mon audiothèque est intacte. Pour l'instant, je laisse Nextcloud me proposer son player mais j'aimais bien le côté fédéré de funkwhale.

Depuis mes migrations récentes, Yunohost gère aussi mon nom de domaine pro, ses mails, son nextcloud et son dolibarr. Encore une fois, rien à redire. J'ai remplacé Gitea par Forgejo, sans avoir eu l'occasion de tester.

Pour ce blog, j'ai tâtonné concernant les droits d'accès des fichiers de façon à pouvoir synchroniser les fichiers “sources” de Pelican avec Nextcloud. C'est chose faite : j'édite les billets en markdown sur ma machine (j'ai installé et découvre Apostrophe[^3] qui est très bien) ou directement dans le navigateur depuis mon nextcloud. Quand je sauvegarde, les fichiers HTML du blog sont générés automatiquement. J'aurais voulu passer à WriteFreely pour la fédération, mais une erreur m'empêche de l'installer sur Yunohost.

Plus tard...

La prochaine étape serait de migrer mon Misskey (ma porte d'entrée vers le fedivers) vers une instance Pleroma, mais l'application n'est plus disponible sur Yunohost. J'ai été déçu par une mise à jour récente, qui m'a imposé des fonctionnalités de gamification qui ne m'intéressent pas. Mais je n'ai pas le courage/temps/argent d'installer un autre serveur.

Dorénavant ce serveur auto-hébergé qui tourne comme une horloge va servir surtout à soutenir ma reprise d'étude. Je tenterai donc quelques expériences qui lient médecine, cours, et informatique (serveur d'image médicale, différents projets autour de Anki pour la préparation du concours EDN,...)

[1]: Je ne me suis pas lancé dans une migration de serveur : sur le VPS, l'installation avait été faite “à la main”, et je préfère laisser Yunohost gérer la configuration à la maison. Donc transfert “à l'ancienne” du répertoire nextcloud-data et resynchronisation finale. [^2]: C'est un problème connu, et la solution est... d'attendre :) [^3]: Dépôt gnome d'Apostrophe

#selfHosting #yunohost #nextcloud #pelican

Nextcloud et Pelican sont sur un bateau. Le https de Pelican tombe à l'eau, qui l'a poussé ?

Contexte

J'ai un VPS chez Hetzner et mon nom de domaine chez Gandi. Par confort d'utilisation, c'est une Fedora qui tourne sur le VPS. Après plusieurs années d'utilisation d'une instance Nextcloud sur un Simple Hosting Gandi, j'ai voulu passer au niveau supérieur et gérer un serveur intégralement. La migration s'est plutôt bien passée : j'ai maintenant une instance Nextcloud sur mon VPS et j'y ai retrouvé toutes mes données[^1]. Le serveur http est Apache, encore une fois pour confort personnel.

J'ai directement configuré Nextcloud pour être servi via https en utilisant les outils recommandés dans la documentation de Nextcloud, en particulier certbot pour générer un certificat Let's encrypt.

Sans mettre les mains dans le cambouis, j'ai une configuration qui semble opérationnelle. Une redirection permanente permet, en bonus, de servir uniquement du https quand le navigateur pointe vers http.

Le début des problèmes

Ce modeste blog vous est généré grâce à Pelican (cf À propos). Il s'agit donc d'un site statique, tout ce qu'il y a de plus basique à gérer pour un serveur Apache. Aucun inconvénient à ce qu'il cohabite sur le même serveur que Nextcloud, d'autant que je voulais justement faire interagir les deux[^2]. Je me retrouve alors avec deux racines de site :

  • /var/www/html/nextcloud
  • /var/www/html/pelican

J'ajoute un fichier de configuration pour le site .../pelican en me basant sur /etc/httpd/conf.d/nextcloud.conf mais en gardant uniquement ce que je connais : la configuration de Nextcloud a été plutôt transparente, et je ne maitrise pas les sections concernant les réécriture d'URL et les proxy. Tout au plus, je sais que je n'en ai pas besoin pour un site de simple facture. Ce qui donne :

<VirtualHost *:80>
  DocumentRoot /var/www/html/pelican/
  ServerName  djelly.calut.fr
  Redirect permanent / https://djelly.calut.fr/
  <Directory /var/www/html/pelican/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews
  </Directory>
</VirtualHost>

J'ai alors dans mes fichiers de configuration http un pelican.conf (ci0-dessus) et un nextcloud.conf qui ressemble à celui-ci, mais pointant vers le DocumentRoot correct et un sous-domaine différent de djelly. Nul doute que les yeux avertis auront déjà repéré une bévue, mais ce n'est pas mon cas.

Constat amiable

Après redémarrage du serveur apache sudo service httpd restart, la partie nextcloud est toujours fonctionnelle : http://... renvoie bien vers https://..., et les différentes synchronisations en place (contact sur Android, calendrier, fichiers en local) sont toujours actives.

Par contre, http://djelly.calut.fr redirige bien vers https://djelly.calut.fr, mais c'est le index.php de Nextcloud qui est affiché[^3] ! À noter que la navigation sur le site nextcloud à partir de ce sous-domaine est impossible :

Accès à partir d'un domaine non approuvé

Veuillez contacter votre administrateur. Si vous êtes un administrateur, éditez la variable “trusted_domains” dans le fichier config/config.php comme l'exemple dans le fichier config/config.sample.php.

Vous trouverez d'autres informations sur la configuration dans la documentation .

Je renomme nextcloud.conf en nextcloud.conf.old puis redémarre le service httpd (de cette manière, il ne prendra pas en compte la configuration nextcloud). J'avais dans l'idée que http://xxx.calut.fr ne serait plus accessible. Que nenni ! Il renvoie vers toujours vers https://djelly.calut.fr/index.php

Donc de nouveau un fichier appartenant au DocumentRoot de nextcloud, mais avec le sous-domaine de ce site (djelly). Bien sûr, je parle de Pelican, mais il n'y est pour rien. D'ailleurs, il n'est même pas installé sur le VPS. Il ne fait que générer localement les fichiers html. Le problème se situe au niveau de la configuration Apache, j'en suis convaincu.

Configuration SSL

J'ai noté que les VirtualHostnextcloud et pelican sont définis pour le port 80... Mais où est donc 443, le port utilisé pour servir https ? Le répertoire /etc/httpd/conf.d contient un ssl.conf. Il ne fallait pas chercher bien loin ! On trouve assez rapidement :

<VirtualHost _default_:443>

# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html/nextcloud"
ServerName xxx.calut.fr:443
...

Qu'est-ce que _default_:443 comparé à *:80 ? “RTFM!”[^3] ! Où l'on apprend que “La chaîne _default_, dont la signification est identique à celle du caractère * [...]“. Rien à voir de ce côté là, donc. Mais par contre, je n'ai aucun VirtualHost pour un ServerName djelly.calut.fr:443... et pourquoi le sous-domaine djelly renvoie sur le VirtualHost nextcloud ?

Je supprime la ligne Redirect permanent / https://djelly.calut.fr/> de pelican.conf, et on commence à retrouver quelque chose de normal :

  • http://djelly.calut.fr sert bien ce site, en http donc
  • https://xxx.calut.fr est bien mon instance nextcloud

Mais ! – https://djelly.calut.fr sert toujours le index.php de nextcloud – http://xxx.calut.fr sert le index.html de ce site!!

Je reste dubitatif : si le <VirtualHost *:80> n'existe pas pour ServerName xxx.calut.fr, pourquoi est-il quand même interprété comme DocumentRoot ".../pelican" ? En testant avec un sous-domaine inexistant, j'ai bien une erreur de mon navigateur qui ne trouve pas le site.

Je pense, tout candide que je suis, que ma configuration DNS entre en jeu ici. J'ai :

  • une entrée type A pour xxx qui renvoie vers l'IP de mon VPS
  • une entrée type A pour djelly qui renvoie vers l'IP de mon VPS
  • pas d'entrée pour yyy

Petite analyse :

  • J'ai une erreur pour yyy.calut.fr : normal, le navigateur ne sait pas où aller chercher les fichiers
  • http://xxx ou http://djelly renvoient tous les deux vers /var/www/html/pelican
  • https://xxx ou https://djelly renvoient tous les deux vers /var/www/html/nextcloud

On dirait que le VirtualHost de djelly écrase celui de nextcloud...

La réponse !

Tout ça pour ça : en plus de ServerName, il faut aussi ServerAlias...

Je récupère un certificat let's encrypt pour djelly.calut.fr et sépare le fichier ssl.conf en 3 fichiers différents :

  • ssl.conf garde la configuration globale du SSL de ce serveur apache
  • ssl-nextcloud.conf déclare le VirtualHost pour nextcloud
  • ssl-pelican.conf déclare le VirtualHost pour ce site, en modifiant simplement les références à nextcloud et xxx pour correspondre à djelly.

Je réactive la redirection permanente pour pelican.conf, redémarre httpd, et tout fonctionne à merveille.

Ce n'était pas si compliqué. Mais je ne sais toujours pas pourquoi ServerName ne suffit pas.

[^1]: Je ne suis pas passé par la migration de base de donnée documentée. J'ai simplement synchronisé mes comptes localement, installer le nouveau Nextcloud, et resynchronisé en changeant le nom du serveur. [^2]: Voir le billet Le choix d'un moteur de blog [^3]: Read The Fantastic/Funny/... Manual

#Web #SSL #Pelican #Nextcloud #selfHosting