Blog de dada

DevOps, bidouilleur et routard plein de logiciels libres

Planet-Libre

Nextcloud, PHP-FPM, Nginx et Kubernetes

Rédigé par dada / 14 janvier 2019 / 6 commentaires




Ma première installation de Nextcloud dans Kubernetes était basée sur l'image Docker contenant Apache2. Aucun souci notable au niveau de la synchro des agendas, des fichiers ou encore des contacts. Par contre, la génération des miniatures des photos s'est révélée être un drame : Apache s'emballait et entraînait le nœud sur lequel il tournait avec lui, dans la tombe. Il me fallait une solution, j'ai donc décidé de changer de conteneur et de prendre celui basé sur PHP-FPM.

Un pod avec deux conteneurs

On entend souvent la rumeur racontant qu'un pod ne contient qu'un conteneur. C'est souvent vrai, mais c'est aussi faux. Dans l'exemple qui va suivre, le pod gérant Nextcloud contiendra le conteneur officiel de Nextcloud et un conteneur Nginx.

Contexte

Pour suivre, sachez que mon cluster, celui grâce auquel vous lisez ces quelques lignes, gère son système de fichier avec Rook, dont j'ai déjà parlé ici. Mes nœuds sont chez Hetzner, ce sont des CX21, du cloud public donc, et mes services sont exposés en NodePort derrière un Nginx configuré en LoadBalancer. Maintenant que vous savez ça, on peut y aller.

Le Deployment

On va commencer par balancer le Yaml qui marche :
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nextcloud-deployment
spec:
  selector:
    matchLabels:
      app: nextcloud
  replicas: 1
  template:
    metadata:
      labels:
        app: nextcloud
    spec:
      containers:
      - name: nginx
        image: nginx:1.15
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-config
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
        - name: pv-nextcloud
          mountPath: /var/www/html
        lifecycle:
          postStart:
            exec:
             command: ["bin/sh", "-c", "mkdir -p /var/www/html"]
      - name: nextcloud
        image: nextcloud:14.0-fpm
        ports:
        - containerPort: 9000
        volumeMounts:
        - name: pv-nextcloud
          mountPath: /var/www/html
        resources:
          limits:
            cpu: "1"
      volumes:
      - name : nginx-config
        configMap:
           name: nginx-config
      - name: pv-nextcloud
        flexVolume:
          driver: ceph.rook.io/rook
          fsType: ceph
          options:
            fsName: myfs
            clusterNamespace: rook-ceph
            path: /nextcloud2

Il n'y a pas le Service associé pour la simple et bonne raison que chacun fait comme il le veut. Si vous êtes chez DigitalOcean, OVH ou chez un des GAFAM qui propose du k8s, vous aurez un LoadBalancer qui va bien. Si vous êtes comme moi, vous êtes réduit à faire du NodePort.

Ce qu'il faut comprendre

Vous remarquerez qu'il y a deux conteneurs : Nginx et Nextcloud-FPM. Nginx écoute sur le port 80 et va router le trafic à travers vers le port 9000 du conteneur de Nextcloud.

Nginx

      - name: nginx
        image: nginx:1.15
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-config
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
        - name: pv-nextcloud
          mountPath: /var/www/html
        lifecycle:
          postStart:
            exec:
             command: ["bin/sh", "-c", "mkdir -p /var/www/html"]
On va faire gober à Nginx deux points de montage : sa configuration et les sources de Nextcloud. Sans les sources de l'application, Nginx ne pourra pas avoir accès aux fichiers PHP, et ne servira donc à rien. On va donc prendre le point de montage originalement dédié à Nextcloud pour le monter une deuxième fois dans un deuxième conteneur, celui de Nginx.

Lifecycle

Remarquez la présence de la section lifecycle, elle permet d’exécuter ce que vous voulez au démarrage du conteneur. Quand j'apprenais à me servir de ce couple, je ne comprenais pas pourquoi Nginx ne voulait pas correctement fonctionner. J'ai passé du temps à comprendre que le conteneur Nginx et le conteneur Nextcloud n'avaient pas le même docRoot :
  • Nginx : /srv/html
  • Nextcloud : /var/www/html
