134 lines
4.2 KiB
Markdown
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*
|