[{"bf_titre":"Bidouillage de digiCadre d\u00e9clinaison boite \u00e0 m\u00e8mes","bf_date_debut_evenement":"2024-11-23","bf_chapeau":"Lundi je suis all\u00e9 \u00e0 la permanence du hackerspace le Bib \u00e0 Montpellier pour y adh\u00e9rer. Et j\u0027ai eu la plaisante surpise d\u0027y croiser Roz qui y bidouillait un digiCadre pour l\u0027installer au bib. Et j\u0027ai d\u00e9cid\u00e9 de m\u0027en installer un au lab12","bf_description":"Je m\u0027y suis donc mis hier soir, apr\u00e8s une s\u00e9ance de test d\u0027images CLIC, mais tombant de sommeil j\u0027ai battu en retraite sous la couette. J\u0027ai continu\u00e9 ce matin et vous pouvez voir sur la photo en haut l\u0027instance que j\u0027ai install\u00e9 au QG du lab12\n. J\u0027ai utilis\u00e9 un Odroit XU4 que j\u0027alimente avec une batterie : \n{{attach file=\u0022IMG_20241120_123513.jpg\u0022 desc=\u0022image IMG_20241120_123513.jpg (1.1MB)\u0022 size=\u0022original\u0022 class=\u0022\u0022}}\n\n\nSi vous voulez vous d\u00e9ployer une instance de digiCadre, la documentation se trouve l\u00e0 : https:\/\/wiki.fuz.re\/doku.php?id=projets:fuz:cadre_photo_participatif\n\nParmis les id\u00e9es d\u0027\u00e9volution du concept non encore impl\u00e9ment\u00e9e il a celle d\u0027interconnecter ou de f\u00e9d\u00e9rer les digiCadres de plusieurs lieux.\nJ\u0027ai commenc\u00e9 a mettre en place un preuve de concept de cette id\u00e9e en ajoutant syncthing \u00e0 mon digicadre et \u00e0 synchronizer un dossier d\u0027image avec un autre serveur syncthing.\n\nPour installer syncthing sur le digicadre, rien de plus simple, il suffit de lancer dietpi-software et de trouver syncthing avec le menu \u0022Browse Software\u0022, dans la cat\u00e9gorie \u0022Cloud \u0026amp; Backup\u0022\n\nUne fois install\u00e9 il faut aller sur l\u0027interface web qui se trouve sur le port 8384\net cliquer sur Settings en dessous de l\u0027avertissement qui dit qu\u0027il n\u0027y a pas d\u0027utilisateurice de configur\u00e9 et que donc \u00e7a crain niveau s\u00e9curit\u00e9. Puis il faut aller dans la section \u0022GUI\u0022 pour corriger cette situation. Pour bien s\u00e9curiser mon digicadre j\u0027ai cr\u00e9\u00e9 le compte dietpi avec comme mot de passe dietpi, pour rester coh\u00e9rent avec le reste du projet.\nUn autre param\u00e8tre \u00e0 modifier c\u0027est le \u0022Device Name\u0022 dans la section \u0022General\u0022 qui est par d\u00e9fault \u0022\u0022\u0022DietPi\u0022\u0022\u0022. C\u0027est mieux de donner un nom distinct entre les digiCadres pour s\u0027y retrouver dans l\u0027interface de syncthing. J\u0027ai nomm\u00e9 le mien \u0022\u0022\u0022DigiCadre 12b\u0022\u0022\u0022\n\nJ\u0027ai ensuite \u00e9galement install\u00e9 syncthing sur mon serveur lab12.org. Avec \u0022\u0022YunoHost\u0022\u0022, c\u0027est tr\u00e8s simple aussi. \n\nJ\u0027ai ensuite copi\u00e9 l\u0027identifiant syncthing de ce serveur pour aller l\u0027ajouter comme \u0022remote device\u0022 sur le syncthing du digicadre. En faisant \u00e7a j\u0027ai coch\u00e9 l\u0027option pour d\u00e9finir ce device comme \u00e9tant un \u0022introducer\u0022. Ce qui permet de voir apparaitre automatiquement les dossiers qu\u0027il partage.\nEnsuite, de retour sur le syncthing du serveur lab12.org, j\u0027ai cr\u00e9\u00e9 une paire de dossier partag\u00e9s : un pour ma collection de photos de type fond d\u0027\u00e9cran et un pour des images de m\u00e8mes et je les ai partag\u00e9s avec le digiCadre.\nRe-bascule sur le syncthing du digiCadre, et j\u0027ai accept\u00e9 les deux partages que j\u0027ai configur\u00e9 pour \u00eatre sotck\u00e9s dans \/mnt\/photos et \/mnt\/memes\nIl y a eu un petit soucis de droit d\u0027acc\u00e8s au r\u00e9pertoires \u00e0 ce moment l\u00e0. Syncthing utilise le user dietpi pour acc\u00e9der au syst\u00e8me de fichiers.\nJ\u0027avais d\u00e9j\u00e0 cr\u00e9\u00e9 les dossier \/etc\/systemd\/system\/syncthing.service comme appartenant au compte filebrowser, pour qu\u0027il soient accessible par filebrowser. Et les droits d\u0027acc\u00e8s ne permettaient pas au user dietpi d\u0027\u00e9crire dans ces dossiers.\nJ\u0027ai corrig\u00e9 \u00e7a avec les commandes suivantes : \n\n%%chown -R filebrowser:dietpi \/mnt\/memes\nchmod -R g+w \/mnt\/memes\nchown -R filebrowser:dietpi \/mnt\/photos\nchmod -R g+w \/mnt\/photos\n%%\n\nJ\u0027ai donc maintenant ces deux dossiers synchronis\u00e9s entre mon digiCadre, qui n\u0027est pas accessible depuis internet et ne sera pas tout le temps allum\u00e9, et mon serveur lab12.org, qui lui est accessible depuis internet, est allum\u00e9 en permanence et peut donc servir d\u0027interm\u00e9diaire pour synchronizer d\u0027autres digiCadres.\n\n{{attach file=\u0022digicadresyncthing_20241120_122034.png\u0022 desc=\u0022image digicadresyncthing_20241120_122034.png (0.5MB)\u0022 size=\u0022original\u0022 class=\u0022\u0022}}\n\nIl ne reste plus qu\u0027a trouver un autre digiCadre qui voudrait tester cette synchronisation ;-)\n","id_typeannonce":"3","id_fiche":"BidouillageDeDigicadreDeclinaisonBoiteAMe","imagebf_image":"BidouillageDeDigicadreDeclinaisonBoiteAMe_imagebf_image_digicadre_20241120122439_20241120122439.jpg","date_creation_fiche":"2024-11-20 12:24:39","statut_fiche":"1","date_maj_fiche":"2024-11-20 20:35:55","user":"douzeb","owner":"douzeb","html_data":"data-bf_date_debut_evenement=\u00222024-11-23\u0022 data-id_typeannonce=\u00223\u0022 data-id_fiche=\u0022BidouillageDeDigicadreDeclinaisonBoiteAMe\u0022 data-date_creation_fiche=\u00222024-11-20 12:24:39\u0022 data-statut_fiche=\u00221\u0022 data-date_maj_fiche=\u00222024-11-20 20:35:55\u0022 data-owner=\u0022douzeb\u0022 ","url":"https:\/\/lab12.io\/wiki\/?BidouillageDeDigicadreDeclinaisonBoiteAMe","-is-external-":"0"},{"bf_titre":"Charavane Saison 1 (2022)","bf_date_debut_evenement":"2024-07-06","bf_chapeau":"La g\u00e9n\u00e8se du projet charavane","bf_description":"Pendant le camp CHATONS 2022 j\u0027ai pr\u00e9sent\u00e9 un atelier intitul\u00e9 \u0022Un chaton nomade et autonome en \u00e9nergie\u0022.\n\nPlus tard dans la soir\u00e9e, au cours d\u0027une discussion avec r\u00f8zlav qui nous parlait du projet de chaton d\u0027attac, le chattac, le nom de charavane a \u00e9merg\u00e9.\n\nJe reproduis ci-dessous les notes prises par les participant de l\u0027atelier : \n\n## Atelier Camp CHATONS 2022 : \u0022Un chaton nomade et autonome en \u00e9nergie\u0022\n\nAnimateur : 12B - \u00e9lectronicien de formation, code dans son activit\u00e9\nHackerspace nomade Le Distrilab\nItin\u00e9rance pour 1 an ou deux\nObjectif : poser du serveur web dans des endroits priv\u00e9s d\u0027Internet ou avec une connection tr\u00e8s limit\u00e9e et potentiellement priv\u00e9 de source d\u0027\u00e9lectricit\u00e9.\n\n2 chantiers :  \n - Autonomie en \u00e9nergie\n - H\u00e9bergement de services sur connexion 4G\n\n\n### Pr\u00e9sentation du prototype d\u0027exp\u00e9rimentation \/ d\u00e9monstration en cours de construction : \n{{attach file=\u0022charavane01.jpg\u0022 desc=\u0022Photo du prototype de 12b\u0022 size=\u0022original\u0022 class=\u0022\u0022}}\n\n\nSyst\u00e8me modulaire\n3 panneaux solaires (PS)\n\n    PS #1 : 28w cr\u00eate : maximum (neuf, pas trop chaud, ciel d\u00e9gag\u00e9, panneau bien orient\u00e9), suffisant pour petite batterie, chargeur de t\u00e9l\u00e9phone. Un Raspbery Pi, maybe.\n\n    PS #2 : 100W cr\u00eate, batterie 154 W.h. chargeur et Mini-onduleur int\u00e9gr\u00e9;\n\n    PS #3 : 200W cr\u00eate - 191W observ\u00e9 sur une journ\u00e9e ensoleill\u00e9e\n\n\nPetit rappel d\u0027unit\u00e9s en \u00e9l\u00e9ctricit\u00e9\nAnalogie avec la baignoire, qu\u0027on renpli avec un robinet\n\n    Puissance (en W) = d\u00e9bit du robinet\n\n    Quantit\u00e9 d\u0027\u00e9nergie (en W.h) = quantit\u00e9 d\u0027eau dans la baignoire\n\n\n\nComposition de l\u0027installation\n1. un panneau solaire : \n    - d\u00e9branch\u00e9, fournit de la tension, mais pas d\u0027intensit\u00e9 = 0W\n    - branch\u00e9 en court circuit , intensit\u00e9 max, mais tension nulle = 0W aussi\n    - entre les deux il y a un point de fonctionement optimal o\u00f9 la puissance fournie par le paneau solaire est maximale. Mais ce point d\u00e9pends de plusieurs param\u00e8tres : le panneau solaire, la temp\u00e9rature, l\u0027ensoleillement, l\u0027age du capitaine, ...\n\n{{attach file=\u0022courbepuissancesolaire.gif\u0022 desc=\u0022Courbe puissance panneau photo-volta\u00efque\u0022 size=\u0022original\u0022 class=\u0022\u0022}}\n\n2. contr\u00f4leur 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\u00e9 pour avoir la puissance maximum, cherche le point par tests et mesures successives) Prot\u00e8ge aussi la batterie (plomb, lithium-ion, lithium-fer-phosphate, etc), le MPPT s\u0027adapte en fonction de la batterie. Il est plus cher que le PWM mais r\u00e9pond aux normes europ\u00e9ennes.\n ou deuxi\u00e8me type de controleur : PWM (pulse width modulation) - Low cost. S\u0027assurent de ne pas surcharger la batterie mais ne fait pas fonctionner le panneau \u00e0 sont point optimal). \n\n\n3. Batterie(s)\nLi-Fe-Po moins sensible \u00e0 la combustion spontan\u00e9e, pas un bon choix pour un projet de mobilit\u00e9\nLi-Fe-Po : 768wh =\u0026gt; 9.5kg, Li-Fe-Po conserve 80% de sa capacit\u00e9 apr\u00e8s 2.500 cycles de charge\/d\u00e9charge\nLi-Ion : 1000 wh, 350-400g - 80% de capacit\u00e9 apr\u00e8s ~800 cycles \nplomb : le moins cher, le plus gros poids rapport\u00e9 \u00e0 la capacit\u00e9\n* Sur application mobile : poids et encombrement crit\u00e8re le plus important (donc Li-Ion)\n* Sur un syst\u00e8me stationnaire, la batterie au plomb est un bon compromis en fonction de l\u0027usage\nbatteries Li-Ion, et Le-Fe-Po, supportent bien la d\u00e9charge \/ charge profonde ou partielle\nbatteries plomb : Moins ch\u00e8res. Perte plus rapide de capacit\u00e9 en g\u00e9n\u00e9ral (batteries de d\u00e9marrage - tr\u00e8s fort courant pendant un temps court, supportent mal d\u00e9charge profonde. Batteries plomb dites de traction suportent d\u00e9charge profonde- mais il est recommand\u00e9 de ne pas d\u00e9passer plus de 50% de d\u00e9charge pour une dur\u00e9e de vie optimale\nSinon : batteries d\u0027onduleur (au plomb, 12V, d\u00e9charge profonde)\nUne vid\u00e9o int\u00e9ressante sur les differents types de batteries au plomb : https:\/\/www.youtube.com\/watch?v=ryqKYLWlubE  \n\n{{attach file=\u0022charavane02.jpg\u0022 desc=\u0022image charavane02.jpg (1.9MB)\u0022 size=\u0022original\u0022 class=\u0022\u0022 caption=\u0022Photo du prototype de 12b\u0022}}\n\n4. Fusible sur batterie : 25A\n5. Convertisseur de tension continu-continu\nLa batterie 12V (en r\u00e9alit\u00e9, 12.8V, varie entre 10 et 14,4V)\nCertains appareils ont des tol\u00e9rances beaucoup plus faibles\nConvertisseurs  tension batterie en 12 V stable\nConvertisseurs en 15V, 5V pour l\u0027USB, USB C poxer delivery jusqu\u0027\u00e0 20V), chargeurs d\u0027ordinateurs plut\u00f4t 20V\n6. Onduleur\nTransforme courant continu en alternatif\nPas compl\u00e8tement silencieux. Moins bonne efficacit\u00e9 (perte d\u0027energie) que convertisseur courant continu.\n7. Prise de terre\n8. Panneau \u00e9lectrique avec diff\u00e9rentiel\n9. Modem routeur 4G : 0.2 * 13,5 ~ 2.5w\n10. Odroid M1 + SSD nvme 1To, 8GB de RAM (avec Yunohost, NextCloud, etc.)\nConso. : odroid M1 : 4w (avec le SSD nvme)\n\nPoids :\n* batterie : 9.5kg\n* le flycase compl\u00e8t avec tous les \u00e9quipement sauf le panneau solaire : il faut que 12b le p\u00e8se.\n* panneau solaire 200W valise : 9.5kg\n\n\n### Q\u0026amp;A\n{{attach file=\u0022charavane03.jpg\u0022 desc=\u0022image charavane03.jpg (1.4MB)\u0022 size=\u0022original\u0022 class=\u0022\u0022 caption=\u0022Photo Atelier\u0022}}\n* recherche d\u0027un groupe de personnes int\u00e9ress\u00e9es pour \u00e9changer l\u00e0-dessus\nr\u00e9seau de personnes int\u00e9ress\u00e9es par le sujet\nGoTronic : composants et convertisseurs\nbo\u00eetiers et allume cigare (avec fusible de protection)\n* disponibilit\u00e9\nautant que possible\nId\u00e9alement, 3 syst\u00e8mes num\u00e9riques aliment\u00e9s par la station \u00e9lectrique photo-volta\u00efque : \n 1.  Un micro-contr\u00f4leurs (tr\u00e8s faible consomation \u00e9lectrique) qui fonctionnerait tout le temps, pour piloter l\u0027allumage ou l\u0027arr\u00eat du syst\u00e8me et collecter des donn\u00e9es de capteurs (voire h\u00e9berger un mini site web de monitoring) fonctionnement sans \u0022\u0022WiFi\u0022\u0022 et sans routeur 4G quand la batterie est trop d\u00e9charg\u00e9e  (eventuellement utilisation de \u0022\u0022LoRa\u0022\u0022, protocole de communication sans fil tr\u00e8s basse consommation \u00e9lectrique, lent mais longue port\u00e9e)\n2. Un mod\u00e8le de nano-serveur  type odroid M1 de chez \u0022\u0022HardKernel\u0022\u0022 ou \u0022\u0022Quartz64\u0022\u0022 de chez \u0022\u0022Pine64\u0022\u0022 (CPU ARM, 8 Go RAM, 1 To SSD) qui fonctionnerait tant que la batterie est suffisamment charg\u00e9e et qui ferait tourner \u0022\u0022YunoHost\u0022\u0022 pour h\u00e9berger localement des services num\u00e9riques.\n3. Un petit serveur x86 plus puissant (32 Go RAM, 1x SSD nvme 1 To, 2x SSD SATA 2 To) qui ne serait allum\u00e9 que quand  il est utilis\u00e9 (pour faire des sauvegardes ou lancer des VM \/ LXC utilis\u00e9s ponctuellement pour faire du dev ou pour h\u00e9berger des services trop gourmands en ressources, que ce qu\u0027on peut faire fonctionner sur le petit syst\u00e8me ARM mais qui n\u0027en ont pas besoin en permanence)\n* autres usages : web-radio, outil p\u00e9dagogique (sensibilisation \u00e0 la nature physique du num\u00e9rique)\n* camps de r\u00e9fugi\u00e9\u00b7es \/ migrant\u00b7es\n* autres sources d\u0027\u00e9nergie : \u00e9olienne, voire hydraulique, voire v\u00e9los (50 \u00e0 100W par cycliste, sur la dur\u00e9e, sur festival par exemple - 4 personnes remplacent le panneau solaire 200W)\n* autre initiative : CLIC (pour Contenus et Logiciels pour des Internet Conviviaux)\n\u0022\u0022YunoHost\u0022\u0022 pr\u00e9install\u00e9\n* dur\u00e9e de fonctionnement dans les p\u00e9riodes plus difficiles (jours courts, hiver)\nbudget 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.\nmanque la donn\u00e9e : dimension de panneaux solaires n\u00e9cessaire pour pouvoir recharger la batterie en hiver (alternances de 2\/3 jours sans soleil puis 1 journ\u00e9e partiellement ensoleill\u00e9e) (le panneau actuel de 200 W permet largement de recharger la batterie en moins d\u0027une journ\u00e9e d\u0027\u00e9t\u00e9 bien ensoleill\u00e9e. Mais il sera insuffisant en hiver)\n5% de rendement l\u0027hiver. Exempl : sur panneau photovolta\u00efque 100W, en hiver avec un ciel couvert, production d\u0027a peine 10 \u00e0 20W.h par jour (500 \u00e0 600 W.h pour une journ\u00e9e d\u0027\u00e9t\u00e9 ensoleill\u00e9e)\nPerte de 10% de rendement l\u0027\u00e9t\u00e9 (chaleur), \n) (donn\u00e9e a confirmer\/pr\u00e9ciser avec le prototype l\u0027hiver prochain)\n\u00e9olienne : petite produit 20w - autres probl\u00e8mes : hauteur (et droit), entretien, poids\n* lentilles de fresnel l\u0027hiver ou miroirs pour concentrer la lumi\u00e8re sur un panneau solaire l\u0027hiver\n* budget du proto:\n    * batterie : 611\u20ac\n    * contr\u00f4leur de charge MPPT : 163\u20ac\n    * panneau solaire : 375 \u20ac\n    * porte fusible + 5 fusibles : 18 \u20ac\n    *  2x 5m c\u00e2bles  6mm2 + connecteurs MC4 : 19 \u20ac\n* r\u00e9emploi (occasion) \/ r\u00e9parabilit\u00e9 \/ dur\u00e9e de vie :\n    * panneaux solaires : 20-30 ans (film de protection en verre ou mat\u00e9riau synth\u00e9tique qui jaunit ou se d\u00e9grade), cellules solaires tr\u00e8s durable\n    * batteries au plomb (se recycle tr\u00e8s bien, se r\u00e9emploie potentiellement) beaucoup plus \u00e9conomiques voire batteries usag\u00e9es\n* usage d\u0027un smartphone \u00e0 la place de l\u0027odroid pour r\u00e9duire la consommation \u00e9lectrique\n    * difficult\u00e9 de transformer un smartphone en serveur\n    * consommation similaire odroid VS smartphone. quel int\u00e9r\u00eat d\u0027utiliser un smartphone?\n* un CLIC pour 3h sur le march\u00e9 : dimensionnement de la batterie et des panneaux\n    * r\u00e9cup 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)\n* odroid VS rPi\n    * bootloader rPi non-libre\n    * odroid : 90$ + droits de douanes + transport (Cor\u00e9e du Sud)\n    * possibilit\u00e9 d\u0027utiliser un SSD nvme et un SSD ou HDD SATA avec l\u0027odroid\n* documentation de l\u0027itin\u00e9rance\n    * projet flou (id\u00e9alement : tout le hackerspace)\n    * documenter ce qui est fait, mais aussi les lieux visit\u00e9s\n    * beaucoup de photos, id\u00e9alement de la vid\u00e9o (vlog)\n    * yeswiki avec fiche pour chaque \u00e9tape\n* rendre accessible les donn\u00e9es de l\u0027ext\u00e9rieur\n    * en 4G, pas d\u0027IP fixe et beaucoup de ports ferm\u00e9s\n    * solution classique : VPN - mais requiert donc une partie pas mobile\n\n\n![Photo du coffre de la voiture de 12b avant son depart du camp](https:\/\/nuage.distrilab.fr\/index.php\/s\/CzciQNbpK9jNQ7T\/preview)\n\n\n","id_typeannonce":"3","id_fiche":"CharavaneSaison12022","imagebf_image":"CharavaneSaison12022_imagebf_image_charavane02_20240706040630_20240706040630.jpg","date_creation_fiche":"2024-07-06 04:06:31","statut_fiche":"1","date_maj_fiche":"2024-07-06 04:11:46","user":"douzeb","owner":"douzeb","html_data":"data-bf_date_debut_evenement=\u00222024-07-06\u0022 data-id_typeannonce=\u00223\u0022 data-id_fiche=\u0022CharavaneSaison12022\u0022 data-date_creation_fiche=\u00222024-07-06 04:06:31\u0022 data-statut_fiche=\u00221\u0022 data-date_maj_fiche=\u00222024-07-06 04:11:46\u0022 data-owner=\u0022douzeb\u0022 ","url":"https:\/\/lab12.io\/wiki\/?CharavaneSaison12022","-is-external-":"0"},{"bf_titre":"Contournement des blocages gouvernementaux de VPN wireguard","bf_date_debut_evenement":"2025-04-12","bf_chapeau":"Comment avec un ami r\u00e9sidant \u00e0 l\u0027\u00e9tranger nous avons d\u00e9jou\u00e9 les blocages gouvernementaux du VPN wireguard que nous utilisons pour administrer de mani\u00e8re s\u00e9curis\u00e9e une infrastructure partag\u00e9e.","bf_description":"## Le probl\u00e8me\nAvec un ami qu\u0027on ne citera pas (sauf s\u0027il veut se \u0022d\u00e9noncer\u0022 ;-) , nous avons pass\u00e9 plusieurs jours \u00e0 se demander pourquoi depuis quelques temps il n\u0027arrivait plus  \u00e0 \u00e9tablir de connexion \u00e0 son VPN openvpn de chez [ARN](https:\/\/arn-fai.net), qu\u0027il utilise pour exposer sur internet son petit serveur [YunoHost](https:\/\/yunohost.org\/) lui servant \u00e0 auto-h\u00e9berger ses services num\u00e9riques, et plus r\u00e9cemment au VPN wireguard que nous utilisons pour travailler ensemble de mani\u00e8re s\u00e9curis\u00e9e sur des serveurs.\nAu d\u00e9but nous pensions que ses probl\u00e8mes avec openVPN venaient soit d\u0027un mauvaise mise \u00e0 jour de \u0022\u0022YunoHost\u0022\u0022 soit d\u0027al\u00e9as techniques li\u00e9s \u00e0 son fournisseur d\u0027acc\u00e8s \u00e0 internet. Mais le comportement \u00e9trange s\u2019est r\u00e9cemment manifest\u00e9 avec le VPN wireguard nous a mis la puce \u00e0 l\u0027oreille : La connections commence par s\u0027\u00e9tablir correctement. Ensuite si on essaye rapidement de faire un ping on arrive \u00e0 faire passer quelques paquets. Mais au bout de quelques secondes, plus rien ne passe.\nIl se trouve qu\u0027il r\u00e9side dans une pays, qu\u0027on ne citera pas non plus, qui de notori\u00e9t\u00e9 publique est en train de fermer de plus en plus de portes au fronti\u00e8res de son r\u00e9seau internet. Apr\u00e8s avoir v\u00e9rifi\u00e9 nos configurations dans tous les sens et test\u00e9 qu\u0027avec les m\u00eame param\u00e8tres \u00e7a fonctionnait bien pour des machines localis\u00e9es en France mais que \u00e7a ne passait pas pour des machines localis\u00e9es chez lui, l\u0027hypoth\u00e8se d\u0027un blocage gouvernemental est vite devenue l\u0027explication la plus probable.\nEt une recherche rapide nous a confirm\u00e9 qu\u0027il \u00e9tait relativement simple pour des DPI (Deep Packet Inspection) de d\u00e9tecter du traffic wireguard et de le bloquer. En effet le protocole wireguard \u00e0 \u00e9t\u00e9 con\u00e7u avant tout pour maximiser les performances et chiffrer les donn\u00e9es transmises, mais pas pour masquer le fait que les donn\u00e9es transmises passent par un VPN. Il y a dans le protocole des \u00e9changes de paquets qui ont toujours la m\u00eame taille et dont les premiers octets sont toujours les m\u00eames.\n\n## La recherche d\u0027une solution\nNous avons donc commenc\u00e9 \u00e0 chercher des moyens de contourner ce type de blocage. Plusieurs pistes on \u00e9t\u00e9 trouv\u00e9es :\n 1. utiliser shadowsocks pour encapsuler le traffic wireguard [1], [2]\n 2. utiliser xray avec les protocoles dokodemo-door et reality pour encapsuler le traffic wireguard [3], [6], [7]\n 3. utiliser un fork de wireguard, comme amnesia par exemple [5], qui rajoute des fonctions de camouflage directement dans le protocole wireguard.\nL\u0027utilisation de shadowsocks semblant ne plus \u00eatre totalement efficace [4], et l\u0027utilisation d\u0027une alt\u00e9ration du protocole wireguard nous obligeant \u00e0 convertir l\u0027ensemble des infrastructures que nous partageons, nous avons d\u00e9cid\u00e9 de tester dans un premier temps la solution encapsulation via xray.\n\n## La mise en place de la solution retenue\nNotes :\n - Je ne d\u00e9taille pas ici l\u0027installation ni la configuration de wireguard, qui est tout a fait classique, sauf pour les sp\u00e9cificit\u00e9s li\u00e9es \u00e0 l\u0027encapsulation avec xray\n - Dans les exemples de configuration il faut remplacer les variables du genre $USER_ID, $PRIVATE_KEY, $SHORT_ID, ..., par les valeurs g\u00e9n\u00e9r\u00e9es \u00e0 l\u0027aide des commandes suivantes (\u00e0 ex\u00e9cuter apr\u00e8s l\u0027installation de xray)\n %%\n # Generate X25519 keys using Xray\u0027s built-in command\n _x25519=$(xray x25519)\n PRIVATE_KEY=$(echo \u0022$_x25519\u0022 | awk -F\u0027: \u0027 \u0027\/Private key\/{print $2}\u0027)\n PUBLIC_KEY=$(echo \u0022$_x25519\u0022 | awk -F\u0027: \u0027 \u0027\/Public key\/{print $2}\u0027)\n # Generate a unique UUID for the client\n CLIENT_UUID=$(uuidgen)\n # Generate a random short ID\n SHORT_IDS=$(openssl rand -hex 8)\n # Define server address and port\n SERVER_ADDRESS=\u0022IP address or DNS name of your wireguard server\u0022\n PUBLIC_PORT=8443\n PRIVATE_PORT=6666\n %%\n - Le port public choisi pour xray est le 8443. L\u0027id\u00e9e \u00e9tant de faire croire qu\u0027il s\u0027agit d\u0027une connexion https normale, le mieux serait d\u0027utiliser le port 443. Mais comme nous avons un serveur web sur la m\u00eame IP, on a pris le port 8443 pour \u00e9viter tout conflit. Il devrait \u00eatre possible de tout mettre sur le port 443 en utilisant un reverse proxy SNI. Nous testerons \u00e7a plus tard.\n - Le port priv\u00e9 est le port sur lequel \u00e9coute le serveur wireguard. Il n\u0027a pas besoin d\u0027\u00eatre ouvert au niveau du firewall si les seuls clients qui s\u0027y connectent passent par xray. Quand on passe par xray, on s\u0027y connecte uniquement via l\u0027interface loopback.\n - Dans les exemples de configuration, on peut voir du google. C\u0027est le nom du serveur web qui est utilis\u00e9 pour camoufler le traffic. Il n\u0027y \u00e0 aucune connexion effective vers ce serveur. Et google c\u0027est juste \u00e0 titre d\u0027exemple parce-que nous ne voulons pas d\u00e9voiler le nom que nous avons r\u00e9ellement utilis\u00e9. Il convient de choisir un nom DNS qui ne soit pas bloqu\u00e9 des deux cot\u00e9 du VPN et qui n\u0027attire pas l\u0027attention. Il y \u00e0 d\u0027autres contraintes a respecter [13]\n\n### installation de xray sur le serveur\nCot\u00e9 serveur, wireguard tourne sur une machine sous Debian. Nous avons donc install\u00e9 la version beta de xray comme indiqu\u00e9 dans les tutos que nous avons trouv\u00e9 avec\n`bash -c \u0022$(curl -L https:\/\/github.com\/XTLS\/Xray-install\/raw\/main\/install-release.sh)\u0022 @ install --beta -u root`\nPuis nous avons ajout\u00e9 sa configuration dans `\/usr\/local\/etc\/xray\/config.json` : \n\n%%\n{\n   \u0022log\u0022: {\n       \u0022loglevel\u0022: \u0022debug\u0022\n   },\n   \u0022inbounds\u0022: [\n       {\n           \u0022listen\u0022: \u00220.0.0.0\u0022,\n           \u0022port\u0022: $PUBLIC_PORT,\n           \u0022protocol\u0022: \u0022vless\u0022,\n           \u0022settings\u0022: {\n               \u0022clients\u0022: [\n                   {\n                       \u0022id\u0022: \u0022$USER_ID\u0022,\n                       \u0022flow\u0022: \u0022\u0022\n                   }\n               ],\n               \u0022decryption\u0022: \u0022none\u0022\n           },\n           \u0022streamSettings\u0022: {\n               \u0022network\u0022: \u0022tcp\u0022,\n               \u0022security\u0022: \u0022reality\u0022,\n               \u0022realitySettings\u0022: {\n                   \u0022show\u0022: false,\n                   \u0022dest\u0022: \u0022www.google.com:443\u0022,\n                   \u0022xver\u0022: 0,\n                   \u0022serverNames\u0022: [\n                       \u0022www.google.com\u0022\n                   ],\n                   \u0022privateKey\u0022: \u0022$PRIVATE_KEY\u0022,\n                   \u0022shortIds\u0022: [\n                       \u0022$SHORT_ID\u0022\n                   ]\n               }\n           }\n       }\n   ],\n   \u0022outbounds\u0022: [\n       {\n           \u0022protocol\u0022: \u0022freedom\u0022,\n           \u0022tag\u0022: \u0022direct\u0022\n       }\n   ]\n}\n%%\n\n### Modification de la configuration wireguard du serveur\nEnsuite nous avons modifi\u00e9 la configuration du serveur wireguard, dans sa section `[Interface]`, pour qu\u0027il \u00e9coute sur le port priv\u00e9 ( `ListenPort = $PRIVATE_PORT`) et pour limiter le MTU \u00e0 1300 octets (`MTU = 1300`). La modification du MTU est n\u00e9cessaire pour tenir compte de l\u0027overhead ajout\u00e9 par l\u0027encapsulation xray. Sans cela la taille des paquets r\u00e9seau pourrait grossir au del\u00e0 du MTU standard, ce qui causerait des soucis.\n\n### Intallation de xray sur le client\nLe client est une machine qui tourne sous \u0022\u0022NixOS\u0022\u0022. Pour installer une version de xray compatible avec la version install\u00e9e sur le serveur nous avons du passer la machine en version instable de nixpkgs (on aurait pu \u00eatre plus subtil et n\u0027installer que xray depuis nixpkgs instable, mais on voulait aller vite pour valider la solution)\nComme xray est packag\u00e9 pour \u0022\u0022NixOS\u0022\u0022, il suffit d\u0027ajouter \u00e7a dans le configuration.nix de la machine pour l\u0027installer : \n\n%%\n  services.xray = {\n    enable = true;\n    settingsFile = \u0022\/etc\/xray\/config.json\u0022;\n  };\n\n  environment.etc.\u0022xray\/config.json\u0022 = {\n    source = \/var\/src\/secrets\/xray-config.json;\n    user = \u0022root\u0022;\n    group = \u0022root\u0022;\n    mode = \u00220444\u0022;\n  };\n%%\n\nLa partie qui cr\u00e9\u00e9 le fichier de configuration dans `\/etc\/xray\/config.json` \u00e0 partir de `\/var\/src\/secrets\/xray-config.json` est sp\u00e9cifique \u00e0 la mani\u00e8re de d\u00e9ployer \u0022\u0022NixOS\u0022\u0022 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\u0027autres mani\u00e8re de d\u00e9finir la configuration de xray sous \u0022\u0022NixOS\u0022\u0022, voir sur https:\/\/search.nixos.org\/options?channel=24.11\u0026amp;from=0\u0026amp;size=50\u0026amp;sort=relevance\u0026amp;type=packages\u0026amp;query=xray\nLe contenu du fichier xray-config.json est le suivant : \n%%\n{\n   \u0022log\u0022: {\n       \u0022loglevel\u0022: \u0022warning\u0022\n   },\n   \u0022inbounds\u0022: [\n       {\n           \u0022tag\u0022: \u0022wireguard\u0022,\n           \u0022port\u0022: $PRIVATE_PORT,\n           \u0022protocol\u0022: \u0022dokodemo-door\u0022,\n           \u0022settings\u0022: {\n               \u0022address\u0022: \u0022127.0.0.1\u0022,\n               \u0022port\u0022: $PRIVATE_PORT,\n               \u0022network\u0022: \u0022udp\u0022\n           }\n       }\n   ],\n   \u0022outbounds\u0022: [\n       {\n           \u0022protocol\u0022: \u0022vless\u0022,\n           \u0022settings\u0022: {\n               \u0022vnext\u0022: [\n                   {\n                       \u0022address\u0022: \u0022$SERVER_ADDRESS\u0022,\n                       \u0022port\u0022: $PUBLIC_PORT,\n                       \u0022users\u0022: [\n                           {\n                               \u0022id\u0022: \u0022$USER_ID\u0022,\n                               \u0022encryption\u0022: \u0022none\u0022,\n                               \u0022flow\u0022: \u0022\u0022\n                           }\n                       ]\n                   }\n               ]\n           },\n           \u0022streamSettings\u0022: {\n               \u0022network\u0022: \u0022tcp\u0022,\n               \u0022security\u0022: \u0022reality\u0022,\n               \u0022realitySettings\u0022: {\n                   \u0022show\u0022: false,\n                   \u0022fingerprint\u0022: \u0022chrome\u0022,\n                   \u0022serverName\u0022: \u0022www.google.com\u0022,\n                   \u0022publicKey\u0022: \u0022$PUBLIC_KEY\u0022,\n                   \u0022shortId\u0022: \u0022$SHORT_ID\u0022,\n                   \u0022spiderX\u0022: \u0022\u0022\n               }\n           },\n           \u0022tag\u0022: \u0022proxy\u0022\n       }\n   ]\n}\n%%\n\n### Modification de la configuration wireguard sur le client\nEt enfin il fallait modifier la configuration wireguard sur le client : \n - d\u0027une part dans sa section `[Interface]` pour limiter le MTU \u00e0 1300 octets (`MTU = 1300`), comme pour le serveur\n - d\u0027autre 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\u00e9ritable adresse du serveur wireguard (`Endpoint = 127.0.0.1:$PRIVATE_PORT`)\n - et enfin, pour que la machine cliente puisse rediriger tout son trafic internet via le VPN wireguard, il fallait changer le param\u00e8tre `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\u00e9 a xray \u00e0 l\u2019int\u00e9rieur du VPN. Et du coup \u00e7a se mord la queue et ne fonctionne plus. Pour ce faire on peut s\u0027aider du site https:\/\/www.procustodibus.com\/blog\/2021\/03\/wireguard-allowedips-calculator qui permet de g\u00e9n\u00e9rer une liste de plages IP qui englobe tout internet sauf certaines adresses.\n\n## R\u00e9sultats\nApr\u00e8s un peu de d\u00e9bug de configuration r\u00e9seau (configurations firewall et forward de port entre l\u0027hyperviseur et la VM qui h\u00e9berge le serveur wireguard qui sous le coup de la fatigue nous avions un peu foir\u00e9es) la solution s\u0027est av\u00e9r\u00e9e efficace. Il \u00e9tait de nouveau possible pour mon ami de se connecter \u00e0 un VPN wireguard en dehors de son pays. Il \u00e0 ensuite pu \u00e9galement se connecter \u00e0 son VPN openvpn, en passant par ce VPN wiregard (\u00e9videmment faire passer openvpn \u00e0 l\u2019int\u00e9rieur de wireguard qui lui m\u00eame passe \u00e0 l\u2019int\u00e9rieur de xray n\u0027est pas optimal. Mais \u00e7a valide d\u00e9j\u00e0 la possibilit\u00e9 de contourner les blocages actuel mis en place par son pays).\n\n## R\u00e9f\u00e9rences\n 1. https:\/\/lowendtalk.com\/discussion\/170940\/how-to-obfuscate-wireguard-traffic\n 2. https:\/\/www.reddit.com\/r\/WireGuard\/comments\/ucz53b\/hiding_wireguard_with_ssh_to_avoid_restrictions\/\n 3. https:\/\/btwiusearch.net\/posts\/wg-xray\/\n 4. https:\/\/www.protectstar.com\/en\/blog\/blocking-campaign-russia\n 5. https:\/\/docs.amnezia.org\/documentation\/amnezia-wg\/*\n 6. https:\/\/www.40huo.cn\/blog\/wireguard-over-vless.html\n 7. https:\/\/computerscot.github.io\/wireguard-over-xray.html\n 8. https:\/\/cscot.pages.dev\/2023\/04\/13\/cloudflare-warp\/\n 10. https:\/\/github.com\/XTLS\/Xray-core\n 11. https:\/\/github.com\/XTLS\/Xray-core\/discussions\/2954\n 12. https:\/\/xtls.github.io\/en\/config\/outbounds\/wireguard.html\n 13. https:\/\/cscot.pages.dev\/2023\/03\/02\/Xray-REALITY-tutorial\/#Determine-camouflage-website\n\n","id_typeannonce":"3","id_fiche":"ContournementDesBlocagesGouvernementauxDeV","imagebf_image":"ContournementDesBlocagesGouvernementauxDeV_imagebf_image_circumventingwireguardblocks_20250412161922_20250412161922.png","date_creation_fiche":"2025-04-12 16:19:24","statut_fiche":"1","date_maj_fiche":"2025-04-28 12:52:50","user":"douzeb","owner":"douzeb","html_data":"data-bf_date_debut_evenement=\u00222025-04-12\u0022 data-id_typeannonce=\u00223\u0022 data-id_fiche=\u0022ContournementDesBlocagesGouvernementauxDeV\u0022 data-date_creation_fiche=\u00222025-04-12 16:19:24\u0022 data-statut_fiche=\u00221\u0022 data-date_maj_fiche=\u00222025-04-28 12:52:50\u0022 data-owner=\u0022douzeb\u0022 ","url":"https:\/\/lab12.io\/wiki\/?ContournementDesBlocagesGouvernementauxDeV","-is-external-":"0"},{"bf_titre":"Installation de CLIC pour h\u00e9berger lab12.io sur un petit serveur nomade","bf_date_debut_evenement":"2024-03-09","bf_chapeau":"Ces derniers jours j\u0027ai install\u00e9 CLIC sur un Odroid H3+ pour faire un petit syst\u00e8me de d\u00e9monstration d\u0027auto-h\u00e9bergement nomade.","bf_description":"Au cours des derni\u00e8res semaines, j\u0027ai pris un peu de temps, pour mettre en place un nouveau syst\u00e8me de d\u00e9monstration d\u0027auto-h\u00e9bergement num\u00e9rique nomade, \u00e0 base de [[https:projetclic.cc CLIC]], d\u0027un [[https:\/\/www.hardkernel.com\/shop\/odroid-h3-plus\/ ODroid H3+]], d\u0027un routeur 4G et d\u0027un VPN Wireguard fourni par [[https:\/\/iloth.net Iloth]]. \n\nC\u0027est ce syst\u00e8me qui h\u00e9berge le site lab12.io sur lequel vous \u00eates en train de lire ce billet de blog.\n\nA l\u0027origine de mon projet de \u0022\u0022Lab12\u0022\u0022 nomade je voulais utiliser un [[https:\/\/www.hardkernel.com\/shop\/odroid-m1-with-8gbyte-ram\/ Odroid M1]], qui est plus petit et consomme encore moins d\u0027\u00e9lectricit\u00e9 que le H3+. Mais le M1 n\u0027est pas bien support\u00e9 par \u0022\u0022YUNoHost\u0022\u0022 version 11. Alors, en attendant que \u0022\u0022YUNoHost\u0022\u0022 version 12 soit stable, j\u0027ai d\u00e9cid\u00e9 d\u0027utiliser le H3+.\n\nVous trouverez plus d\u0027informations sur le mat\u00e9riel et les logiciels utilis\u00e9s pour constituer ce syst\u00e8me sur la page de [[MonInfrastructureNomade pr\u00e9sentation de l\u0027infrastructure nomade du Lab12]]","id_typeannonce":"3","id_fiche":"InstallationDeClicPourHebergerLab12IoSur","imagebf_image":"InstallationDeClicPourHebergerLab12IoSur_imagebf_image_20240307_0848202_20240309233411_20240309233411.jpg","date_creation_fiche":"2024-03-09 23:34:11","statut_fiche":"1","date_maj_fiche":"2024-03-16 16:28:40","user":"douzeb","owner":"douzeb","html_data":"data-bf_date_debut_evenement=\u00222024-03-09\u0022 data-id_typeannonce=\u00223\u0022 data-id_fiche=\u0022InstallationDeClicPourHebergerLab12IoSur\u0022 data-date_creation_fiche=\u00222024-03-09 23:34:11\u0022 data-statut_fiche=\u00221\u0022 data-date_maj_fiche=\u00222024-03-16 16:28:40\u0022 data-owner=\u0022douzeb\u0022 ","url":"https:\/\/lab12.io\/wiki\/?InstallationDeClicPourHebergerLab12IoSur","-is-external-":"0"},{"bf_titre":"Installation d\u2019un environnement de d\u00e9veloppement YesWiki sous Debian GNU\/Linux","bf_date_debut_evenement":"2024-03-11","bf_chapeau":"Dans mon billet de blog d\u2019hier, je parle de l\u2019environnement de d\u00e9veloppement partag\u00e9 avec \u0022\u0022TigerVNC\u0022\u0022 que j\u2019ai mis en place dans une machine virtuelle pour faire des sessions de pair programming sur le code de \u0022\u0022YesWiki\u0022\u0022 avec \u0022\u0022MrFlos\u0022\u0022. Aujourd\u2019hui je vous donne les d\u00e9tails des \u00e9tapes \u00e0 suivre pour vous installer le m\u00eame environnement de d\u00e9veloppement \u0022\u0022YesWiki\u0022\u0022 que celui que j\u2019ai mis en place dans ma machine virtuelle.","bf_description":"Dans mon billet de blog d\u2019hier, je parle de l\u2019environnement de d\u00e9veloppement partag\u00e9 avec \u0022\u0022TigerVNC\u0022\u0022 que j\u2019ai mis en place dans une machine virtuelle pour faire des sessions de pair programming sur le code de \u0022\u0022YesWiki\u0022\u0022 avec \u0022\u0022MrFlos\u0022\u0022. Aujourd\u2019hui je vous donne les d\u00e9tails des \u00e9tapes \u00e0 suivre pour vous installer le m\u00eame environnement de d\u00e9veloppement \u0022\u0022YesWiki\u0022\u0022 que celui que j\u2019ai mis en place dans ma machine virtuelle.\n\nLes explications que je donne ici sont faites pour un poste de travail sous Debian GNU\/Linux. \u00c7a peut \u00eatre une machine virtuelle comme moi ou un poste de travail classique sur un ordinateur portable ou fixe. Si vous \u00eates sur un syst\u00e8me d\u2019exploitation diff\u00e9rent il vous faudra peut-\u00eatre adapter certaines parties. J\u2019essaye de donner des instructions suffisamment d\u00e9taill\u00e9es pour que n\u2019importe qui soit capable de les suivre. Mais pour ensuite utiliser cet environnement il faudra apprendre \u00e0 utiliser les outils qui sont install\u00e9s si on ne les conna\u00eet pas. Je pense notamment \u00e0 git et \u0022\u0022VSCodium\u0022\u0022 dont la description d\u00e9taill\u00e9e de l\u2019utilisation sort du cadre de ce simple billet de blog. Et pour travailler sur le code de \u0022\u0022YesWiki\u0022\u0022 il faudra \u00e9galement se former \u00e0 quelques langages de programmation si on ne les ma\u00eetrise pas d\u00e9j\u00e0 : \u0022\u0022PHP, javascript, CSS, SQL, twig, ...\u0022\u0022\n\n=====1. Acc\u00e8s au code source de \u0022\u0022YesWiki sur GitHub\u0022\u0022 avec git=====\nLa premi\u00e8re \u00e9tape pour travailler sur le code source de \u0022\u0022YesWiki\u0022\u0022 est de pouvoir r\u00e9cup\u00e9rer une copie locale des d\u00e9p\u00f4ts du code source en local sur son poste de travail et de pouvoir pousser ses modifications sur \u0022\u0022GitHub\u0022\u0022.\nPour cela, si ce n\u2019est pas d\u00e9j\u00e0 le cas, il faut tout d\u2019abord se cr\u00e9er un compte sur \u0022\u0022GitHub\u0022\u0022 et g\u00e9n\u00e9rer une cl\u00e9 ssh sur son poste de travail, avec la commande `ssh-keygen -t ed25519` dans un terminal. Et il faut ensuite ajouter dans son compte \u0022\u0022GitHub\u0022\u0022 la cl\u00e9 publique qui a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9e, en allant dans les param\u00e8tres de son compte, section \u0022cl\u00e9s SSH et GPG\u0022. (la cl\u00e9 publique \u00e0 ajouter devrait se trouver dans le fichier `~\/.ssh\/id_ed25519.pub` si on a utilis\u00e9 le nom de cl\u00e9 par d\u00e9faut propos\u00e9 par ssh-keygen)\nLa r\u00e9cup\u00e9ration du code source depuis \u0022\u0022GitHub\u0022\u0022 se fera avec l\u2019utilitaire git qui s\u2019installe sous Debian avec la commande `apt-get install git` (il faut bien s\u00fbr ex\u00e9cuter cette commande en tant que root, soit en ajoutant `sudo` devant si vous utilisez sudo, soit en \u00e9tant devenu root avant, avec la commande `su -` si vous \u00eates \u00abold school\u00bb comme moi.)\n\nPour que vous soyez correctement identifi\u00e9 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) : \n%%\ngit config --global user.name \u0022Votre nom ou pseudo\u0022\ngit config --global user.email \u0022votre.email@votre-domaine.tld\u0022\n%%\nEt pendant qu\u2019on en est \u00e0 configurer git, il-y-a un autre param\u00e8tre qui peut \u00eatre d\u00e9fini pour se simplifier la vie : \n%%\ngit config --global pull.rebase true\n%%\n\n=====2. Installation de PHP et de quelques autres outils n\u00e9cessaires au d\u00e9veloppement de YesWiki=====\nEn tant que root, executer les commandes suivantes pour installer PHP, composer et symfony\u00a0: \n%%\napt-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\ncurl -1sLf \u0027https:\/\/dl.cloudsmith.io\/public\/symfony\/stable\/setup.deb.sh\u0027 | sudo -E bash\napt install symfony-cli\nsymfony server:ca:install \nphp -r \u0022copy(\u0027https:\/\/getcomposer.org\/installer\u0027, \u0027composer-setup.php\u0027);\u0022\nphp -r \u0022if (hash_file(\u0027sha384\u0027, \u0027composer-setup.php\u0027) === \u0027dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6\u0027) { echo \u0027Installer verified\u0027; } else { echo \u0027Installer corrupt\u0027; unlink(\u0027composer-setup.php\u0027); } echo PHP_EOL;\u0022\nphp composer-setup.php\nphp -r \u0022unlink(\u0027composer-setup.php\u0027);\u0022\nmv composer.phar \/usr\/local\/bin\/composer\nchmod +x \/usr\/local\/bin\/composer \n%%\n\n=====3. R\u00e9cup\u00e9ration d\u2019une copie locale du code source de YesWiki=====\nNotes : \n - si votre compte est membre de l\u2019organisation \u0022\u0022GitHub de YesWiki\u0022\u0022 vous pourrez travailler directement sur les d\u00e9p\u00f4ts officiels, comme dans les instructions que je donne. Si ce n\u2019est pas le cas il faudra vous faire des forks des d\u00e9p\u00f4ts sur \u0022\u0022GitHub\u0022\u0022 et adapter ce que j\u2019explique pour travailler sur ces forks (voir la documentation de \u0022\u0022GitHub\u0022\u0022)\n - je d\u00e9cris comment r\u00e9cup\u00e9rer une copie locale des diff\u00e9rents d\u00e9p\u00f4ts de code source de \u0022\u0022YesWiki\u0022\u0022 et les lier entre eux en utilisant un script d\u00e9velopp\u00e9 par \u0022\u0022MrFlos\u0022\u0022. Comme \u00e0 chaque fois qu\u2019on vous dit d\u2019ex\u00e9cuter sur votre ordinateur un script t\u00e9l\u00e9charg\u00e9 sur internet, il est fortement recommand\u00e9 de bien examiner le contenu de ce script pour bien comprendre ce qu\u2019il va faire et pour v\u00e9rifier qu\u2019il ne contient pas de code malveillant.\n\nMaintenant que git est install\u00e9 et configur\u00e9 on peut r\u00e9cup\u00e9rer le code source du coeur de \u0022\u0022YesWiki\u0022\u0022 et de ses extensions avec le script de \u0022\u0022MrFlos\u0022\u0022 en ex\u00e9cutant les commandes suivantes dans un terminal (en tant que user normal, pas en tant que root) : \n\n%%\nmkdir Developpements\nwget https:\/\/forge.mrflos.pw\/mrflos\/nixos-config\/raw\/branch\/main\/scripts\/init_yeswiki_repos.sh\nless init_yeswiki_repos.sh \n%%\nL\u00e0, si vous avez bien regard\u00e9 le contenu du script vous avez d\u00fb noter qu\u2019\u00e0 la fin il r\u00e9cup\u00e8re des d\u00e9pots de la forge personnelle de \u0022\u0022MrFlos\u0022\u0022 et un d\u00e9p\u00f4t de l\u2019organisation des Colibris sur framagit dont vous n\u2019avez probablement pas besoin et auquels vous n\u2019avez probablement pas acc\u00e8s en \u00e9criture. Il vaut donc mieux supprimer cette partie du script avant de l\u2019ex\u00e9cuter en l\u2019ouvrant dans son \u00e9diteur pr\u00e9f\u00e9r\u00e9, qui est nano dans mon cas :\n%%\nnano init_yeswiki_repos.sh \n%%\nOn peut ensuite rendre le script ex\u00e9cutable et le lancer : \n%%\nchmod +x init_yeswiki_repos.sh \n.\/init_yeswiki_repos.sh \n%%\n\nSi tout s\u2019est bien pass\u00e9, vous devriez voir toutes les copies locales des d\u00e9p\u00f4ts du code \u0022\u0022YesWiki\u0022\u0022 dans le dossier `~\/Developpements` : \n{{attach file=\u0022Screenshot_from_20240311_141630.jpg\u0022 caption=\u0022Copie d\u0027\u00e9cran de la commande ls ~\/Developpements\u0022 desc=\u0022Copie d\u0027\u00e9cran de la commande ls ~\/Developpements\u0022 size=\u0022original\u0022 class=\u0022\u0022}}\nEt, dans le code du coeur de \u0022\u0022YesWiki\u0022\u0022, vous devriez trouver des liens symboliques qui ont \u00e9t\u00e9 cr\u00e9\u00e9s vers les extensions (dans ~\/Developpements\/yeswiki\/tools\/) : \n{{attach file=\u0022Screenshot_from_20240311_142145.jpg\u0022 caption=\u0022Copie d\u0027\u00e9cran de la commande ls ~\/Developpements\/yeswiki\/tools\/\u0022 desc=\u0022Copie d\u0027\u00e9cran de la commande ls ~\/Developpements\/yeswiki\/tools\/\u0022 size=\u0022original\u0022 class=\u0022\u0022}}\n\nOn va supprimer trois de ces liens symboliques parce que les extensions correspondantes posent des soucis au moment o\u00f9 j\u2019\u00e9cris ces lignes : \n%%\ncd ~\/Developpements\/yeswiki\nrm tools\/markdown # extension obsol\u00e8te\nrm tools\/loginldap # n\u00e9cessite d\u2019avoir un serveur LDAP et d\u2019\u00eatre configur\u00e9 pour pouvoir \u00eatre utilis\u00e9e\nrm tools\/lang\/yeswiki-extension-lang # extension obsol\u00e8te\n%%\n\n=====4. Installation de VSCodium=====\nJ\u2019ai choisi d\u2019utiliser \u0022\u0022VSCodium\u0022\u0022 pour mon environnement de d\u00e9veloppement. Mais vous \u00eatre libre d\u2019utiliser autre chose. \nPour installer \u0022\u0022VSCodium\u0022\u0022, ex\u00e9cutez les commandes suivantes dans un terminal en tant que root : \n%%\ncurl -fSsL https:\/\/gitlab.com\/paulcarroty\/vscodium-deb-rpm-repo\/raw\/master\/pub.gpg | sudo gpg --dearmor | sudo tee \/usr\/share\/keyrings\/vscodium.gpg \u0026gt;\/dev\/null\necho \u0022deb [arch=amd64 signed-by=\/usr\/share\/keyrings\/vscodium.gpg] https:\/\/download.vscodium.com\/debs vscodium main\u0022 | sudo tee \/etc\/apt\/sources.list.d\/vscodium.list\napt update\napt install codium\n%%\nVous pouvez ensuit lancer \u0022\u0022VSCodium\u0022\u0022 et y installer quelques extensions bien utiles pour d\u00e9velopper en PHP, comme celle qu\u2019on peut voir sur cette copie d\u2019\u00e9cran : {{attach file=\u0022Screenshot_from_20240311_150810.jpg\u0022 caption=\u0022Copie d\u0027\u00e9cran des extensions install\u00e9es dans mon VSCodium\u0022 desc=\u0022Copie d\u0027\u00e9cran des extensions install\u00e9es dans mon VSCodium\u0022 size=\u0022original\u0022 class=\u0022\u0022}}\n\nIl suffit ensuite d\u2019ouvrir le dossier du code de YesWiki (~\/Developements\/yeswiki), ou celui d\u0027une extension, avec le raccourci clavier `Ctrl-K` + `Ctrl-O` (ou en utilisant le menu) pour commencer \u00e0 coder.\n{{attach caption=\u0022Copie d\u0027\u00e9cran de VSCodium\u0022 desc=\u0022Copie d\u0027\u00e9cran de VSCodium\u0022 file=\u0022Screenshot_from_20240311_161852.jpg\u0022 size=\u0022original\u0022 }}\n\n=====5. Installation de MariaDB et cr\u00e9ation d\u2019une base de donn\u00e9e pour YesWiki=====\nPour pouvoir faire tourner une version de test de \u0022\u0022YesWiki\u0022\u0022 sur son environnement de d\u00e9veloppement il faut une base de donn\u00e9es. On installe \u0022\u0022MariaDB\u0022\u0022 avec les commandes suivantes, dans un terminal en tant que root : \n%%\napt install mariadb-server\nmysql_secure_installation \n%%\nPuis 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\u2019on a faits pour r\u00e9pondre aux questions de `mysql_secure_installation`.\n\nUne fois connect\u00e9 au serveur \u0022\u0022MariaDB\u0022\u0022 on ex\u00e9cute les requ\u00eates SQL suivantes pour cr\u00e9er une base de donn\u00e9es et un user pour \u0022\u0022YesWiki\u0022\u0022 (n\u0027oubliez pas de remplacer le mot de passe dans la deuxi\u00e8me requ\u00eate) : \n%%\nCREATE DATABASE yeswiki;\nCREATE USER \u0027yeswiki\u0027 IDENTIFIED BY \u0027mettre ici son mot de passe pr\u00e9f\u00e9r\u00e9 !!!\u0027;\nGRANT ALL PRIVILEGES ON yeswiki.* TO \u0027yeswiki\u0027;\n%%\n\n=====6. Configurer TLS pour le serveur web de test =====\n\nPour lancer un serveur web de test, il suffit, dans un terminal en tant qu\u2019utilisateur normal, d\u2019ex\u00e9cuter les commandes suivantes : \n%%\ncd ~\/Developpements\/yeswiki\nsymfony server:ca:install\n%%\n\n=====6. Lancer un serveur web de test =====\n\nPour lancer un serveur web de test, il suffit, dans un terminal en tant qu\u2019utilisateur normal, d\u2019ex\u00e9cuter les commandes suivantes : \n%%\ncd ~\/Developpements\/yeswiki\nsymfony server:start\n%%\nUne fois le serveur web d\u00e9marr\u00e9, l\u2019instance de test de YesWiki devrait \u00eatre accessible dans un navigateur web \u00e0 l\u2019adresse `https:\/\/127.0.0.1:8000` et devrait afficher le formulaire d\u2019installation de YesWiki. Il suffit d\u2019y 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\u00e9faut de YesWiki : \n{{attach file=\u0022Screenshot_from_20240311_162020.jpg\u0022 caption=\u0022Copie d\u0027\u00e9cran de l\u0027instance de test de YesWiki\u0022 desc=\u0022Copie d\u0027\u00e9cran de l\u0027instance de test de YesWiki\u0022 size=\u0022original\u0022 class=\u0022\u0022}}\n\nPour que les extentions yeswiki qui ont \u00e9t\u00e9 install\u00e9e par le script de MrFlos soient bien active il faut aller naviguer sur la page `https:\/\/127.0.0.1:8000\/?PagePrincipale\/update`","id_typeannonce":"3","id_fiche":"InstallationDunEnvironnementDeDeveloppemen","imagebf_image":"InstallationDunEnvironnementDeDeveloppemen_imagebf_image_Screenshot_from_20240311_161852_20240311170759_20240311170759.jpg","date_creation_fiche":"2024-03-20 11:10:56","statut_fiche":"1","date_maj_fiche":"2025-03-24 18:46:31","user":"douzeb","owner":"douzeb","html_data":"data-bf_date_debut_evenement=\u00222024-03-11\u0022 data-id_typeannonce=\u00223\u0022 data-id_fiche=\u0022InstallationDunEnvironnementDeDeveloppemen\u0022 data-date_creation_fiche=\u00222024-03-20 11:10:56\u0022 data-statut_fiche=\u00221\u0022 data-date_maj_fiche=\u00222025-03-24 18:46:31\u0022 data-owner=\u0022douzeb\u0022 ","url":"https:\/\/lab12.io\/wiki\/?InstallationDunEnvironnementDeDeveloppemen","-is-external-":"0"},{"bf_titre":"Un beau logo pour Yeswiki","bf_chapeau":"Il fallait le rafraichir, nous l\u0027avons fait ! ","bf_description":"Apr\u00e8s multiples discussions, tests et essais, un logo plus actuel a \u00e9t\u00e9 cr\u00e9\u00e9 pour Yeswiki\r\nNous esp\u00e9rons que vous l\u0027aimerez ;-) ","id_typeannonce":"3","id_fiche":"UnBeauLogoPourYeswiki","date_creation_fiche":"2020-02-12 13:16:06","statut_fiche":"1","imagebf_image":"UnBeauLogoPourYeswiki_yeswiki-logo.png","date_maj_fiche":"2021-09-05 13:23:52","user":"douzeb","owner":"douzeb","html_data":"data-id_typeannonce=\u00223\u0022 data-id_fiche=\u0022UnBeauLogoPourYeswiki\u0022 data-date_creation_fiche=\u00222020-02-12 13:16:06\u0022 data-statut_fiche=\u00221\u0022 data-date_maj_fiche=\u00222021-09-05 13:23:52\u0022 data-owner=\u0022douzeb\u0022 ","url":"https:\/\/lab12.io\/wiki\/?UnBeauLogoPourYeswiki","-is-external-":"0"},{"bf_titre":"Un nouveau th\u00e8me pour Yeswiki","bf_chapeau":"Margot, voil\u00e0 le nom du nouveau th\u00e8me qui sera distribu\u00e9 avec la prochaine version de Yeswiki\t","bf_description":"Plus moderne, mieux pens\u00e9, plus graphiqu.\r\nMargot permettra d\u0027unifier les rendus graphiques des wikis.","id_typeannonce":"3","id_fiche":"UnNouveauThemePourYeswiki","date_creation_fiche":"2020-02-12 12:17:49","statut_fiche":"1","imagebf_image":"UnNouveauThemePourYeswiki_capture-de\u0301cran-2020-02-12-a\u0300-13.16.33.png","date_maj_fiche":"2020-02-12 12:17:50","user":"douzeb","owner":"douzeb","html_data":"data-id_typeannonce=\u00223\u0022 data-id_fiche=\u0022UnNouveauThemePourYeswiki\u0022 data-date_creation_fiche=\u00222020-02-12 12:17:49\u0022 data-statut_fiche=\u00221\u0022 data-date_maj_fiche=\u00222020-02-12 12:17:50\u0022 data-owner=\u0022douzeb\u0022 ","url":"https:\/\/lab12.io\/wiki\/?UnNouveauThemePourYeswiki","-is-external-":"0"},{"bf_titre":"Un serveur CLIC pour le camp CHATONS 2024","bf_date_debut_evenement":"2024-07-04","bf_chapeau":"La qualit\u00e9 de la connexion internet au camp CHATONS 2024 \u00e9tant incertaine, je me suis propos\u00e9 d\u0027amener un petit serveur CLIC pour avoir les services num\u00e9riques en local.\n\n","bf_description":"Pendant le camp CHATONS 2024, nous seront connect\u00e9 \u00e0 internet via des routeurs 4G, avec l\u0027antene la proche qui serait \u00e0 1 km du site\nLa qualit\u00e9 de la connexion internet etant donc un peu incertaine, j\u0027ai propos\u00e9 d\u0027amener un petit serveur CLIC pour avoir en local les services Libreto et etherpad que nous utilisons pour l\u0027organisation du camp et pour prendre des notes pendant les ateliers. J\u0027y ai aussi install\u00e9 quelques autres services, au cas ou ca puisse \u00eatre utile : Cryptpad, Scrumblr, Excalidraw, ...\n\nJ\u0027ai un peu gal\u00e9r\u00e9 pour installer Libreto. Une fois install\u00e9 avec Yunohost, libreto n\u0027etait pas fonctionnel. J\u0027ai du r\u00e9soudre 3 probl\u00e8mes pour le faire fonctionner : \n - Les assets (css, js, ...) ne se chargaient pas dans le navigateur.\n - La configuration de l\u0027instance d\u0027\u00e9therpad \u00e0 utiliser n\u0027\u00e9tait pas prise en compte\n - Il y avait des erreurs php dans une d\u00e9pendance de libreto\n\nPour les deux premiers probl\u00e8mes, il s\u0027agissait de corriger des choses dans le package yunohost. Pour le troisi\u00e8me il fallait utiliser une version plus r\u00e9cente de la d\u00e9pendance qui posait probl\u00e8me. \n - j\u0027ai cr\u00e9\u00e9 [[https:\/\/github.com\/YunoHost-Apps\/libreto_ynh\/pull\/32 une pull request]] sur le d\u00e9pot git du package Yunohost\n - et j\u0027ai cr\u00e9\u00e9 [[https:\/\/github.com\/zamentur\/libreto\/pull\/14 une autre pull request]] sur le depot git de Libreto\n\nApr\u00e8s ces correctifs j\u0027ai obtenu un libreto fonctionnel en mode ecriture. Mais le mode lecture seule reste instable. Des fois ca fonctionne, des fois non. \nLa solution a ce probl\u00e8me est donn\u00e9e par @ljf [[https:\/\/forum.chatons.org\/t\/bug-avec-libreto\/4082\/4 sur le forum CHATONS]]\n\nEnfin, quand j\u0027ai fais un test de clonage du libreto du camp chaton je suis tomb\u00e9 sur une erreur lors de l\u0027import de l\u0027un des pad. La cause \u00e9tait la taille du pad, qui faisait un peu plus de 2 Mo. La configuration par d\u00e9faut d\u0027\u00e9therpad permet d\u0027importer des pad jusqu\u0027\u00e0 une taille de 50 Mo. Mais il y a une autre limite, au niveau de nginx, qui par d\u00e9faut est de 1Mo. J\u0027ai cr\u00e9\u00e9 [[https:\/\/github.com\/YunoHost-Apps\/etherpad_mypads_ynh\/pull\/210 une trois\u00e8me pull request]] sur le package Yunohost d\u0027\u00e9therpad avec mon correctif pour ce probl\u00e8me.\n\nPour ce qui est du matriel c\u0027est le m\u00eame type d\u0027ordinateur que celui qui fait tourner lab12.io, un [ODroid H3+](https:\/\/www.hardkernel.com\/shop\/odroid-h3-plus\/), avec 64 Go de RAM et un SSD NVMe de 1 To. Seule [[https:\/\/alfa-network.eu\/wi-fi\/awus036ach-c la carte WiFi utilis\u00e9e]] pour le hotspot est diff\u00e9rente. Vu le nombre de personnes qu\u0027il y aura au camp, j\u0027en ai pris une plus performante. (en haut \u00e0 gauche sur la photo). J\u0027am\u00e8nerais aussi un routeur 4G pour avoir une connection internet (\u00e0 droite du serveur sur la photo)\n\nPour l\u0027instant j\u0027alimente tout \u00e7a en utilisant les sorties 12V d\u0027une station d\u0027\u00e9nergie toute en un, une [[https:\/\/fr.ecoflow.com\/products\/delta-pro-portable-power-station 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\u0027\u00e9nergie pour comparer avec mes syst\u00e8mes fait maison.\n\nJ\u0027am\u00e8nerais probablement le tout au camp CHATONS, m\u00eame si le syst\u00e8me photovoltaique ne devrait pas \u00eatre utile. Sur site cette installation sera compl\u00e9t\u00e9e par des antennes \u0022\u0022WiFi\u0022\u0022 install\u00e9es par @retzien (voir [le fil de discussion correspondant sur le forum](https:\/\/forum.chatons.org\/t\/camp-chatons-2024-appel-a-volontaire-sur-la-question-connexion-internet-durant-le-camp\/5931\/37))\n\nS\u0027il est en ligne au moment o\u00f9 vous lisez ce billet, le serveur CLIC en question est accessible \u00e0 cette adresse : https:\/\/lab12.org","id_typeannonce":"3","id_fiche":"UnServeurClicPourLeCampChatons2024","imagebf_image":"UnServeurClicPourLeCampChatons2024_imagebf_image_20240704_2019262_20240704204658_20240704204658.jpg","date_creation_fiche":"2024-07-04 20:46:59","statut_fiche":"1","date_maj_fiche":"2024-07-06 01:52:10","user":"douzeb","owner":"douzeb","html_data":"data-bf_date_debut_evenement=\u00222024-07-04\u0022 data-id_typeannonce=\u00223\u0022 data-id_fiche=\u0022UnServeurClicPourLeCampChatons2024\u0022 data-date_creation_fiche=\u00222024-07-04 20:46:59\u0022 data-statut_fiche=\u00221\u0022 data-date_maj_fiche=\u00222024-07-06 01:52:10\u0022 data-owner=\u0022douzeb\u0022 ","url":"https:\/\/lab12.io\/wiki\/?UnServeurClicPourLeCampChatons2024","-is-external-":"0"},{"bf_titre":"Un serveur de terminal graphique sous Linux","bf_date_debut_evenement":"2024-03-10","bf_chapeau":"J\u0027ai mis en place un environnement graphique sous Linux dans une machine virtuelle sur un serveur, avec \u0022\u0022TigerVNC\u0022\u0022 pour le partage de bureau.\nCela me permet d\u0027avoir le m\u00eame environnement quelque soit le poste de travail que j\u0027utilise et de faire des sessions de pair programming sur le code de \u0022\u0022YesWiki\u0022\u0022 avec \u0022\u0022MrFlos\u0022\u0022.","bf_description":"Avec quelques camarades libristes, j\u2019ai r\u00e9cemment rejoint l\u2019\u00e9quipe de d\u00e9veloppement de \u0022\u0022YesWiki\u0022\u0022. Pour nous aider \u00e0 nous familiariser plus rapidement avec le code, \u0022\u0022MrFlos\u0022\u0022 nous a propos\u00e9 de faire des sessions de pair programming.\n\nMais, n\u2019\u00e9tant pas physiquement au m\u00eame endroit, se posait pour moi la question de l\u2019outil \u00e0 utiliser pour que ces sessions soit les plus fluides et efficaces possible.\nJe n\u2019ai jamais \u00e9t\u00e9 satisfait de l\u2019utilisation d\u2019une simple visioconf\u00e9rence avec partage d\u2019\u00e9cran pour ce cas d\u0027usage, parce que seule la personne qui partage son \u00e9cran peut interagir avec.\nQuand nous faisons de l\u2019administration syst\u00e8me au \u0022\u0022DistriLab\u0022\u0022 nous avons l\u2019habitude d\u2019utiliser tmux pour travailler \u00e0 plusieurs sur la m\u00eame session ssh. Une visioconf\u00e9rence plus tmux est largement suffisante dans ce cas parce que tout se passe dans le terminal.\n\n{{attach file=\u0022nano_dans_tmux.jpg\u0022 desc=\u0022image nano_dans_tmux.jpg (0.2MB)\u0022 size=\u0022original\u0022 class=\u0022\u0022 caption=\u0022Capture d\u0027\u00e9cran de nano dans tmux utilis\u00e9 pour \u00e9diter un fichier PHP du code de YesWiki\u0022}}\n\nMais apr\u00e8s une premi\u00e8re tentative de faire pareil pour corriger un bug de \u0022\u0022YesWiki\u0022\u0022 en bin\u00f4me avec \u0022\u0022MrFlos\u0022\u0022, cette solution s\u2019est vite r\u00e9v\u00e9l\u00e9e trop limitante : \n - Il est possible d\u2019avoir un environnement de d\u00e9veloppement relativement \u00e9volu\u00e9e dans le terminal avec, entre autres, de la coloration syntaxique, de l\u2019aide \u00e0 la saisie et \u00e0 la navigation dans le code et l\u2019ouverture simultan\u00e9e de plusieurs fichiers, en utilisant des logiciels comme neovim ou emacs. Mais ces outils ne sont pas faciles \u00e0 prendre en main quand on n\u2019a pas l\u2019habitude de les utiliser. Et il faut s\u2019accorder pour utiliser le m\u00eame outil. (La division entre utilisation d\u2019emacs et de vi\/vim\/neovim est l\u00e9gendaire, voir l\u2019artice sur [[https:\/\/fr.wikipedia.org\/wiki\/Guerre_d%27%C3%A9diteurs_de_texte la guerre des \u00e9diteurs de texte]] sur Wikipedia). Et je n\u2019ai personnellement jamais r\u00e9ussi \u00e0 me mettre \u00e0 apprendre la foultitude de raccourcis claviers qu\u2019il est n\u00e9cessaire de maitriser pour utiliser l\u2019un ou l\u2019autre de mani\u00e8re efficace. Quand je fais de l\u2019administration syst\u00e8me j\u2019utilise nano pour \u00e9diter des fichiers. Et \u00e7a me suffit largement. Et bien qu\u0027il soit possible d\u0027avoir de la coloration syntaxique avec nano, quand je fais du d\u00e9veloppement je suis plus a l\u2019aise avec un IDE graphique comme Eclipse ou \u0022\u0022VSCodium\u0022\u0022. \n\n{{attach file=\u0022neovim_mrflos_crop.jpg\u0022 desc=\u0022image neovim_mrflos_crop.jpg (0.3MB)\u0022 size=\u0022original\u0022 class=\u0022\u0022 caption=\u0022Copie d\u0027\u00e9cran de l\u0027environnement de d\u00e9velopement YesWiki de MrFlos avec neovim\u0022}}\n\n - Quand on d\u00e9veloppe une application web, tout ne peut pas se passer dans le terminal. On est fr\u00e9quemment appel\u00e9 \u00e0 faire des aller-retours entre l\u2019environnement de d\u00e9veloppement pour modifier le code et le navigateur web pour tester l\u2019application ou chercher des solutions sur internet. Alors les trolls vont me dire qu\u2019il existe des navigateurs web en mode texte. Mais, heu\u2026, non merci.\n\n{{attach file=\u0022Screenshot_from_20240317_113854.png\u0022 desc=\u0022Copie d\u0027\u00e9cran du site lab12.io dans le navigateur web en mode texte browsh\u0022 size=\u0022original\u0022 class=\u0022\u0022 caption=\u0022Copie d\u0027\u00e9cran du site lab12.io dans le navigateur web en mode texte browsh\u0022}}\n\nAlors j\u2019ai d\u00e9cid\u00e9 de tester une autre solution. \u00c7a faisait longtemps que j\u2019avais envie de me mettre en place un environnement de travail graphique sous linux dans une machine virtuelle sur un serveur, histoire d\u2019avoir le m\u00eame environnement quelque soit le poste de travail que j\u2019utilise. Et je me suis dit que si j\u2019avais un environnement comme \u00e7a, auquel on pouvait se connecter \u00e0 plusieurs en m\u00eame temps, \u00e7a pourrait \u00eatre une bonne solution pour des sessions de pair programming.\nApr\u00e8s quelques recherches sur internet je suis tomb\u00e9 sur un article qui avait l\u2019air de d\u00e9crire exactement ce que je voulais mettre en place, except\u00e9 pour la distribution utilis\u00e9e qui est Ubuntu alors que je voudrais utiliser Debian GNU\/Linux : [[https:\/\/www.baeldung.com\/linux\/ssh-remote-desktop-sharing Setting up Remote Desktop Sharing via SSH on Linux]]\n\nJe me suis donc cr\u00e9\u00e9 une machine virtuelle sur mon serveur proxmox, sur laquelle j\u2019ai install\u00e9 Debian Bookworm avec Gnome et, apr\u00e8s les quelques configuration de base que je fais sur toutes mes machines (connexion ssh sans mot de passe avec cl\u00e9 publique\/priv\u00e9e, blocage des ports r\u00e9seau avec le firewall ufw, \u2026), j\u2019ai suivi la proc\u00e9dure d\u00e9crite sur l\u2019article. \nUbuntu \u00e9tant proche de Debian je n\u2019ai pas eu \u00e0 adapter grand-chose. La seule diff\u00e9rence notable a \u00e9t\u00e9 le nom de la session graphique \u00e0 utiliser dans la configuration de \u0022\u0022TigerVNC\u0022\u0022. Dans l\u2019article c\u2019est `ubuntu-xorg` qui est utilis\u00e9. Dans mon cas la session s\u2019appelle `gnome-xorg`\n\nApr\u00e8s \u00e7a il n\u2019y avait plus qu\u2019a personaliser un peu Gnome et \u00e0 installer un environnement de d\u00e9velopement \u0022\u0022YesWiki\u0022\u0022 (ce que je d\u00e9crirais dans un autre billet de blog) pour avoir un bureau partag\u00e9 permettant de faire des sessions de pair programming avec \u0022\u0022MrFlos\u0022\u0022\n\n{{attach file=\u0022bureaupartage.jpg\u0022 desc=\u0022image bureaupartage.jpg (0.4MB)\u0022 size=\u0022original\u0022 class=\u0022\u0022 caption=\u0022Copie d\u0027\u00e9cran du bureau graphique partag\u00e9 que j\u0027ai mis en place\u0022}}","id_typeannonce":"3","id_fiche":"UnServeurDeTerminalGraphiqueSousLinux","imagebf_image":"UnServeurDeTerminalGraphiqueSousLinux_imagebf_image_bureaupartage_20240310225151_20240310225151.jpg","date_creation_fiche":"2024-03-17 11:43:22","statut_fiche":"1","date_maj_fiche":"2025-03-19 12:44:38","user":"douzeb","owner":"douzeb","html_data":"data-bf_date_debut_evenement=\u00222024-03-10\u0022 data-id_typeannonce=\u00223\u0022 data-id_fiche=\u0022UnServeurDeTerminalGraphiqueSousLinux\u0022 data-date_creation_fiche=\u00222024-03-17 11:43:22\u0022 data-statut_fiche=\u00221\u0022 data-date_maj_fiche=\u00222025-03-19 12:44:38\u0022 data-owner=\u0022douzeb\u0022 ","url":"https:\/\/lab12.io\/wiki\/?UnServeurDeTerminalGraphiqueSousLinux","-is-external-":"0"}]