Comprenez que les requêtes Nginx allaient chercher des fichiers dans /srv/html/blabla.php quand Nextcloud annonçait la présence de ses sources dans /var/www/html/blabla.php. Le bordel.

C'est là que je n'ai trouvé pas idiot l'idée de créer le chemin manquant au démarrage du pod avec un postStart. Du coup, j'avais Nginx et Nextcloud au diapason. Il est sans doute possible de configurer Nginx pour surcharger son docRoot, mais c'était l'occasion de jouer avec des commandes en amont de la création d'un conteneur.

Les deux points de montage

On a donc un point de montage pour les sources de Nextcloud :
        - name: pv-nextcloud
          mountPath: /var/www/html
Et un point de montage pour la configuration de Nginx :
        - name: nginx-config
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf

Là aussi, j'ai perdu un peu de temps avant de comprendre qu'il fallait balancer toute la configuration de Nginx et pas seulement ce que j'ai l'habitude de mettre dans les sites-enabled. C'est du moins à faire quand on écrase le nginx.conf du pod. En y réfléchissant, c'est sans doute plus simple de modifier le point montage pour n'ajouter qu'un fichier dans le fameux sites-enabled.

Pour gérer la configuration de Nginx, je passe par une ConfigMap :
kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
data:
  nginx.conf: |
    worker_processes  1;

    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;

    events {
        worker_connections  1024;
    }

    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;

        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;

        sendfile        on;
        #tcp_nopush     on;

        keepalive_timeout  65;

        #gzip  on;

        server {
            listen 80;

            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block";
            add_header X-Robots-Tag none;
            add_header X-Download-Options noopen;
            add_header X-Permitted-Cross-Domain-Policies none;
            add_header Referrer-Policy no-referrer;

            root /var/www/html;

            location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
            }

            location = /.well-known/carddav {
                return 301 $scheme://$host/remote.php/dav;
            }
            location = /.well-known/caldav {
                return 301 $scheme://$host/remote.php/dav;
            }

            # set max upload size
            client_max_body_size 10G;
            fastcgi_buffers 64 4K;

            # Enable gzip but do not remove ETag headers
            gzip on;
            gzip_vary on;
            gzip_comp_level 4;
            gzip_min_length 256;
            gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
            gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

            location / {
                rewrite ^ /index.php$request_uri;
            }

            location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
                deny all;
            }
            location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
                deny all;
            }

            location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                # fastcgi_param HTTPS on;
                #Avoid sending the security headers twice
                fastcgi_param modHeadersAvailable true;
                fastcgi_param front_controller_active true;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_intercept_errors on;
                fastcgi_request_buffering off;
            }

            location ~ ^/(?:updater|ocs-provider)(?:$|/) {
                try_files $uri/ =404;
                index index.php;
            }

            # Adding the cache control header for js and css files
            # Make sure it is BELOW the PHP block
            location ~ \.(?:css|js|woff|svg|gif)$ {
                try_files $uri /index.php$request_uri;
                add_header Cache-Control "public, max-age=15778463";
                add_header X-Content-Type-Options nosniff;
                add_header X-XSS-Protection "1; mode=block";
                add_header X-Robots-Tag none;
                add_header X-Download-Options noopen;
                add_header X-Permitted-Cross-Domain-Policies none;
                add_header Referrer-Policy no-referrer;

                # Optional: Don't log access to assets
                access_log off;
            }

            location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
                try_files $uri /index.php$request_uri;
                # Optional: Don't log access to other assets
                access_log off;
            }
        }

    }
Eh oui, il y a tout dedans. Ça déforme l'affichage de ce billet, m'enfin. C'est une configuration Nginx classique.

On peut quand même s'arrêter sur la configuration du fastcgi_pass : il tape sur le 127.0.0.1 et le port 9000 du conteneur Nextcloud. Je n'ai pas encore gratté pour comprendre le pourquoi du comment mais je suppose que les deux conteneurs tournant dans le réseau du pod, ils se comportent comme deux services dans une seule et même machine. À confirmer.

