ObsiGate/README.md
2026-03-21 09:52:44 -04:00

4.2 KiB

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

# 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 :

    - /chemin/local/vers/vault:/vaults/MaVault:ro
    
  2. Ajoutez les variables d'environnement :

    - VAULT_6_NAME=MaVault
    - VAULT_6_PATH=/vaults/MaVault
    
  3. Redémarrez :

    docker-compose up -d
    

Build multi-platform

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