diff --git a/courriel.md b/courriel.md
index 512a777..2a99108 100644
--- a/courriel.md
+++ b/courriel.md
@@ -1,6 +1,6 @@
# Comment utiliser son adresse courriel Antopie
-Cette page de concerne que les personnes pour lesquelles j'ai manuellement créé un compte interne. Ce service n'est pas ouvert au public.
+Cette page ne concerne que les personnes pour lesquelles j'ai manuellement créé un compte interne. Ce service n'est pas ouvert au public.
## Webmail Roundcube
diff --git a/img/logos/etherpad.png b/img/logos/etherpad.png
index ffc4e01..9cbbba9 100644
Binary files a/img/logos/etherpad.png and b/img/logos/etherpad.png differ
diff --git a/img/logos/etherpad.webp b/img/logos/etherpad.webp
index 197b9f1..a39a435 100644
Binary files a/img/logos/etherpad.webp and b/img/logos/etherpad.webp differ
diff --git a/img/logos/jirafeau.png b/img/logos/jirafeau.png
deleted file mode 100644
index a09ded9..0000000
Binary files a/img/logos/jirafeau.png and /dev/null differ
diff --git a/img/logos/jirafeau.webp b/img/logos/jirafeau.webp
deleted file mode 100644
index f9f1736..0000000
Binary files a/img/logos/jirafeau.webp and /dev/null differ
diff --git a/img/logos/librex.png b/img/logos/librex.png
new file mode 100644
index 0000000..f1412a9
Binary files /dev/null and b/img/logos/librex.png differ
diff --git a/img/logos/librex.webp b/img/logos/librex.webp
new file mode 100644
index 0000000..9e0c941
Binary files /dev/null and b/img/logos/librex.webp differ
diff --git a/img/logos/lufi.png b/img/logos/lufi.png
new file mode 100644
index 0000000..dc7cbf9
Binary files /dev/null and b/img/logos/lufi.png differ
diff --git a/img/logos/lufi.webp b/img/logos/lufi.webp
new file mode 100644
index 0000000..a89d069
Binary files /dev/null and b/img/logos/lufi.webp differ
diff --git a/img/logos/nitter.png b/img/logos/nitter.png
deleted file mode 100644
index 7134736..0000000
Binary files a/img/logos/nitter.png and /dev/null differ
diff --git a/img/logos/nitter.webp b/img/logos/nitter.webp
deleted file mode 100644
index 437e2e3..0000000
Binary files a/img/logos/nitter.webp and /dev/null differ
diff --git a/img/logos/origine/etherpad.svg b/img/logos/origine/etherpad.svg
new file mode 100644
index 0000000..4f5b2ee
--- /dev/null
+++ b/img/logos/origine/etherpad.svg
@@ -0,0 +1,52 @@
+
+
\ No newline at end of file
diff --git a/img/logos/origine/jirafeau.png b/img/logos/origine/jirafeau.png
deleted file mode 100755
index 9ebaedf..0000000
Binary files a/img/logos/origine/jirafeau.png and /dev/null differ
diff --git a/img/logos/origine/librex.png b/img/logos/origine/librex.png
new file mode 100644
index 0000000..f1412a9
Binary files /dev/null and b/img/logos/origine/librex.png differ
diff --git a/img/logos/origine/lufi.png b/img/logos/origine/lufi.png
new file mode 100644
index 0000000..cc9c824
Binary files /dev/null and b/img/logos/origine/lufi.png differ
diff --git a/img/logos/origine/nitter.png b/img/logos/origine/nitter.png
deleted file mode 100644
index 24caa27..0000000
Binary files a/img/logos/origine/nitter.png and /dev/null differ
diff --git a/img/logos/origine/plume.png b/img/logos/origine/plume.png
deleted file mode 100755
index 5ecc967..0000000
Binary files a/img/logos/origine/plume.png and /dev/null differ
diff --git a/img/logos/plume.png b/img/logos/plume.png
deleted file mode 100644
index 47f4ed7..0000000
Binary files a/img/logos/plume.png and /dev/null differ
diff --git a/img/logos/plume.webp b/img/logos/plume.webp
deleted file mode 100644
index 27db723..0000000
Binary files a/img/logos/plume.webp and /dev/null differ
diff --git a/index.md b/index.md
index 2195c8d..832a74a 100644
--- a/index.md
+++ b/index.md
@@ -20,188 +20,163 @@ Le compte @Antopie@mamot.fr ([R
'peertube',
- 'gitea' => 'gitea',
- 'libreqr' => 'libreqr',
- 'vaultwarden' => 'vaultwarden',
- 'nextcloud' => 'nextcloud',
- 'synapse' => 'matrix',
- 'element' => 'element',
- 'privatebin' => 'privatebin',
- 'jirafeau' => 'jirafeau',
- 'etherpad' => 'etherpad',
- 'diagrams' => 'diagrams',
- 'opensondage' => 'opensondage',
- 'meta' => NULL,
- 'rssbridge' => 'rssbridge',
- 'searx' => 'searx',
- 'invidious' => 'invidious',
- 'nitter' => 'nitter',
-);
-
-$logoServiceDimensions = array(
- 'peertube' => array(75, 100),
- 'gitea' => array(100, 100),
- 'libreqr' => array(100, 100),
- 'vaultwarden' => array(100, 100),
- 'nextcloud' => array(150, 68),
- 'synapse' => array(95, 100),
- 'element' => array(100, 100),
- 'privatebin' => array(94, 100),
- 'jirafeau' => array(100, 100),
- 'etherpad' => array(59, 100),
- 'diagrams' => array(80, 80),
- 'opensondage' => array(64, 64),
- 'meta' => NULL,
- 'rssbridge' => array(150, 31),
- 'searx' => array(109, 100),
- 'invidious' => array(100, 96),
- 'nitter' => array(100, 122),
-);
-
-$urlService = array(
- 'peertube' => clearnetOrOnion('https://video.antopie.org', 'http://video.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'gitea' => clearnetOrOnion('https://code.antopie.org', 'http://code.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'libreqr' => clearnetOrOnion('https://qr.antopie.org', 'http://qr.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'vaultwarden' => clearnetOrOnion('https://mdp.antopie.org', 'http://mdp.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'nextcloud' => clearnetOrOnion('https://nuage.antopie.org', 'http://nuage.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'synapse' => clearnetOrOnion('https://matrix.antopie.org', 'http://matrix.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'element' => clearnetOrOnion('https://el.antopie.org', 'http://el.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'privatebin' => clearnetOrOnion('https://texte.antopie.org', 'http://texte.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'jirafeau' => clearnetOrOnion('https://up.antopie.org', 'http://up.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'etherpad' => clearnetOrOnion('https://pad.antopie.org', 'http://pad.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'diagrams' => clearnetOrOnion('https://draw.antopie.org', 'http://draw.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'opensondage' => clearnetOrOnion('https://sondage.antopie.org', 'http://sondage.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'meta' => clearnetOrOnion('https://meta.antopie.org', 'http://meta.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'rssbridge' => clearnetOrOnion('https://rss.antopie.org', 'http://rss.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'searx' => clearnetOrOnion('https://searx.antopie.org', 'http://searx.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'invidious' => clearnetOrOnion('https://inv.antopie.org', 'http://inv.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
- 'nitter' => clearnetOrOnion('https://nitter.antopie.org', 'http://nitter.sou4vla4k5peskbl3dlzhh3e6ve5eu3m3hhsmiidqevlsd6lqo3qq2ad.onion'),
-);
-
-$domService = array(
- 'peertube' => '' . clearnetOrOnion('video.antopie.org', 'video') . '
',
- 'gitea' => '' . clearnetOrOnion('code.antopie.org', 'code') . '
',
- 'libreqr' => '' . clearnetOrOnion('qr.antopie.org', 'qr') . '
',
- 'vaultwarden' => '' . clearnetOrOnion('mdp.antopie.org', 'mdp') . '
',
- 'nextcloud' => '' . clearnetOrOnion('nuage.antopie.org', 'nuage') . '
',
- 'synapse' => '' . clearnetOrOnion('matrix.antopie.org', 'matrix') . '
',
- 'element' => '' . clearnetOrOnion('el.antopie.org', 'el') . '
',
- 'privatebin' => '' . clearnetOrOnion('texte.antopie.org', 'texte') . '
',
- 'jirafeau' => '' . clearnetOrOnion('up.antopie.org', 'up') . '
',
- 'etherpad' => '' . clearnetOrOnion('pad.antopie.org', 'pad') . '
',
- 'diagrams' => '' . clearnetOrOnion('draw.antopie.org', 'draw') . '
',
- 'opensondage' => '' . clearnetOrOnion('sondage.antopie.org', 'sondage') . '
',
- 'meta' => '' . clearnetOrOnion('meta.antopie.org', 'meta') . '
',
- 'rssbridge' => '' . clearnetOrOnion('rss.antopie.org', 'rss') . '
',
- 'searx' => '' . clearnetOrOnion('searx.antopie.org', 'searx') . '
',
- 'invidious' => '' . clearnetOrOnion('inv.antopie.org', 'inv') . '
',
- 'nitter' => '' . clearnetOrOnion('nitter.antopie.org', 'nitter') . '
',
-);
-
-$nomService = array(
- 'peertube' => 'PeerTube',
- 'gitea' => 'Gitea',
- 'libreqr' => 'LibreQR',
- 'vaultwarden' => 'Vaultwarden',
- 'nextcloud' => 'Nextcloud',
- 'synapse' => 'Synapse',
- 'element' => 'Element',
- 'privatebin' => 'PrivateBin',
- 'jirafeau' => 'Jirafeau',
- 'etherpad' => 'Etherpad',
- 'diagrams' => 'Diagrammes',
- 'opensondage' => 'OpenSondage',
- 'meta' => 'Méta',
- 'rssbridge' => 'RSS Bridge',
- 'searx' => 'Searx',
- 'invidious' => 'Invidious',
- 'nitter' => 'Nitter',
-);
-
-$descService = array(
- 'peertube' => 'Regarder et publier des vidéos sur le Fédiverse.',
- 'gitea' => 'Forge logicielle simple basée sur Git.',
- 'libreqr' => 'Un générateur de codes QR fait maison.',
- 'vaultwarden' => 'Enregistrer des clés de passe. Compatible avec les clients Bitwarden.',
- 'nextcloud' => 'Synchronisation de fichiers, de contacts (CardDAV), d’agenda (CalDAV), et plein d’autres fonctionnalités grâce à des extensions.',
- 'synapse' => 'Un serveur Matrix, qui est un protocole internet moderne pour la communication écrite, audio ou vidéo.',
- 'element' => 'Client Web pour Matrix.',
- 'privatebin' => 'Partager des textes, codes sources ou Markdown rapidement.',
- 'jirafeau' => 'Rendre un fichier accessible par une URL Web.',
- 'etherpad' => 'Éditer un texte sur plusieurs appareils en même temps. Utilisable avec MyPads.',
- 'diagrams' => 'Créer des diagrammes.',
- 'opensondage' => 'Planifier un rendez-vous et prendre des décisions.',
- 'meta' => 'Afficher diverses métadonnées techniques relatives à la transmission de la page.',
- 'rssbridge' => 'Exporter les données de centaines de sites aux formats Atom, JSON, Mrss ou texte brut.',
- 'searx' => 'Métamoteur anonymé : combine plusieurs moteurs de recherche sur une seule page.',
- 'invidious' => 'Interface plus libre, légère et confidentielle pour accéder au contenu du service privateur YouTube.',
- 'nitter' => 'Interface plus libre, légère et confidentielle pour accéder au contenu du service privateur Twitter.',
-);
-
-$siteOfficielService = array(
- 'peertube' => 'joinpeertube.org',
- 'gitea' => 'gitea.io',
- 'libreqr' => NULL,
- 'vaultwarden' => NULL,
- 'nextcloud' => 'nextcloud.com',
- 'synapse' => NULL,
- 'element' => 'element.io',
- 'privatebin' => 'privatebin.info',
- 'jirafeau' => NULL,
- 'etherpad' => 'etherpad.org',
- 'diagrams' => 'www.drawio.com',
- 'opensondage' => NULL,
- 'meta' => NULL,
- 'rssbridge' => NULL,
- 'searx' => 'searx.github.io/searx',
- 'invidious' => NULL,
- 'nitter' => NULL,
-);
-
-$gitService = array(
- 'peertube' => 'github.com/Chocobozzz/PeerTube',
- 'gitea' => 'github.com/go-gitea/gitea',
- 'libreqr' => 'code.antopie.org/miraty/libreqr',
- 'vaultwarden' => 'github.com/dani-garcia/vaultwarden',
- 'nextcloud' => 'github.com/nextcloud/server',
- 'synapse' => 'github.com/matrix-org/synapse',
- 'element' => 'github.com/vector-im/element-web',
- 'privatebin' => 'github.com/PrivateBin/PrivateBin',
- 'jirafeau' => 'gitlab.com/mojo42/Jirafeau',
- 'etherpad' => 'github.com/ether/etherpad-lite',
- 'diagrams' => 'github.com/jgraph/drawio',
- 'opensondage' => 'framagit.org/framasoft/framadate/framadate',
- 'meta' => 'code.antopie.org/miraty/meta',
- 'rssbridge' => 'github.com/rss-bridge/rss-bridge',
- 'searx' => 'github.com/searx/searx',
- 'invidious' => 'github.com/iv-org/invidious',
- 'nitter' => 'github.com/zedeus/nitter',
-);
-
-$paquetYnhService = array(
- 'peertube' => 'github.com/YunoHost-Apps/peertube_ynh',
- 'gitea' => 'github.com/YunoHost-Apps/gitea_ynh',
- 'libreqr' => 'code.antopie.org/miraty/qr_ynh',
- 'vaultwarden' => 'github.com/YunoHost-Apps/vaultwarden_ynh',
- 'nextcloud' => 'github.com/YunoHost-Apps/nextcloud_ynh',
- 'synapse' => 'github.com/YunoHost-Apps/synapse_ynh',
- 'element' => 'github.com/YunoHost-Apps/element_ynh',
- 'privatebin' => 'github.com/YunoHost-Apps/zerobin_ynh',
- 'jirafeau' => 'github.com/YunoHost-Apps/jirafeau_ynh',
- 'etherpad' => 'github.com/YunoHost-Apps/etherpad_mypads_ynh',
- 'diagrams' => 'github.com/YunoHost-Apps/diagramsnet_ynh',
- 'opensondage' => 'github.com/YunoHost-Apps/opensondage_ynh',
- 'meta' => 'github.com/YunoHost-Apps/my_webapp_ynh',
- 'rssbridge' => 'github.com/YunoHost-Apps/rss-bridge_ynh',
- 'searx' => 'github.com/YunoHost-Apps/searx_ynh',
- 'invidious' => 'github.com/YunoHost-Apps/invidious_ynh',
- 'nitter' => 'github.com/YunoHost-Apps/nitter_ynh',
-);
+$services = [
+ 'peertube' => [
+ 'name' => 'PeerTube',
+ 'desc' => 'Regarder des vidéos sur le Fédiverse.',
+ 'domain' => 'video',
+ 'site' => 'joinpeertube.org',
+ 'code' => 'github.com/Chocobozzz/PeerTube',
+ 'package' => 'github.com/YunoHost-Apps/peertube_ynh',
+ 'action_emoji' => '▶️',
+ ],
+ 'gitea' => [
+ 'name' => 'Gitea',
+ 'desc' => 'Forge logicielle simple basée sur Git.',
+ 'domain' => 'code',
+ 'site' => 'gitea.io',
+ 'code' => 'github.com/go-gitea/gitea',
+ 'package' => 'github.com/YunoHost-Apps/gitea_ynh',
+ 'action_emoji' => '🧑💻',
+ ],
+ 'libreqr' => [
+ 'name' => 'LibreQR',
+ 'desc' => 'Un générateur de codes QR fait maison.',
+ 'domain' => 'qr',
+ 'code' => 'code.antopie.org/miraty/libreqr',
+ 'package' => 'code.antopie.org/miraty/qr_ynh',
+ 'action' => 'Générer un code QR',
+ ],
+ 'nextcloud' => [
+ 'name' => 'Nextcloud',
+ 'desc' => 'Synchronisation de fichiers, de contacts (CardDAV), d’agenda (CalDAV), et plein d’autres fonctionnalités grâce à des extensions.',
+ 'domain' => 'nuage',
+ 'site' => 'nextcloud.com',
+ 'code' => 'github.com/nextcloud/server',
+ 'package' => 'github.com/YunoHost-Apps/nextcloud_ynh',
+ 'action_emoji' => '☁️',
+ ],
+ 'synapse' => [
+ 'name' => 'Synapse',
+ 'desc' => 'Un serveur Matrix, qui est un protocole internet moderne pour la communication écrite, audio ou vidéo.',
+ 'domain' => 'matrix',
+ 'code' => 'github.com/matrix-org/synapse',
+ 'package' => 'github.com/YunoHost-Apps/synapse_ynh',
+ 'action' => 'Plus d\'infos',
+ 'action_emoji' => 'ℹ️',
+ ],
+ 'element' => [
+ 'name' => 'Element',
+ 'desc' => 'Client Web pour Matrix.',
+ 'domain' => 'el',
+ 'site' => 'element.io',
+ 'code' => 'github.com/vector-im/element-web',
+ 'package' => 'github.com/YunoHost-Apps/element_ynh',
+ 'action_emoji' => '💬',
+ ],
+ 'lufi' => [
+ 'name' => 'Lufi',
+ 'desc' => 'Partager un fichier par une URL.',
+ 'domain' => 'lufi',
+ 'site' => '',
+ 'code' => 'framagit.org/fiat-tux/hat-softwares/lufi/',
+ 'package' => 'github.com/YunoHost-Apps/lufi_ynh',
+ 'action' => 'Téléverser un fichier',
+ 'action_emoji' => '⬆️',
+ ],
+ 'privatebin' => [
+ 'name' => 'PrivateBin',
+ 'desc' => 'Partager des textes, codes sources ou Markdown rapidement.',
+ 'domain' => 'texte',
+ 'site' => 'privatebin.info',
+ 'code' => 'github.com/PrivateBin/PrivateBin',
+ 'package' => 'github.com/YunoHost-Apps/zerobin_ynh',
+ ],
+ 'etherpad' => [
+ 'name' => 'Etherpad',
+ 'desc' => 'Éditer un texte sur plusieurs appareils en même temps. Utilisable avec MyPads.',
+ 'domain' => 'pad',
+ 'site' => 'etherpad.org',
+ 'code' => 'github.com/ether/etherpad-lite',
+ 'package' => 'github.com/YunoHost-Apps/etherpad_mypads_ynh',
+ 'action' => 'Corédiger',
+ 'action_emoji' => '📝',
+ ],
+ 'vaultwarden' => [
+ 'name' => 'Vaultwarden',
+ 'desc' => 'Enregistrer des clés de passe. Compatible avec les clients Bitwarden.',
+ 'domain' => 'mdp',
+ 'code' => 'github.com/dani-garcia/vaultwarden',
+ 'package' => 'github.com/YunoHost-Apps/vaultwarden_ynh',
+ 'action_emoji' => '🔑',
+ ],
+ 'diagrams' => [
+ 'name' => 'Diagrammes',
+ 'desc' => 'Créer des diagrammes.',
+ 'domain' => 'draw',
+ 'site' => 'www.drawio.com',
+ 'code' => 'github.com/jgraph/drawio',
+ 'package' => 'github.com/YunoHost-Apps/diagramsnet_ynh',
+ ],
+ 'opensondage' => [
+ 'name' => 'OpenSondage',
+ 'desc' => 'Planifier un rendez-vous et prendre des décisions.',
+ 'domain' => 'sondage',
+ 'site' => '',
+ 'code' => 'framagit.org/framasoft/framadate/framadate',
+ 'package' => 'github.com/YunoHost-Apps/opensondage_ynh',
+ 'action' => 'Créer un sondage',
+ 'action_emoji' => '📊',
+ ],
+ 'meta' => [
+ 'name' => 'Méta',
+ 'desc' => 'Afficher diverses métadonnées techniques relatives à la transmission de la page.',
+ 'domain' => 'meta',
+ 'code' => 'code.antopie.org/miraty/meta',
+ 'package' => 'github.com/YunoHost-Apps/my_webapp_ynh',
+ 'action' => 'Geeker',
+ 'action_emoji' => 'ℹ️',
+ ],
+ 'rssbridge' => [
+ 'name' => 'RSS Bridge',
+ 'desc' => 'Exporter les données de centaines de sites aux formats Atom, JSON, Mrss ou texte brut.',
+ 'domain' => 'rss',
+ 'code' => 'github.com/rss-bridge/rss-bridge',
+ 'package' => 'github.com/YunoHost-Apps/rss-bridge_ynh',
+ ],
+ 'invidious' => [
+ 'name' => 'Invidious',
+ 'desc' => 'Interface plus libre, légère et confidentielle pour accéder au contenu du service privateur YouTube.',
+ 'domain' => 'inv',
+ 'site' => 'invidious.io',
+ 'code' => 'github.com/iv-org/invidious',
+ 'package' => 'github.com/YunoHost-Apps/invidious_ynh',
+ 'action' => 'Chercher sur YouTube',
+ 'action_emoji' => '▶️',
+ ],
+ 'librex' => [
+ 'name' => 'Librex',
+ 'desc' => 'Interface pour anonymiser et combiner les résultats de plusieurs moteurs de recherche.',
+ 'domain' => 'librex',
+ 'code' => 'github.com/hnhx/librex',
+ 'package' => 'github.com/YunoHost-Apps/librex_ynh',
+ 'action' => 'Faire une recherche',
+ 'action_emoji' => '🔍',
+ ],
+ 'searx' => [
+ 'name' => 'Searx',
+ 'desc' => 'Comme Librex, avec plus de fonctionnalités. Le logiciel n\'étant plus maintenu, ce service pourra être fermé à partir de janvier 2024.',
+ 'domain' => 'searx',
+ 'site' => 'searx.github.io/searx',
+ 'code' => 'github.com/searx/searx',
+ 'package' => 'github.com/YunoHost-Apps/searx_ynh',
+ 'action' => 'Faire une recherche',
+ 'action_emoji' => '🔍',
+ ],
+];
$actionService = array(
- 'peertube' => 'Accéder au service',
+ 'peertube' => '',
'gitea' => 'Coder',
'libreqr' => 'Générer un code QR',
'vaultwarden' => 'Accéder au service',
@@ -217,55 +192,36 @@ $actionService = array(
'rssbridge' => 'Bridger',
'searx' => 'Rechercher',
'invidious' => 'Accéder au service',
- 'nitter' => 'Accéder au service',
);
-$aboutService = array(
- 'peertube' => NULL,
- 'gitea' => NULL,
- 'libreqr' => NULL,
- 'vaultwarden' => NULL,
- 'nextcloud' => 'nextcloud.html',
- 'synapse' => NULL,
- 'element' => NULL,
- 'privatebin' => NULL,
- 'jirafeau' => NULL,
- 'etherpad' => NULL,
- 'diagrams' => NULL,
- 'opensondage' => NULL,
- 'iprefua' => NULL,
- 'rssbridge' => NULL,
- 'searx' => NULL,
- 'invidious' => NULL,
- 'nitter' => NULL,
-);
-
-foreach($descService as $codeService => $descService) { ?>
+foreach($services as $service_id => $service) {
+ $img_path = 'img/logos/' . $service_id . '.webp';
+?>