Blog de dada

DevOps, bidouilleur et routard plein de logiciels libres

Planet-Libre

De l'économie du numérique et du libre

Rédigé par dada / 14 mars 2019 / 8 commentaires


Avec des projets plein la tête, ou plutôt des envies, et le temps libre que j'ai choisi de me donner en n'ayant pas de boulot depuis quelques mois, j'ai le loisir de m’interroger sur l'économie du numérique. Je lis beaucoup d'articles et utilise énormément Mastodon pour me forger des opinions.

Ce billet a pour origine cet entretien de Frédéric Fréry sur France Culture  : Plus Uber perd, plus Uber gagne.

Uberisation d'Uber

Je vous invite à vraiment prendre le temps de l'écouter, c'est franchement passionnant. On y apprend, en gros, que l'économie des géants du numérique est, pour certains, basée sur une attitude extrêmement agressive : il faut être le moins cher possible, perdre de l'argent à en crever et lever des fonds à tire-larigot pour abattre ses concurrents avec comme logique un pari sur la quantité d'argent disponible à perdre par participants. Celui qui ne peut plus se permettre de vider les poches de ses actionnaires a perdu. Tout simplement. Si ces entreprises imaginent, un jour, remonter leurs prix pour envisager d'être à l'équilibre ou rentable, l'argument du "ce n'est pas possible puisque ça rouvrira une possibilité de concurrence" sortira du chapeau de ces génies pour l'interdire. Du capitalisme qui marche sur la tête.

L'investissement sécurisé

La deuxième grande technique des géants du numérique est basée sur la revente de statistiques collectées auprès de ses utilisateurs. Ces données privées que vous fournissez à Google, Facebook Inc, Twitter & co permettent à ces sociétés de disposer d'une masse d'informations telle que des entreprises sont prêtes à dégainer leurs portefeuilles pour en dégager des tendances.
Je m'amuse souvent à raconter que si les séries et les films se ressemblent beaucoup, ce n'est pas uniquement parce que le temps passe et qu'on se lasse des vieilles ficelles, c'est aussi parce que les énormes investissements engagés dans ces productions culturelles sont basés sur des dossiers mettant en avant le respect d'un certain nombre de "bonnes pratiques" captant l'attention du plus gros panel possible de consommateurs ciblés.
Avec toutes ces données, il est simple de savoir quel acteur ou quelle actrice est à la mode, pour quelle tranche d'âge, quelle dose d'action, de cul ou de romantisme dégoulinant il faut, trouver la période de l'année pour la bande annonce, sortie officielle, etc. Ça donne une recette presque magique. Comme les investisseurs sont friands de rentabilité, on se retrouve avec des productions culturelles calquées sur des besoins connus : c'est rassurant, c'est rentable, c'est à moindre risque. Pas de complot autour de l'impérialisme américain, juste une histoire de gros sous.
Cette capacité de retour sur investissement est aussi valable pour le monde politique, avec Barack OBAMA comme premier grand bénéficiaire ou encore cette histoire de Cambridge Analytica.
C'est ça, ce qu'on appelle le Big Data, ses divers intérêts au service du demandeur et la masse de pognon qu'il rapporte aux grands collecteurs de données.

La pub

Une troisième technique consiste à reprendre les données collectées auprès des utilisateurs pour afficher de la pub ciblée, donc plus efficace, donc plus cher. C'est une technique connue, alors je ne développe pas. Chose marrante, quand même, je ne retrouve pas l'étude (commentez si vous mettez la main dessus !) mais je sais que la capacité de ciblage est tellement précise qu'elle peut effrayer les consommateurs. Pour calmer l'angoisse des internautes, certaines pub sans intérêt vous sont volontairement proposées pour corriger le tir.

Les Hommes-sandwichs

