Aller au contenu principal
logo Lab12
  • Blog12
  • Services en accès libre
    • Draw
    • Date
    • Pad
    • Post-it
    • Whiteboard
  • Services privés
    • Portail
    • Interface d'administration

Rechercher
  • Documentation
  • Formulaires
Se connecter
logo Lab12

  • Formulaires
  • Rechercher
  • Saisir
  • Listes
  • Importer
  • Exporter

Bibli

CLIC_ouvrages.png
Description Une bibliothère de livres electroniques
Résumé Lire
Catégorie S'informer
Type d'accès Accès réservé
URL du service https://calibre.lab12.io
Logiciel Calibre Web
Licence GNU General Public License v3.0 only
Code source https://github.com/janeczku/calibre-web
Voir la fiche
digicadre.jpg

Bidouillage de digiCadre déclinaison boite à mèmes

Date 23.11.2024
Résumé Lundi je suis allé à la permanence du hackerspace le Bib à Montpellier pour y adhérer. Et j'ai eu la plaisante surpise d'y croiser Roz qui y bidouillait un digiCadre pour l'installer au bib. Et j'ai décidé de m'en installer un au lab12
Billet Je m'y suis donc mis hier soir, après une séance de test d'images CLIC, mais tombant de sommeil j'ai battu en retraite sous la couette. J'ai continué ce matin et vous pouvez voir sur la photo en haut l'instance que j'ai installé au QG du lab12
. J'ai utilisé un Odroit XU4 que j'alimente avec une batterie :
image IMG_20241120_123513.jpg (1.1MB)


Si vous voulez vous déployer une instance de digiCadre, la documentation se trouve là : https://wiki.fuz.re/doku.php?id=projets:fuz:cadre_photo_participatif

Parmis les idées d'évolution du concept non encore implémentée il a celle d'interconnecter ou de fédérer les digiCadres de plusieurs lieux.
J'ai commencé a mettre en place un preuve de concept de cette idée en ajoutant syncthing à mon digicadre et à synchronizer un dossier d'image avec un autre serveur syncthing.

Pour installer syncthing sur le digicadre, rien de plus simple, il suffit de lancer dietpi-software et de trouver syncthing avec le menu "Browse Software", dans la catégorie "Cloud & Backup"

Une fois installé il faut aller sur l'interface web qui se trouve sur le port 8384
et cliquer sur Settings en dessous de l'avertissement qui dit qu'il n'y a pas d'utilisateurice de configuré et que donc ça crain niveau sécurité. Puis il faut aller dans la section "GUI" pour corriger cette situation. Pour bien sécuriser mon digicadre j'ai créé le compte dietpi avec comme mot de passe dietpi, pour rester cohérent avec le reste du projet.
Un autre paramètre à modifier c'est le "Device Name" dans la section "General" qui est par défault "DietPi". C'est mieux de donner un nom distinct entre les digiCadres pour s'y retrouver dans l'interface de syncthing. J'ai nommé le mien "DigiCadre 12b"

J'ai ensuite également installé syncthing sur mon serveur lab12.org. Avec YunoHost, c'est très simple aussi.

J'ai ensuite copié l'identifiant syncthing de ce serveur pour aller l'ajouter comme "remote device" sur le syncthing du digicadre. En faisant ça j'ai coché l'option pour définir ce device comme étant un "introducer". Ce qui permet de voir apparaitre automatiquement les dossiers qu'il partage.
Ensuite, de retour sur le syncthing du serveur lab12.org, j'ai créé une paire de dossier partagés : un pour ma collection de photos de type fond d'écran et un pour des images de mèmes et je les ai partagés avec le digiCadre.
Re-bascule sur le syncthing du digiCadre, et j'ai accepté les deux partages que j'ai configuré pour être sotckés dans /mnt/photos et /mnt/memes
Il y a eu un petit soucis de droit d'accès au répertoires à ce moment là. Syncthing utilise le user dietpi pour accéder au système de fichiers.
J'avais déjà créé les dossier /etc/systemd/system/syncthing.service comme appartenant au compte filebrowser, pour qu'il soient accessible par filebrowser. Et les droits d'accès ne permettaient pas au user dietpi d'écrire dans ces dossiers.
J'ai corrigé ça avec les commandes suivantes :

chown -R filebrowser:dietpi /mnt/memes
chmod -R g+w /mnt/memes
chown -R filebrowser:dietpi /mnt/photos
chmod -R g+w /mnt/photos


J'ai donc maintenant ces deux dossiers synchronisés entre mon digiCadre, qui n'est pas accessible depuis internet et ne sera pas tout le temps allumé, et mon serveur lab12.org, qui lui est accessible depuis internet, est allumé en permanence et peut donc servir d'intermédiaire pour synchronizer d'autres digiCadres.

image digicadresyncthing_20241120_122034.png (0.5MB)

Il ne reste plus qu'a trouver un autre digiCadre qui voudrait tester cette synchronisation ;-)
Voir la fiche

Calibre-web

0c03d5cd0f7bd13868f9a5c73f32e0ba9b3e784d_dbaa0699e4c2817dafab3c884bfc273bc8b75fd8c11fb8f40828173aa8015181.png
Description de l'application Explorer, lire et télécharger des eBooks à partir d'une base de données Calibre
Visibilité de l'application Privée
Identifiant de l'application Yunohost calibreweb
Url d'accès au service https://calibre.lab12.io/
Voir la fiche
charavane02.jpg

Charavane Saison 1 (2022)

Date 06.07.2024
Résumé La génèse du projet charavane
Billet Pendant le camp CHATONS 2022 j'ai présenté un atelier intitulé "Un chaton nomade et autonome en énergie".

Plus tard dans la soirée, au cours d'une discussion avec røzlav qui nous parlait du projet de chaton d'attac, le chattac, le nom de charavane a émergé.

Je reproduis ci-dessous les notes prises par les participant de l'atelier :

Atelier Camp CHATONS 2022 : "Un chaton nomade et autonome en énergie"

Animateur : 12B - électronicien de formation, code dans son activité
Hackerspace nomade Le Distrilab
Itinérance pour 1 an ou deux
Objectif : poser du serveur web dans des endroits privés d'Internet ou avec une connection très limitée et potentiellement privé de source d'électricité.

2 chantiers :
  • Autonomie en énergie
  • Hébergement de services sur connexion 4G


Présentation du prototype d'expérimentation / démonstration en cours de construction :

Photo du prototype de 12b


Système modulaire
3 panneaux solaires (PS)

  • PS #1 : 28w crête : maximum (neuf, pas trop chaud, ciel dégagé, panneau bien orienté), suffisant pour petite batterie, chargeur de téléphone. Un Raspbery Pi, maybe.

  • PS #2 : 100W crête, batterie 154 W.h. chargeur et Mini-onduleur intégré;

  • PS #3 : 200W crête - 191W observé sur une journée ensoleillée


Petit rappel d'unités en éléctricité
Analogie avec la baignoire, qu'on renpli avec un robinet

  • Puissance (en W) = débit du robinet

  • Quantité d'énergie (en W.h) = quantité d'eau dans la baignoire