On apply tout ça

Attention ! Avant de balancer le Deployment, balancez le yaml de la ConfigMap. Sans ça, Nginx ne chargera pas votre configuration !
dada@k8smaster1:~$ kubectl apply -f configmap.yaml
dada@k8smaster1:~$ kubectl apply -f nextcloud.yaml
Si tout se passe bien, vous devriez pouvoir voir ça :
dada@k8smaster1:~$ kubectl get pods
nextcloud-deployment-d6cbb8446-87ckf   2/2     Running   0          15h
Remarquez que Kubernetes vous montre bien qu'il y a deux conteneurs dans ce pod : 2/2.

Pour aller plus loin

Je ne parle pas des vérifications de l'état des conteneurs. Il faudrait placer des sondes liveness et readness pour parfaitement vérifier l'état des conteneurs. Sans ça, si l'un des services tombe, Kubernetes ne sera pas forcément en mesure de le détecter et de relancer le pod.
Il est aussi possible, pour respecter le concept de micro-service, de ne pas concaténer deux conteneurs dans un seul pod mais de faire un pod par conteneur et des services associés. Ça demande plus de travail pour un résultat qui, dans mon cas, n'apporte pas grand chose.

Retours sur /e/ dans un OnePlus 5T

Rédigé par dada / 26 novembre 2018 / 16 commentaires



C'est donc un dimanche soir, vers 18h, que j'ai décidé de faire ce que j'avais quasiment juré d'arrêter : changer l'OS de mon téléphone.
Je fais partie de celles et ceux qui se sont jetés sur FirefoxOS en y croyant, puis sur Ubuntu Touch, en y croyant déjà moins. L'expérience des abandons et des échecs m'avait pourtant bien fait comprendre que les OS alternatifs sur un objet aussi important que le mobile étaient une mauvaise idée. Et pourtant. Merci Monseigneur.

/e/ ?

Ne me demandez pas comment ça se prononce. Pas la moindre idée. C'est pourtant un OS alternatif basé sur Android dont on entend souvent parler sur Mastodon. N'essayez pas de retrouver le hashtag qui va bien, le nom de l'OS ne permet pas d'en faire une pub correcte. C'est le compte de Gaël Duval qu'il faut suivre pour se tenir informé.
Pour plus d'informations, je vous redirige vers le site officiel de la fondation derrière ce projet. Il faut simplement retenir que l'OS se veut respectueux de la vie privée : ciao les Google Apps, Services et autres cochonneries installées de force dans votre mobile.

/e/ est un projet à but non lucratif, dans l’intérêt de tous. Nous concevons des systèmes d’exploitation mobile open source et des services en lignes associés, qui respectent la vie privée et les données personnelles de chacun.
Nous sommes une équipe internationale d’entrepreneurs expérimentés, de développeurs et de designers, qui s’appuie sur une communauté de contributeurs grandissante.

À quoi ça ressemble ?

 

Pas grand-chose à raconter. C'est une version propre d'Android avec un thème et un jeu d'icônes personnalisés.

Les applications par défaut

On retrouve les grands classiques bien connus des libristes :
  • K9Mail pour gérer les mails
  • Signal et Telegram pour les SMS & co
  • Chrome (Chromium ?) comme navigateur par défaut
  • Davdroid pour gérer les carnets d'adresses distants
  • Etar pour le calendrier
  • Notes pour la prise de notes
  • Tasks comme gestionnaire de tâches
  • Magic Earth pour le GPS
  • Nextcloud comme gestionnaire de fichiers
  • Open Camera pour la photo
Personnellement, je ne comprends pas le choix de Chromium. Je reste un adorateur de Mozilla, avec tous les travers que cela entraîne.
Leur navigateur vient avec une configuration particulière : il a pour moteur de recherche par défaut l'instance Searx de la /e/ Foundation.

Sous le capot

Sous le capot, on retrouve une version 8.1.0 d'Android avec les correctifs de sécurité datés du 5 novembre. En passant par la page d'installation de l'OS, on remarque que c'est effectivement une version de LineageOS remastérisée à la sauce /e/. Mastodon me raconte qu'un OS débarrassé des services Google et avec des services de synchronisation, ça existait : CyanogenMod.

