# ObsiGate **Visionneur multi-vault Obsidian ultra-léger** — naviguez, recherchez et lisez vos notes Obsidian depuis n'importe quel appareil via une interface web moderne. ``` ┌─────────────────────────────────────────────────────────┐ │ [🔍 Recherche...] [☀/🌙 Thème] ObsiGate │ ├──────────────┬──────────────────────────────────────────┤ │ SIDEBAR │ CONTENT AREA │ │ ▼ Recettes │ 📄 Titre du fichier │ │ 📁 Soupes │ Tags: #recette #rapide │ │ 📄 Pizza │ [Contenu Markdown rendu] │ │ ▼ IT │ │ │ 📁 Docker │ │ │ Tags Cloud │ │ └──────────────┴──────────────────────────────────────────┘ ``` --- ## Fonctionnalités - **Multi-vault** : visualisez plusieurs vaults Obsidian simultanément - **Navigation arborescente** : parcourez vos dossiers et fichiers dans la sidebar - **Recherche fulltext** : recherche instantanée dans le contenu et les titres - **Tag cloud** : filtrage par tags extraits des frontmatters YAML - **Wikilinks** : les `[[liens internes]]` Obsidian sont cliquables - **Syntax highlight** : coloration syntaxique des blocs de code - **Thème clair/sombre** : toggle persisté en localStorage - **Docker multi-platform** : linux/amd64, linux/arm64, linux/arm/v7, linux/386 - **Lecture seule** : aucune écriture sur vos vaults --- ## Prérequis - **Docker** >= 20.10 - **docker-compose** >= 2.0 --- ## Déploiement rapide ```bash # 1. Build l'image docker build -t obsigate:latest . # 2. Adaptez les volumes dans docker-compose.yml # 3. Lancez docker-compose up -d ``` L'interface est accessible sur **http://localhost:8080** --- ## Variables d'environnement Les vaults sont configurées par paires de variables `VAULT_N_NAME` / `VAULT_N_PATH` (N = 1, 2, 3…) : | Variable | Description | Exemple | |----------|-------------|---------| | `VAULT_1_NAME` | Nom affiché de la vault | `Recettes` | | `VAULT_1_PATH` | Chemin dans le conteneur | `/vaults/Obsidian-RECETTES` | | `VAULT_2_NAME` | Nom affiché de la vault | `IT` | | `VAULT_2_PATH` | Chemin dans le conteneur | `/vaults/Obsidian_IT` | Ajoutez autant de paires `VAULT_N_*` que nécessaire. --- ## Ajouter une nouvelle vault 1. Ajoutez un volume dans `docker-compose.yml` : ```yaml - /chemin/local/vers/vault:/vaults/MaVault:ro ``` 2. Ajoutez les variables d'environnement : ```yaml - VAULT_6_NAME=MaVault - VAULT_6_PATH=/vaults/MaVault ``` 3. Redémarrez : ```bash docker-compose up -d ``` --- ## Build multi-platform ```bash chmod +x build.sh ./build.sh ``` Cela utilise `docker buildx` pour compiler l'image pour : - `linux/amd64` (PC, serveurs) - `linux/arm64` (Raspberry Pi 4, Apple Silicon) - `linux/arm/v7` (Raspberry Pi 3) - `linux/386` (Intel Atom i686) > **Note** : `--load` ne fonctionne qu'en single-platform. Pour du multi-platform, utilisez `--push` vers un registry. --- ## Stack technique - **Backend** : Python 3.11 + FastAPI + Uvicorn - **Frontend** : Vanilla JS + HTML + CSS (zéro framework, zéro build) - **Rendu Markdown** : mistune 3.x - **Image Docker** : python:3.11-alpine (~150MB) - **Pas de base de données** : index en mémoire uniquement --- ## API | Endpoint | Description | |----------|-------------| | `GET /api/vaults` | Liste des vaults configurées | | `GET /api/browse/{vault}?path=` | Navigation dans les dossiers | | `GET /api/file/{vault}?path=` | Contenu rendu d'un fichier .md | | `GET /api/search?q=&vault=&tag=` | Recherche fulltext | | `GET /api/tags?vault=` | Tags uniques avec compteurs | | `GET /api/index/reload` | Force un re-scan des vaults | --- *Projet : ObsiGate | Auteur : Bruno Beloeil | Licence : MIT*