Initial commit

This commit is contained in:
Gitouche 2022-06-06 21:07:57 +02:00
commit 0d126cbe9e
40 changed files with 1668 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
public/

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "themes/juice"]
path = themes/juice
url = https://github.com/huhu/juice

28
config.toml Normal file
View file

@ -0,0 +1,28 @@
# The URL the site will be built for
base_url = "https://garbaye.fr"
# Whether to automatically compile all Sass files in the sass directory
compile_sass = true
# Whether to build a search index to be used later on by a JavaScript library
build_search_index = false
# Custom
theme = "juice"
default_language = "fr"
title = "Garbaye"
[markdown]
# Whether to do syntax highlighting
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
highlight_code = false
[extra]
# Put all your custom variables here
juice_logo_name = "Garbaye"
juice_logo_path = "images/logocarreblanc_512px.png"
juice_extra_menu = [
{ title = "État des services", link = "https://status.garbaye.fr/"},
{ title = "Blog", link = "/blog"}
]

27
content/_index.md Normal file
View file

@ -0,0 +1,27 @@
+++
title = "Bienvenue sur Garbaye"
date = 2021-04-23
weight = 1
+++
Garbaye propose des services numériques libres et éthiques au plus grand nombre. Le mot [Garbaye](https://fr.wikipedia.org/wiki/Garbaye) est une référence à la forêt des Landes de Gascogne.
Les détails du projet sont dans la [page dédiée](/about).
# Liste des services
## Accès libre sans inscription
Service | Lien | Code source | Version
--- | --- | --- | ---
Aide à la prise de RDV | **<https://sondage.garbaye.fr>** | [Framadate](https://framagit.org/framasoft/framadate/framadate) | *1.1.19*
Partage de notes sécurisées | **<https://bin.garbaye.fr>** | [PrivateBin](https://github.com/PrivateBin/PrivateBin/) | *1.4.0*
Visio-conférence | **<https://jitsi.garbaye.fr>** | [Jitsi](https://github.com/jitsi/docker-jitsi-meet) | *stable-7210-2*
**Geekeries** | **Lien** | **Code Source** | **Version**
--- | --- | --- | ---
Serveur PeerJS pour WebRTC | **<https://peerjs.garbaye.fr/myapp/>** | [peerjs-server](https://github.com/peers/peerjs-server) | *0.6.1*
## Accès restreint : inscriptions fermées
Service | Lien | Code source | Version
--- | --- | --- | ---
Stockage de documents | **<https://seafile.garbaye.fr>** | [Seafile Server Core](https://github.com/haiwen/seafile-server) | *9.0.5*
Messagerie instantanée | **<https://matrix.garbaye.fr>** | [Matrix/Synapse](https://github.com/matrix-org/synapse) | *v1.59.1*

25
content/about.md Normal file
View file

@ -0,0 +1,25 @@
+++
title = "À propos"
date = 2021-04-25
description = "À propos"
weight = 1
+++
Ce projet est né d'une réflexion sur l'auto-hébergement, à l'été 2020. **Guillaume et Loïc** administrent pour leur compte des services libres et auto-hébergés depuis de nombreuses années. Quels freins, en 2020, nous empêchent de proposer des services avec une qualité de service acceptable?
Sans pouvoir tout résoudre avec des pirouettes techniques, il nous apparaît aujourd'hui que l'auto-hébergement est une solution plus viable et crédible qu'à nos débuts. Alors on se lance et on verra où ça nous mène...
# Nos principes et valeurs
## Logiciel libre
Les [logiciels libres](https://fr.wikipedia.org/wiki/Logiciel_libre), en association aux **licences** et **protocoles libres**, et aux formats de **fichiers ouverts**, sont les outils nécessaire pour protéger nos **droits et libertés**. Garbaye n'utilise que des logiciel libres.
## Auto-hébergement
L'auto-hébergement consiste à fournir des services numériques directement depuis chez soi, sur un abonnement à Internet classique. Nous adoptons cette pratique dans une démarche de **simplicité, de décentralisation et d'indépendance** vis à vis de tous tiers.
## Impact sur la vivant
Conscients des **impacts du [numérique sur l'environnement](https://ecoinfo.cnrs.fr/)**, et notamment lors de la phase de fabrication de matériel, nous priorisons l'utilisation de matériel de seconde main. Afin de maximiser aussi l'utilisation des ressources à notre disposition, nous évitons d'utiliser des [logiciels usine à gaz](https://fr.wikipedia.org/wiki/Bloatware).
Vous pouvez consulter les choix [techniques](/docs) qui guident nos choix d'infratructure.

7
content/blog/_index.md Normal file
View file

@ -0,0 +1,7 @@
+++
title = "Liste des billets"
sort_by = "date"
generate_feed = true
template = 'blogpage.html'
page_template = 'blog.html'
+++

View file

@ -0,0 +1,10 @@
+++
title = "Garbaye est candidat CHATONS"
date = 2021-04-28
+++
Depuis aujourd'hui et dans la poursuite de notre démarche de promotion du libre et de la décentralisation des outils Internet, **Garbaye** est officiellement [candidat](https://framagit.org/chatons/CHATONS/-/issues/172) [CHATONS](https://chatons.org/).
<!-- more -->
> CHATONS est le Collectif des Hébergeurs Alternatifs, Transparents, Ouverts, Neutres et Solidaires. Ce collectif vise à rassembler des structures proposant des services en ligne libres, éthiques et décentralisés afin de permettre aux utilisateur⋅ices de trouver rapidement des alternatives respectueuses de leurs données et de leur vie privée aux services proposés par les GAFAM (Google, Apple, Facebook, Amazon, Microsoft). CHATONS est un collectif initié par l'association Framasoft en 2016 suite au succès de sa campagne Dégooglisons Internet.
Ce processus de candidature nous a permis d'identifier des points d'amélioration dans notre démarche. Les délibérations sont prévues pour le 21 juin. D'ici là, d'autres services risquent de pointer le bout de leur nez :-)

View file

@ -0,0 +1,7 @@
+++
title = "Arrêt du service Lutim img.garbaye.fr"
date = 2021-05-15
+++
Le service de partage d'image img.garbaye.fr (Lutim) a été officiellement stoppé après discussion de l'équipe.
Si vous cherchez à récupérer des images, n'hésitez pas à nous [contacter](pages/contact.html).
<!-- more -->

View file

@ -0,0 +1,8 @@
+++
title = "Status des services"
date = 2021-05-15
+++
Nous avons ajouté une [page de status des services](https://status.garbaye.fr/).
Celle ci est accessible depuis le menu principal du site web.
<!-- more -->
Cette page utilise [tinystatus](https://github.com/bderenzo/tinystatus).

View file

@ -0,0 +1,9 @@
+++
title = "Ajout du service Jitsi"
date = 2021-06-23
+++
Nous avons le plaisir de mettre à disposition une intance [Jitsi Meet](https://wiki.chatons.org/doku.php/services/visio-conference/jitsi) ouverte à tous.
<!-- more -->
Il s'agit d'un service de vidéo conférence open source, sécurisé et flexible fourni par la communauté [Jitsi](https://jitsi.org)
Notre service est accessible à l'adresse [jitsi.garbaye.fr](https://jitsi.garbaye.fr)

View file

@ -0,0 +1,8 @@
+++
title = "Collectif CHATONS"
date = 2021-06-24
+++
Suite à notre [candidature](candidature-chatons.html), le projet Garbaye est fier et honoré aujourd'hui de rejoindre le [collectif CHATONS](https://www.chatons.org/), dont nous partageons les objectifs et valeurs.
<!-- more -->
Nos services ouverts au public (jitsi, privatebin et date) sont mis à disposition du public à travers la page <https://entraide.chatons.org>.

View file

@ -0,0 +1,10 @@
+++
title = "Ajout du service Matrix"
date = 2021-07-15
+++
Nous avons le plaisir de vous annoncer l'ouverture de notre intance [Matrix](https://wiki.chatons.org/doku.php/services/messagerie_instantanee/matrix). L'ouverture de compte sur cette instance est limitée à nos proches.
<!-- more -->
Il s'agit d'un service de méssagerie instanée open source et sécurisé fourni par la fondation [Matrix.org](https://matrix.org)
Venez-nous rejoindre sur [#garbaye:garbaye.fr](https://matrix.to/#/#garbaye:garbaye.fr) :)

View file

@ -0,0 +1,15 @@
+++
title = "Maintenance site primaire"
date = 2021-10-26
+++
Bonjour,
Une maintenance électrique aura lieu **mercredi 27 octobre 2021, entre 8h et 12h**, au matin et entrainera l'indisponibilité des services :
<!-- more -->
- <https://sondage.garbaye.fr>
- <https://bin.garbaye.fr>
- <https://jitsi.garbaye.fr>
- <https://seafile.garbaye.fr>
- <https://matrix.garbaye.fr>
Le status des services restera disponible à [l'adresse habituelle](https://status.garbaye.fr/)

43
content/cgu.md Normal file
View file

@ -0,0 +1,43 @@
+++
title = "CGU"
date = 2021-04-25
description = "Conditions Générales d'Utilisation"
weight = 1
+++
# Conditions Générales d'Utilisation
## Généralités
Les présentes Conditions Générales d'Utilisation s'appliquent exclusivement à Garbaye et ses services. Garbaye désigne l'infrastructure matérielle, système et logicielle hébergeant les services fournis à l'utilisateur via le domaine garbaye.fr et ses sous-domaines. Les conditions sont sujettes à modification afin de les adapter à des dispositions futures.
## Objet
Lobjectif du service numérique fourni par Garbaye est de proposer des services numériques libres, respectueux des utilisateurs. Garbaye adhère pleinement à la [charte](https://www.chatons.org/charte) et au [manifeste](https://www.chatons.org/manifeste) de [CHATONS](https://chatons.org).
## Disponibilité
Garbaye ne garantit pas un accès permanent aux services. Cependant, la disponibilité est assurée au mieux. Les incidents d'indisponibilité des services sont communiqués sur ce présent site web.
## Données personnelles et respect de la vie privée
### Propriété
Garbaye ne s'octroie aucun droit de propriété sur les données personnelles produites par les utilisateurs ou utilisatrices. Les données personnelles regroupent l'ensemble des données liées à une personne à l'exception des journaux systèmes et des relevés métrologiques.
### Utilisation
Les données fournies par les utilisateurs et utilisatrices ne sont utilisées que pour fournir le service lié. En aucun cas une utilisation autre des données personnelles n'est faite telle que leur valorisation commerciale. Seuls les journaux systèmes sont utilisés pour garantir la sécurité de l'infrastructure contre des actions malintentionnées et pour des raisons légales. Les révélés métrologiques permettent le suivi de l'utilisation des ressources de Garbaye et ne peuvent identifier une personne spécifiquement.
### Conservation
Les données personnelles sont conservées pour la durée de provision du service à l'utilisateur ou utilisatrice. Les journaux systèmes sont conservés 31 jours après leur création. Les relevés métrologiques ont une période de rétentions de 365 jours.
### Suppression
L'utilisateur peut, à tout moment, définitivement supprimer ses données personnelles et comptes stockés par Garbaye. Il peut s'agir d'une fonctionnalité fournie par un service ou bien d'une demande adressée à Garbaye.
### Récupération
L'utilisateur ou utilisatrice peut, à tout moment, récupérer ses données personnelles et comptes stockés par Garbaye. Il peut s'agir d'une fonctionnalité fournie par un service ou bien d'une demande adressée à Garbaye.
Note : les CGU sont inspirées de [Exarius](https://exarius.org/cgu). License CC BY-NC 4.0

11
content/contact.md Normal file
View file

@ -0,0 +1,11 @@
+++
title = "Contact"
date = 2021-04-25
description = "Nous contacter"
weight = 1
+++
L'équipe d'aministration est joignable par :
* Salon Matrix : **[#garbaye:garbaye.fr](https://matrix.to/#/#garbaye:garbaye.fr)**
* Courriel : **contact [arobase] garbaye [point] fr**

50
content/docs.md Normal file
View file

@ -0,0 +1,50 @@
+++
title = "Docs"
date = 2021-04-25
description = "Documentation"
weight = 1
+++
# Documentation Technique
## Équipe technique
L'équipe technique est composée de **Guillaume** et **Loïc**, libristes et adeptes de l'auto-hébergement depuis les années 2000. Ils apprécient aussi la bière.
## Serveurs
Le **serveur principal** des services est une tour x86_64, 4 coeurs, 16GiB RAM équipé de 4TiB de stockage HDD.
Le **serveur de sauvegarde** est une tour x86_64, 2 coeurs, 4GiB RAM équipé de 2.5TiB de stockage HDD.
L'équipe technique a un contrôle total sur ces serveurs : maintenance matérielle, administration système.
## Infrastructure
Le routage réseau est effectué par des routeurs **[OpenWRT](https://openwrt.org/)** avec VLAN "DMZ" isolé.
Les serveurs utilisent **[Rocky Linux](https://rockylinux.org/)**, avec **[SELinux](https://fr.wikipedia.org/wiki/SELinux)** actif, et sont orchestrés avec **[Ansible](https://fr.wikipedia.org/wiki/Ansible_(logiciel))**.
Les services sont gérés dans des containers (**[podman](https://fr.wikipedia.org/wiki/Podman)** "rootless").
Un serveur web frontal **[Nginx](https://fr.wikipedia.org/wiki/NGINX)** fait l'interface avec clients.
Nous utilisons **[WireGuard](https://www.wireguard.com/)** comme VPN entre nos serveurs.
Les sauvegardes quotidiennes sont effectuées selon la stratégie **3-2-1** avec l'outil rsnapshot:
* 3 copies
* 2 supports différents
* 1 copie hors site
Les services sont supervisés et les administrateurs immédiatement avertis en cas d'indisponibilité.
## Sources
Nos dépots de code sont hébergés sur [framagit](https://framagit.org/garbaye).
## Fournisseurs
Les **courriels et DNS** du domaine **garbaye.fr** sont gérés par **[Gandi SAS](https://www.gandi.net/fr/)**
> GANDI SAS, Société par Actions Simplifiée au capital de 2 300 000 € ayant son siège social au 63-65 boulevard Masséna Paris (75013) FRANCE
> Siren 423 093 459 RCS PARIS
> n. de TVA FR81423093459
> Tel +33 (0) 1 70.37.76.61
> Fax +33. (0) 1 43 73 18 51
## Objectifs
Les administrateurs poursuivent les objectifs techniques suivants :
* Effectuer une **veille technologique** en suivant les nouveaux outils libres.
* Expérimenter avec de **nouvelles pratiques** du métier. cf. [DevOps](https://fr.wikipedia.org/wiki/Devops).
* Améliorer leur pratique de l'**administration système** : [SSI](https://www.ssi.gouv.fr/administration/bonnes-pratiques/), [KISS](https://fr.wikipedia.org/wiki/Principe_KISS), [IaC](https://fr.wikipedia.org/wiki/Infrastructure_as_code).
* Anticiper les problèmes en prévoyant des **[PRA](https://fr.wikipedia.org/wiki/Plan_de_reprise_d%27activit%C3%A9)** pour divers scénarios d'indisponibilité, avarie, etc.

29
content/legal.md Normal file
View file

@ -0,0 +1,29 @@
+++
title = "Mentions Légales"
date = 2021-04-25
description = "Mentions Légales"
weight = 1
+++
# Éditeur
Le directeur de la publication est Guillaume Cassonnet, un des administrateurs système de Garbaye.
Guillaume Cassonnet
5 rue de la Comete
33770 Salles
Pour nous contacter par courriel : contact [arobase] garbaye [point] fr
# Hébergement
L'infrastructure physique est hébergée en France, au domicile des administrateurs systèmes de Garbaye, dans les communes de :
* Salles (Gironde)
* Bordeaux (Gironde)
# Limitations contractuelles sur les données techniques
Garbaye ne pourra être tenue responsable de dommages matériels liés à lutilisation de ses services numériques. De plus, lutilisateur des services numériques sengage à utiliser un matériel récent, ne contenant pas de virus et avec un navigateur de dernière génération mis-à-jour.
Garbaye fourni ses services à titre non professionnel, ce qui implique des risques élevés de pannes ou des dysfonctionnements pouvant s'étaler sur une longue durée. Un usage à titre strictement personnel est donc vivement conseillé. Garbaye ne pourra être tenu responsable en cas de dommages causés par un usage professionnel.

View file

@ -0,0 +1,136 @@
# membres.properties
# [File]
# Classe du fichier (valeur parmi {Federation, Organization, Service, Device}, obligatoire).
file.class = organization
# Version de l'ontologie utilisée utilisé (type STRING, recommandé, ex. ChatonsInfos-0.1).
file.protocol = ChatonsInfos-0.3
# Date et horaire de génération du fichier (type DATETIME, recommandé, ex. 2020-07-06T14:23:20).
file.datetime = 2022-02-05T22:12:25
# Nom du générateur du fichier (type STRING, recommandé, ex. Christian avec ses doigts).
file.generator = Mise à jour digitale
# [Organisation]
# Nom de l'organisation (type STRING, obligatoire, ex. Chapril).
organization.name = Garbaye
# Description de l'organisation (type STRING, recommandé, ex. Chapril est le chaton de l'April).
organization.description =
# Lien du site web de l'organisation (type URL, recommandé, ex. httsp://www.chapril.org/).
organization.website = https://garbaye.fr/
# Lien du logo de l'organisation (type URL, recommandé, ex. https://date.chapril.org/Chapril-banner/v1/chapril-logo-small.png).
organization.logo =
# Liens vers les comptes réseaux sociaux de l'organisation (type URL, optionnel).
# Liste non exhaustive à laquelle vous pouvez ajouter d'autres services.
organization.socialnetworks.diaspora =
organization.socialnetworks.facebook =
organization.socialnetworks.funkwhale =
organization.socialnetworks.mastodon =
organization.socialnetworks.mobilizon =
organization.socialnetworks.peertube =
organization.socialnetworks.pixelfeld =
organization.socialnetworks.twitter =
# Adresse vers les salons/équipes de discussion publics de l'organisation (type STRING, optionnel).
# Liste non exhaustive à laquelle vous pouvez ajouter d'autres services.
organization.chatrooms.xmpp =
organization.chatrooms.irc =
organization.chatrooms.matrix = #garbaye:garbaye.fr
organization.chatrooms.rocketchat =
organization.chatrooms.mattermost =
# Nom du propriétaire de l'organisation (type STRING, optionnel, ex. April).
organization.owner.name =
# Lien du site web du propriétaire de l'organisation (type URL, optionnel, ex. https://www.april.org/).
organization.owner.website =
# Lien du logo du propriétaire de l'organisation (type URL, optionnel, ex. https://www.april.org/sites/default/themes/zen_april/logo.png).
organization.owner.logo =
# Lien de la page web de contact de l'organisation (type URL, recommandé, ex. https://www.chapril.org/contact.html).
organization.contact.url = https://garbaye.fr/pages/contact.html
# Courriel de contact de l'organisation (type EMAIL, recommandé, ex. contact@chapril.org).
organization.contact.email = contact@garbaye.fr
# Lien de la page des mentions légales de l'organisation (type URL, recommandé, ex. https://www.chapril.org/cgu.html).
organization.legal.url = https://garbaye.fr/pages/legal.html
# Lien de la documentation technique de l'organisation (type URL, recommandé, ex. https://admin.chapril.org/).
organization.guide.technical = https://framagit.org/garbaye
# Lien de la documentation utilisateur de l'organisation (type URL, recommandé, ex. https://guides.chapril.org/).
organization.guide.user =
# Statut de l'organisation (un parmi {ACTIVE, IDLE, AWAY}, obligatoire).
organization.status.level = ACTIVE
# Description du statut de l'organisation (type STRING, optionnel, ex. en sommeil).
organization.status.description =
# Date de création de l'organisation (type DATE, recommandé, ex. 08/11/2018).
organization.startdate = 30/12/2020
# Date de fermeture de l'organisation (type DATE, optionnel).
organization.enddate =
# Date d'entrée dans le collectif (type DATE, obligatoire, ex. 08/11/2018).
organization.memberof.chatons.startdate = 21/06/2021
# Date de sortie du collectif (type DATE, optionnel, ex. 08/11/2019).
organization.memberof.chatons.enddate =
# Statut en tant que membre de l'organisation (un parmi {ACTIVE, IDLE, AWAY}, obligatoire).
organization.memberof.chatons.status.level = ACTIVE
# Description du statut en tant que membre de l'organisation (type STRING, optionnel, ex. en sommeil).
organization.memberof.chatons.status.description =
# Pays de l'organisation (type STRING, recommandé, ex. France).
organization.country.name = France
# Code pays de l'organisation (type COUNTRY_CODE sur 2 caractères, obligatoire, ex.ex. FR ou BE ou CH ou DE ou GB).
# Table ISO 3166-1 alpha-2 : https://fr.wikipedia.org/wiki/ISO_3166-1#Table_de_codage
organization.country.code = FR
# Géolocalisation de l'organisation
# Coordonnées GPS
# Latitude (type DECIMAL_DEGREE, recommandé, format DD, ex. 15,23456).
organization.geolocation.latitude =
# Longitude (type DECIMAL_DEGREE, recommandé, format DD, ex. -30,67890).
organization.geolocation.longitude =
# Adresse (type STRING, recommandé, ex. 1 rue croquette, 92370 Chaville).
organization.geolocation.address =
# Liens vers les services de paiement permettant de récolter des donations pour votre chaton (type URL, optionnel).
# Dans le cas d'une solution maison (exemple : pont vers votre banque), choisir "organization.funding.custom".
# Liste non exhaustive à laquelle vous pouvez ajouter d'autres services.
organization.funding.liberapay =
organization.funding.tipee =
organization.funding.helloasso =
organization.funding.paypal =
organization.funding.custom =
# [Subs]
# Un lien vers un fichier properties complémentaire (type URL, optionnel)
# Une clé (nomination libre) pour chacun de vos services,
# par exemple pour un service etherpad : subs.etherpad = https://www.monchaton.ext/.well-known/etherpad.properties
subs.framadate = https://garbaye.fr/.well-known/chatonsinfos/service-framadate.properties
subs.jitsi = https://garbaye.fr/.well-known/chatonsinfos/service-jitsi.properties
subs.matrix = https://garbaye.fr/.well-known/chatonsinfos/service-matrix.properties
subs.peerjs = https://garbaye.fr/.well-known/chatonsinfos/service-peerjs.properties
subs.privatebin = https://garbaye.fr/.well-known/chatonsinfos/service-privatebin.properties
subs.seafile = https://garbaye.fr/.well-known/chatonsinfos/service-seafile.properties
# [Metrics]

View file

@ -0,0 +1,158 @@
# service-framadate.properties
# [File]
# Classe du fichier (valeur parmi {Federation, Organization, Service, Device}, obligatoire).
file.class = service
# Version de l'ontologie utilisée utilisé (type STRING, recommandé).
file.protocol = ChatonsInfos-0.3
# Date et horaire de génération du fichier (type DATETIME, recommandé).
file.datetime = 2022-02-08T21:54:25
# Nom du générateur du fichier (type STRING, recommandé).
file.generator = Mise à jour manuelle
# [Service]
# Nom du service (type STRING, obligatoire).
service.name = Sondage
# Description du service (type STRING, recommandé).
service.description = Aide à la prise de RDV
# Lien du site web du service (type URL, obligatoire).
service.website = https://sondage.garbaye.fr
# Lien du logo du service (type URL, recommandé, ex. https://www.chapril.org/.well-known/statoolinfos/chapril-logo-mini.png.
service.logo =
# Lien de la page web des mentions légales du service (type URL, recommandé).
service.legal.url = https://garbaye.fr/pages/legal.html
# Lien de la documentation technique du service (type URL, recommandé).
service.guide.technical = https://framagit.org/garbaye/services-garbaye
# Lien de la documentation utilisateur du service (type URL, recommandé).
service.guide.user =
# Lien de la page de support du service (type URL, recommandé).
service.contact.url = https://garbaye.fr/pages/contact.html
# Courriel du support du service (type EMAIL, recommandé).
service.contact.email = contact@garbaye.fr
# Date d'ouverture du service (type DATE, obligatoire).
service.startdate = 09/04/2021
# Date de fermeture du service (type DATE, optionnel).
service.enddate =
# Statut du service (un parmi {OK, WARNING, ALERT, ERROR, OVER, VOID}, obligatoire).
# OK : tout va bien (service en fonctionnement nominal).
# WARNING : attention (service potentiellement incomplet, maintenance prévue…).
# ALERT : alerte (le service connait des dysfonctionnements, le service va bientôt fermer…).
# ERROR : problème majeur (service en panne).
# OVER : terminé (le service n'existe plus).
# VOID : indéterminé (service non ouvert officiellement, configuration ChatonsInfos en cours…).
service.status.level = OK
# Description du statut du service (type STRING, optionnel, exemple : mise à jour en cours)
service.status.description =
# Inscriptions requises pour utiliser le service (un ou plusieurs parmi {None, Free, Member, Client}, obligatoire, ex. Free,Member).
# None : le service s'utilise sans inscription.
# Free : inscription nécessaire mais ouverte à tout le monde et gratuite.
# Member : inscription restreinte aux membres (la notion de membre pouvant être très relative, par exemple, une famille, un cercle damis, adhérents d'association…).
# Client : inscription liée à une relation commerciale (facture…).
service.registration = None
# Capacité à accueillir de nouveaux utilisateurs (un parmi {OPEN, FULL}, obligatoire).
# OPEN : le service accueille de nouveaux comptes.
# FULL : le service n'accueille plus de nouveau compte pour l'instant.
service.registration.load = OPEN
# Type d'installation du service, une valeur parmi {DISTRIBUTION, PROVIDER, PACKAGE, TOOLING, CLONEREPO, ARCHIVE, SOURCES, CONTAINER}, obligatoire.
# DISTRIBUTION : installation via le gestionnaire d'une distribution (apt, yum, etc.).
# PROVIDER : installation via le gestionnaire d'une distribution configuré avec une source externe (ex. /etc/apt/source.list.d/foo.list).
# PACKAGE : installation manuelle d'un paquet compatible distribution (ex. dpkg -i foo.deb).
# TOOLING : installation via un gestionnaire de paquets spécifique, différent de celui de la distribution (ex. pip…).
# CLONEREPO : clone manuel d'un dépôt (git clone…).
# ARCHIVE : application récupérée dans un tgz ou un zip ou un bzip2…
# SOURCES : compilation manuelle à partir des sources de l'application.
# CONTAINER : installation par containeur (Docker, Snap, Flatpak, etc.).
# L'installation d'un service via un paquet Snap avec apt sous Ubuntu doit être renseigné CONTAINER.
# L'installation d'une application ArchLinux doit être renseignée DISTRIBUTION.
# L'installation d'une application Yunohost doit être renseignée DISTRIBUTION.
service.install.type = CLONEREPO
# [Software]
# Nom du logiciel (type STRING, obligatoire).
software.name = Framadate
# Lien du site web du logiciel (type URL, recommandé).
software.website = https://framadate.org/abc/fr/
# Lien web vers la licence du logiciel (type URL, obligatoire).
software.license.url = https://framagit.org/framasoft/framadate/framadate/-/blob/develop/LICENCE.fr.txt
# Nom de la licence du logiciel (type STRING, obligatoire).
software.license.name = CeCILL-B
# Version du logiciel (type STRING, recommandé).
software.version = 1.1.19
# Lien web vers les sources du logiciel (type URL, recommandé).
software.source.url = https://framagit.org/framasoft/framadate
# Liste de modules optionnels installés (type VALUES, optionnel, ex. Nextcloud-Calendar,Nextcloud-Talk).
software.modules =
# [Host]
# Nom de l'hébergeur de la machine qui fait tourner le service, dans le cas d'un auto-hébergement c'est vous ! (type STRING, obligatoire).
host.name = Garbaye
# Description de l'hébergeur (type STRING, optionnel).
host.description = auto-hébergé
# Nom générique de la distribution installée sur le serveur (type STRING, obligatoire, ex. YunoHost).
host.server.distribution = RockyLinux
# Type de serveur (un parmi {NANO, PHYSICAL, VIRTUAL, SHARED, CLOUD}, obligatoire, ex. PHYSICAL).
# NANO : nano-ordinateur (Raspberry Pi, Olimex…)
# PHYSICAL : machine physique
# VIRTUAL : machine virtuelle
# SHARED : hébergement mutualisé
# CLOUD : infrastructure multi-serveurs
host.server.type = PHYSICAL
# Type d'hébergement (un parmi {HOME, HOSTEDBAY, HOSTEDSERVER, OUTSOURCED}, obligatoire, ex. HOSTEDSERVER).
# HOME : hébergement à domicile
# HOSTEDBAY : serveur personnel hébergé dans une baie d'un fournisseur
# HOSTEDSERVER : serveur d'un fournisseur
# OUTSOURCED : infrastructure totalement sous-traitée
host.provider.type = HOME
# Si vous avez du mal à remplir les champs précédents, ce tableau pourra vous aider :
# NANO PHYSICAL VIRTUAL SHARED CLOUD
# HOME pm pm vm shared cloud
# HOSTEDBAY -- pm vm shared cloud
# HOSTEDSERVER -- pm vm shared cloud
# OUTSOURCED -- -- vps shared cloud
# Légendes : pm : physical machine ; vm : virtual machine ; vps : virtual private server.
# Pays de l'hébergeur (type STRING, recommandé).
host.country.name = France
# Code pays de l'hébergeur (type COUNTRY_CODE sur 2 caractères, obligatoire, ex. FR ou BE ou CH ou DE ou GB).
# Table ISO 3166-1 alpha-2 : https://fr.wikipedia.org/wiki/ISO_3166-1#Table_de_codage
host.country.code = FR
# [Subs]
# Un lien vers un fichier properties complémentaire (type URL, optionnel).
subs.foo =

View file

@ -0,0 +1,157 @@
# service.properties
# [File]
# Classe du fichier (valeur parmi {Federation, Organization, Service, Device}, obligatoire).
file.class = service
# Version de l'ontologie utilisée utilisé (type STRING, recommandé).
file.protocol = ChatonsInfos-0.3
# Date et horaire de génération du fichier (type DATETIME, recommandé).
file.datetime = 2022-02-06T21:17:25
# Nom du générateur du fichier (type STRING, recommandé).
file.generator = Mise à jour manuelle
# [Service]
# Nom du service (type STRING, obligatoire).
service.name = Jitsi Meet
# Description du service (type STRING, recommandé).
service.description = Visioconcérence
# Lien du site web du service (type URL, obligatoire).
service.website = https://jitsi.garbaye.fr
# Lien du logo du service (type URL, recommandé, ex. https://www.chapril.org/.well-known/statoolinfos/chapril-logo-mini.png.
service.logo = https://jitsi.garbaye.fr/images/jitsiLogo_square.png
# Lien de la page web des mentions légales du service (type URL, recommandé).
service.legal.url = https://garbaye.fr/pages/legal.html
# Lien de la documentation web du service (type URL, recommandé).
service.guide.technical = https://framagit.org/garbaye/services-garbaye
# Lien des aides web pour le service (type URL, recommandé).
service.guide.user =
# Lien de la page de support du service (type URL, recommandé).
service.contact.url = https://garbaye.fr/pages/contact.html
# Courriel du support du service (type EMAIL, recommandé).
service.contact.email = contact@garbaye.fr
# Date d'ouverture du service (type DATE, obligatoire).
service.startdate = 23/05/2021
# Date de fermture du service (type DATE, optionnel).
service.enddate =
# Statut du service (un parmi {OK, WARNING, ALERT, ERROR, OVER, VOID}, obligatoire).
# OK : tout va bien (service en fonctionnement nominal).
# WARNING : attention (service potentiellement incomplet, maintenance prévue…).
# ALERT : alerte (le service connait des dysfonctionnements, le service va bientôt fermer…).
# ERROR : problème majeur (service en panne).
# OVER : terminé (le service n'existe plus).
# VOID : indéterminé (service non ouvert officiellement, configuration ChatonsInfos en cours…).
service.status.level = OK
# Description du statut du service (type STRING, optionnel, exemple : mise à jour en cours)
service.status.description =
# Inscriptions requises pour utiliser le service (un ou plusieurs parmi {None, Free, Member, Client}, obligatoire, ex. Free,Member).
# None : le service s'utilise sans inscription.
# Free : inscription nécessaire mais ouverte à tout le monde et gratuite.
# Member : inscription restreinte aux membres (la notion de membre pouvant être très relative, par exemple, une famille, un cercle damis, adhérents d'association…).
# Client : inscription liée à une relation commerciale (facture…).
service.registration = None
# Capacité à accueillir de nouveaux utilisateurs (un parmi {OPEN, FULL}, obligatoire).
# OPEN : le service accueille de nouveaux comptes.
# FULL : le service n'accueille plus de nouveau compte pour l'instant.
service.registration.load = OPEN
# Type d'installation du service, une valeur parmi {DISTRIBUTION, PROVIDER, PACKAGE, TOOLING, CLONEREPO, ARCHIVE, SOURCES, CONTAINER}, obligatoire.
# DISTRIBUTION : installation via le gestionnaire d'une distribution (apt, yum, etc.).
# PROVIDER : installation via le gestionnaire d'une distribution configuré avec une source externe (ex. /etc/apt/source.list.d/foo.list).
# PACKAGE : installation manuelle d'un paquet compatible distribution (ex. dpkg -i foo.deb).
# TOOLING : installation via un gestionnaire de paquets spécifique, différent de celui de la distribution (ex. pip…).
# CLONEREPO : clone manuel d'un dépôt (git clone…).
# ARCHIVE : application récupérée dans un tgz ou un zip ou un bzip2…
# SOURCES : compilation manuelle à partir des sources de l'application.
# CONTAINER : installation par containeur (Docker, Snap, Flatpak, etc.).
# L'installation d'un service via un paquet Snap avec apt sous Ubuntu doit être renseigné CONTAINER.
# L'installation d'une application ArchLinux doit être renseignée DISTRIBUTION.
# L'installation d'une application Yunohost doit être renseignée DISTRIBUTION.
service.install.type = PROVIDER
# [Software]
# Nom du logiciel (type STRING, obligatoire).
software.name = Jitsi Meet
# Lien du site web du logiciel (type URL, recommandé).
software.website = https://jitsi.org/jitsi-meet/
# Lien web vers la licence du logiciel (type URL, obligatoire).
software.license.url = https://github.com/jitsi/jitsi-meet/blob/master/LICENSE
# Nom de la licence du logiciel (type STRING, obligatoire).
software.license.name = Apache License 2.0
# Version du logiciel (type STRING, recommandé).
software.version = 7210-2
# Lien web vers les sources du logiciel (type URL, recommandé).
software.source.url = https://github.com/jitsi/jitsi-meet
# Liste de modules optionnels installés (type VALUES, optionnel, ex. Nextcloud-Calendar,Nextcloud-Talk).
software.modules =
# [Host]
# Nom de l'hébergeur de la machine qui fait tourner le service, dans le cas d'un auto-hébergement c'est vous ! (type STRING, obligatoire).
host.name = Garbaye
# Description de l'hébergeur (type STRING, optionnel).
host.description = auto-hébergé
# Nom générique de la distribution installée sur le serveur (type STRING, obligatoire, ex. YunoHost).
host.server.distribution = RockyLinux
# Type de serveur (un parmi {NANO, PHYSICAL, VIRTUAL, SHARED, CLOUD}, obligatoire, ex. PHYSICAL).
# NANO : nano-ordinateur (Raspberry Pi, Olimex…)
# PHYSICAL : machine physique
# VIRTUAL : machine virtuelle
# SHARED : hébergement mutualisé
# CLOUD : infrastructure multi-serveurs
host.server.type = PHYSICAL
# Type d'hébergement (un parmi {HOME, HOSTEDBAY, HOSTEDSERVER, OUTSOURCED}, obligatoire, ex. HOSTEDSERVER).
# HOME : hébergement à domicile
# HOSTEDBAY : serveur personnel hébergé dans une baie d'un fournisseur
# HOSTEDSERVER : serveur d'un fournisseur
# OUTSOURCED : infrastructure totalement sous-traitée
host.provider.type = HOME
# Si vous avez du mal à remplir les champs précédents, ce tableau pourra vous aider :
# NANO PHYSICAL VIRTUAL SHARED CLOUD
# HOME pm pm vm shared cloud
# HOSTEDBAY -- pm vm shared cloud
# HOSTEDSERVER -- pm vm shared cloud
# OUTSOURCED -- -- vps shared cloud
# Légendes : pm : physical machine ; vm : virtual machine ; vps : virtual private server.
# Pays de l'hébergeur (type STRING, recommandé).
host.country.name = France
# Code pays de l'hébergeur (type COUNTRY_CODE sur 2 caractères, obligatoire, ex. FR ou BE ou CH ou DE ou GB).
# Table ISO 3166-1 alpha-2 : https://fr.wikipedia.org/wiki/ISO_3166-1#Table_de_codage
host.country.code = FR
# [Subs]
# Un lien vers un fichier properties complémentaire (type URL, optionnel).
subs.foo =

View file

@ -0,0 +1,158 @@
# service.properties
# [File]
# Classe du fichier (valeur parmi {Federation, Organization, Service, Device}, obligatoire).
file.class = service
# Version de l'ontologie utilisée utilisé (type STRING, recommandé).
file.protocol = ChatonsInfos-0.3
# Date et horaire de génération du fichier (type DATETIME, recommandé).
file.datetime = 2022-02-08T22:01:25
# Nom du générateur du fichier (type STRING, recommandé).
file.generator = Mise à jour manuelle
# [Service]
# Nom du service (type STRING, obligatoire).
service.name = Matrix
# Description du service (type STRING, recommandé).
service.description = Messagerie instantanée
# Lien du site web du service (type URL, obligatoire).
service.website = https://matrix.garbaye.fr
# Lien du logo du service (type URL, recommandé, ex. https://www.chapril.org/.well-known/statoolinfos/chapril-logo-mini.png).
service.logo = https://www.fdn.fr/wp-content/uploads/matrix-300x300.jpg
# Lien de la page web des mentions légales du service (type URL, recommandé).
service.legal.url = https://garbaye.fr/pages/legal.html
# Lien de la documentation web du service (type URL, recommandé).
service.guide.technical = https://framagit.org/garbaye/services-garbaye
# Lien des aides web pour le service (type URL, recommandé).
service.guide.user =
# Lien de la page de support du service (type URL, recommandé).
service.contact.url = https://garbaye.fr/pages/contact.html
# Courriel du support du service (type EMAIL, recommandé).
service.contact.email = contact@garbaye.fr
# Date d'ouverture du service (type DATE, obligatoire).
service.startdate = 14/07/2021
# Date de fermeture du service (type DATE, optionnel).
service.enddate =
# Statut du service (un parmi {OK, WARNING, ALERT, ERROR, OVER, VOID}, obligatoire).
# OK : tout va bien (service en fonctionnement nominal).
# WARNING : attention (service potentiellement incomplet, maintenance prévue, etc.).
# ALERT : alerte (le service connait des dysfonctionnements, le service va bientôt fermer, etc.).
# ERROR : problème majeur (service en panne).
# OVER : terminé (le service n'existe plus).
# VOID : indéterminé (service non ouvert officiellement, configuration ChatonsInfos en cours, etc.).
service.status.level = OK
# Description du statut du service (type STRING, optionnel, ex. mise à jour en cours)
service.status.description =
# Inscriptions requises pour utiliser le service (un ou plusieurs parmi {None, Free, Member, Client}, obligatoire, ex. Free,Member).
# None : le service s'utilise sans inscription.
# Free : inscription nécessaire mais ouverte à tout le monde et gratuite.
# Member : inscription restreinte aux membres (la notion de membre pouvant être très relative, par exemple, une famille, un cercle damis, adhérents d'association…).
# Client : inscription liée à une relation commerciale (facture…).
service.registration = Member
# Capacité à accueillir de nouveaux utilisateurs (un parmi {OPEN, FULL}, obligatoire).
# OPEN : le service accueille de nouveaux comptes.
# FULL : le service n'accueille plus de nouveau compte pour l'instant.
service.registration.load = OPEN
# Type d'installation du service, une valeur parmi {DISTRIBUTION, PROVIDER, PACKAGE, TOOLING, CLONEREPO, ARCHIVE, SOURCES, CONTAINER}, obligatoire.
# DISTRIBUTION : installation via le gestionnaire d'une distribution (apt, yum, etc.).
# PROVIDER : installation via le gestionnaire d'une distribution configuré avec une source externe (ex. /etc/apt/source.list.d/foo.list).
# PACKAGE : installation manuelle d'un paquet compatible distribution (ex. dpkg -i foo.deb).
# TOOLING : installation via un gestionnaire de paquets spécifique, différent de celui de la distribution (ex. pip…).
# CLONEREPO : clone manuel d'un dépôt (git clone…).
# ARCHIVE : application récupérée dans un tgz ou un zip ou un bzip2…
# SOURCES : compilation manuelle à partir des sources de l'application.
# CONTAINER : installation par containeur (Docker, Snap, Flatpak, etc.).
# L'installation d'un service via un paquet Snap avec apt sous Ubuntu doit être renseigné CONTAINER.
# L'installation d'une application ArchLinux doit être renseignée DISTRIBUTION.
# L'installation d'une application Yunohost doit être renseignée DISTRIBUTION.
service.install.type = CLONEREPO
# [Software]
# Nom du logiciel (type STRING, obligatoire).
software.name = Synapse
# Lien du site web du logiciel (type URL, recommandé).
software.website = https://matrix.org/docs/projects/server/synapse
# Lien web vers la licence du logiciel (type URL, obligatoire).
software.license.url = https://github.com/matrix-org/synapse/blob/develop/LICENSE
# Nom de la licence du logiciel (type STRING, obligatoire).
software.license.name = Apache License Version 2.0
# Version du logiciel (type STRING, recommandé).
software.version = 1.59.1
# Lien web vers les sources du logiciel (type URL, recommandé).
software.source.url = https://github.com/matrix-org/synapse/
# Liste de modules optionnels installés (type VALUES, optionnel, ex. Nextcloud-Calendar,Nextcloud-Talk).
software.modules =
# [Host]
# Nom de l'hébergeur de la machine qui fait tourner le service, dans le cas d'un auto-hébergement c'est vous ! (type STRING, obligatoire).
host.name = Garbaye
# Description de l'hébergeur (type STRING, optionnel).
host.description = auto-hébergé
# Nom générique de la distribution installée sur le serveur (type STRING, obligatoire, ex. YunoHost).
host.server.distribution = RockyLinux
# Type de serveur (un parmi {NANO, PHYSICAL, VIRTUAL, SHARED, CLOUD}, obligatoire, ex. PHYSICAL).
# NANO : nano-ordinateur (Raspberry Pi, Olimex…)
# PHYSICAL : machine physique
# VIRTUAL : machine virtuelle
# SHARED : hébergement mutualisé
# CLOUD : infrastructure multi-serveurs
host.server.type = PHYSICAL
# Type d'hébergement (un parmi {HOME, HOSTEDBAY, HOSTEDSERVER, OUTSOURCED}, obligatoire, ex. HOSTEDSERVER).
# HOME : hébergement à domicile
# HOSTEDBAY : serveur personnel hébergé dans une baie d'un fournisseur
# HOSTEDSERVER : serveur d'un fournisseur
# OUTSOURCED : infrastructure totalement sous-traitée
host.provider.type = HOME
# Si vous avez du mal à remplir les champs précédents, ce tableau pourra vous aider :
# NANO PHYSICAL VIRTUAL SHARED CLOUD
# HOME pm pm vm shared cloud
# HOSTEDBAY -- pm vm shared cloud
# HOSTEDSERVER -- pm vm shared cloud
# OUTSOURCED -- -- vps shared cloud
# Légendes : pm : physical machine ; vm : virtual machine ; vps : virtual private server.
# Pays de l'hébergeur (type STRING, recommandé).
host.country.name = France
# Code pays de l'hébergeur (type COUNTRY_CODE sur 2 caractères, obligatoire, ex. FR ou BE ou CH ou DE ou GB).
# Table ISO 3166-1 alpha-2 : https://fr.wikipedia.org/wiki/ISO_3166-1#Table_de_codage
host.country.code = FR
# [Subs]
# Un lien vers un fichier properties complémentaire (type URL, optionnel).
# Une clé (nomination libre) pour chacun de vos métriques spécifiques,
# par exemple pour un service etherpad : subs.metrics-etherpad = https://www.monchaton.ext/.well-known/metrics-etherpad.properties
subs.foo =

View file

@ -0,0 +1,160 @@
# service.properties
#WARNING : cette fiche service ne concerne que les services logiciels
# [File]
# Classe du fichier (valeur parmi {Federation, Organization, Service, Device}, obligatoire).
file.class = service
# Version de l'ontologie utilisée utilisé (type STRING, recommandé).
file.protocol = ChatonsInfos-0.3
# Date et horaire de génération du fichier (type DATETIME, recommandé).
file.datetime = 2022-02-09T22:07:25
# Nom du générateur du fichier (type STRING, recommandé).
file.generator = Mise à jour manuelle
# [Service]
# Nom du service (type STRING, obligatoire).
service.name = PeerJS
# Description du service (type STRING, recommandé).
service.description = Serveur PeerJS pour WebRTC
# Lien du site web du service (type URL, obligatoire).
service.website = https://peerjs.garbaye.fr/myapp
# Lien du logo du service (type URL, recommandé, ex. https://www.chapril.org/.well-known/statoolinfos/chapril-logo-mini.png).
service.logo = https://peerjs.com/logo.cd315309.png
# Lien de la page web des mentions légales du service (type URL, recommandé).
service.legal.url = https://garbaye.fr/pages/legal.html
# Lien de la documentation web du service (type URL, recommandé).
service.guide.technical = https://framagit.org/garbaye/services-garbaye
# Lien des aides web pour le service (type URL, recommandé).
service.guide.user =
# Lien de la page de support du service (type URL, recommandé).
service.contact.url = https://garbaye.fr/pages/contact.html
# Courriel du support du service (type EMAIL, recommandé).
service.contact.email = contact@garbaye.fr
# Date d'ouverture du service (type DATE, obligatoire).
service.startdate = 04/01/2021
# Date de fermeture du service (type DATE, optionnel).
service.enddate =
# Statut du service (un parmi {OK, WARNING, ALERT, ERROR, OVER, VOID}, obligatoire).
# OK : tout va bien (service en fonctionnement nominal).
# WARNING : attention (service potentiellement incomplet, maintenance prévue, etc.).
# ALERT : alerte (le service connait des dysfonctionnements, le service va bientôt fermer, etc.).
# ERROR : problème majeur (service en panne).
# OVER : terminé (le service n'existe plus).
# VOID : indéterminé (service non ouvert officiellement, configuration ChatonsInfos en cours, etc.).
service.status.level = OK
# Description du statut du service (type STRING, optionnel, ex. mise à jour en cours)
service.status.description =
# Inscriptions requises pour utiliser le service (un ou plusieurs parmi {None, Free, Member, Client}, obligatoire, ex. Free,Member).
# None : le service s'utilise sans inscription.
# Free : inscription nécessaire mais ouverte à tout le monde et gratuite.
# Member : inscription restreinte aux membres (la notion de membre pouvant être très relative, par exemple, une famille, un cercle damis, adhérents d'association…).
# Client : inscription liée à une relation commerciale (facture…).
service.registration = None
# Capacité à accueillir de nouveaux utilisateurs (un parmi {OPEN, FULL}, obligatoire).
# OPEN : le service accueille de nouveaux comptes.
# FULL : le service n'accueille plus de nouveau compte pour l'instant.
service.registration.load = OPEN
# Type d'installation du service, une valeur parmi {DISTRIBUTION, PROVIDER, PACKAGE, TOOLING, CLONEREPO, ARCHIVE, SOURCES, CONTAINER}, obligatoire.
# DISTRIBUTION : installation via le gestionnaire d'une distribution (apt, yum, etc.).
# PROVIDER : installation via le gestionnaire d'une distribution configuré avec une source externe (ex. /etc/apt/source.list.d/foo.list).
# PACKAGE : installation manuelle d'un paquet compatible distribution (ex. dpkg -i foo.deb).
# TOOLING : installation via un gestionnaire de paquets spécifique, différent de celui de la distribution (ex. pip…).
# CLONEREPO : clone manuel d'un dépôt (git clone…).
# ARCHIVE : application récupérée dans un tgz ou un zip ou un bzip2…
# SOURCES : compilation manuelle à partir des sources de l'application.
# CONTAINER : installation par containeur (Docker, Snap, Flatpak, etc.).
# L'installation d'un service via un paquet Snap avec apt sous Ubuntu doit être renseigné CONTAINER.
# L'installation d'une application ArchLinux doit être renseignée DISTRIBUTION.
# L'installation d'une application Yunohost doit être renseignée DISTRIBUTION.
service.install.type = CLONEREPO
# [Software]
# Nom du logiciel (type STRING, obligatoire).
software.name = PeerServer
# Lien du site web du logiciel (type URL, recommandé).
software.website = https://peerjs.com/
# Lien web vers la licence du logiciel (type URL, obligatoire).
software.license.url = https://github.com/peers/peerjs-server/blob/master/LICENSE
# Nom de la licence du logiciel (type STRING, obligatoire).
software.license.name = MIT License
# Version du logiciel (type STRING, recommandé).
software.version = 0.6.1
# Lien web vers les sources du logiciel (type URL, recommandé).
software.source.url = https://github.com/peers/peerjs-server
# Liste de modules optionnels installés (type VALUES, optionnel, ex. Nextcloud-Calendar,Nextcloud-Talk).
software.modules =
# [Host]
# Nom de l'hébergeur de la machine qui fait tourner le service, dans le cas d'un auto-hébergement c'est vous ! (type STRING, obligatoire).
host.name = Garbaye
# Description de l'hébergeur (type STRING, optionnel).
host.description = auto-hébergé
# Nom générique de la distribution installée sur le serveur (type STRING, obligatoire, ex. YunoHost).
host.server.distribution = RockyLinux
# Type de serveur (un parmi {NANO, PHYSICAL, VIRTUAL, SHARED, CLOUD}, obligatoire, ex. PHYSICAL).
# NANO : nano-ordinateur (Raspberry Pi, Olimex…)
# PHYSICAL : machine physique
# VIRTUAL : machine virtuelle
# SHARED : hébergement mutualisé
# CLOUD : infrastructure multi-serveurs
host.server.type = PHYSICAL
# Type d'hébergement (un parmi {HOME, HOSTEDBAY, HOSTEDSERVER, OUTSOURCED}, obligatoire, ex. HOSTEDSERVER).
# HOME : hébergement à domicile
# HOSTEDBAY : serveur personnel hébergé dans une baie d'un fournisseur
# HOSTEDSERVER : serveur d'un fournisseur
# OUTSOURCED : infrastructure totalement sous-traitée
host.provider.type = HOME
# Si vous avez du mal à remplir les champs précédents, ce tableau pourra vous aider :
# NANO PHYSICAL VIRTUAL SHARED CLOUD
# HOME pm pm vm shared cloud
# HOSTEDBAY -- pm vm shared cloud
# HOSTEDSERVER -- pm vm shared cloud
# OUTSOURCED -- -- vps shared cloud
# Légendes : pm : physical machine ; vm : virtual machine ; vps : virtual private server.
# Pays de l'hébergeur (type STRING, recommandé).
host.country.name = France
# Code pays de l'hébergeur (type COUNTRY_CODE sur 2 caractères, obligatoire, ex. FR ou BE ou CH ou DE ou GB).
# Table ISO 3166-1 alpha-2 : https://fr.wikipedia.org/wiki/ISO_3166-1#Table_de_codage
host.country.code = FR
# [Subs]
# Un lien vers un fichier properties complémentaire (type URL, optionnel).
# Une clé (nomination libre) pour chacun de vos métriques spécifiques,
# par exemple pour un service etherpad : subs.metrics-etherpad = https://www.monchaton.ext/.well-known/metrics-etherpad.properties
subs.foo =

View file

@ -0,0 +1,157 @@
# service-privatebin.properties
# [File]
# Classe du fichier (valeur parmi {Federation, Organization, Service, Device}, obligatoire).
file.class = service
# Version de l'ontologie utilisée utilisé (type STRING, recommandé).
file.protocol = ChatonsInfos-0.3
# Date et horaire de génération du fichier (type DATETIME, recommandé).
file.datetime = 2022-02-08T21:48:25
# Nom du générateur du fichier (type STRING, recommandé).
file.generator = Mise à jour manuelle
# [Service]
# Nom du service (type STRING, obligatoire).
service.name = PrivateBin
# Description du service (type STRING, recommandé).
service.description = Partage de notes sécurisées
# Lien du site web du service (type URL, obligatoire).
service.website = https://bin.garbaye.fr
# Lien du logo du service (type URL, recommandé, ex. https://www.chapril.org/.well-known/statoolinfos/chapril-logo-mini.png.
service.logo = https://bin.garbaye.fr/img/icon.svg
# Lien de la page web des mentions légales du service (type URL, recommandé).
service.legal.url = https://garbaye.fr/pages/legal.html
# Lien de la documentation technique du service (type URL, recommandé).
service.guide.technical = https://framagit.org/garbaye/services-garbaye
# Lien de la documentation utilisateur du service (type URL, recommandé).
service.guide.user =
# Lien de la page de support du service (type URL, recommandé).
service.contact.url = https://garbaye.fr/pages/contact.html
# Courriel du support du service (type EMAIL, recommandé).
service.contact.email = contact@garbaye.fr
# Date d'ouverture du service (type DATE, obligatoire).
service.startdate = 14/04/2021
# Date de fermture du service (type DATE, optionnel).
service.enddate =
# Statut du service (un parmi {OK, WARNING, ALERT, ERROR, OVER, VOID}, obligatoire).
# OK : tout va bien (service en fonctionnement nominal).
# WARNING : attention (service potentiellement incomplet, maintenance prévue…).
# ALERT : alerte (le service connait des dysfonctionnements, le service va bientôt fermer…).
# ERROR : problème majeur (service en panne).
# OVER : terminé (le service n'existe plus).
# VOID : indéterminé (service non ouvert officiellement, configuration ChatonsInfos en cours…).
service.status.level = OK
# Description du statut du service (type STRING, optionnel, exemple : mise à jour en cours)
service.status.description =
# Inscriptions requises pour utiliser le service (un ou plusieurs parmi {None, Free, Member, Client}, obligatoire, ex. Free,Member).
# None : le service s'utilise sans inscription.
# Free : inscription nécessaire mais ouverte à tout le monde et gratuite.
# Member : inscription restreinte aux membres (la notion de membre pouvant être très relative, par exemple, une famille, un cercle damis, adhérents d'association…).
# Client : inscription liée à une relation commerciale (facture…).
service.registration = None
# Capacité à accueillir de nouveaux utilisateurs (un parmi {OPEN, FULL}, obligatoire).
# OPEN : le service accueille de nouveaux comptes.
# FULL : le service n'accueille plus de nouveau compte pour l'instant.
service.registration.load = OPEN
# Type d'installation du service, une valeur parmi {DISTRIBUTION, PROVIDER, PACKAGE, TOOLING, CLONEREPO, ARCHIVE, SOURCES, CONTAINER}, obligatoire.
# DISTRIBUTION : installation via le gestionnaire d'une distribution (apt, yum, etc.).
# PROVIDER : installation via le gestionnaire d'une distribution configuré avec une source externe (ex. /etc/apt/source.list.d/foo.list).
# PACKAGE : installation manuelle d'un paquet compatible distribution (ex. dpkg -i foo.deb).
# TOOLING : installation via un gestionnaire de paquets spécifique, différent de celui de la distribution (ex. pip…).
# CLONEREPO : clone manuel d'un dépôt (git clone…).
# ARCHIVE : application récupérée dans un tgz ou un zip ou un bzip2…
# SOURCES : compilation manuelle à partir des sources de l'application.
# CONTAINER : installation par containeur (Docker, Snap, Flatpak, etc.).
# L'installation d'un service via un paquet Snap avec apt sous Ubuntu doit être renseigné CONTAINER.
# L'installation d'une application ArchLinux doit être renseignée DISTRIBUTION.
# L'installation d'une application Yunohost doit être renseignée DISTRIBUTION.
service.install.type = ARCHIVE
# [Software]
# Nom du logiciel (type STRING, obligatoire).
software.name = PrivateBin
# Lien du site web du logiciel (type URL, recommandé).
software.website = https://privatebin.info/
# Lien web vers la licence du logiciel (type URL, obligatoire).
software.license.url = https://github.com/PrivateBin/PrivateBin/blob/master/LICENSE.md
# Nom de la licence du logiciel (type STRING, obligatoire).
software.license.name = GNU General Public License v2.0
# Version du logiciel (type STRING, recommandé).
software.version = 1.4.0
# Lien web vers les sources du logiciel (type URL, recommandé).
software.source.url = https://github.com/PrivateBin/PrivateBin
# Liste de modules optionnels installés (type VALUES, optionnel, ex. Nextcloud-Calendar,Nextcloud-Talk).
software.modules =
# [Host]
# Nom de l'hébergeur de la machine qui fait tourner le service, dans le cas d'un auto-hébergement c'est vous ! (type STRING, obligatoire).
host.name = Garbaye
# Description de l'hébergeur (type STRING, optionnel).
host.description = auto-hébergé
# Nom générique de la distribution installée sur le serveur (type STRING, obligatoire, ex. YunoHost).
host.server.distribution = RockyLinux
# Type de serveur (un parmi {NANO, PHYSICAL, VIRTUAL, SHARED, CLOUD}, obligatoire, ex. PHYSICAL).
# NANO : nano-ordinateur (Raspberry Pi, Olimex…)
# PHYSICAL : machine physique
# VIRTUAL : machine virtuelle
# SHARED : hébergement mutualisé
# CLOUD : infrastructure multi-serveurs
host.server.type = PHYSICAL
# Type d'hébergement (un parmi {HOME, HOSTEDBAY, HOSTEDSERVER, OUTSOURCED}, obligatoire, ex. HOSTEDSERVER).
# HOME : hébergement à domicile
# HOSTEDBAY : serveur personnel hébergé dans une baie d'un fournisseur
# HOSTEDSERVER : serveur d'un fournisseur
# OUTSOURCED : infrastructure totalement sous-traitée
host.provider.type = HOME
# Si vous avez du mal à remplir les champs précédents, ce tableau pourra vous aider :
# NANO PHYSICAL VIRTUAL SHARED CLOUD
# HOME pm pm vm shared cloud
# HOSTEDBAY -- pm vm shared cloud
# HOSTEDSERVER -- pm vm shared cloud
# OUTSOURCED -- -- vps shared cloud
# Légendes : pm : physical machine ; vm : virtual machine ; vps : virtual private server.
# Pays de l'hébergeur (type STRING, recommandé).
host.country.name = France
# Code pays de l'hébergeur (type COUNTRY_CODE sur 2 caractères, obligatoire, ex. FR ou BE ou CH ou DE ou GB).
# Table ISO 3166-1 alpha-2 : https://fr.wikipedia.org/wiki/ISO_3166-1#Table_de_codage
host.country.code = FR
# [Subs]
# Un lien vers un fichier properties complémentaire (type URL, optionnel).
subs.foo =

View file

@ -0,0 +1,157 @@
# service-nextcloud.properties
# [File]
# Classe du fichier (valeur parmi {Federation, Organization, Service, Device}, obligatoire).
file.class = service
# Version de l'ontologie utilisée utilisé (type STRING, recommandé).
file.protocol = ChatonsInfos-0.3
# Date et horaire de génération du fichier (type DATETIME, recommandé).
file.datetime = 2022-02-07T23:03:25
# Nom du générateur du fichier (type STRING, recommandé).
file.generator = Mise à jour manuelle
# [Service]
# Nom du service (type STRING, obligatoire).
service.name = Seafile
# Description du service (type STRING, recommandé).
service.description = Stockage de documents
# Lien du site web du service (type URL, obligatoire).
service.website = https://seafile.garbaye.fr
# Lien du logo du service (type URL, recommandé, ex. https://www.chapril.org/.well-known/statoolinfos/chapril-logo-mini.png.
service.logo = https://manual.seafile.com/media/seafile-transparent-1024.png
# Lien de la page web des mentions légales du service (type URL, recommandé).
service.legal.url = https://garbaye.fr/pages/legal.html
# Lien de la documentation technique du service (type URL, recommandé).
service.guide.technical = https://framagit.org/garbaye/services-garbaye
# Lien de la documentation utilisateur du service (type URL, recommandé).
service.guide.user =
# Lien de la page de support du service (type URL, recommandé).
service.contact.url = https://garbaye.fr/pages/contact.html
# Courriel du support du service (type EMAIL, recommandé).
service.contact.email = contact@garbaye.fr
# Date d'ouverture du service (type DATE, obligatoire).
service.startdate = 17/01/2021
# Date de fermeture du service (type DATE, optionnel).
service.enddate =
# Statut du service (un parmi {OK, WARNING, ALERT, ERROR, OVER, VOID}, obligatoire).
# OK : tout va bien (service en fonctionnement nominal).
# WARNING : attention (service potentiellement incomplet, maintenance prévue…).
# ALERT : alerte (le service connait des dysfonctionnements, le service va bientôt fermer…).
# ERROR : problème majeur (service en panne).
# OVER : terminé (le service n'existe plus).
# VOID : indéterminé (service non ouvert officiellement, configuration ChatonsInfos en cours…).
service.status.level = OK
# Description du statut du service (type STRING, optionnel, exemple : mise à jour en cours)
service.status.description =
# Inscriptions requises pour utiliser le service (un ou plusieurs parmi {None, Free, Member, Client}, obligatoire, ex. Free,Member).
# None : le service s'utilise sans inscription.
# Free : inscription nécessaire mais ouverte à tout le monde et gratuite.
# Member : inscription restreinte aux membres (la notion de membre pouvant être très relative, par exemple, une famille, un cercle damis, adhérents d'association…).
# Client : inscription liée à une relation commerciale (facture…).
service.registration = Member
# Capacité à accueillir de nouveaux utilisateurs (un parmi {OPEN, FULL}, obligatoire).
# OPEN : le service accueille de nouveaux comptes.
# FULL : le service n'accueille plus de nouveau compte pour l'instant.
service.registration.load = OPEN
# Type d'installation du service, une valeur parmi {DISTRIBUTION, PROVIDER, PACKAGE, TOOLING, CLONEREPO, ARCHIVE, SOURCES, CONTAINER}, obligatoire.
# DISTRIBUTION : installation via le gestionnaire d'une distribution (apt, yum, etc.).
# PROVIDER : installation via le gestionnaire d'une distribution configuré avec une source externe (ex. /etc/apt/source.list.d/foo.list).
# PACKAGE : installation manuelle d'un paquet compatible distribution (ex. dpkg -i foo.deb).
# TOOLING : installation via un gestionnaire de paquets spécifique, différent de celui de la distribution (ex. pip…).
# CLONEREPO : clone manuel d'un dépôt (git clone…).
# ARCHIVE : application récupérée dans un tgz ou un zip ou un bzip2…
# SOURCES : compilation manuelle à partir des sources de l'application.
# CONTAINER : installation par containeur (Docker, Snap, Flatpak, etc.).
# L'installation d'un service via un paquet Snap avec apt sous Ubuntu doit être renseigné CONTAINER.
# L'installation d'une application ArchLinux doit être renseignée DISTRIBUTION.
# L'installation d'une application Yunohost doit être renseignée DISTRIBUTION.
service.install.type = ARCHIVE
# [Software]
# Nom du logiciel (type STRING, obligatoire).
software.name = Seafile
# Lien du site web du logiciel (type URL, recommandé).
software.website = https://www.seafile.com/
# Lien web vers la licence du logiciel (type URL, obligatoire).
software.license.url = https://github.com/haiwen/seafile-server/blob/master/LICENSE.txt
# Nom de la licence du logiciel (type STRING, obligatoire).
software.license.name = GNU Affero General Public License v3.0
# Version du logiciel (type STRING, recommandé).
software.version = 9.0.5
# Lien web vers les sources du logiciel (type URL, recommandé).
software.source.url = https://github.com/haiwen/seafile-server/
# Liste de modules optionnels installés (type VALUES, optionnel)
# Exemples : Nextcloud-BigBlueButton, Nextcloud-Bookmark, Nextcloud-Calendar, Nextcloud-Carnet, Nextcloud-CollaboraOnline, Nextcloud-Onlyoffice, Nextcloud-Contacts, Nextcloud-Deck, Nextcloud-Forms,Nextcloud-Mail, Nextcloud-Maps, Nextcloud-News, Nextcloud-Notes, Nextcloud-Polls, Nextcloud-Spreed, Nextcloud-Talk, Nextcloud-Task
software.modules =
# [Host]
# Nom de l'hébergeur de la machine qui fait tourner le service, dans le cas d'un auto-hébergement c'est vous ! (type STRING, obligatoire).
host.name = Garbaye
# Desription de l'hébergeur (type STRING, recommandé).
host.description = auto-hébergé
# Nom générique de la distribution installée sur le serveur (type STRING, obligatoire, ex. YunoHost).
host.server.distribution = RockyLinux
# Type de serveur (un parmi {NANO, PHYSICAL, VIRTUAL, SHARED, CLOUD}, obligatoire, ex. PHYSICAL).
# NANO : nano-ordinateur (Raspberry Pi, Olimex…)
# PHYSICAL : machine physique
# VIRTUAL : machine virtuelle
# SHARED : hébergement mutualisé
# CLOUD : infrastructure multi-serveurs
host.server.type = PHYSICAL
# Type d'hébergement (un parmi {HOME, HOSTEDBAY, HOSTEDSERVER, OUTSOURCED}, obligatoire, ex. HOSTEDSERVER).
# HOME : hébergement à domicile
# HOSTEDBAY : serveur personnel hébergé dans une baie d'un fournisseur
# HOSTEDSERVER : serveur d'un fournisseur
# OUTSOURCED : infrastructure totalement sous-traitée
host.provider.type = HOME
# Si vous avez du mal à remplir les champs précédents, ce tableau pourra vous aider :
# NANO PHYSICAL VIRTUAL SHARED CLOUD
# HOME pm pm vm shared cloud
# HOSTEDBAY -- pm vm shared cloud
# HOSTEDSERVER -- pm vm shared cloud
# OUTSOURCED -- -- vps shared cloud
# Légendes : pm : physical machine ; vm : virtual machine ; vps : virtual private server.
# Pays de l'hébergeur (type STRING, recommandé).
host.country.name = France
# Code pays de l'hébergeur (type COUNTRY_CODE sur 2 caractères, obligatoire, ex. FR ou BE ou CH ou DE ou GB).
# Table ISO 3166-1 alpha-2 : https://fr.wikipedia.org/wiki/ISO_3166-1#Table_de_codage
host.country.code = FR
# [Subs]
# Un lien vers un fichier properties complémentaire (type URL, optionnel).
subs.foo =

View file

@ -0,0 +1,8 @@
{
"m.homeserver": {
"base_url": "https://matrix.garbaye.fr"
},
"im.vector.riot.jitsi": {
"preferredDomain": "jitsi.garbaye.fr"
}
}

View file

@ -0,0 +1,3 @@
{
"m.server": "matrix.garbaye.fr:443"
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
static/images/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

15
templates/404.html Normal file
View file

@ -0,0 +1,15 @@
{% import "_macros.html" as macros %}
{% extends "index.html" %}
{% block title %}404 Not Found | {{ super() }} {% endblock title %}
{% block header %}
<header class="box-shadow">
{{ macros::render_header() }}
</header>
{% endblock header %}
{% block content %}
<h1 class="title">404 Not Found</h1>
<h2 class="title">Erreur : la page recherchée n'existe pas</h2>
{% endblock content %}

63
templates/_variables.html Normal file
View file

@ -0,0 +1,63 @@
<style>
:root {
--primary-color: #255a0e;
--primary-text-color: #060f02;
--primary-link-color: #3F9718;
--secondary-color: #f1f7ee;
--secondary-text-color: #060f02;
--secondary-title-color: #3F9718;
--toc-highlight-text-color: #3F9718;
}
.hero,header {
--primary-text-color: #d8ead0;
--primary-link-color: #a8baa0;
}
.hero a {
color: var(--primary-link-color)
}
.hero a:visited {
color: var(--primary-text-color);
}
.hero a:hover {
text-decoration: underline;
color: var(--primary-text-color);
}
header .nav-item:hover {
text-decoration: underline;
color: var(--primary-text-color);
}
.logo img {
width: 41px;
}
.hero .text-center .heading-text {
font-family: "Alfa Slab One", serif;
}
@font-face {
font-family: 'Fira Sans';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(/fonts/va9E4kDNxMZdWfMOD5Vvl4jO.ttf) format('truetype');
}
@font-face {
font-family: 'Fira Sans';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(/fonts/va9B4kDNxMZdWfMOD5VnZKveRhf_.ttf) format('truetype');
}
@font-face {
font-family: 'Fira Sans';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url(/fonts/va9B4kDNxMZdWfMOD5VnSKzeRhf_.ttf) format('truetype');
}
@font-face {
font-family: 'Alfa Slab One';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(/fonts/6NUQ8FmMKwSEKjnm5-4v-4Jh2dJhfg.ttf) format('truetype');
}
</style>

18
templates/blog.html Normal file
View file

@ -0,0 +1,18 @@
{% import "_macros.html" as macros %}
{% extends "index.html" %}
{% block title %}{{ page.title }} | {{ super() }} {% endblock title %}
{% block header %}
<header class="box-shadow">
{{ macros::render_header() }}
</header>
{% endblock header %}
{% block content %}
<h1 class="title">
{{ page.title }}
</h1>
<p class="subtitle"><strong>{{ page.date }}</strong></p>
{{ page.content | safe }}
{% endblock content %}

23
templates/blogpage.html Normal file
View file

@ -0,0 +1,23 @@
{% import "_macros.html" as macros %}
{% extends "index.html" %}
{% block title %}{{ section.title }} | {{ super() }} {% endblock title %}
{% block header %}
<header class="box-shadow">
{{ macros::render_header() }}
</header>
{% endblock header %}
{% block content %}
<h1 class="title">
{{ section.title }}
</h1>
<h2 class="title"><a href="/blog/atom.xml">S'abonner</a></h2>
<ul>
{% for page in section.pages %}
<li>{{ page.date }} <a href="{{ page.permalink | safe }}">{{ page.title }}</a>
<p class="subtext">{{ page.summary | safe }}</p></li>
{% endfor %}
</ul>
{% endblock content %}

142
templates/index.html Normal file
View file

@ -0,0 +1,142 @@
{% import "_macros.html" as macros %}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>{% block title %}{{ config.title }}{% endblock title %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
{% block favicon %}
<link rel="icon" type="image/png" href="/images/favicon.ico">
{% endblock favicon %}
<link rel="stylesheet" href="/normalize.css">
<link rel="stylesheet" href="{{ get_url(path="juice.css") }}">
{% include "_variables.html" %}
{% block head %}
{% endblock head %}
</head>
<body>
{% block header %}
<header class="pos-absolute" style="background-color: transparent">
{{ macros::render_header() }}
</header>
<div class="hero">
{% block hero %}
<img class="hero-image" style="width: 512px" src="{{ get_url(path="images/logocarreblanc_512px.png") }}">
<section class="text-center">
<h1 class="heading-text" style="font-size: 50px">
Garbaye : Services numériques libres<br>
</h1>
<h3 class="title-text">Basé en Gironde, nous auto-hébergeons des services pour tous, dans un souci d'éthique et de décentralisation du web.</h3>
<a href="https://www.chatons.org/"><img class="hero-image" style="width: 12%" src="images/logo_chatons_v3.1_512px.png"></a>
<div class="text"><a href="mailto:contact [arobase] garbaye [point] fr">Courriel</a> - <a href="https://matrix.to/#/#garbaye:garbaye.fr">Matrix [m]</a> - <a href="https://framagit.org/garbaye/">Git</a></div>
</section>
<div class="explore-more text"
onclick="document.getElementById('features').scrollIntoView({behavior: 'smooth'})">
Découvrez nos services ⇩
</div>
<style>
.hero section {
padding: 0 5rem;
}
@media screen and (max-width: 768px) {
.hero section {
padding: 0 2rem;
}
.hero-image {
display: none
}
}
</style>
{% endblock hero %}
</div>
{% endblock header %}
<main>
{% block toc %}
{% if section.toc %}
{% set toc = section.toc %}
{% elif page.toc %}
{% set toc = page.toc %}
{% endif %}
{% if toc %}
<div class="toc">
<div class="toc-sticky">
{% for h in toc %}
<div class="toc-item">
<a class="subtext" href="{{h.permalink | safe}}">{{ h.title }}</a>
</div>
{% if h.children %}
{% for h2 in h.children %}
<div class="toc-item-child">
<a class="subtext" href="{{h2.permalink | safe}}"><small>- {{ h2.title }}</small></a>
</div>
{% endfor %}
{% endif %}
{% endfor %}
</div>
</div>
{% endif %}
{% endblock toc %}
<div class="content text">
{% block content %}
<div id="features" class="heading-text">Bienvenue sur Garbaye</div>
{{ section.content | safe }}
{% endblock content %}
</div>
{% block sidebar %}
{% endblock sidebar %}
</main>
{% block footer %}
<footer>
<small class="subtext">
<a href="https://garbaye.fr">Garbaye.fr</a> © 2021-2022
</small>
</footer>
{% endblock footer %}
</body>
<script>
function highlightNav(heading) {
let pathname = location.pathname;
document.querySelectorAll(".toc a").forEach((item) => {
item.classList.remove("active");
});
document.querySelector(".toc a[href$='" + pathname + "#" + heading + "']").classList.add("active");
}
let currentHeading = "";
window.onscroll = function () {
let h = document.querySelectorAll("h1,h2,h3,h4,h5,h6");
let elementArr = [];
h.forEach(item => {
if (item.id !== "") {
elementArr[item.id] = item.getBoundingClientRect().top;
}
});
elementArr.sort();
for (let key in elementArr) {
if (!elementArr.hasOwnProperty(key)) {
continue;
}
if (elementArr[key] > 0 && elementArr[key] < 300) {
if (currentHeading !== key) {
highlightNav(key);
currentHeading = key;
}
break;
}
}
}
</script>
</html>

21
templates/section.html Normal file
View file

@ -0,0 +1,21 @@
{% import "_macros.html" as macros %}
{% extends "index.html" %}
{% block title %}{{ section.title }} | {{ super() }} {% endblock title %}
{% block header %}
<header class="box-shadow">
{{ macros::render_header() }}
</header>
{% endblock header %}
{% block content %}
<h1 class="title">
{{ section.title }}
</h1>
<ul>
{% for page in section.pages %}
<li><a href="{{ page.permalink | safe }}">{{ page.title }}</a></li>
{% endfor %}
</ul>
{% endblock content %}

1
themes/juice Submodule

@ -0,0 +1 @@
Subproject commit c9fe064b031ac7a73c5704468aff1ff43adb67f7