Une autre technique est plus sournoise. Pas pour nous autres, vieux loubards, mais pour les jeunes : le placement produit. Même si certain Youtubeurs en font des blagues pas drôles (Norman...), ce truc est d'un vicieux.
Nos réseaux sociaux n'attirent pas autant de monde qu'espéré pour une raison assez basique : les influenceurs et influenceuses. Ces derniers sont des stars, au choix parce qu'ils sont connus de par leurs activités précédentes (cinéma, série, musique, sport, etc) ou parce que ces personnes ont réussi à amasser un tel nombre de followers qu'un simple message sur Twitter, Youtube ou Instagram se cale sous les yeux d'un monstrueux troupeau. Ils gagnent le statut d'influenceur de part la masse de gens qui s'intéresse à leurs vies (lapsus, j'ai d'abord écrit vide à la place de vie). J'ai en tête l'histoire de cette jeune Léa, par exemple. Ces influenceurs sont friands de plateformes taillées pour leur offrir de la visibilité et clairement organisées pour attirer l’œil des Directeurs de Communication des marques. Mastodon, Pixelfed, diaspora* et les autres ne permettent pas de spammer leurs utilisateurs, n'attirent donc pas les marques, qui sont la cible des influenceurs, ces derniers n'y dégageant, in fine, aucun besoin d'y être présents.
Ces gens-là deviennent les nouveaux "hommes-sandwichs". Ils ou elles sont contactés pour porter tel ou tel vêtement, boire telle boisson ou pour seulement poster un message avec le nom d'un jeu. Les marques les adorent et l'argent coule à flot.

On peut attendre

Bref, l'économie du numérique n'est pas si difficile que ça à cerner, même si je ne parle pas de tout. Ce qui m'intéresse dans toutes ces histoires est la stabilité de ces conneries sur le long terme et la possibilité de proposer autre chose. On peut attendre que les Uber se cassent la figure calmement, on peut attendre que le droit décide enfin de protéger les données des utilisateurs, on peut aussi attendre le jour où les consommateurs comprendront qu'ils sont les seuls responsables de l'inintérêt de ce qu'ils regardent à la télé, au cinéma, en photos ou encore que les mastodontes du numériques soient démantelés. Bref, on peut attendre. La question est : qu'aurons-nous à proposer quand tout ceci finira par se produire ?

La LowTech

Après la FinTech, la LegalTech, etc, faites place à la LowTech ou SmallTech. Je ne connaissais pas ces expressions avant de tomber sur cet article dans le Framablog et celui de Ubsek & Rica d'Aral. On y apprend que c'est un mouvement qui s'oppose frontalement aux géants, ce qui est fantastique. C'est une vision du monde qui me va très bien, en tant que militant du Libre depuis plus de 10 ans maintenant. On peut visiblement le rapprocher de l’initiative CHATONS.
Cependant, j'ai du mal à saisir les moyens qui pourraient être mis en œuvre pour sa réussite.

Les mentalités

Les mentalités actuelles sont cloisonnées : le Libre, même s'il s'impose dans quelques domaines, reste mal compris. Rien que l'idée d'utiliser un programme au code source ouvert donne des sueurs froides à bon nombre de DSI. Comment peut-on se protéger des méchants si tout le monde peut analyser le code et en sortir la faille de sécurité qui va bien ? Comment se démarquer des concurrents si tout le monde se sert du même logiciel ? Regardez le dernier changelog : il est plein de failles béantes : ce n'est pas sérieux !
Parlons aussi de son mode de fonctionnement : qui se souvient d'OpenSSL utilisé par tout le monde et abandonné pendant des années au bénévolat de quelques courageux qui n'ont pas pu empêcher l'arrivée de failles volontaires ? Certains projets sont fantastiques, vraiment, mais les gens ont du mal à réaliser qu'ils sont, certes, très utilisés mais peu soutenus. Vous connaissez beaucoup d'entreprises pour lesquelles vous avez bossé qui refilent une petite partie de leurs bénéfices aux projets libres qui les font vivre ?