Composition de l'installation
1. un panneau solaire :
  • débranché, fournit de la tension, mais pas d'intensité = 0W
  • branché en court circuit , intensité max, mais tension nulle = 0W aussi
  • entre les deux il y a un point de fonctionement optimal où la puissance fournie par le paneau solaire est maximale. Mais ce point dépends de plusieurs paramètres : le panneau solaire, la température, l'ensoleillement, l'age du capitaine, ...

Courbe puissance panneau photo-voltaïque

2. contrôleur de charge : 1er type sort le max de puissance (MPPT - maximum power point tracking : cherchent le point maximum - haut de la cloche, pour trouver le meilleur ratio tension / intensité pour avoir la puissance maximum, cherche le point par tests et mesures successives) Protège aussi la batterie (plomb, lithium-ion, lithium-fer-phosphate, etc), le MPPT s'adapte en fonction de la batterie. Il est plus cher que le PWM mais répond aux normes européennes.
  • ou deuxième type de controleur : PWM (pulse width modulation) - Low cost. S'assurent de ne pas surcharger la batterie mais ne fait pas fonctionner le panneau à sont point optimal).


3. Batterie(s)
Li-Fe-Po moins sensible à la combustion spontanée, pas un bon choix pour un projet de mobilité
Li-Fe-Po : 768wh => 9.5kg, Li-Fe-Po conserve 80% de sa capacité après 2.500 cycles de charge/décharge
Li-Ion : 1000 wh, 350-400g - 80% de capacité après ~800 cycles
plomb : le moins cher, le plus gros poids rapporté à la capacité
Sur application mobile : poids et encombrement critère le plus important (donc Li-Ion) Sur un système stationnaire, la batterie au plomb est un bon compromis en fonction de l'usage
batteries Li-Ion, et Le-Fe-Po, supportent bien la décharge / charge profonde ou partielle
batteries plomb : Moins chères. Perte plus rapide de capacité en général (batteries de démarrage - très fort courant pendant un temps court, supportent mal décharge profonde. Batteries plomb dites de traction suportent décharge profonde- mais il est recommandé de ne pas dépasser plus de 50% de décharge pour une durée de vie optimale
Sinon : batteries d'onduleur (au plomb, 12V, décharge profonde)
Une vidéo intéressante sur les differents types de batteries au plomb : https://www.youtube.com/watch?v=ryqKYLWlubE

image charavane02.jpg (1.9MB)
Photo du prototype de 12b

4. Fusible sur batterie : 25A
5. Convertisseur de tension continu-continu
La batterie 12V (en réalité, 12.8V, varie entre 10 et 14,4V)
Certains appareils ont des tolérances beaucoup plus faibles
Convertisseurs tension batterie en 12 V stable
Convertisseurs en 15V, 5V pour l'USB, USB C poxer delivery jusqu'à 20V), chargeurs d'ordinateurs plutôt 20V
6. Onduleur
Transforme courant continu en alternatif
Pas complètement silencieux. Moins bonne efficacité (perte d'energie) que convertisseur courant continu.
7. Prise de terre
8. Panneau électrique avec différentiel
9. Modem routeur 4G : 0.2 13,5 ~ 2.5w 10. Odroid M1 + SSD nvme 1To, 8GB de RAM (avec Yunohost, NextCloud, etc.) Conso. : odroid M1 : 4w (avec le SSD nvme) Poids : batterie : 9.5kg
le flycase complèt avec tous les équipement sauf le panneau solaire : il faut que 12b le pèse. panneau solaire 200W valise : 9.5kg


Q&A

image charavane03.jpg (1.4MB)
Photo Atelier
recherche d'un groupe de personnes intéressées pour échanger là-dessus réseau de personnes intéressées par le sujet GoTronic : composants et convertisseurs boîtiers et allume cigare (avec fusible de protection) disponibilité
autant que possible
Idéalement, 3 systèmes numériques alimentés par la station électrique photo-voltaïque :
  • 1. Un micro-contrôleurs (très faible consomation électrique) qui fonctionnerait tout le temps, pour piloter l'allumage ou l'arrêt du système et collecter des données de capteurs (voire héberger un mini site web de monitoring) fonctionnement sans WiFi et sans routeur 4G quand la batterie est trop déchargée (eventuellement utilisation de LoRa, protocole de communication sans fil très basse consommation électrique, lent mais longue portée)
2. Un modèle de nano-serveur type odroid M1 de chez HardKernel ou Quartz64 de chez Pine64 (CPU ARM, 8 Go RAM, 1 To SSD) qui fonctionnerait tant que la batterie est suffisamment chargée et qui ferait tourner YunoHost pour héberger localement des services numériques.
3. Un petit serveur x86 plus puissant (32 Go RAM, 1x SSD nvme 1 To, 2x SSD SATA 2 To) qui ne serait allumé que quand il est utilisé (pour faire des sauvegardes ou lancer des VM / LXC utilisés ponctuellement pour faire du dev ou pour héberger des services trop gourmands en ressources, que ce qu'on peut faire fonctionner sur le petit système ARM mais qui n'en ont pas besoin en permanence)
autres usages : web-radio, outil pédagogique (sensibilisation à la nature physique du numérique) camps de réfugié·es / migrant·es
autres sources d'énergie : éolienne, voire hydraulique, voire vélos (50 à 100W par cycliste, sur la durée, sur festival par exemple - 4 personnes remplacent le panneau solaire 200W) autre initiative : CLIC (pour Contenus et Logiciels pour des Internet Conviviaux)
YunoHost préinstallé
durée de fonctionnement dans les périodes plus difficiles (jours courts, hiver) budget de 10W de consomation Avec une batterie de 768wh ca fait 76,8 heures, soit un peu plus de trois jours de fonctionnement sans recharge. manque la donnée : dimension de panneaux solaires nécessaire pour pouvoir recharger la batterie en hiver (alternances de 2/3 jours sans soleil puis 1 journée partiellement ensoleillée) (le panneau actuel de 200 W permet largement de recharger la batterie en moins d'une journée d'été bien ensoleillée. Mais il sera insuffisant en hiver) 5% de rendement l'hiver. Exempl : sur panneau photovoltaïque 100W, en hiver avec un ciel couvert, production d'a peine 10 à 20W.h par jour (500 à 600 W.h pour une journée d'été ensoleillée) Perte de 10% de rendement l'été (chaleur), ) (donnée a confirmer/préciser avec le prototype l'hiver prochain) éolienne : petite produit 20w - autres problèmes : hauteur (et droit), entretien, poids lentilles de fresnel l'hiver ou miroirs pour concentrer la lumière sur un panneau solaire l'hiver

  • batterie : 611€
  • panneau solaire : 375 €
  • 2x 5m câbles 6mm2 + connecteurs MC4 : 19 €

  • panneaux solaires : 20-30 ans (film de protection en verre ou matériau synthétique qui jaunit ou se dégrade), cellules solaires très durable
  • batteries au plomb (se recycle très bien, se réemploie potentiellement) beaucoup plus économiques voire batteries usagées usage d'un smartphone à la place de l'odroid pour réduire la consommation électrique
  • consommation similaire odroid VS smartphone. quel intérêt d'utiliser un smartphone?

  • récup de cellules Li-Ion (10wh, 3Ah) + carte USB (par exemple diymore.cc mais se trouve partout), (autonomie de 4h avec 2 batteries, 8h avec 4)

  • bootloader rPi non-libre
  • possibilité d'utiliser un SSD nvme et un SSD ou HDD SATA avec l'odroid

  • projet flou (idéalement : tout le hackerspace)
  • beaucoup de photos, idéalement de la vidéo (vlog)
  • yeswiki avec fiche pour chaque étape rendre accessible les données de l'extérieur
  • solution classique : VPN - mais requiert donc une partie pas mobile


Photo du coffre de la voiture de 12b avant son depart du camp
Voir la fiche
circumventingwireguardblocks.png

Contournement des blocages gouvernementaux de VPN wireguard

Date 12.04.2025
Résumé Comment avec un ami résidant à l'étranger nous avons déjoué les blocages gouvernementaux du VPN wireguard que nous utilisons pour administrer de manière sécurisée une infrastructure partagée.
Billet

Le problème

Avec un ami qu'on ne citera pas (sauf s'il veut se "dénoncer" ;-) , nous avons passé plusieurs jours à se demander pourquoi depuis quelques temps il n'arrivait plus à établir de connexion à son VPN openvpn de chez ARN, qu'il utilise pour exposer sur internet son petit serveur YunoHost lui servant à auto-héberger ses services numériques, et plus récemment au VPN wireguard que nous utilisons pour travailler ensemble de manière sécurisée sur des serveurs. Au début nous pensions que ses problèmes avec openVPN venaient soit d'un mauvaise mise à jour de YunoHost soit d'aléas techniques liés à son fournisseur d'accès à internet. Mais le comportement étrange s’est récemment manifesté avec le VPN wireguard nous a mis la puce à l'oreille : La connections commence par s'établir correctement. Ensuite si on essaye rapidement de faire un ping on arrive à faire passer quelques paquets. Mais au bout de quelques secondes, plus rien ne passe.
Il se trouve qu'il réside dans une pays, qu'on ne citera pas non plus, qui de notoriété publique est en train de fermer de plus en plus de portes au frontières de son réseau internet. Après avoir vérifié nos configurations dans tous les sens et testé qu'avec les même paramètres ça fonctionnait bien pour des machines localisées en France mais que ça ne passait pas pour des machines localisées chez lui, l'hypothèse d'un blocage gouvernemental est vite devenue l'explication la plus probable.
Et une recherche rapide nous a confirmé qu'il était relativement simple pour des DPI (Deep Packet Inspection) de détecter du traffic wireguard et de le bloquer. En effet le protocole wireguard à été conçu avant tout pour maximiser les performances et chiffrer les données transmises, mais pas pour masquer le fait que les données transmises passent par un VPN. Il y a dans le protocole des échanges de paquets qui ont toujours la même taille et dont les premiers octets sont toujours les mêmes.

La recherche d'une solution

Nous avons donc commencé à chercher des moyens de contourner ce type de blocage. Plusieurs pistes on été trouvées :
  • 1. utiliser shadowsocks pour encapsuler le traffic wireguard [1], [2]
  • 2. utiliser xray avec les protocoles dokodemo-door et reality pour encapsuler le traffic wireguard [3], [6], [7]
  • 3. utiliser un fork de wireguard, comme amnesia par exemple [5], qui rajoute des fonctions de camouflage directement dans le protocole wireguard.
L'utilisation de shadowsocks semblant ne plus être totalement efficace [4], et l'utilisation d'une altération du protocole wireguard nous obligeant à convertir l'ensemble des infrastructures que nous partageons, nous avons décidé de tester dans un premier temps la solution encapsulation via xray.

La mise en place de la solution retenue

Notes :
  • Je ne détaille pas ici l'installation ni la configuration de wireguard, qui est tout a fait classique, sauf pour les spécificités liées à l'encapsulation avec xray
  • Dans les exemples de configuration il faut remplacer les variables du genre $USER_ID, $PRIVATE_KEY, $SHORT_ID, ..., par les valeurs générées à l'aide des commandes suivantes (à exécuter après l'installation de xray)
  • # Generate X25519 keys using Xray's built-in command
     _x25519=$(xray x25519)
     PRIVATE_KEY=$(echo "$_x25519" | awk -F': ' '/Private key/{print $2}')
     PUBLIC_KEY=$(echo "$_x25519" | awk -F': ' '/Public key/{print $2}')
     # Generate a unique UUID for the client
     CLIENT_UUID=$(uuidgen)
     # Generate a random short ID
     SHORT_IDS=$(openssl rand -hex 8)
     # Define server address and port
     SERVER_ADDRESS="IP address or DNS name of your wireguard server"
     PUBLIC_PORT=8443
     PRIVATE_PORT=6666
    
  • Le port public choisi pour xray est le 8443. L'idée étant de faire croire qu'il s'agit d'une connexion https normale, le mieux serait d'utiliser le port 443. Mais comme nous avons un serveur web sur la même IP, on a pris le port 8443 pour éviter tout conflit. Il devrait être possible de tout mettre sur le port 443 en utilisant un reverse proxy SNI. Nous testerons ça plus tard.
  • Le port privé est le port sur lequel écoute le serveur wireguard. Il n'a pas besoin d'être ouvert au niveau du firewall si les seuls clients qui s'y connectent passent par xray. Quand on passe par xray, on s'y connecte uniquement via l'interface loopback.
  • Dans les exemples de configuration, on peut voir du google. C'est le nom du serveur web qui est utilisé pour camoufler le traffic. Il n'y à aucune connexion effective vers ce serveur. Et google c'est juste à titre d'exemple parce-que nous ne voulons pas dévoiler le nom que nous avons réellement utilisé. Il convient de choisir un nom DNS qui ne soit pas bloqué des deux coté du VPN et qui n'attire pas l'attention. Il y à d'autres contraintes a respecter [13]

