---
tags: [note vps infrastructure synthese public, Infra]
type: "note"
nature: documentation
ressource: true
univers: PERSO
date: "[[01_JOURNAL/2026/2026-11-03]]"
priority: 15
description: "Version anonymisée et diffusable de la synthèse serveur, pour un public externe."
projects:
  - [[03_PROJETS/VPS-IA]]
---
# Architecture d'un serveur VPS-IA personnel — synthèse publique diffusable

> Vue d'ensemble d'un serveur personnel autohébergé, centré IA : plateforme, pile
> OpenCode + SilverBullet, services autohébergés, automatisation, sécurité et sauvegardes.
> Version **anonymisée et diffusable** de la note de synthèse interne (2026-11-03).

## 1. Plateforme & matériel

| Élément | Valeur |
|---|---|
| Nom | `<domaine-principal>` (anonymisé) |
| Hébergeur | VPS sur VM KVM (OpenStack, kernel cloud) |
| OS | Debian 12 (bookworm), kernel 6.1 LTS cloud |
| Distrib' | YunoHost (portail, SSO) |
| CPU | 6 vCPU Intel (Haswell) |
| RAM | 11,4 Gio (≈54 % en usage typique) + swap 4 Gio |
| Disque | 99 Go, 64 % occupé |
| Fuseau | **UTC** (conversion nécessaire vers le fuseau local de l'utilisateur) |
| 2e serveur | VPS secondaire (Debian 12 / YunoHost) — supervisé par un agent dédié |

## 2. Pile IA — le cœur

### OpenCode (service système)
- Utilisateur système dédié, HOME dédié.
- Démarré par un service systemd qui injecte les secrets depuis le coffre **pass**
  à l'exécution ; serveur local (loopback).
- **Bonne pratique** : redémarrer via systemd, jamais via la commande interne du service.
- Config structurée (servers MCP, compaction automatique du contexte, policies + permissions).
- Agents définis dans SilverBullet (source de vérité), synchronisés localement.

### Accès aux LLM — OpenRouter
- **OpenRouter** = fournisseur LLM principal (accès unifié à de nombreux modèles, sans API native).
- Modèles accessibles aussi via un **modèle local** (Ollama) pour certains usages.
- Clé API stockée dans le coffre **pass**, injectée à l'exécution (jamais en clair).
- **Suivi des coûts/tokens en local** (calcul à partir de la base de données des
  sessions, sans requêter d'API) — permet de maîtriser la consommation.

### Serveurs MCP configurés
| Serveur | Rôle |
|---|---|
| SilverBullet (MCP) | lecture/écriture de l'espace de notes |
| Grist | base de données relationnelle (tables, suivi) |
| Excalidraw | diagrammes (canvas live + génération) |
| Draw.io | schémas `.drawio`, exports PNG/SVG |

### SilverBullet — PKM & source de vérité
- **PKM (Personal Knowledge Management)** : second cerveau — notes, journal,
  templates, requêtes de recherche (SLIQ), pages projets.
- **Source de vérité** des skills, agents et documentation.
- Les skills/agents se modifient **dans SilverBullet**, puis sont synchronisés
  vers le système (script dédié — les copies locales seraient écrasées sinon).
- Accès aux fichiers via une API dédiée (token long, jamais en clair).
- **Recherche sémantique locale** (BM25 + vecteurs) : 100 % local, zéro token API.

## 3. Mémoire multi-niveaux (S / M / L)

- **S (mémoire vive)** : fichiers mémoire par agent + commun, budget limité chacun.
- **M (rappels)** : base SQLite des sessions — historique de toutes les conversations.
- **L (long terme)** : page de consolidation, remplie par un script déterministe
  (zéro token), consultation ciblée par domaine.

## 4. Services autohébergés (YunoHost)

- **Données / perso** : cloud de fichiers, synchronisation, gestionnaire de mots de
  passe, lecture différée, blog, forge git, messagerie collaborative.
- **Collaboratif / bureautique** : suite documentaire, base relationnelle, poste
  distant, client Matrix, automatisation (Node-RED).
- **Messagerie** : serveur mail complet (SMTP, IMAP, anti-spam, signatures).
- **Suivi / infra** : modèle LLM local (Ollama), notifications (ntfy), anti-intrusion
  (fail2ban), synchronisation, et une petite API maison exposée.

## 5. Automatisation (crontab — fuseau UTC)

| Horaire (UTC) | Tâche | Rôle |
|---|---|---|
| 02:30 j | indexation | mise à jour de la recherche sémantique |
| 03:20 j | contrôle santé | supervision du service OpenCode |
| 03:25 j | coûts/tokens | calcul de consommation |
| 03:30 j | backup | sauvegarde de la base de sessions |
| 04:00 dim | purge | nettoyage des espaces de travail fermés |
| 18:00 ven | consolidation | fusion mémoire vive → long terme |
| @reboot | relance | reprise après redémarrage |

> Piège sécurité connu : **`at` recopie toutes les variables d'environnement en clair**
> dans sa file d'attente → préférer `crontab` (env minimal) ou un script qui lit les
> secrets du coffre à l'exécution.

## 6. Sécurité & secrets

- **Secrets** : coffre `pass` (source de vérité) ; récupération sécurisée via scripts d'accès.
- **Règle** : jamais afficher un secret en clair ; injection via substitution shell.
- **Policies dures (deny)** : effacement de disque, formatage, réinitialisation du boot,
  `git push --force`…
- **Permissions « à confirmer » (`ask`)** : suppression récursive de dossiers système,
  édition des clés SSH et du coffre.
- **Sandboxing** : isolation du service (systemd hardening) — avec ajustement connu
  pour ne pas casser sudo/crontab.
- **Alertes SSH en temps réel** via notifications push (déclenchées à l'authentification).
- **Espaces de travail OpenCode** : restent sur disque après la session → purge
  hebdomadaire, uniquement sur les sessions **fermées**.

## 7. État courant & recommandations

- Disque à 64 % : sous contrôle, à surveiller.
- Swap partiellement utilisé : surveillance de la RAM à garder.
- Connexion SSH par clé configurée.

## 8. Agents IA (pour l'usage)

Deux **agents primaires** dialoguent avec l'utilisateur :

| Agent | Rôle | Garde-fous |
|---|---|---|
| **Agent admin** (défaut) | Administration serveur & OpenCode : supervision, logs, statut services, installation, dépannage, monitoring | Exécute des commandes système ; **accès refusé** aux outils données/diagrammes |
| **Agent PKM** | Second cerveau : gestion des données personnelles via PKM, base relationnelle, diagrammes ; automatisation des flux | **accès refusé** aux commandes `sudo` |

Chaque agent a sa mémoire vive et charge des compétences (skills) au besoin.

## 9. Brique d'authentification — SSO YunoHost

- **SSO YunoHost** = authentification centralisée en amont des applications web.
- Les pages non authentifiées sont redirigées vers l'écran de connexion ; l'accès
  applicatif se fait via token (Bearer).
- Toutes les applications exposées passent par ce SSO.

## 10. Alertes & sauvegardes

- **ntfy** (notifications pub/sub, local) : alertes SSH/authentification, anomalies,
  notifications du service IA — déclenchées via scripts/compétences.
- **pCloud** (cloud externe) : **sauvegardes** quotidiennes et hebdomadaires (UTC),
  en plus des sauvegardes locales de la base de sessions.

## Glossaire (noms publics conservés)

- **OpenCode** : client/agent IA open source qui pilote les LLM et les outils.
- **SilverBullet** : éditeur de notes Markdown « wiki personnel », cœur du PKM.
- **YunoHost** : distrib GNU/Linux d'autohébergement (portail + SSO).
- **OpenRouter** : plateforme d'accès unifié à de nombreux modèles de LLM.
- **Grist** : base de données relationnelle open source.
- **MCP** : protocole de connexion entre agents IA et outils/données.
- **ntfy** : service de notifications push (pub/sub).

---
*Document diffusable — toute donnée permettant d'identifier le serveur ou son
propriétaire (noms de domaines, espace de notes, services maison, identifiants
personnels) a été remplacée par des descriptions génériques.*