Le numérique libre est la Presse

Les gens, les éventuels clients des LowTech, ont plus ou moins grandi dans une société du gratuit. L'autre jour, je m'amusais à comparer les services informatiques à la Presse. Les journaux ont du mal à se sortir du modèle gratuit. Certains y arrivent (Mediapart, Arrêts sur Image : abonnez-vous !), d'autres, largement majoritaires, non.
Il n'est pas difficile de retrouver les montants des subventions que l'État français offrent à ces derniers. Libération en parle ici. Après avoir noué des partenariats tous azimuts avec les GAFAM, après avoir noyé leurs contenus dans de la pub, les journaux en ligne se tournent doucement vers le modèle payant pour se sortir du bourbier dans lequel ils se sont mis tout seul. Le résultat est très moyen, si ce n'est mauvais. Les subventions sont toujours bien là, le mirage des partenariats avec les GAFAM aveugle toujours et les rares qui s'en sont sortis se comptent sur les doigts d'une main.
On peut faire un vrai parallèle entre la situation de la Presse en ligne et les services numériques. Trouver des gens pour payer l'accès à un Nextcloud, un Matomo ou que sais-je est une gageure. La seule différence qui me vient à l'esprit est que des services en ligne arrivent à s'en sortir en coinçant leurs utilisateurs dans des silos : vous avez un Windows ? Vous vous servirez des truc de Microsoft. Vous avez un compte Gmail, vous vous servirez des trucs de Google. Les premiers Go sont gratuits, les autres seront payants. Là où les journaux généralistes ne peuvent coincer leurs lecteurs, les géants du numérique le peuvent sans trop de soucis.

Et le libre

Dans tout ça, les LowTech libres peuvent essayer de s'organiser pour subvenir aux besoins éthiques de leurs clients. Réflexion faite, cette dernière phrase n'a pas tant que ça de sens : comment une entreprise peut-elle s'en sortir alors que l'idéologie derrière cette mouvance favorise l'adhésion à des associations ou à rejoindre des collectifs ? Perso, je l'ai déjà dit, j'adhère volontiers à cette vision du monde horizontale et solidaire. Malgré tout, mon envie de travailler, d'avoir un salaire, une couverture sociale, une activité rentable, et peut-être un jour une retraite, me pousse à grimacer. Si les brides d'idéologie LowTech orientent les gens vers des associations, comment fait-on pour sortir de terre une entreprise éthique, rentable et solidaire ?
On ne s'en sort pas, ou très difficilement, ou je n'ai pas réussi à imaginer comment. L'idée, connue, serait de s'attaquer au marché des entreprises et des collectivités pour laisser celui des particuliers aux associations sérieuses. Mais là encore, on remet un pied dans le combat pour les logiciels libres contre les logiciels propriétaires dans une arène encerclée par des DSI pas toujours à jour. Sans parler de la compétitivité, ce mot adoré par notre Président, et de l'état des finances de ces entités. Faire le poids face à la concurrence actuelle, même avec les mots "éthique, solidaire et responsable" gravés sur le front, n'est pas évident du tout.

Proie

Si je vous parle de tout ça, c'est parce que j'estime que nous sommes dans une situation difficile : celle d'une proie. Je ne vais pas reparler de l'achat de Nginx, de ce qu'il se passe avec Elasticsearch ou du comportement de Google qui fork a tout va pour ses besoins dans Chrome. Cette conférence vue au FOSDEM, The Cloud Is Just Another Sun, raisonne terriblement en moi. L'intervenant y explique que les outils libres que nous utilisons dans le cloud sont incontrôlables. Qui vous certifie que vous tapez bien dans un MariaDB ou un ES quand vous n'avez accès qu'a une boite noire qui ne fait que répondre à vos requêtes ? Rien.
Nous n'avons pas trouvé le moyen de nous protéger dans le monde dans lequel nous vivons. Des licences ralentissent le processus de digestion en cours par les géants du numérique et c'est tout. Notre belle vision du monde, globalement, se fait bouffer et les poches de résistance sont minuscules.

