Bonjour, lecteur ou lectrice ! Dans ce second article, je vais vous présenter l’architecture technique qui supporte le projet Oscadia. Si vous n’avez pas lu mon premier article qui présente Oscadia, je vous invite à le faire ici.

Je présenterai cette architecture en commencant par le matériel physique, puis en m’éloignant graduellement jusqu’à présenter les applications remplissant directement les services fournis par Oscadia.

Matériel

Commençons par le commencement. Avant de pouvoir exécuter des logiciels, il est nécessaire de disposer d’un serveur pour le faire tourner. Pour plus de détail sur les critères ayant menés au choix de cette offre de serveur en particulier, vous pouvez vous référer à cette section du précédent article.

Le serveur faisant tourner le projet est un serveur dédié, c’est à dire une machine physique hébergée dans un datacenter, et sur laquelle nous sommes les seuls à héberger des ressources et des applications.

Il dispose de 16Go de RAM, de 4 coeurs de CPU, et de 3 disques SSD d’une capacité de 2To, en raid 1 (la capacité réelle est donc de 2To, mais en cas de perte d’un disque, les données s’en sortent).

À cela s’ajoute une interface réseau portant une IP publique. L’hébergeur nous promet une bande passante maximale de 250Mbps.

Il est un peu surdimensionné par rapport aux premiers besoins auxquels il va répondre, mais cela permettra de faire tourner d’autres applications dans le futur sans risque d’impacter les applications existantes.

L’avantage d’un serveur dédié réside surtout dans ses performances. En effet, toutes les ressources système (RAM, CPU, …) nous sont réservées puisque nous sommes les seuls à utiliser la machine. Le principal inconvénient est l’impossibilité d’accéder à une console par un autre biais que SSH, ce qui force à être sûr de ce qu’on fait lors des configurations réseau.

Système d’exploitation

Logo de Debian

Logo de Debian

Le système d’exploitation du serveur est Debian Buster. Il s’agit d’une distribution linux stable et que je maitrise, et c’est donc naturellement que je me suis tourné vers elle.

De plus, il est possible d’y installer Yunohost (voir plus bas), qui permet de simplifier grandement les différentes tâches d’administration du serveur.

La plupart de la configuration du système est donc gérée par Yunohost. J’ai néanmoins modifié la configuration du serveur SSH afin de ne permettre que la connexion par clé.

Suivi de l’état du serveur

C’est la première fois qu’un serveur que j’administre est utilisé par d’autres personnes que moi. Afin de limiter les risques de problèmes passant inapercus, j’ai décidé de mettre en place un suivi du serveur en utilisant le logiciel telegraf et le protocole SNMP pour récupérer différentes métriques (utilisation du CPU, de la RAM, de l’interface réseau, occupation du disque …).

Elles sont stockées dans une base de donnée influxdb, et le logiciel Grafana permet de les visualiser.

La mise en place de ce suivi fera l’objet d’un article à part.

Applications

Les applications installées sur Oscadia sont décrites ci-après. Je ferais probablement des articles individuels sur l’installation et la configuration de certaines d’entre elles dans le futur.

Yunohost

Logo de Yunohost

Logo de Yunohost

Yunohost est un projet permettant d’héberger facilement des applications web (voir ici pour une liste des applis supportées), et de gérer les comptes des utilisateurs. Le but de l’équipe qui le développe et le maintien est de démocratiser l’autohébergement, en le rendant accessible à tous, même sans grandes connaissances en administration système. En somme, de redécentraliser Internet. Vous pourrez trouver une description de Yunohost sur le site officiel du projet.

Sa documentation est très complète, et il embarque un certain nombre de composants nécessaires à la gestion des applications webs qui seront hébergées sur Oscadia. Il comprend notamment :

  • Un serveur mail,
  • Un serveur LDAP, qui permet de gérer les identités et les accès des utilisateurs,
  • Une interface de gestion du pare-feu du système,
  • Un système de gestion et de restauration de sauvegardes.

Il permet d’automatiser la configuration des différents logiciels (serveur web, serveur de gestion de base de donnée, …) nécessaire au bon fonctionnement de chaque application. Ainsi, lors de l’installation d’un paquet applicatif via Yunohost, tout ces logiciels sont automatiquement installés et configurés. Yunohost permet aussi de gérer des certificats SSL Let’s Encrypt, afin de proposer les services en HTTPS avec un certificat valide et reconnu par tous les navigateurs.

