diff --git a/veille-ia_ynh/conf/env b/veille-ia_ynh/conf/env deleted file mode 100644 index d8ee1f1..0000000 --- a/veille-ia_ynh/conf/env +++ /dev/null @@ -1,11 +0,0 @@ -# Environnement applicatif de veille-ia (chargé par systemd via EnvironmentFile). -# Régénéré par les scripts du package (ynh_config_add) — ne pas éditer à la main. - -# Dossier de données persistant : registre/profils YAML + dépôt git interne. -DATA_DIR=__DATA_DIR__ - -# Endpoint Ollama (optionnel : dégradation gracieuse si injoignable). -OLLAMA_URL=__OLLAMA_URL__ - -# Token Bearer protégeant POST /api/alerts (généré à l'install — secret). -ALERTS_TOKEN=__ALERTS_TOKEN__ diff --git a/veille-ia_ynh/conf/nginx.conf b/veille-ia_ynh/conf/nginx.conf deleted file mode 100644 index cf93e4f..0000000 --- a/veille-ia_ynh/conf/nginx.conf +++ /dev/null @@ -1,14 +0,0 @@ -#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; -location __PATH__/ { - - # Reverse proxy vers le serveur Node (adapter-node). - # Pas de '/' final à proxy_pass : l'URI complète (avec le sous-chemin) est - # transmise, ce qui correspond au paths.base configuré au build de l'app. - proxy_pass http://127.0.0.1:__PORT__; - - # Transmet l'identité SSO (Ynh-User…) après authentification SSOwat, et vide - # ces headers pour les requêtes client (non spoofable). - include proxy_params_with_auth; - - client_max_body_size 10M; -} diff --git a/veille-ia_ynh/conf/systemd.service b/veille-ia_ynh/conf/systemd.service deleted file mode 100644 index 2efcf61..0000000 --- a/veille-ia_ynh/conf/systemd.service +++ /dev/null @@ -1,41 +0,0 @@ -[Unit] -Description=Veille IA — observatoire de veille sur les modèles IA (SvelteKit) -After=network.target - -[Service] -Type=simple -User=__APP__ -Group=__APP__ -WorkingDirectory=__INSTALL_DIR__/app - -Environment="PATH=__PATH_WITH_NODEJS__" -Environment="NODE_ENV=production" -Environment="HOST=127.0.0.1" -Environment="PORT=__PORT__" -Environment="ORIGIN=https://__DOMAIN____PATH__" -# DATA_DIR, OLLAMA_URL, ALERTS_TOKEN (fichier posé à l'install, chmod 400) -EnvironmentFile=__INSTALL_DIR__/app/.env - -ExecStart=__NODEJS_DIR__/node build/index.js - -# Logs vers journald : yunohost service log __APP__ -StandardOutput=journal -StandardError=journal -SyslogIdentifier=__APP__ - -# Sandboxing (niveau modéré : le service doit pouvoir lancer git dans le data_dir, -# phase 1 — simple-git — et joindre Ollama en HTTP sortant). -NoNewPrivileges=yes -PrivateTmp=yes -ProtectSystem=full -ProtectKernelModules=yes -ProtectKernelTunables=yes -ProtectControlGroups=yes -RestrictRealtime=yes -RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK -LockPersonality=yes -SystemCallArchitectures=native -CapabilityBoundingSet= - -[Install] -WantedBy=multi-user.target diff --git a/veille-ia_ynh/doc/ADMIN_fr.md b/veille-ia_ynh/doc/ADMIN_fr.md deleted file mode 100644 index 0988f27..0000000 --- a/veille-ia_ynh/doc/ADMIN_fr.md +++ /dev/null @@ -1,17 +0,0 @@ -## Administration de Veille IA - -### Ollama (optionnel) - -L'app fonctionne sans Ollama (dégradation gracieuse). Pour activer le classifieur LLM, indiquez l'URL de votre endpoint Ollama à l'install (ou éditez `/var/www/veille-ia/app/.env` puis `systemctl restart veille-ia`). Ollama peut tourner sur une autre machine joignable en HTTP (LAN, wireguard). - -### Données - -Registre et profils (YAML + git interne) : `/home/yunohost.app/veille-ia`. Sauvegardés par le script de backup standard. Non supprimés à la désinstallation sauf `--purge`. - -### Alertes (webhook) - -`POST /api/alerts` est protégé par un token Bearer généré à l'install, visible dans `/var/www/veille-ia/app/.env` (`ALERTS_TOKEN`). À configurer côté Node-RED (flows fournis dans le dépôt source, dossier `nodered-flows/`). - -### Journaux - -`yunohost service log veille-ia` (journald). diff --git a/veille-ia_ynh/doc/DESCRIPTION.md b/veille-ia_ynh/doc/DESCRIPTION.md deleted file mode 100644 index d10cdbb..0000000 --- a/veille-ia_ynh/doc/DESCRIPTION.md +++ /dev/null @@ -1,9 +0,0 @@ -Veille IA is a personal watchtower for generative AI models: releases, licenses, rankings, with a recommendation engine based on project profiles. - -- **Model registry**: single source of truth (git-versioned YAML), anti-hallucination rule (unverified field = "to be checked") -- **Project profiles**: legal constraints per production context -- **Recommendation engine**: ranked, justified shortlist with warnings -- **Alert inbox**: events classified by a local LLM (Ollama), pushed from Node-RED -- **Markdown export**: guides and rankings regenerated from the registry - -Private application (YunoHost SSO), 100% open source (AGPL-3.0), no paid API. diff --git a/veille-ia_ynh/doc/DESCRIPTION_fr.md b/veille-ia_ynh/doc/DESCRIPTION_fr.md deleted file mode 100644 index dc5b113..0000000 --- a/veille-ia_ynh/doc/DESCRIPTION_fr.md +++ /dev/null @@ -1,9 +0,0 @@ -Veille IA est un observatoire personnel de veille sur les modèles IA génératifs : sorties, licences, classements, avec un moteur de recommandation par profils de projets. - -- **Registre des modèles** : source de vérité unique (YAML versionné git), règle anti-hallucination (champ non vérifié = « à vérifier ») -- **Profils de projets** : contraintes juridiques par contexte de production -- **Moteur de recommandation** : shortlist classée et justifiée, avec warnings -- **Inbox d'alertes** : événements classifiés par un LLM local (Ollama), poussés depuis Node-RED -- **Export markdown** : guides et classements régénérés depuis le registre - -Application privée (SSO YunoHost), 100 % open-source (AGPL-3.0), aucune API payante. diff --git a/veille-ia_ynh/manifest.toml b/veille-ia_ynh/manifest.toml deleted file mode 100644 index b86ee46..0000000 --- a/veille-ia_ynh/manifest.toml +++ /dev/null @@ -1,69 +0,0 @@ -#:schema https://raw.githubusercontent.com/YunoHost/apps/main/schemas/manifest.v2.schema.json - -packaging_format = 2 - -id = "veille-ia" -name = "Veille IA" -description.en = "Personal watchtower for generative AI models (releases, licenses, rankings)" -description.fr = "Observatoire personnel de veille sur les modèles IA génératifs (sorties, licences, classements)" - -version = "0.1.0~ynh1" - -maintainers = ["cyber-mawonaj"] - -[upstream] -license = "AGPL-3.0-or-later" -code = "https://labola.o-k-i.net/cyber-mawonaj/veille-ia-gen" - -[integration] -yunohost = ">= 12.1" -helpers_version = "2.1" -architectures = "all" -multi_instance = false -ldap = false -sso = true -disk = "300M" -ram.build = "1G" -ram.runtime = "150M" - -[install] - [install.domain] - type = "domain" - - [install.path] - type = "path" - default = "/veille" - - [install.init_main_permission] - # App privée : "all_users" = SSO requis (remplace l'ancienne question is_public). - type = "group" - default = "all_users" - - [install.ollama_url] - ask.fr = "URL de l'endpoint Ollama (optionnel — l'app fonctionne sans, en mode dégradé)" - ask.en = "Ollama endpoint URL (optional — the app works without it, in degraded mode)" - type = "string" - default = "http://127.0.0.1:11434" - optional = true - -[resources] - # Archive de l'app, publiée par tag sur la forge (procédure de release : README racine). - # ⚠️ sha256 à recalculer après chaque tag : sha256sum vX.Y.Z.tar.gz - [resources.sources.main] - url = "https://labola.o-k-i.net/cyber-mawonaj/veille-ia-gen/archive/v0.1.0.tar.gz" - sha256 = "TODO_SHA256_A_CALCULER_APRES_LE_TAG_v0.1.0" - autoupdate.strategy = "latest_forgejo_tag" - - [resources.system_user] - - [resources.install_dir] - - [resources.data_dir] - - [resources.permissions] - main.url = "/" - - [resources.ports] - - [resources.nodejs] - version = "24" diff --git a/veille-ia_ynh/scripts/_common.sh b/veille-ia_ynh/scripts/_common.sh deleted file mode 100644 index 5c57015..0000000 --- a/veille-ia_ynh/scripts/_common.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# Variables et fonctions communes aux scripts du package veille-ia_ynh. - -# Normalise le chemin YNH pour paths.base de SvelteKit ("/" -> "" ; sinon "/veille"). -veille_ia_base_path() { - if [ "$path" = "/" ]; then - echo "" - else - echo "$path" - fi -} - -# Installe les dépendances, build l'app (avec le bon sous-chemin), puis élague -# les devDependencies pour ne garder que le runtime. -veille_ia_build_app() { - pushd "$install_dir/app" - ynh_hide_warnings ynh_exec_as_app npm ci - ynh_hide_warnings ynh_exec_as_app env BASE_PATH="$(veille_ia_base_path)" npm run build - ynh_hide_warnings ynh_exec_as_app npm prune --omit=dev - popd -} - -# (Re)génère le fichier d'environnement applicatif et verrouille ses droits. -veille_ia_write_env() { - ynh_config_add --template="env" --destination="$install_dir/app/.env" - chmod 400 "$install_dir/app/.env" - chown "$app:$app" "$install_dir/app/.env" -} diff --git a/veille-ia_ynh/scripts/backup b/veille-ia_ynh/scripts/backup deleted file mode 100755 index a7a3115..0000000 --- a/veille-ia_ynh/scripts/backup +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -source ../settings/scripts/_common.sh -source /usr/share/yunohost/helpers - -ynh_print_info "Déclaration des fichiers à sauvegarder..." - -# Code + build + .env (reconstruisible, mais sauvegardé pour une restauration rapide). -ynh_backup "$install_dir" - -# Données : registre/profils YAML + dépôt git interne. -# (Ignoré par le backup de sécurité pré-upgrade — comportement standard du cœur.) -ynh_backup "$data_dir" - -ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" - -ynh_backup "/etc/systemd/system/$app.service" - -ynh_print_info "Sauvegarde de veille-ia terminée" diff --git a/veille-ia_ynh/scripts/change_url b/veille-ia_ynh/scripts/change_url deleted file mode 100755 index 79f0f81..0000000 --- a/veille-ia_ynh/scripts/change_url +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -source _common.sh -source /usr/share/yunohost/helpers - -#================================================= -# STOP SYSTEMD SERVICE -#================================================= -ynh_script_progression "Arrêt du service systemd de veille-ia..." - -ynh_systemctl --service="$app" --action="stop" - -#================================================= -# UPDATE NGINX CONFIGURATION -#================================================= -ynh_script_progression "Mise à jour de la configuration nginx de veille-ia..." - -# $domain/$path pointent déjà vers les nouvelles valeurs ($old_domain/$old_path -# et $change_domain/$change_path sont disponibles si besoin). -ynh_config_change_url_nginx - -#================================================= -# RE-BUILD THE APP WITH THE NEW BASE PATH -#================================================= -ynh_script_progression "Re-build de veille-ia pour le nouveau chemin..." - -# paths.base est figé au build (SvelteKit) : le changement de chemin impose -# un re-build avec le nouveau BASE_PATH. -veille_ia_build_app - -# .env : régénéré pour rester cohérent (ORIGIN systemd suit __DOMAIN____PATH__ -# via ynh_config_change_url_nginx ; le .env ne contient pas le domaine). -veille_ia_write_env - -#================================================= -# START SYSTEMD SERVICE -#================================================= -ynh_script_progression "Démarrage du service systemd de veille-ia..." - -ynh_systemctl --service="$app" --action="start" - -ynh_script_progression "Changement d'URL de veille-ia terminé" diff --git a/veille-ia_ynh/scripts/install b/veille-ia_ynh/scripts/install deleted file mode 100755 index 94e17a6..0000000 --- a/veille-ia_ynh/scripts/install +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash - -source _common.sh -source /usr/share/yunohost/helpers - -#================================================= -# RETRIEVE ARGUMENTS FROM THE MANIFEST AND GENERATE SETTINGS -#================================================= -ynh_script_progression "Récupération des paramètres de veille-ia..." - -# Token protégeant POST /api/alerts (webhook Node-RED) — secret généré à l'install. -alerts_token="$(ynh_string_random 48)" -ynh_app_setting_set --key=alerts_token --value="$alerts_token" - -#================================================= -# DEPLOY APP FILES -#================================================= -ynh_script_progression "Déploiement des fichiers de veille-ia..." - -# Archive du tag de la forge (ressource sources.main du manifest), pré-téléchargée. -ynh_setup_source --dest_dir="$install_dir" - -# L'app SvelteKit vit dans le sous-dossier app/ du dépôt. -chown -R "$app:$app" "$install_dir" - -#================================================= -# BUILD THE APP -#================================================= -ynh_script_progression "Installation des dépendances et build de veille-ia..." - -veille_ia_build_app - -#================================================= -# APP CONFIGURATION -#================================================= -ynh_script_progression "Ajout de la configuration de veille-ia..." - -veille_ia_write_env - -#================================================= -# SYSTEM CONFIGURATION -#================================================= -ynh_script_progression "Ajout de la configuration système pour veille-ia..." - -ynh_config_add_nginx - -ynh_config_add_systemd - -yunohost service add "$app" --description="Observatoire de veille sur les modèles IA" - -#================================================= -# START SYSTEMD SERVICE -#================================================= -ynh_script_progression "Démarrage du service systemd de veille-ia..." - -ynh_systemctl --service="$app" --action="start" - -ynh_script_progression "Installation de veille-ia terminée" diff --git a/veille-ia_ynh/scripts/remove b/veille-ia_ynh/scripts/remove deleted file mode 100755 index 66ca397..0000000 --- a/veille-ia_ynh/scripts/remove +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -source _common.sh -source /usr/share/yunohost/helpers - -ynh_script_progression "Suppression de la configuration système de veille-ia..." - -# Les ressources (user, dossiers, port, nodejs, permissions) sont déprovisionnées -# automatiquement par le cœur après ce script. Le data_dir est conservé sauf --purge. - -if ynh_hide_warnings yunohost service status "$app" >/dev/null; then - yunohost service remove "$app" -fi -ynh_config_remove_systemd - -ynh_config_remove_nginx - -ynh_script_progression "Suppression de veille-ia terminée" diff --git a/veille-ia_ynh/scripts/restore b/veille-ia_ynh/scripts/restore deleted file mode 100755 index 6d06bff..0000000 --- a/veille-ia_ynh/scripts/restore +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -source ../settings/scripts/_common.sh -source /usr/share/yunohost/helpers - -#================================================= -# RESTORE THE APP MAIN DIRECTORY -#================================================= -ynh_script_progression "Restauration du dossier principal de veille-ia..." - -# Les ressources (user, dossiers, port, nodejs) sont re-provisionnées par le cœur -# AVANT ce script. $domain, $path, $install_dir, $data_dir… sont rechargés. -ynh_restore "$install_dir" -chown -R "$app:$app" "$install_dir" - -#================================================= -# RE-BUILD THE APP -#================================================= -ynh_script_progression "Réinstallation des dépendances et build de veille-ia..." - -# Le build restauré est régénéré proprement (version de node, sous-chemin). -veille_ia_build_app - -veille_ia_write_env - -#================================================= -# RESTORE THE DATA DIRECTORY -#================================================= -ynh_script_progression "Restauration du dossier de données de veille-ia..." - -ynh_restore "$data_dir" -chown -R "$app:$app" "$data_dir" - -#================================================= -# RESTORE SYSTEM CONFIGURATIONS -#================================================= -ynh_script_progression "Restauration de la configuration système de veille-ia..." - -ynh_restore "/etc/nginx/conf.d/$domain.d/$app.conf" - -ynh_restore "/etc/systemd/system/$app.service" -systemctl enable "$app.service" --quiet - -yunohost service add "$app" --description="Observatoire de veille sur les modèles IA" - -#================================================= -# RELOAD NGINX AND START THE APP -#================================================= -ynh_script_progression "Rechargement de nginx et démarrage de veille-ia..." - -ynh_systemctl --service="$app" --action="start" -ynh_systemctl --service=nginx --action=reload - -ynh_script_progression "Restauration de veille-ia terminée" diff --git a/veille-ia_ynh/scripts/upgrade b/veille-ia_ynh/scripts/upgrade deleted file mode 100755 index 499115e..0000000 --- a/veille-ia_ynh/scripts/upgrade +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash - -source _common.sh -source /usr/share/yunohost/helpers - -#================================================= -# STOP SYSTEMD SERVICE -#================================================= -ynh_script_progression "Arrêt du service systemd de veille-ia..." - -ynh_systemctl --service="$app" --action="stop" - -#================================================= -# ENSURE DOWNWARD COMPATIBILITY -#================================================= -ynh_script_progression "Vérification des paramètres de veille-ia..." - -# Token d'alertes : créé à l'install ; le régénère si absent (installs anciennes). -if [ -z "${alerts_token:-}" ]; then - alerts_token="$(ynh_string_random 48)" - ynh_app_setting_set --key=alerts_token --value="$alerts_token" -fi - -#================================================= -# UPGRADE SOURCE FILES -#================================================= -ynh_script_progression "Mise à jour des fichiers de veille-ia..." - -# Un backup de sécurité a déjà été réalisé par le cœur. Remplacement complet : -# le .env est régénéré juste après depuis les settings persistants. -ynh_setup_source --dest_dir="$install_dir" --full_replace - -chown -R "$app:$app" "$install_dir" - -#================================================= -# RE-BUILD THE APP -#================================================= -ynh_script_progression "Installation des dépendances et build de veille-ia..." - -veille_ia_build_app - -#================================================= -# UPDATE APP CONFIGURATION -#================================================= -ynh_script_progression "Mise à jour de la configuration de veille-ia..." - -veille_ia_write_env - -#================================================= -# UPDATE SYSTEM CONFIGURATION -#================================================= -ynh_script_progression "Mise à jour de la configuration système pour veille-ia..." - -ynh_config_add_nginx - -ynh_config_add_systemd - -yunohost service add "$app" --description="Observatoire de veille sur les modèles IA" - -#================================================= -# START SYSTEMD SERVICE -#================================================= -ynh_script_progression "Démarrage du service systemd de veille-ia..." - -ynh_systemctl --service="$app" --action="start" - -ynh_script_progression "Mise à jour de veille-ia terminée" diff --git a/veille-ia_ynh/tests.toml b/veille-ia_ynh/tests.toml deleted file mode 100644 index 3a50838..0000000 --- a/veille-ia_ynh/tests.toml +++ /dev/null @@ -1,7 +0,0 @@ -#:schema https://raw.githubusercontent.com/YunoHost/apps/main/schemas/tests.v1.schema.json - -test_format = 1.0 - -# Le minimum suffit : les tests (install.root, install.subdir, backup_restore, -# upgrade, change_url…) sont déduits automatiquement du manifest. -[default]