Pour finir

Pour finir, ne mettons pas complètement de côté l'existence réelle d'un marché : Nextcloud en est la preuve, tout comme Dolibarr et la campagne de financement réussie d'OpenDSI. Tout n'est peut-être pas vraiment perdu. C'est juste très compliqué.
La bonne nouvelle, s'il y en a bien une, c'est qu'en parlant de tout ça dans Mastodon, je vous assure que si une entreprise du libre se lançait demain, nous serions un bon nombre prêt à tout plaquer pour y travailler. À attendre d'hypothétiques clients, qu'on cherche toujours, certes, mais dans la joie et la bonne humeur.

Enfin voilà, des réflexions, des idées, beaucoup de question. On arrive à plus de 1900 mots, de quoi faire plaisir à Cyrille BORNE.

Des bisous.

Du rachat de Nginx

Rédigé par dada / 12 mars 2019 / 6 commentaires



C'est la grande nouvelle du moment : F5 Networks, société spécialisée dans l'équipement réseau, rachète Nginx. Cette annonce dégouline dans les réseaux sociaux et les premières craintes apparaissent.

Les protagonistes

F5 Networks m'était complètement inconnue. Jamais avant cette annonce je n'avais entendu parler de cette société. Pourtant, il semblerait qu'elle ait les moyens de poser presque un demi milliard d'euros pour acheter une entreprise concurrente. Concurrente ? Oui, puisqu'il semblerait que F5 ait pour spécialité les répartiteurs de charge, ce qu'est le boulot originel de Nginx.

Les précédents

Les débats démarrés dans Mastodon font remonter à la surface des souvenirs douloureux : lorsqu'une entreprise met la main sur un logiciel libre, les choses évoluent souvent de la même façon :

- OpenOffice, porté par Sun Microsystems, a été forké quelques de temps après le rachat de Sun par Oracle. Nous utilisons tous LibreOffice maintenant.
- ZFS, avec encore Sun et Oracle dans la partie, est devenu OpenZFS.
- MySQL, toujours avec les mêmes protagonistes, est maintenant complètement supplanté par MariaDB.
- OwnCloud est devenu Nextcloud quand l'entreprise derrière le projet s'est mise à mal gérer les contributions de sa communauté.

N'hésitez pas à aller voir la liste des forks connus. C'est impressionnant.

La licence