Des services ?

Un mail

Si vous en faites la demande, ça n'a rien d'obligatoire, vous pouvez demander la création d'un compte en @e.email. Ce faisant, vous obtiendrez une nouvelle adresse à ajouter entre celle qui sert pour le boulot, la Gmail à spam et la Protonmail qui va bien. Une fois le compte créé, c'est sur un Rainloop que vous allez atterrir.


Sauvegarde des comptes et fichiers



J'ai l'impression qu'ils ont une instance Nextcloud sur leurs serveurs. La liste des applications permet de ne pas trop en douter. C'est une solution simple et bien supportée pour synchroniser tout le contenu important d'un téléphone moderne.

Le magasin d'applications

Là, j'ai un peu froncé les sourcils : il n'y a pas de store par défaut. Si vous en voulez un, c'est à vous d'aller le choper en passant par le navigateur. C'est une manipulation marrante : lancer le navigateur pour aller taper sur une instance Searx et enfin télécharger, disons, F-droid, c'est un truc qu'on ne fait pas souvent.

F-droid

Une fois installé à la main, F-droid ne pose pas de problème. Tout roule. J'ai installé une version complète de Nextcloud, Fennec (Firefox), Maps, Silence pour mes SMS et Tusky.

Aurora Store

C'est encore sur Mastodon qu'on m'a conseillé ce store. Aurora est un fork de Yalp. Il permet d'aller récupérer sereinement vos applications uniquement disponibles sur le Play Store de Google.  J'ai réussi à installer mes applications critiques : ProtonMail, ProtonVPN, les applications SNCF et celle de ma banque. Et ça marche. Au choix, vous pouvez vous connecter avec votre compte Google pour retrouver les applications que vous auriez achetées ou passer par leur service anonyme.

Des soucis ?

À l'installation de Tusky, le navigateur qui vient avec /e/ ne m'a pas permis d'autoriser la connexion à mon instance. J'ai dû installer Fennec depuis F-droid et le configurer comme navigateur par défaut pour y arriver.
Autant j'ai réussi à installer des applications du Play Store depuis Aurora sans problème et réussir à m'en servir, autant l'application Qobuz s'est lamentablement vautrée. Rien à faire, elle ne démarre pas. Moi qui envisageais de m'y abonner pour de bon, c'est mal barré. C'est corrigé.

Est-ce que c'est vraiment utilisable ?

OnePlus 5T

Pour le moment, pas grand-chose à signaler. /e/ fonctionne et permet de renouer avec un Android propre. Mon téléphone supporte bien la chose. Même le lecteur d'empreinte fonctionne. J'aimerais bien réussir à le configurer non pas pour qu'il lise le bout de mes doigts mais pour m'en servir comme pavé tactile. Je n'ai pas encore retrouvé l'option.
Au niveau de l'appareil photo, chose pour laquelle j'avais décidé d'acheter un OnePlus 5T, je doute qu'on retrouve le même niveau de qualité que sur OxygenOS. Par exemple, je ne retrouve pas la possibilité de passer par le zoom optique du deuxième capteur. Après, je ne m'en sers jamais. Quant à l'application Open Camera, elle semble quand même fournir une foule d'options intéressantes. N'oubliez pas d'aller régler la résolution à fond dans les options si vous vous voulez retrouver quelque chose qui se rapproche de ce que vous aviez avant.

En général

Avant de vous lancer dans l'aventure, n'oubliez pas que l'absence de Play Store va vous pénaliser d'une façon ou d'une autre. L’intégration de MicroG permet de vivoter mais n'apporte pas de miracle. Les applications sont de plus en plus dépendantes des services Google pour fonctionner. Google a réussi son coup : les développeurs ne regardent même plus ce qu'il y a dans leur SDK et ajoutent des dépendances dégueulasses à la truelle.

Gardez aussi à l'esprit que c'est un OS en version alpha, à utiliser à vos risques et périls.

