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

134 lines
4.2 KiB
Markdown

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