Nginx est sous licence BSD et F5 propose des services de répartiteur de charge (loadbal', en bon langage technique) : il n'est donc pas déconnant d'imaginer que F5 va vouloir mettre en avant ses propres solutions en y intégrant les atouts de Nginx. Tout ceci en n'étant pas le moins du monde obligé de redistribuer les améliorations qu'ils ne manqueront pas d'apporter à leur nouveau jouet hors de prix.

De fait, la licence BSD nous certifie que la dernière version de Nginx nous restera en l'état : accessible, modifiable, etc. C'est du libre (sans l'éthique). Cependant, rien n’oblige F5 à reverser les améliorations futures à la communauté. C'est la magie des licences maladroitement appelées Open Source face aux licences dites Libres.

La place de Nginx

Je me souviens avoir très (trop ?) souvent trollé Nginx quand il est arrivé dans le monde de l'hébergement. Je savais bien que c'était un excellent proxy mais je n'arrivais pas du tout à l'imaginer en tant que serveur web. J'étais clairement du côté d'Apache.
Avec le temps, les choses ont beaucoup évolué et je suis loin d'être le seul à avoir foutu du Nginx absolument partout, en loadbal, proxy et serveur. Mon infrastructure ne contient quasiment plus d'Apache. Là où il est encore présent est justifié par la flemme de le virer et de réécrire des configurations pour des gains en performance minimes.

Bref, Nginx est absolument partout, même si Apache revient dans la partie avec des performances de plus en plus proches, dans certains cas.

La suite ?

Comme dirait l'autre, bien malin est celui capable de faire des prévisions, surtout quand celles-ci concernent le futur. Pourtant, le monde libriste regorge d'exemples pouvant indiquer la direction possible que va prendre Nginx : le fork.
Tout dépendra de la réputation de F5 Networks, des choix qui vont être fait et de l'humeur des membres de la communauté Nginx. La suite de l'aventure va être passionnante à suivre et, là je peux le parier, la communauté s'en sortira par le haut, avec ou sans F5 Networks.

De retour du FOSDEM 2019

Rédigé par dada / 07 février 2019 / Aucun commentaire


Qu'on aime ou pas cet événement, la Réunion Européenne des Développeurs de Logiciels Libres et Open Source est devenue mon week-end préféré de l'année. Ou presque.
C'est toujours avec un plaisir fou que je me retrouve entouré des gens avec qui je ne peux discuter qu'à travers un écran le reste de l'année : du suisse, de l'allemand, du français, du finlandais et, nouveauté 2019, un américain ! Bref, des copains, trop d'anglais, des bières belges et des discussions jusqu'à pas d'heure.

Cette année et contrairement aux autres fois, j'ai réussi à assister à des conférences et à boire de la bière avec modération ! Je vous assure que ce n'est pas une mince affaire quand on connaît le talent de nos amis belges en matière de brasserie. Le vin est à la France ce que la bière est à la Belgique !

Voici un aperçu de ce que j'ai vu. Tout est en anglais et je ne crois pas qu'il existe un moyen de mettre des sous-titres. Si la langue d'Ed Sheeran n'est pas votre fort, passez votre chemin.

Ceph storage with Rook : Running Ceph on Kubernetes


Je connaissais déjà la bête et vous êtes en plein dedans si vous lisez cet article. Je pensais pouvoir découvrir deux ou trois trucs mais la démonstration qui devait être faite à la fin de la présentation n'a pas pu se faire : souci d'écran.

Loki - Prometheus for logs


Sur celle-là, j'ai carrément jubilé ! Ce truc a l'air vraiment super sympa. J'ai déjà essayé de le faire tourner dans mon cluster mais ce n'est pas vraiment stable. En plus clair, ça fait tomber les nodes un par un à cause d'une consommation de mémoire vive ahurissante.

ActivityPub Panel

 

Assez inévitable quand on est à fond dans le Fédiverse : la table ronde autour d'AP. C’était intéressant et je vous encourage à la regarder même si Chris Webber et son accent américain fatiguent rapidement les oreilles.

Matrix in the French State

 

Assister à une conférence qui parle à la fois de Matrix et de l'État Français, je ne pouvais pas rater ça ! C'était fichtrement intéressant, même si le bonhomme s'est amusé à comparer l'ANSSI à la NSA...

The Cloud Is Just Another Sun

 

Je ne savais pas trop à quoi m'attendre en allant voir cette conférence. Faut dire que j'avais pas totalement lu le descriptif. On y apprend qu'il faut se méfier du Cloud. Je vous invite vivement à la regarder, le mec est clair, et à vous forger une opinion sur le sujet.

Pour le lolz

On est allé, avec les gars de Feneas, voir la conférence autour du réseau social basé sur la blockchain : Hey. Pas grand chose à en dire. C'était technique et très concentré autour de la chaîne de blocs. Je n'ai pas compris grand chose.

Bref

Des litres de bières, des rencontres, des sujets qui font du bien au cerveau et surtout, mais surtout, des gens avec qui on n'arrive jamais à capter : c'est ça le FOSDEM, mon FOSDEM, que j'aime tant !

Merci aux organisateurs et à l'année prochaine !

Nextcloud, PHP-FPM, Nginx et Kubernetes

Rédigé par dada / 14 janvier 2019 / 7 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 :