Je me souviens de l'époque de FirefoxOS : nous étions beaucoup à avoir spécialement acheté les téléphones siglés pour pouvoir nous en servir. J'avais spécialement commandé le téléphone de référence des développeurs, le Flame, pour en avoir un peu plus sous le capot. Certains avaient même pris de leur temps pour aller en faire la promotion dans des grandes surfaces. Une période assez dingue quand on y repense. Le choix de /e/ loin des délires de Mozilla me rassure, un peu. La suite ? On verra.

Liens utiles :

Prismo, le Reddit du fediverse

Rédigé par dada / 13 novembre 2018 / 5 commentaires


Je suis accroc à tout ce qui tourne autour de la fédération. Vraiment. Mon compte Mastodon tourne à plein régime et mon compte Pixelfed aussi, même s'il est en attente de réelle fédération, qui arrive.
Bref.
Dans la famille, nous pouvons maintenant ajouter un nouveau : Prismo !

C'est quoi ?

Prismo, c'est une sorte de Reddit, mais un Reddit fédéré, ou encore un Journal du Hacker. Il permet de partager des liens, d'en avoir un aperçu, de commenter ou encore de laisser la communauté en évaluer la pertinence avec des +1 ou des -1 et d'ainsi les faire apparaître sur la page d'accueil, bien en avant.

En images :


Vous avez ci-dessus la page d'accueil avec l'accès aux Stories, aux Comments et la liste des tags du moment. La page "Hot" permet d'accéder aux liens qui viennent d'être balancés, triés uniquement par date d'ajout.


Ci-dessus, un lien balancé par Valere. Même si l'article est super intéressant, ce sont des commentaires dont nous allons parler. Mon commentaire vient de mon compte Mastodon tout comme la réponse de Valere :


On se retrouve bien dans un cas typique de fédération ! Quand un lien est donné à manger à Prismo, celui-ci est directement envoyé dans notre univers fédéré, Mastodon en l’occurrence. Les interactions sont transmises dans les deux sens et tout le monde peut participer. C'est beau. Et vous avez des notifications pour vous alerter.

Prismo étant encore en développement, tout est encore possible. Dans les tuyaux, on peut déjà espérer voir rapidement arriver la fédération entre instances pour mettre en commun leurs communautés.
J'attends aussi l'arrivée d'un flux RSS, histoire de voir passer les nouvelles sur Mastodon mais aussi dans mon FreshRSS.
Une application Android/iOS ? Si des développeurs se motivent pour nous pondre ça, il y en aura. En attendant, la version mobile fonctionne bien.

L'utilité

Dans mon cas, je ne sais pas encore ce que je vais faire de ce nouvel outil. Je sais que je balance une quantité non négligeable de liens vers des articles autour de la politique internationale, du droit ou des nouvelles technologies. C'est un peu le cœur de métier de mon compte Mastodon. Est-ce que je vais déplacer tout ça dans une instance Prismo ? Je ne sais pas mais je vais y penser.

Par contre, si vous êtes un adepte de la veille technologiques et que vous n'avez pas vraiment d'intérêt à maintenir un compte Mastodon, vous êtes la cible privilégiée du petit nouveau. Il pourrait remplacer votre Shaarli ou vos billets de blog regroupant vos lectures de la semaine.

Où tester ?

Si vous êtes tentés par l'expérience, foncez faire un compte chez Hostux.news ! L'instance est gérée par Valere, ou Valere, ou Valere ou encore Valere.



On vous y attend pour découvrir ce que vous avez à nous faire lire !

Mastodon 2.5.0 disponible !

Rédigé par dada / 04 septembre 2018 / 16 commentaires


2.5.0 ? Normalement, quand on sort des grosses nouveautés, on s'amuse à gonfler le numéro de la release. Franchement, avec les nouveautés de cette version, le réseau social qui fait passer Twitter pour un bandeau publicitaire mériterait de se la jouer un peu plus.

Un nouveau design

Il est beau, il est clair, il est moderne et efficace. Je vous laisse avec des captures d'écran pour en juger par vous-même : ça déchire !
 

 