Enfin, l’équipe de développement est ouverte aux contributions de la communauté, et très réactive. La plupart des problèmes ont une solution qui peut être retrouvée sur le forum de la communauté. De plus, les nouveaux problèmes trouvent souvent rapidement une solution sur ce forum.

C’est avec l’aide de Yunohost que j’ai installé les applications décrite plus bas.

Nextcloud

Logo de Nextcloud

Logo de Nextcloud

Nextcloud est un logiciel libre de stockage et de partage de fichier en ligne. Il possède un grand nombre de fonctionnalités permettant de collaborer avec d’autres personnes, de synchroniser contacts et calendrier entre un ou plusieurs ordiphones ou ordinateurs, et bien d’autres encore.

Grâce à un magasin d’applications, qui fonctionnent comme des plugins, il est possible d’étendre encore les fonctionnalités du logiciel.

Puisque je l’ai installé à l’aide du paquet Yunohost approprié, la base d’utilisateur de Nextcloud est directement liée aux utilisateurs créés sur Yunohost. Il suffit donc de créer un utilisateur dans Yunohost pour qu’il soit ajouté aux utilisateurs de Nextcloud (et aux utilisateurs des autres applications hébergées sur le serveur).

J’ai effectué quelques personnalisations de la configuration par défaut, notamment au niveau des options de partage de fichier par lien (en activant un mot de passe par défaut, pour inciter les utilisateurs à protéger leurs données), et au niveau de l’apparence de l’application.

OnlyOffice

Logo d'OnlyOffice

Logo d’OnlyOffice

Puisque le serveur est assez puissant pour cela, j’y ai installé un logiciel permettant l’édition collaborative de documents en ligne, à la manière de Google Cloud.

Dans ce domaine, il existe deux logiciels libres qui sortent rapidement du lot: Collabora et OnlyOffice. Les fonctionnalités des deux applications sont similaires, et très honnêtement, je me suis tourné vers OnlyOffice car il y avait déjà un paquet permettant de l’installer avec l’aide de Yunohost.

OnlyOffice permet de créer et de modifier des documents de traitement de texte, des tableurs et des diaporamas. Les fichiers sont, à mon grand regret, enregistrés dans les formats de Microsoft (.docx, .xlsx, .pptx), mais il est possible de les exporter au format OpenDocument. Enfin, il est possible d’éditer les documents de manière collaborative, en utilisant le système de partage de Nextcloud (par lien ou directement via Nextcloud) pour gérer les permissions d’édition.

L’installation est rendue très facile grâce à Yunohost. Il faut nécessairement l’installer sur un sous domaine différent de celui de l’instance Nextcloud, mais ensuite, la configuration se limite à l’installation de l’application OnlyOffice dans Nextcloud, et à la configuration de l’adresse et du port du serveur OnlyOffice dans cette application.

L’application OnlyOffice dans Nextcloud permet d’éditer les fichiers directement depuis l’interface de Nextcloud, à l’aide du menu contextuel.

Sauvegardes

Afin de permettre une reprise du service en cas de sinistre (et l'actualité récente nous a montré que ça n’arrive pas qu’aux autres), il est nécessaire de sauvegarder régulièrement les donnés du serveur.

Pour cela, je tire avantage des 100Go d’espace de stockage de sauvegarde proposé par le fournisseur du serveur dédié pour y placer l’archive contenant la configuration des applications générée par Yunohost.

Cependant, cet espace n’est pas suffisant pour stocker les données des utilisateurs d’Oscadia. La bonne pratique est de toujours conserver une donnée importante à plusieurs endroits, par exemple :

  • Sur l’ordinateur d’origine
  • Sur un espace de stockage en ligne (comme Oscadia)
  • Sur un espace de stockage “à froid”(comme un disque dur externe)

Selon ce principe, en cas de disparition brutale et violente d’Oscadia, les données devraient toujours exister à leurs autres emplacements. Cependant, et afin de minimiser le risque de perte de donnée, je suis en train de monter un NAS avec un espace de stockage de 4To qui me permettra, à terme, d’y déposer une archive chiffrée de toutes données hébergées sur Oscadia.

Pour approfondir sur les sauvegardes, cet article donne plus de détails sur les bonnes pratiques à respecter pour conserver vos données en sécurité.

Conclusion

Voilà tout pour l’architecture technique!

Merci d’avoir lu jusque là. Si vous avez des questions, n’hésitez pas à utiliser l’espace commentaire ci-dessous.

D’autres applications vont probablement s’ajouter à celles présentées plus haut dans les mois à venir, mais je me suis limité dans cet article à celles qui tournent actuellement en production.