installation de xray sur le serveur

Coté serveur, wireguard tourne sur une machine sous Debian. Nous avons donc installé la version beta de xray comme indiqué dans les tutos que nous avons trouvé avec bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install --beta -u root
Puis nous avons ajouté sa configuration dans /usr/local/etc/xray/config.json :

{
   "log": {
       "loglevel": "debug"
   },
   "inbounds": [
       {
           "listen": "0.0.0.0",
           "port": $PUBLIC_PORT,
           "protocol": "vless",
           "settings": {
               "clients": [
                   {
                       "id": "$USER_ID",
                       "flow": ""
                   }
               ],
               "decryption": "none"
           },
           "streamSettings": {
               "network": "tcp",
               "security": "reality",
               "realitySettings": {
                   "show": false,
                   "dest": "www.google.com:443",
                   "xver": 0,
                   "serverNames": [
                       "www.google.com"
                   ],
                   "privateKey": "$PRIVATE_KEY",
                   "shortIds": [
                       "$SHORT_ID"
                   ]
               }
           }
       }
   ],
   "outbounds": [
       {
           "protocol": "freedom",
           "tag": "direct"
       }
   ]
}


Modification de la configuration wireguard du serveur

Ensuite nous avons modifié la configuration du serveur wireguard, dans sa section [Interface], pour qu'il écoute sur le port privé ( ListenPort = $PRIVATE_PORT) et pour limiter le MTU à 1300 octets (MTU = 1300). La modification du MTU est nécessaire pour tenir compte de l'overhead ajouté par l'encapsulation xray. Sans cela la taille des paquets réseau pourrait grossir au delà du MTU standard, ce qui causerait des soucis.