Les serveurs relais

Les petites instances peuvent se sentir isolées du fait de la taille du réseau à découvrir. Avec cette version, l'administrateur peut se connecter à un relais qui permettra à son serveur de voir défiler les messages d'une instance librement choisie et ainsi profiter de son activité. En francophone, ça devrait être pas mal de s'adosser à Framapiaf ou Mamot !

Les comptes recommandés

Ça, sérieusement, j'adore. La 2.5.0 permet de choisir des comptes à mettre en avant. Lorsqu'une personne s'attardera sur votre profil, elle pourra aller piocher dans les comptes que vous aurez sélectionnés et en profiter autant que vous !

Je me souviens d'une discussion avec mon frère à ce sujet. Il sera content de voir que ça arrive doucement.

Interaction avec les toots distants

Une recherche vous fait atterrir sur la page publique d'un toot ? Vous avez maintenant la possibilité de vous connecter pour y répondre simplement ou de créer votre compte pour rejoindre la conversation. Viendez créer un compte !

Amélioration de la modération

Il est maintenant possible de verrouiller des comptes plutôt que de les désactiver. Un compte verrouillé permet de signaler à son utilisateur qu'il ne respecte pas les règles de l'instance qui l'héberge tout en affichant un message informatif. Avec ça, le panneau d’administration devient aussi plus verbeux, permettant aux modérateurs et administrateurs de suivre ce qui se passe.
Les polémiques autour des difficultés de modération de Mastodon arrivent doucement et même si elles sont bien moindres que sur Twitter, les développeurs essayent constamment d'améliorer la situation.

Bref, c'est un excellent cru pour cette rentrée 2018. Si vous n'avez pas encore essayé Mastodon, c'est le moment !

Masto.host : mettre en place son instance Mastodon facilement

Rédigé par dada / 20 août 2018 / 6 commentaires



Quand mastodon.social reste le point d'accès le plus connu de la Fédiverse, il est bon de rappeler que la nature profonde du fonctionnement de ce réseau social est d'être décentralisé.

Mastodon a ceci de génial qu'il autorise quiconque à créer son bout de réseau.

À chaque vague de nouveaux, le problème est le même : les gens se font majoritairement un compte sur Mastodon.social et, à chaque fois, certains et certaines souhaiteraient que son administrateur coupe les inscriptions et redirige le flux vers d'autres instances. Alors oui, comme le signale le message d'Eugen ci-dessous, il est très difficile de couper les inscriptions de l'instance la plus connue sans gêner l'arrivée des nouveaux.

Traduction rapide de la partie intéressante : Honnêtement, si c'était si simple, je fermerais définitivement les inscriptions. Le souci, c'est que quand je les ferme, les gens ne vont pas s'inscrire ailleurs, ils partent.

La solution !

Pour pallier à ce problème, je suis tombé sur une initiative géniale d'un portugais : masto.host !

Ce service vous permet de monter automatiquement une instance Mastodon moyennant quelques euros par mois. Les options vous permettent de choisir une configuration pouvant accueillir de 100 à un nombre monstrueux d'utilisateurs.

Il n'y a rien de technique dans la procédure de création. C'est vraiment clé en main et ça vous permet :
  • D'avoir votre instance à vous
  • D'ajuster sa taille en fonction de sa fréquentation
  • De pouvoir la modérer comme bon vous semble
  • De ne pas avoir à vous soucier de l'état du serveur qui la fait tourner
  • De profiter de la dernière version stable disponible
Le tout étant hébergé chez OVH, en Europe !

Je suis vraiment admiratif du travail réalisé par Hugo. Malheureusement, contrairement à mes habitudes, je vous parle d'un service que je n'ai pas testé moi-même. Et même que je ne suis pas payé pour lui faire de la pub. Cependant, d'après le compte officiel de Masto.host, il semblerait que ce soit un gars vraiment sérieux et disponible. Enfin, ces derniers temps, il croule sous les demandes : tant mieux !

Bref, si l'envie vous prend de monter une instance Mastodon à travers son service, n'hésitez pas à en parler et à faire des retours !