diff options
author | ADRN <adrien@luxeylab.net> | 2023-11-22 21:55:21 +0100 |
---|---|---|
committer | ADRN <adrien@luxeylab.net> | 2023-11-22 21:55:21 +0100 |
commit | 78b68a3cd9913f6bb2996a231a70999fffa1bb03 (patch) | |
tree | 2added7970234efee6281ee679589e3251c0faf6 | |
parent | 0364444e6a44d9343dc8be5af5f79c293f275121 (diff) | |
download | site-78b68a3cd9913f6bb2996a231a70999fffa1bb03.tar.gz site-78b68a3cd9913f6bb2996a231a70999fffa1bb03.zip |
added relevant files from prod to repo
-rw-r--r-- | static/@404.html | 8 | ||||
-rw-r--r-- | static/@jitsi.html | 8 | ||||
-rw-r--r-- | static/Gestion des risques.html | 13 | ||||
-rw-r--r-- | static/Mentions légales.html | 8 | ||||
-rw-r--r-- | static/Sources.html | 38 | ||||
-rw-r--r-- | static/favicon.ico | bin | 0 -> 15406 bytes | |||
-rw-r--r-- | static/robots.txt | 2 |
7 files changed, 77 insertions, 0 deletions
diff --git a/static/@404.html b/static/@404.html new file mode 100644 index 0000000..d10944c --- /dev/null +++ b/static/@404.html @@ -0,0 +1,8 @@ +<!DOCTYPE html><html lang="fr"><head><meta charset="utf-8"><title>💮💮 deuxfleurs - deuxfleurs</title><link rel="stylesheet" href="/css/main.css"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body><aside><header><a class="mobile_inline" id="menu" href="#"><svg viewBox="0 0 100 80" width="40" height="40"><rect width="100" height="20"></rect><rect y="30" width="100" height="20"></rect><rect y="60" width="100" height="20"></rect></svg></a><h1><a href="/">deuxfleurs</a></h1><nav class="computer_block"><section class="center"><img alt="emoji fleur" src="/img/flower.svg" width="40"> <img alt="emoji fleur" src="/img/flower.svg" width="40"></section><ul><li><a href="https://plume.deuxfleurs.fr/timeline/1">Actualités</a></li><li><a href="https://man.deuxfleurs.fr">Wiki</a></li><li><a href="https://guichet.deuxfleurs.fr">Mon compte</a></li></ul><hr><ul><li><a href="/CGU.html">CGU</a></li><li><a href="/Gestion des risques.html">Gestion des risques</a></li><li><a href="/Mentions légales.html">Mentions légales</a></li><li><a href="/Sources.html">Sources</a></li></ul></nav></header></aside><main><section><h1>404 - Page non trouvée</h1><p>La page que vous cherchez n'existe pas sur ce site web.</p><p>Si vous pensez que c'est une erreur, les informations pour nous contacter sont disponibles sur notre page d'accueil.</p></section></main><script>(_ => { + const hamburger = document.getElementById('menu') + hamburger.onclick = _ => { + const nav = document.querySelector('body > aside > header > nav') + console.log(nav.style.display) + nav.style.display = nav.style.display != 'block' ? 'block' : 'none' + } +})()</script></body></html>
\ No newline at end of file diff --git a/static/@jitsi.html b/static/@jitsi.html new file mode 100644 index 0000000..018f868 --- /dev/null +++ b/static/@jitsi.html @@ -0,0 +1,8 @@ +<!DOCTYPE html><html lang="fr"><head><meta charset="utf-8"><title>💮💮 deuxfleurs - Visioconférence</title><link rel="stylesheet" href="/css/main.css"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body><aside><header><a class="mobile_inline" id="menu" href="#"><svg viewBox="0 0 100 80" width="40" height="40"><rect width="100" height="20"></rect><rect y="30" width="100" height="20"></rect><rect y="60" width="100" height="20"></rect></svg></a><h1><a href="/">deuxfleurs</a></h1><nav class="computer_block"><section class="center"><img alt="emoji fleur" src="/img/flower.svg" width="40"> <img alt="emoji fleur" src="/img/flower.svg" width="40"></section><ul><li><a href="https://plume.deuxfleurs.fr/timeline/1">Actualités</a></li><li><a href="https://wiki.deuxfleurs.fr">Wiki</a></li><li><a href="https://guichet.deuxfleurs.fr">Mon compte</a></li></ul><hr><ul><li><a href="/CGU.html">CGU</a></li><li><a href="/Gestion des risques.html">Gestion des risques</a></li><li><a href="/Mentions légales.html">Mentions légales</a></li></ul></nav></header></aside><main><h4 class="spacing"> Cette page a changé d'adresse : <a href="/Guide/Visioconférence.html">cliquez ici pour être redirigé</a></h4></main><script>(_ => { + const hamburger = document.getElementById('menu') + hamburger.onclick = _ => { + const nav = document.querySelector('body > aside > header > nav') + console.log(nav.style.display) + nav.style.display = nav.style.display != 'block' ? 'block' : 'none' + } +})()</script></body></html>
\ No newline at end of file diff --git a/static/Gestion des risques.html b/static/Gestion des risques.html new file mode 100644 index 0000000..ad9ba7d --- /dev/null +++ b/static/Gestion des risques.html @@ -0,0 +1,13 @@ +<!DOCTYPE html><html lang="fr"><head><meta charset="utf-8"><title>💮💮 deuxfleurs - Gestion des risques</title><link rel="stylesheet" href="/css/main.css"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body><aside><header><a class="mobile_inline" id="menu" href="#"><svg viewBox="0 0 100 80" width="40" height="40"><rect width="100" height="20"></rect><rect y="30" width="100" height="20"></rect><rect y="60" width="100" height="20"></rect></svg></a><h1><a href="/">deuxfleurs</a></h1><nav class="computer_block"><section class="center"><img alt="emoji fleur" src="/img/flower.svg" width="40"> <img alt="emoji fleur" src="/img/flower.svg" width="40"></section><ul><li><a href="https://plume.deuxfleurs.fr/timeline/1">Actualités</a></li><li><a href="https://man.deuxfleurs.fr">Wiki</a></li><li><a href="https://guichet.deuxfleurs.fr">Mon compte</a></li></ul><hr><ul><li><a href="/CGU.html">CGU</a></li><li><a class="selected" href="/Gestion des risques.html">Gestion des risques</a></li><li><a href="/Mentions légales.html">Mentions légales</a></li><li><a href="/Sources.html">Sources</a></li></ul></nav></header></aside><main><section><h1>Gestion des risques</h1><p>Un risque se définit par la combinaison d'un danger, c'est à dire un évènement redouté, et sa probabilité d'occurence. +La gestion des risques consiste à minimiser les risques en les évaluant et en mettant en place des solutions pour réduire leur impact.</p><h2>🧰 Risques matériels</h2><h3>Panne de composants informatiques</h3><p><b>Définition du risque</b>: Un serveur est composé d'un ensemble de pièces avec une durée de vie limitée. La panne d'une de ces pièces cause une interruption de service et possiblement une perte de données (comme dans le cas d'un disque dur par exemple). La probabilité de ces pannes est importante car certains composants ont une durée de vie limité, comme les disques durs, et de plus nous utilisons du matériel reconditionné qui a donc déjà été utilisé.</p><p><b>Mesure mise en place</b>: Nous avons à disposition des pièces de rechange pour pouvoir réparer rapidement nos serveurs. De plus, nous avons en permanence plusieurs machines en production de sorte que lorsque l'une d'elle tombe en panne, les services qu'elle gérait sont automatiquement basculés sur les autres machines fonctionnelles. Les données sont répliquées sur 3 disques durs différents, de sorte que si un disque dur tombe en panne, cette dernière est toujours disponible sur 2 autres disques.</p><h3>Bug logiciel</h3><p><b>Définition du risque</b>: Un bug logiciel peut rendre un service indisponible voire impliquer une perte de données. Cette indisponibilité et cette perte de donnée, contrairement à une panne matériel, peut se propager à l'ensemble de nos serveurs.</p><p><b>Mesure mise en place</b>: Les données, en plus d'être répliquées automatiquement, sont périodiquement sauvegardées via un logiciel indépendant sur une période d'au moins 2 mois sur un site distant (Suresnes), de sorte que le logiciel qui fournisse le service n'ait pas accès aux données de sauvegardes et ne puisse donc pas les effacer. Les services quant à eux sont définis déclarativement, dans chaque modification est archivée, de sorte qu'il est possible de revenir sur une version antérieure du service qui soit stable.</p><h3>Panne du réseau électrique ou internet</h3><p><b>Définition du risque</b>: Nous faisons appel à des prestataires externe pour l'électricité (eg. EDF) et la connexion Internet (eg. Free). Lors de travaux dans la rue, de tension sur le réseau (eg. froid ou confinement), ou simplement d'erreur de gestion, ces réseaux peuvent être coupés localement ou au niveau national. En résulte une indisponibilité des services pendant la coupure.</p><p><b>Mesure mise en place</b>: Notre infrastructure est répartie sur des zones éloignées géographiquement (aujourd'hui Rennes et Orsay), de sorte qu'une panne locale ne nécessitera que de migrer les services d'une zone à l'autre. Pour le cas d'une panne au niveau national, nous acceptons ce risque : il est très faible et, la plupart du temps, le service est rétabli en quelques heures.</p><h3>Panne des autres prestataires et tiers-parties</h3><p> <b>Définition du risque</b>: Deuxfleurs fait appel à un certains nombre de prestataires et tiers parties pour fournir ses services : bureau d'enregistrement DNS (Gandi), Hébergeur DNS (Gandi), certificats X.509 (Let's Encrypt), système d'exploitation (NixOS, Debian), logiciels (Docker Hub, Github, etc.). La panne ou le blocage par une de ces tiers-parties impacteraient les services de Deuxfleurs.</p><p><b>Mesure mise en place</b>: Nous essayons de limiter le nombre de prestataires que nous utilisons et évitons de verrouiller fortement nos choix technologiques vis à vis d'un fournisseur particulier. +En dehors de ces points, nous acceptons ces risques.</p><h2>😵 Risques humains</h2><h3>Erreur d'administration</h3><p><b>Définition du risque</b>: Une erreur d'administration des services peut aboutir à une interruption de services et à une perte de données sur l'ensemble de nos serveurs. Elle peut également générer beaucoup de stress pour la personne en charge de l'administration.</p><p><b>Mesure mise en place</b>: Les données, en plus d'être répliquées automatiquement, sont périodiquement sauvegardées via un logiciel indépendant sur une période d'au moins 2 mois sur un site distant (Suresnes), de sorte que le logiciel qui fournisse le service n'ait pas accès aux données de sauvegardes et ne puisse donc pas les effacer. Les services quant à eux sont définis déclarativement, dans chaque modification est archivée, de sorte qu'il est possible de revenir sur une version antérieure du service qui soit stable. En cas d'erreur, la personne en charge de l'administration doit demander un accompagnement ou un relai pour limiter les risques d'aggravement de la situation et ne pas avoir à supporter cette situation stressante seule.</p><h3>Absence d'astreinte</h3><p><b>Définition du risque</b>: Que ce soit dans les datacenters au niveau matériel, ou dans les services informatiques, au niveau logiciel, de nombreuses organisations mettent en place des astreintes. +Autrement dit, une ou plusieurs personnes identifiées doivent se rendre disponible sur des périodes données pour pouvoir intervenenir rapidement sur les serveurs. +Dans le cas de Deuxfleurs, une astreinte empêcherait une personne de quitter son domicile pour des vacances ou même rendre visite à sa famille !</p><p><b>Mesure mise en place</b>: Nous faisons en sorte d'avoir des serveurs chez des membres différents et d'avoir plusieurs personnes en mesure de réaliser une même opération de maintenance. +Si un problème devait arriver pendant l'absence de la personne concernée, un autre membre devrait pouvoir prendre le relai dans les heures ou les jours qui viennent, par exemple en migrant les services chez lui ou en le réparant à distance.</p><h3>Perte d'expertise</h3><p><b>Définition du risque</b>: L'infrastructure que nous avons déployée demande des connaissances avancées en informatique détenues par une fraction des membres de l'association. Si cette fraction venait à quitter l'association, la maintenance de ses services pourrait ne plus être réalisée par les membres restants, mettant en péril sa pérennité.</p><p><b>Mesure mise en place</b>: Nous essayons d'avoir toujours au moins deux personnes en mesure de réaliser une tâche. Nous essayons de documenter et standardiser notre infrastructure.</p><h3>Risques juridiques</h3><p><b>Définition du risque</b>: Deuxfleurs pourrait enfreindre la loi et voir sa pérennité engagée en cas de procès.</p><p><b>Mesure mise en place</b>: Nous faisons une veille juridique concernant les hébergeurs. Nous mitigeons aussi ce risque via la co-optation qui permet de contrôler notre croissance et les personnes qui nous rejoignent.</p><h2>👿 Malveillance</h2><h3>Attaque informatique</h3><p><b>Définition du risque</b>: Une attaque informatique, venant d'un·e administrateur·ice ou d'une personne extérieure, peut aboutir à l'indisponibilité de nos services, à une perte de données, mais aussi à la fuite de ces dernières.</p><p><b>Mesure mise en place</b>: Pour se protéger d'un·e administrateur·ice malveillant·e, le groupe d'administrateur·ices existant ne recrute que de nouvelles personnes sur cooptation et après avoir jugé cette personne de confiance. Nous prévoyions également de chiffrer de plus en plus de données côté client, de sorte qu'une personne en charge de l'administration ne soit pas en mesure de lire le contenu stocké sur les serveurs. Pour se protéger d'une personne extérieure, nous maintenons notre système à jour et avons entamé une démarche de défense en profondeur.</p><h3>Vol du matériel</h3><p><b>Définition du risque</b>: Une personne entrant par effraction chez un de nos membres pourrait voler les ordinateurs. Cet évènement peut impacter la disponibilité de nos services, l'intégrité de nos données, mais aussi la confidentialité de ces dernières.</p><p><b>Mesure mise en place</b>: Nous acceptons ce risque pour le moment. Le chiffrement côté client, pour les services le supportant, permet de protéger la confidentialité des données. Nous prévoyions à terme de chiffrer les disques durs à froid en plus.</p><h3>Abus des services</h3><p><b>Définition du risque</b>: Une personne ayant des accès au service, où se les aillant fait voler, peut opérer un déni de service sur notre infrastructure, ou alors nuire à la réputation de notre service sur un réseau fédéré (eg. spam via email). Cela entraine une indisponibilité des services et/ou une dégradation plus ou moins durable de la qualité de ces derniers.</p><p><b>Mesure mise en place</b>: Nous mitigeons actuellement ce risque via la cooptation, où nous faisons confiance aux nouveaux membres et les invitons à bien gérer leurs identifiants. </p></section></main><script>(_ => { + const hamburger = document.getElementById('menu') + hamburger.onclick = _ => { + const nav = document.querySelector('body > aside > header > nav') + console.log(nav.style.display) + nav.style.display = nav.style.display != 'block' ? 'block' : 'none' + } +})()</script></body></html>
\ No newline at end of file diff --git a/static/Mentions légales.html b/static/Mentions légales.html new file mode 100644 index 0000000..b1c6b08 --- /dev/null +++ b/static/Mentions légales.html @@ -0,0 +1,8 @@ +<!DOCTYPE html><html lang="fr"><head><meta charset="utf-8"><title>💮💮 deuxfleurs - Mentions légales</title><link rel="stylesheet" href="/css/main.css"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body><aside><header><a class="mobile_inline" id="menu" href="#"><svg viewBox="0 0 100 80" width="40" height="40"><rect width="100" height="20"></rect><rect y="30" width="100" height="20"></rect><rect y="60" width="100" height="20"></rect></svg></a><h1><a href="/">deuxfleurs</a></h1><nav class="computer_block"><section class="center"><img alt="emoji fleur" src="/img/flower.svg" width="40"> <img alt="emoji fleur" src="/img/flower.svg" width="40"></section><ul><li><a href="https://plume.deuxfleurs.fr/timeline/1">Actualités</a></li><li><a href="https://man.deuxfleurs.fr">Wiki</a></li><li><a href="https://guichet.deuxfleurs.fr">Mon compte</a></li></ul><hr><ul><li><a href="/CGU.html">CGU</a></li><li><a href="/Gestion des risques.html">Gestion des risques</a></li><li><a class="selected" href="/Mentions légales.html">Mentions légales</a></li><li><a href="/Sources.html">Sources</a></li></ul></nav></header></aside><main><section><h1>Mentions légales</h1><h2>Éditeur et hébergeur</h2><p> <b>Deuxfleurs </b><br>Deuxfleurs est l'éditeur et l'hébergeur de l'ensemble de ses services et contenus à l'exception de sa<a href="https://git.deuxfleurs.fr"> forge git</a><br>Association loi 1901 déclarée en préfecture d'Ille-et-Vilaine le 29 janvier 2020.</p><p>Numéro RNA : W353020804 <br>Numéro SIRET : 89961256800019</p><p> Siège social : Association Deuxfleurs<br>10A Allée de Lanvaux<br>35700 RENNES<br>FRANCE</p><p><b>OVH</b><br>OVH est uniquement en charge de l'hébergement de la <a href="https://git.deuxfleurs.fr"> forge git.</a><br>SASU Société par actions simplifiée à associé unique.</p><p>Numéro SIRET : 42476141900045</p><p>Siège social : OVH<br>2 RUE KELLERMANN<br>59100 ROUBAIX<br>FRANCE</p><h3>Direction de la publication</h3><p> Quentin Dufour<br>Adrien Luxey</p><h2>Informatique et libertés</h2><h3>Informations personnelles collectées</h3><p>En France, les données personnelles sont notamment protégées par la loi n° 78-17 du 6 janvier 1978, la loi n° 2004-801 du 6 août 2004, l’article L. 226-13 du Code pénal et la Directive Européenne du 24 octobre 1995.</p><p>En tout état de cause Deuxfleurs ne collecte des informations personnelles relatives à l’utilisateur (nom, adresse électronique, coordonnées téléphoniques) que pour le besoin des services proposés par les sites du réseau Deuxfleurs. L’utilisateur fournit ces informations en toute connaissance de cause, notamment lorsqu’il procède par lui-même à leur saisie. Il est alors précisé à l’utilisateur des sites du réseau Deuxfleurs le caractère obligatoire ou non des informations qu’il serait amené à fournir. </p><h3>Rectification des informations nominatives collectées</h3><p> Conformément aux dispositions de l’article 34 de la loi n° 48-87 du 6 janvier 1978, l’utilisateur dispose d’un droit de modification des données nominatives collectées le concernant. Pour ce faire, l’utilisateur envoie à Deuxfleurs : <ul><li>un courrier électronique à ca (arobase) deuxfleurs.fr</li><li>un courrier à l’adresse du siège de l’association (indiquée ci-dessus) en indiquant son nom ou sa raison sociale, ses coordonnées physiques et/ou électroniques, ainsi que le cas échéant la référence dont il disposerait en tant qu’utilisateur du site Deuxfleurs.</li></ul></p><p>La modification interviendra dans des délais raisonnables à compter de la réception de la demande de l’utilisateur.</p><h2>Limitation de responsabilité</h2><p>Ce site comporte des informations mises à disposition par des communautés ou sociétés externes ou des liens hypertextes vers d’autres sites qui n’ont pas été développés par Deuxfleurs. Le contenu mis à disposition sur le site est fourni à titre informatif. L’existence d’un lien de ce site vers un autre site ne constitue pas une validation de ce site ou de son contenu. Il appartient à l’internaute d’utiliser ces informations avec discernement et esprit critique. La responsabilité de Deuxfleurs ne saurait être engagée du fait des informations, opinions et recommandations formulées par des tiers.</p><p>Deuxfleurs ne pourra être tenue responsable des dommages directs et indirects causés au matériel de l’utilisateur, lors de l’accès au site, et résultant soit de l’utilisation d’un matériel ne répondant pas aux spécifications techniques requises, soit de l’apparition d’un bug ou d’une incompatibilité.</p><p>Deuxfleurs ne pourra également être tenue responsable des dommages indirects (tels par exemple qu’une perte de marché ou perte d’une chance) consécutifs à l’utilisation du site.</p><p>Des espaces interactifs (comme la solution de messagerie instantanée Matrix) sont à la disposition des utilisateurs sur le site Deuxfleurs. Deuxfleurs se réserve le droit de supprimer, sans mise en demeure préalable, tout contenu déposé dans cet espace qui contreviendrait à la législation applicable en France, en particulier aux dispositions relatives à la protection des données. Le cas échéant, Deuxfleurs se réserve également la possibilité de mettre en cause la responsabilité civile et/ou pénale de l’utilisateur, notamment en cas de message à caractère raciste, injurieux, diffamant, ou pornographique, quel que soit le support utilisé (texte, photographie…).</p><h2>Limitations contractuelles sur les données techniques</h2><p>Deuxfleurs ne pourra être tenue responsable de dommages matériels liés à l’utilisation du site.</p><h2>Propriété intellectuelle</h2><p>Les contenus sont publiés sous la responsabilité des utilisateurs.</p></section></main><script>(_ => { + const hamburger = document.getElementById('menu') + hamburger.onclick = _ => { + const nav = document.querySelector('body > aside > header > nav') + console.log(nav.style.display) + nav.style.display = nav.style.display != 'block' ? 'block' : 'none' + } +})()</script></body></html>
\ No newline at end of file diff --git a/static/Sources.html b/static/Sources.html new file mode 100644 index 0000000..1078161 --- /dev/null +++ b/static/Sources.html @@ -0,0 +1,38 @@ +<!DOCTYPE html><html lang="fr"><head><meta charset="utf-8"><title>💮💮 deuxfleurs - Sources</title><link rel="stylesheet" href="/css/main.css"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body><aside><header><a class="mobile_inline" id="menu" href="#"><svg viewBox="0 0 100 80" width="40" height="40"><rect width="100" height="20"></rect><rect y="30" width="100" height="20"></rect><rect y="60" width="100" height="20"></rect></svg></a><h1><a href="/">deuxfleurs</a></h1><nav class="computer_block"><section class="center"><img alt="emoji fleur" src="/img/flower.svg" width="40"> <img alt="emoji fleur" src="/img/flower.svg" width="40"></section><ul><li><a href="https://plume.deuxfleurs.fr/timeline/1">Actualités</a></li><li><a href="https://man.deuxfleurs.fr">Wiki</a></li><li><a href="https://guichet.deuxfleurs.fr">Mon compte</a></li></ul><hr><ul><li><a href="/CGU.html">CGU</a></li><li><a href="/Gestion des risques.html">Gestion des risques</a></li><li><a href="/Mentions légales.html">Mentions légales</a></li><li><a class="selected" href="/Sources.html">Sources</a></li></ul></nav></header></aside><main><section><h1>Accéder aux sources des logiciels utilisés</h1><p>Deuxfleurs utilise exclusivement des logiciels libres dans le cadre de son activité. Vous pouvez retrouver ici la liste des sources des logiciels utilisés.</p><ul> +<li><a href="https://packages.debian.org/">Debian</a></li> +<li><a href="https://github.com/NixOS">NixOS</a></li> +<li><a href="https://github.com/hashicorp/nomad">Nomad</a></li> +<li><a href="https://github.com/hashicorp/consul/">Consul</a></li> +<li><a href="https://git.deuxfleurs.fr/Deuxfleurs/garage">Garage</a></li> +<li><a href="https://git.deuxfleurs.fr/Deuxfleurs/tricot">Tricot</a></li> +<li><a href="https://git.deuxfleurs.fr/Deuxfleurs/bottin/">Bottin</a></li> +<li><a href="https://git.deuxfleurs.fr/Deuxfleurs/guichet/">Guichet</a></li> +<li><a href="https://git.deuxfleurs.fr/Deuxfleurs/diplonat/">Diplonat</a></li> +<li><a href="https://github.com/sorintlab/stolon">Stolon</a></li> +<li><a href="https://github.com/moby/moby">Docker</a></li> +<li><a href="https://github.com/ansible/ansible">Ansible</a></li> +<li><a href="https://github.com/harness/drone">Drone</a></li> +<li><a href="https://github.com/restic/restic">Restic</a></li> +<li><a href="https://github.com/xwiki-labs/cryptpad">Cryptpad</a></li> +<li><a href="https://github.com/inverse-inc/sogo">Sogo</a></li> +<li><a href="git.deuxfleurs.fr/Deuxfleurs/alps">alps</a></li> +<li><a href="https://github.com/matrix-org/synapse">Synapse</a></li> +<li><a href="https://github.com/vector-im/element-web">Element</a></li> +<li><a href="https://github.com/jitsi">Jitsi</a></li> +<li><a href="https://github.com/Plume-org/Plume">Plume</a></li> +<li><a href="https://github.com/FiloSottile/age">age</a></li> +<li><a href="https://github.com/minio/minio">Minio</a></li> +<li><a href="https://git.proxmox.com/">Proxmox</a></li> +<li><a href="https://github.com/grafana/grafana">Grafana</a></li> +<li><a href="https://github.com/prometheus/prometheus">Prometheus</a></li> +<li><a href="https://git.deuxfleurs.fr/Deuxfleurs/infrastructure">Infra (legacy)</a></li> +<li><a href="git.deuxfleurs.fr/Deuxfleurs/nixcfg">Infra (next)</a></li> +</ul> +</section></main><script>(_ => { + const hamburger = document.getElementById('menu') + hamburger.onclick = _ => { + const nav = document.querySelector('body > aside > header > nav') + console.log(nav.style.display) + nav.style.display = nav.style.display != 'block' ? 'block' : 'none' + } +})()</script></body></html>
\ No newline at end of file diff --git a/static/favicon.ico b/static/favicon.ico Binary files differnew file mode 100644 index 0000000..0d1103c --- /dev/null +++ b/static/favicon.ico diff --git a/static/robots.txt b/static/robots.txt new file mode 100644 index 0000000..c2a49f4 --- /dev/null +++ b/static/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Allow: / |