Intallation de xray sur le client

Le client est une machine qui tourne sous NixOS. Pour installer une version de xray compatible avec la version installée sur le serveur nous avons du passer la machine en version instable de nixpkgs (on aurait pu être plus subtil et n'installer que xray depuis nixpkgs instable, mais on voulait aller vite pour valider la solution) Comme xray est packagé pour NixOS, il suffit d'ajouter ça dans le configuration.nix de la machine pour l'installer :

services.xray = {
    enable = true;
    settingsFile = "/etc/xray/config.json";
  };

  environment.etc."xray/config.json" = {
    source = /var/src/secrets/xray-config.json;
    user = "root";
    group = "root";
    mode = "0444";
  };


La partie qui créé le fichier de configuration dans /etc/xray/config.json à partir de /var/src/secrets/xray-config.json est spécifique à la manière de déployer NixOS que nous utilisons pour cette machine (krops + passwordstore). Et les permissions que nous avons mises sur le fichier sont un peu large (toujours en mode quick and dirty pour ces premiers tests). Il y a d'autres manière de définir la configuration de xray sous NixOS, voir sur https://search.nixos.org/options?channel=24.11&from=0&size=50&sort=relevance&type=packages&query=xray
Le contenu du fichier xray-config.json est le suivant :
{
   "log": {
       "loglevel": "warning"
   },
   "inbounds": [
       {
           "tag": "wireguard",
           "port": $PRIVATE_PORT,
           "protocol": "dokodemo-door",
           "settings": {
               "address": "127.0.0.1",
               "port": $PRIVATE_PORT,
               "network": "udp"
           }
       }
   ],
   "outbounds": [
       {
           "protocol": "vless",
           "settings": {
               "vnext": [
                   {
                       "address": "$SERVER_ADDRESS",
                       "port": $PUBLIC_PORT,
                       "users": [
                           {
                               "id": "$USER_ID",
                               "encryption": "none",
                               "flow": ""
                           }
                       ]
                   }
               ]
           },
           "streamSettings": {
               "network": "tcp",
               "security": "reality",
               "realitySettings": {
                   "show": false,
                   "fingerprint": "chrome",
                   "serverName": "www.google.com",
                   "publicKey": "$PUBLIC_KEY",
                   "shortId": "$SHORT_ID",
                   "spiderX": ""
               }
           },
           "tag": "proxy"
       }
   ]
}


Modification de la configuration wireguard sur le client

Et enfin il fallait modifier la configuration wireguard sur le client :
  • d'une part dans sa section [Interface] pour limiter le MTU à 1300 octets (MTU = 1300), comme pour le serveur
  • d'autre part dans la section [Peer] correspondante au serveur wireguard, pour utiliser comme adresse de destination celle du service xray local au lieu de la véritable adresse du serveur wireguard (Endpoint = 127.0.0.1:$PRIVATE_PORT)
  • et enfin, pour que la machine cliente puisse rediriger tout son trafic internet via le VPN wireguard, il fallait changer le paramètre allowedIPs de la section [Peer] correspondante au serveur wireguard. En effet, si on laisse 0.0.0.0/0, ::/0, on redirige aussi le trafic destiné a xray à l’intérieur du VPN. Et du coup ça se mord la queue et ne fonctionne plus. Pour ce faire on peut s'aider du site https://www.procustodibus.com/blog/2021/03/wireguard-allowedips-calculator qui permet de générer une liste de plages IP qui englobe tout internet sauf certaines adresses.

Résultats

Après un peu de débug de configuration réseau (configurations firewall et forward de port entre l'hyperviseur et la VM qui héberge le serveur wireguard qui sous le coup de la fatigue nous avions un peu foirées) la solution s'est avérée efficace. Il était de nouveau possible pour mon ami de se connecter à un VPN wireguard en dehors de son pays. Il à ensuite pu également se connecter à son VPN openvpn, en passant par ce VPN wiregard (évidemment faire passer openvpn à l’intérieur de wireguard qui lui même passe à l’intérieur de xray n'est pas optimal. Mais ça valide déjà la possibilité de contourner les blocages actuel mis en place par son pays).

Références

  • 1. https://lowendtalk.com/discussion/170940/how-to-obfuscate-wireguard-traffic
  • 2. https://www.reddit.com/r/WireGuard/comments/ucz53b/hiding_wireguard_with_ssh_to_avoid_restrictions/
  • 3. https://btwiusearch.net/posts/wg-xray/
  • 4. https://www.protectstar.com/en/blog/blocking-campaign-russia
  • 5. https://docs.amnezia.org/documentation/amnezia-wg/*
  • 6. https://www.40huo.cn/blog/wireguard-over-vless.html
  • 7. https://computerscot.github.io/wireguard-over-xray.html
  • 8. https://cscot.pages.dev/2023/04/13/cloudflare-warp/
  • 10. https://github.com/XTLS/Xray-core
  • 11. https://github.com/XTLS/Xray-core/discussions/2954
  • 12. https://xtls.github.io/en/config/outbounds/wireguard.html
  • 13. https://cscot.pages.dev/2023/03/02/Xray-REALITY-tutorial/#Determine-camouflage-website
Voir la fiche

Crypt

CLIC_cryptpad.png
Description Une suite bureautique collaborative chiffrée de bout en bout.
Résumé Produire des documents chiffrés
Catégorie Coopérer
Type d'accès Accès libre
URL du service https://crypt.lab12.io
Logiciel CryptPad
Licence GNU Affero General Public License v3.0 only
Code source https://github.com/cryptpad/cryptpad
Voir la fiche

Date

CLIC_evenements.png
Description Les sondages « dates » permettent de déterminer collaborativement la date et l’heure (le lieu, les modalités…) d’une réunion qui conviennent à tous et à toutes.
Résumé Organiser des rendez-vous simplement, librement.
Catégorie Echanger
Type d'accès Accès libre
URL du service https://date.lab12.io/
Logiciel OpenSondage / Framadate
Licence CeCILL-B
Code source https://framagit.org/framasoft/framadate/framadate
Voir la fiche

Element

27f45055f6468de26b31584703a9e1d8b86b4114_84ccd5b70739b89e78c04a031b375ca1d2079b508f841a00e2525ff8ce3229f1.png
Description de l'application Client web pour Matrix
Visibilité de l'application Privée
Identifiant de l'application Yunohost element
Url d'accès au service https://element.lab12.io/
Voir la fiche

Etherpad MyPads

ab57b63a1d8308a5899448f4270b74374dd6134b_ce619748d4d0f5c6e39727ed2693c1d676e50ea897ab13e00f651dab300a1dc3.png
Description de l'application Éditeur en ligne fournissant l'édition collaborative en temps réel
Visibilité de l'application Publique
Identifiant de l'application Yunohost etherpad_mypads
Url d'accès au service https://lab12.io/pad
Voir la fiche

Framasoft

Site web https://framasoft.org/fr/
Type de ressource
  • Partenaire ressource
Description Framasoft, c’est une association d’éducation populaire, un groupe d’ami·es convaincu·es qu’un monde numérique émancipateur est possible, persuadé·es qu’il adviendra grâce à des actions concrètes sur le terrain et en ligne avec vous et pour vous !
Voir la fiche

HedgeDoc

9d8624de5ce5736aab44deea531af61c5bf20c9e_edce4a8882c0ae6171d64f28565140dfaa38b74203f67289e18a0755f8444df7.png
Description de l'application Éditeur collaboratif pour travailler sur des notes en Markdown
Visibilité de l'application Publique
Identifiant de l'application Yunohost hedgedoc
Url d'accès au service https://lab12.io/pads
Voir la fiche

Immich

192f53e36951d60b03952c6c7aa4c36fd9b107f6_276809d25edd918582cfc998b663406cc7c076aaaf81dd2fe91107775156c4cf.png
Description de l'application Sauvegarde de photos et de vidéos directement depuis votre mobile
Visibilité de l'application Privée
Identifiant de l'application Yunohost immich
Url d'accès au service https://photos.lab12.io/
Voir la fiche
20240307_0848202.jpg

Installation de CLIC pour héberger lab12.io sur un petit serveur nomade

Date 09.03.2024
Résumé Ces derniers jours j'ai installé CLIC sur un Odroid H3+ pour faire un petit système de démonstration d'auto-hébergement nomade.
Billet Au cours des dernières semaines, j'ai pris un peu de temps, pour mettre en place un nouveau système de démonstration d'auto-hébergement numérique nomade, à base de CLIC, d'un ODroid H3+, d'un routeur 4G et d'un VPN Wireguard fourni par Iloth.

C'est ce système qui héberge le site lab12.io sur lequel vous êtes en train de lire ce billet de blog.

A l'origine de mon projet de Lab12 nomade je voulais utiliser un Odroid M1, qui est plus petit et consomme encore moins d'électricité que le H3+. Mais le M1 n'est pas bien supporté par YUNoHost version 11. Alors, en attendant que YUNoHost version 12 soit stable, j'ai décidé d'utiliser le H3+.

Vous trouverez plus d'informations sur le matériel et les logiciels utilisés pour constituer ce système sur la page de présentation de l'infrastructure nomade du Lab12
Voir la fiche
Screenshot_from_20240311_161852.jpg

Installation d’un environnement de développement YesWiki sous Debian GNU/Linux

Date 11.03.2024
Résumé Dans mon billet de blog d’hier, je parle de l’environnement de développement partagé avec TigerVNC que j’ai mis en place dans une machine virtuelle pour faire des sessions de pair programming sur le code de YesWiki avec MrFlos. Aujourd’hui je vous donne les détails des étapes à suivre pour vous installer le même environnement de développement YesWiki que celui que j’ai mis en place dans ma machine virtuelle.
Billet Dans mon billet de blog d’hier, je parle de l’environnement de développement partagé avec TigerVNC que j’ai mis en place dans une machine virtuelle pour faire des sessions de pair programming sur le code de YesWiki avec MrFlos. Aujourd’hui je vous donne les détails des étapes à suivre pour vous installer le même environnement de développement YesWiki que celui que j’ai mis en place dans ma machine virtuelle.

Les explications que je donne ici sont faites pour un poste de travail sous Debian GNU/Linux. Ça peut être une machine virtuelle comme moi ou un poste de travail classique sur un ordinateur portable ou fixe. Si vous êtes sur un système d’exploitation différent il vous faudra peut-être adapter certaines parties. J’essaye de donner des instructions suffisamment détaillées pour que n’importe qui soit capable de les suivre. Mais pour ensuite utiliser cet environnement il faudra apprendre à utiliser les outils qui sont installés si on ne les connaît pas. Je pense notamment à git et VSCodium dont la description détaillée de l’utilisation sort du cadre de ce simple billet de blog. Et pour travailler sur le code de YesWiki il faudra également se former à quelques langages de programmation si on ne les maîtrise pas déjà : PHP, javascript, CSS, SQL, twig, ...

1. Accès au code source de YesWiki sur GitHub avec git

La première étape pour travailler sur le code source de YesWiki est de pouvoir récupérer une copie locale des dépôts du code source en local sur son poste de travail et de pouvoir pousser ses modifications sur GitHub.
Pour cela, si ce n’est pas déjà le cas, il faut tout d’abord se créer un compte sur GitHub et générer une clé ssh sur son poste de travail, avec la commande ssh-keygen -t ed25519 dans un terminal. Et il faut ensuite ajouter dans son compte GitHub la clé publique qui a été générée, en allant dans les paramètres de son compte, section "clés SSH et GPG". (la clé publique à ajouter devrait se trouver dans le fichier ~/.ssh/id_ed25519.pub si on a utilisé le nom de clé par défaut proposé par ssh-keygen)
La récupération du code source depuis GitHub se fera avec l’utilitaire git qui s’installe sous Debian avec la commande apt-get install git (il faut bien sûr exécuter cette commande en tant que root, soit en ajoutant sudo devant si vous utilisez sudo, soit en étant devenu root avant, avec la commande su - si vous êtes «old school» comme moi.)

Pour que vous soyez correctement identifié comme auteurice de vos commits git il faut le configurer avec les commandes suivantes (en tant que user normal cette fois, pas en tant que root) :
git config --global user.name "Votre nom ou pseudo"
git config --global user.email "votre.email@votre-domaine.tld"

Et pendant qu’on en est à configurer git, il-y-a un autre paramètre qui peut être défini pour se simplifier la vie :
git config --global pull.rebase true


2. Installation de PHP et de quelques autres outils nécessaires au développement de YesWiki

En tant que root, executer les commandes suivantes pour installer PHP, composer et symfony :
apt-get install libnss3-tools php-common php-fpm php-curl php-gd php-json php-mysql php-xml php-mbstring php-zip php-json  curl jq -y
curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | sudo -E bash
apt install symfony-cli
symfony server:ca:install 
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer


3. Récupération d’une copie locale du code source de YesWiki

Notes :
  • si votre compte est membre de l’organisation GitHub de YesWiki vous pourrez travailler directement sur les dépôts officiels, comme dans les instructions que je donne. Si ce n’est pas le cas il faudra vous faire des forks des dépôts sur GitHub et adapter ce que j’explique pour travailler sur ces forks (voir la documentation de GitHub)
  • je décris comment récupérer une copie locale des différents dépôts de code source de YesWiki et les lier entre eux en utilisant un script développé par MrFlos. Comme à chaque fois qu’on vous dit d’exécuter sur votre ordinateur un script téléchargé sur internet, il est fortement recommandé de bien examiner le contenu de ce script pour bien comprendre ce qu’il va faire et pour vérifier qu’il ne contient pas de code malveillant.

Maintenant que git est installé et configuré on peut récupérer le code source du coeur de YesWiki et de ses extensions avec le script de MrFlos en exécutant les commandes suivantes dans un terminal (en tant que user normal, pas en tant que root) :

mkdir Developpements
wget https://forge.mrflos.pw/mrflos/nixos-config/raw/branch/main/scripts/init_yeswiki_repos.sh
less init_yeswiki_repos.sh

Là, si vous avez bien regardé le contenu du script vous avez dû noter qu’à la fin il récupère des dépots de la forge personnelle de MrFlos et un dépôt de l’organisation des Colibris sur framagit dont vous n’avez probablement pas besoin et auquels vous n’avez probablement pas accès en écriture. Il vaut donc mieux supprimer cette partie du script avant de l’exécuter en l’ouvrant dans son éditeur préféré, qui est nano dans mon cas :
nano init_yeswiki_repos.sh

On peut ensuite rendre le script exécutable et le lancer :
chmod +x init_yeswiki_repos.sh 
./init_yeswiki_repos.sh


Si tout s’est bien passé, vous devriez voir toutes les copies locales des dépôts du code YesWiki dans le dossier ~/Developpements :
Copie d'écran de la commande ls ~/Developpements
Copie d'écran de la commande ls ~/Developpements
Et, dans le code du coeur de YesWiki, vous devriez trouver des liens symboliques qui ont été créés vers les extensions (dans ~/Developpements/yeswiki/tools/) :
Copie d'écran de la commande ls ~/Developpements/yeswiki/tools/
Copie d'écran de la commande ls ~/Developpements/yeswiki/tools/

On va supprimer trois de ces liens symboliques parce que les extensions correspondantes posent des soucis au moment où j’écris ces lignes :
cd ~/Developpements/yeswiki
rm tools/markdown # extension obsolète
rm tools/loginldap # nécessite d’avoir un serveur LDAP et d’être configuré pour pouvoir être utilisée
rm tools/lang/yeswiki-extension-lang # extension obsolète


4. Installation de VSCodium

J’ai choisi d’utiliser VSCodium pour mon environnement de développement. Mais vous être libre d’utiliser autre chose.
Pour installer VSCodium, exécutez les commandes suivantes dans un terminal en tant que root :
curl -fSsL https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | sudo gpg --dearmor | sudo tee /usr/share/keyrings/vscodium.gpg >/dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/vscodium.gpg] https://download.vscodium.com/debs vscodium main" | sudo tee /etc/apt/sources.list.d/vscodium.list
apt update
apt install codium

Vous pouvez ensuit lancer VSCodium et y installer quelques extensions bien utiles pour développer en PHP, comme celle qu’on peut voir sur cette copie d’écran :
Copie d'écran des extensions installées dans mon VSCodium
Copie d'écran des extensions installées dans mon VSCodium

Il suffit ensuite d’ouvrir le dossier du code de YesWiki (~/Developements/yeswiki), ou celui d'une extension, avec le raccourci clavier Ctrl-K + Ctrl-O (ou en utilisant le menu) pour commencer à coder.
Copie d'écran de VSCodium
Copie d'écran de VSCodium

5. Installation de MariaDB et création d’une base de donnée pour YesWiki

Pour pouvoir faire tourner une version de test de YesWiki sur son environnement de développement il faut une base de données. On installe MariaDB avec les commandes suivantes, dans un terminal en tant que root :
apt install mariadb-server
mysql_secure_installation

Puis on lance le client mysql en ligne de commande, soit avec la commande mysql en tant que root soit avec la commande mysql -u root -p en tant que user normal, en fonction des choix qu’on a faits pour répondre aux questions de mysql_secure_installation.

Une fois connecté au serveur MariaDB on exécute les requêtes SQL suivantes pour créer une base de données et un user pour YesWiki (n'oubliez pas de remplacer le mot de passe dans la deuxième requête) :
CREATE DATABASE yeswiki;
CREATE USER 'yeswiki' IDENTIFIED BY 'mettre ici son mot de passe préféré !!!';
GRANT ALL PRIVILEGES ON yeswiki.* TO 'yeswiki';


6. Configurer TLS pour le serveur web de test


Pour lancer un serveur web de test, il suffit, dans un terminal en tant qu’utilisateur normal, d’exécuter les commandes suivantes :
cd ~/Developpements/yeswiki
symfony server:ca:install


6. Lancer un serveur web de test


Pour lancer un serveur web de test, il suffit, dans un terminal en tant qu’utilisateur normal, d’exécuter les commandes suivantes :
cd ~/Developpements/yeswiki
symfony server:start

Une fois le serveur web démarré, l’instance de test de YesWiki devrait être accessible dans un navigateur web à l’adresse https://127.0.0.1:8000 et devrait afficher le formulaire d’installation de YesWiki. Il suffit d’y renseigner les champs MySQL database name, MySQL username, MySQL password, Administrator, Password, Password confirmation et Email address puis de valider pour finir de la configurer. Une fois fait, vous devriez vous retrouver devant la page principale par défaut de YesWiki :
Copie d'écran de l'instance de test de YesWiki
Copie d'écran de l'instance de test de YesWiki

Pour que les extentions yeswiki qui ont été installée par le script de MrFlos soient bien active il faut aller naviguer sur la page https://127.0.0.1:8000/?PagePrincipale/update
Voir la fiche

JFeinler Elizabeth

Nom JFeinler
Prénom Elizabeth
ElizabethJFeinler_elizabethfeinler-2011.jpg
Mon métier, ma fonction informaticienne, pionnière de l'internet
Ma présentation En 1974, j'ai créé le nouveau Network Information Center (NIC) de l'ARPANET.
Nom de la structure Stanford Research Institute et NASA
Site Internet https://fr.wikipedia.org/wiki/Elizabeth_J._Feinler
Ville Paris
Voir la fiche

LibreSpeed

8d9090905fbaa012f244d8f89c7758aced8411f7_b046d29b55927334f9a99f5c40e4a9d03823c07a47ed59daf3ad7860efc7e5cc.png
Description de l'application Test de vitesse de connexion très léger
Visibilité de l'application Publique
Identifiant de l'application Yunohost librespeed
Url d'accès au service https://speed.lab12.io/
Voir la fiche

Lovelace Ada

Nom Lovelace
Prénom Ada
LovelaceAda_lovelace.png
Mon métier, ma fonction Pionnière de la science informatique
Ma présentation

J'ai réalisé le premier véritable programme informatique, lors de mon travail sur un ancêtre de l'ordinateur : la machine analytique de Charles Babbage.

Nom de la structure Université de Cambridge
Site Internet https://fr.wikipedia.org/wiki/Ada_Lovelace
Ville Londres
Voir la fiche

M.D.

CLIC_hedgedoc.png
Description Permet d'éditer collaborativement des docuements textes structurés au format MarkDown
Résumé Co-rédiger des textes structurés
Catégorie Coopérer
Type d'accès Accès libre
URL du service https://md.lab12.io
Logiciel HedgeDoc
Licence GNU Affero General Public License v3.0 only
Code source https://github.com/hedgedoc/hedgedoc
Voir la fiche

motionEye

128131bb9ce27c69a83c745b5c185123919f3aba_e9c32fb7041aff7019fac50fa745c74277391f05461a5dc4bd09e54e19f9720d.png
Visibilité de l'application Privée
Identifiant de l'application Yunohost motioneye
Url d'accès au service https://motion.lab12.io/
Voir la fiche

Mutueliste Michael

Nom Mutueliste
Prénom Michael
CLIC_formations.png
Adresse 37 allée des platanes
Code postal 11240
Ville Belvèze du razes
Voir la fiche

Nextcloud

e5ff440af8a7dd884b855e4b598a0ef8d5f08b5a_7619f283fa6ce9e0c6ae30cef5bb7cb47b926e9abccda4009a70e54579aa915a.png
Description de l'application Stockage en ligne, plateforme de partage de fichiers et diverses autres applications
Visibilité de l'application Publique
Identifiant de l'application Yunohost nextcloud
Url d'accès au service https://lab12.io/nextcloud
Voir la fiche

Nuage

CLIC_nextcloud.png
Description Permet de partager des fichiers avec d'autres personnes et de synchronizer entre plusieurs appareils ses documents, son agenda, ses contacts, ses notes, ses photos, etc.
Résumé Partager des documents
Catégorie Coopérer
Type d'accès Accès réservé
URL du service https://nuage.lab12.io
Logiciel NextCloud
Licence AGPL-3.0
Code source https://github.com/nextcloud/server
Voir la fiche

Pad

CLIC_pad.png
Description Un éditeur de document texte permettant de travailler collaborativement à plusieurs personnes en temps réel.
Résumé Prendre des notes à plusieurs
Catégorie Coopérer
Type d'accès Accès libre
URL du service https://pad.lab12.io
Logiciel Etherpad
Licence Apache License 2.0
Code source https://etherpad.org/
Voir la fiche

Postit

CLIC_scrumblr.png
Description Un tableau de notes collaboratif pratique pour organiser des idées, pour faire des "brainstorming", etc.
Résumé Organiser des idées
Catégorie Coopérer
Type d'accès Accès libre
URL du service https://postit.lab12.io
Logiciel Framemo / Scumblr
Licence GNU Affero General Public License v3.0 only
Code source https://framagit.org/colibris/framemo
Voir la fiche

Sortie Culturelle

Description La culture, moins on en a, plus on l'étale!
Début de l'événement 30.05.2023 - 18:00
Fin de l'événement 02.05.2021 - 20:00
Adresse url https://www.yeswiki.net
TesT2_presence-photo.png
Adresse Avenue des Champs Elysées
Code postal 75000
Ville Paris
Voir la fiche

Synapse

12d54b2441ffaf2172a1f57958d9e76d7db07778_600b66c0f081a6896a713c43878db70b31e7fa122cf2a163b7f227b79947a5e3.png
Description de l'application Serveur de messagerie instantané basé sur Matrix
Visibilité de l'application Privée
Identifiant de l'application Yunohost synapse
Url d'accès au service https://matrix.lab12.io/
Voir la fiche
UnBeauLogoPourYeswiki_yeswiki-logo.png

Un beau logo pour Yeswiki

Résumé Il fallait le rafraichir, nous l'avons fait !
Billet Après multiples discussions, tests et essais, un logo plus actuel a été créé pour Yeswiki
Nous espérons que vous l'aimerez ;-)
Voir la fiche
UnNouveauThemePourYeswiki_capture-décran-2020-02-12-à-13.16.33.png

Un nouveau thème pour Yeswiki

Résumé Margot, voilà le nom du nouveau thème qui sera distribué avec la prochaine version de Yeswiki
Billet Plus moderne, mieux pensé, plus graphiqu.
Margot permettra d'unifier les rendus graphiques des wikis.
Voir la fiche
20240704_2019262.jpg

Un serveur CLIC pour le camp CHATONS 2024

Date 04.07.2024
Résumé La qualité de la connexion internet au camp CHATONS 2024 étant incertaine, je me suis proposé d'amener un petit serveur CLIC pour avoir les services numériques en local.
Billet Pendant le camp CHATONS 2024, nous seront connecté à internet via des routeurs 4G, avec l'antene la proche qui serait à 1 km du site
La qualité de la connexion internet etant donc un peu incertaine, j'ai proposé d'amener un petit serveur CLIC pour avoir en local les services Libreto et etherpad que nous utilisons pour l'organisation du camp et pour prendre des notes pendant les ateliers. J'y ai aussi installé quelques autres services, au cas ou ca puisse être utile : Cryptpad, Scrumblr, Excalidraw, ...

J'ai un peu galéré pour installer Libreto. Une fois installé avec Yunohost, libreto n'etait pas fonctionnel. J'ai du résoudre 3 problèmes pour le faire fonctionner :
  • Les assets (css, js, ...) ne se chargaient pas dans le navigateur.
  • La configuration de l'instance d'étherpad à utiliser n'était pas prise en compte
  • Il y avait des erreurs php dans une dépendance de libreto

Pour les deux premiers problèmes, il s'agissait de corriger des choses dans le package yunohost. Pour le troisième il fallait utiliser une version plus récente de la dépendance qui posait problème.
  • j'ai créé une pull request sur le dépot git du package Yunohost
  • et j'ai créé une autre pull request sur le depot git de Libreto

Après ces correctifs j'ai obtenu un libreto fonctionnel en mode ecriture. Mais le mode lecture seule reste instable. Des fois ca fonctionne, des fois non.
La solution a ce problème est donnée par @ljf sur le forum CHATONS

Enfin, quand j'ai fais un test de clonage du libreto du camp chaton je suis tombé sur une erreur lors de l'import de l'un des pad. La cause était la taille du pad, qui faisait un peu plus de 2 Mo. La configuration par défaut d'étherpad permet d'importer des pad jusqu'à une taille de 50 Mo. Mais il y a une autre limite, au niveau de nginx, qui par défaut est de 1Mo. J'ai créé une troisème pull request sur le package Yunohost d'étherpad avec mon correctif pour ce problème.

Pour ce qui est du matriel c'est le même type d'ordinateur que celui qui fait tourner lab12.io, un ODroid H3+, avec 64 Go de RAM et un SSD NVMe de 1 To. Seule la carte WiFi utilisée pour le hotspot est différente. Vu le nombre de personnes qu'il y aura au camp, j'en ai pris une plus performante. (en haut à gauche sur la photo). J'amènerais aussi un routeur 4G pour avoir une connection internet (à droite du serveur sur la photo)

Pour l'instant j'alimente tout ça en utilisant les sorties 12V d'une station d'énergie toute en un, une Ecoflow Delta Pro (sous le serveur et le routeur sur la photo), et un panneau solaire de 410 W. Je teste en ce moment ce type de station d'énergie pour comparer avec mes systèmes fait maison.

J'amènerais probablement le tout au camp CHATONS, même si le système photovoltaique ne devrait pas être utile. Sur site cette installation sera complétée par des antennes WiFi installées par @retzien (voir le fil de discussion correspondant sur le forum)

S'il est en ligne au moment où vous lisez ce billet, le serveur CLIC en question est accessible à cette adresse : https://lab12.org
Voir la fiche
bureaupartage.jpg

Un serveur de terminal graphique sous Linux

Date 10.03.2024
Résumé J'ai mis en place un environnement graphique sous Linux dans une machine virtuelle sur un serveur, avec TigerVNC pour le partage de bureau.
Cela me permet d'avoir le même environnement quelque soit le poste de travail que j'utilise et de faire des sessions de pair programming sur le code de YesWiki avec MrFlos.
Billet Avec quelques camarades libristes, j’ai récemment rejoint l’équipe de développement de YesWiki. Pour nous aider à nous familiariser plus rapidement avec le code, MrFlos nous a proposé de faire des sessions de pair programming.

Mais, n’étant pas physiquement au même endroit, se posait pour moi la question de l’outil à utiliser pour que ces sessions soit les plus fluides et efficaces possible.
Je n’ai jamais été satisfait de l’utilisation d’une simple visioconférence avec partage d’écran pour ce cas d'usage, parce que seule la personne qui partage son écran peut interagir avec.
Quand nous faisons de l’administration système au DistriLab nous avons l’habitude d’utiliser tmux pour travailler à plusieurs sur la même session ssh. Une visioconférence plus tmux est largement suffisante dans ce cas parce que tout se passe dans le terminal.

image nano_dans_tmux.jpg (0.2MB)
Capture d'écran de nano dans tmux utilisé pour éditer un fichier PHP du code de YesWiki

Mais après une première tentative de faire pareil pour corriger un bug de YesWiki en binôme avec MrFlos, cette solution s’est vite révélée trop limitante :
  • Il est possible d’avoir un environnement de développement relativement évoluée dans le terminal avec, entre autres, de la coloration syntaxique, de l’aide à la saisie et à la navigation dans le code et l’ouverture simultanée de plusieurs fichiers, en utilisant des logiciels comme neovim ou emacs. Mais ces outils ne sont pas faciles à prendre en main quand on n’a pas l’habitude de les utiliser. Et il faut s’accorder pour utiliser le même outil. (La division entre utilisation d’emacs et de vi/vim/neovim est légendaire, voir l’artice sur la guerre des éditeurs de texte sur Wikipedia). Et je n’ai personnellement jamais réussi à me mettre à apprendre la foultitude de raccourcis claviers qu’il est nécessaire de maitriser pour utiliser l’un ou l’autre de manière efficace. Quand je fais de l’administration système j’utilise nano pour éditer des fichiers. Et ça me suffit largement. Et bien qu'il soit possible d'avoir de la coloration syntaxique avec nano, quand je fais du développement je suis plus a l’aise avec un IDE graphique comme Eclipse ou VSCodium.

image neovim_mrflos_crop.jpg (0.3MB)
Copie d'écran de l'environnement de dévelopement YesWiki de MrFlos avec neovim

  • Quand on développe une application web, tout ne peut pas se passer dans le terminal. On est fréquemment appelé à faire des aller-retours entre l’environnement de développement pour modifier le code et le navigateur web pour tester l’application ou chercher des solutions sur internet. Alors les trolls vont me dire qu’il existe des navigateurs web en mode texte. Mais, heu…, non merci.

Copie d'écran du site lab12.io dans le navigateur web en mode texte browsh
Copie d'écran du site lab12.io dans le navigateur web en mode texte browsh

Alors j’ai décidé de tester une autre solution. Ça faisait longtemps que j’avais envie de me mettre en place un environnement de travail graphique sous linux dans une machine virtuelle sur un serveur, histoire d’avoir le même environnement quelque soit le poste de travail que j’utilise. Et je me suis dit que si j’avais un environnement comme ça, auquel on pouvait se connecter à plusieurs en même temps, ça pourrait être une bonne solution pour des sessions de pair programming.
Après quelques recherches sur internet je suis tombé sur un article qui avait l’air de décrire exactement ce que je voulais mettre en place, excepté pour la distribution utilisée qui est Ubuntu alors que je voudrais utiliser Debian GNU/Linux : Setting up Remote Desktop Sharing via SSH on Linux

Je me suis donc créé une machine virtuelle sur mon serveur proxmox, sur laquelle j’ai installé Debian Bookworm avec Gnome et, après les quelques configuration de base que je fais sur toutes mes machines (connexion ssh sans mot de passe avec clé publique/privée, blocage des ports réseau avec le firewall ufw, …), j’ai suivi la procédure décrite sur l’article.
Ubuntu étant proche de Debian je n’ai pas eu à adapter grand-chose. La seule différence notable a été le nom de la session graphique à utiliser dans la configuration de TigerVNC. Dans l’article c’est ubuntu-xorg qui est utilisé. Dans mon cas la session s’appelle gnome-xorg

Après ça il n’y avait plus qu’a personaliser un peu Gnome et à installer un environnement de dévelopement YesWiki (ce que je décrirais dans un autre billet de blog) pour avoir un bureau partagé permettant de faire des sessions de pair programming avec MrFlos

image bureaupartage.jpg (0.4MB)
Copie d'écran du bureau graphique partagé que j'ai mis en place
Voir la fiche

Wiki

CLIC_yeswiki.png
Description L'extention Ferme à Wiki permet de créer des sites web collaboratifs
Résumé Créer un site collaboratif
Catégorie Coopérer
Type d'accès Accès réservé
URL du service https://lab12.io/?AdminWikis
Logiciel YesWiki
Licence GNU Affero General Public License v3.0 only
Code source https://github.com/YesWiki/yeswiki
Voir la fiche

YesWiki

b32c7932ad7d0e0f74cd047a6b4c7c451860a36d_f08c90c8ff38d53a71e100595b62ccd9d436fddbedba8e201fb2cfc7b282a10b.png
Description de l'application Wiki facile et rapide à prendre en main
Visibilité de l'application Publique
Identifiant de l'application Yunohost yeswiki
Url d'accès au service https://lab12.io/wiki
Voir la fiche

Yeswiki : le site officiel

Site web https://yeswiki.net
Type de ressource
  • Site web ressource
Description Tout ce qu'il y a à savoir sur Yeswiki
Voir la fiche

Yeswikiday

Description Une journée pour faire avancer le projet Yeswiki dans la bonne humeur
Début de l'événement 30.04.2020 - 09:00
Fin de l'événement 30.04.2020 - 16:00
Adresse url https://yeswiki.net/?DocumentatioN
YeswikidaY_yeswiki-logo.png
Code postal 7700
Ville Mouscron
Voir la fiche

Youpi ici c'est le titre

Description Un événement autour du vin, c'est pour cela qu'il est à Bordeaux...
Début de l'événement 08.01.2020
Fin de l'événement 10.01.2020
Ville Bordeaux
Voir la fiche
CSV JSON Widget

(>^_^)> Galope sous YesWiki <(^_^<)