202 lines
7.1 KiB
Markdown
202 lines
7.1 KiB
Markdown
# 🖥️ Guide de l'application desktop (Tauri)
|
|
|
|
ObsiGate Desktop est une application native construite avec
|
|
[Tauri](https://tauri.app/) (Rust + webview système). Elle embarque le backend
|
|
Python et le frontend dans un exécutable autonome — **zéro Docker, zéro ligne de
|
|
commande**.
|
|
|
|
> **Public :** tous les utilisateurs · **Statut :** version 2.x, binaires en
|
|
> cours de stabilisation (build depuis les sources recommandé)
|
|
> **Fiche technique :** [`features/desktop-tauri.md`](../features/desktop-tauri.md) ·
|
|
> **Checklist E2E :** [`DESKTOP_E2E_CHECKLIST.md`](../DESKTOP_E2E_CHECKLIST.md)
|
|
|
|
---
|
|
|
|
## 1. Fonctionnalités natives
|
|
|
|
| Fonctionnalité | Web | Desktop |
|
|
|---|---|---|
|
|
| Accès fichiers local | Via upload | Natif (sélecteur de dossier) |
|
|
| Thème système | Manuel | Auto (suit l'OS clair/sombre) |
|
|
| Notifications | Service Worker | Natif OS |
|
|
| Association `.md` | ❌ | ✅ « Ouvrir avec ObsiGate » |
|
|
| Icône de barre des tâches (tray) | ❌ | ✅ |
|
|
| Auto-update | ❌ | ✅ (vérifie les releases Gitea) |
|
|
| Mode hors-ligne | Limité | Complet (backend local) |
|
|
|
|
---
|
|
|
|
## 2. Téléchargement des binaires
|
|
|
|
Les releases sont publiées sur
|
|
[Gitea](https://git.dracodev.net/Projets/ObsiGate/releases) :
|
|
|
|
| Plateforme | Formats |
|
|
|---|---|
|
|
| **Linux** | `.deb` + `.AppImage` |
|
|
| **Windows** | `.msi` + `.exe` (NSIS) |
|
|
|
|
### Linux
|
|
|
|
```bash
|
|
# .deb (Debian / Ubuntu / Deepin)
|
|
sudo dpkg -i obsigate_2.0.0_amd64.deb
|
|
# Lancer : ObsiGate depuis le menu applications, ou `obsigate-desktop`
|
|
|
|
# .AppImage (toute distribution)
|
|
chmod +x ObsiGate_2.0.0_amd64.AppImage
|
|
./ObsiGate_2.0.0_amd64.AppImage
|
|
```
|
|
|
|
### Windows
|
|
|
|
```cmd
|
|
:: Double-cliquer sur ObsiGate_2.0.0_x64.msi (ou le setup NSIS)
|
|
:: Ou lancer ObsiGate depuis le menu Démarrer
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Démarrage
|
|
|
|
1. **Lancez l'application** depuis le menu ou la ligne de commande.
|
|
2. Le backend Python démarre automatiquement sur `127.0.0.1:17890`
|
|
(splash « Démarrage… » pendant le boot).
|
|
3. La fenêtre s'ouvre et charge l'interface ObsiGate.
|
|
4. **Premier lancement** : sélectionnez le dossier de vos vaults Obsidian via le
|
|
sélecteur natif.
|
|
5. Pour fermer : icône tray → **Quitter** (arrêt propre du backend).
|
|
|
|
---
|
|
|
|
## 4. Construire depuis les sources
|
|
|
|
Guide détaillé : [`desktop/README.md`](../../desktop/README.md).
|
|
|
|
### 4.1 Prérequis communs
|
|
|
|
| Outil | Version | Installation |
|
|
|---|---|---|
|
|
| Rust (cargo) | ≥ 1.75 | `rustup` |
|
|
| Tauri CLI | ≥ 2.0 | `cargo install tauri-cli` |
|
|
| Git | — | — |
|
|
| Dépendances système Linux | — | `sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev` |
|
|
|
|
> **Important — staging :** `tauri.conf.json` embarque `backend/**` et
|
|
> `frontend/**` **depuis le dossier `desktop/`**. Les scripts de build copient
|
|
> automatiquement `../backend` et `../frontend` dans `desktop/` avant
|
|
> `cargo tauri build`. Sans ce staging, le build échoue avec
|
|
> « glob pattern backend/**/* path not found ».
|
|
|
|
### 4.2 Windows — `build-windows.bat`
|
|
|
|
```cmd
|
|
REM Prérequis (via Scoop) : rustup, curl, git
|
|
scoop install rustup curl git
|
|
rustup default stable
|
|
cargo install tauri-cli
|
|
|
|
cd desktop
|
|
build-windows.bat
|
|
```
|
|
|
|
Étapes du script :
|
|
|
|
1. Tue les processus Python résiduels (`taskkill /F /IM python.exe`).
|
|
2. Télécharge **Python 3.11 embed** (python.org) → `desktop\python-embed\` +
|
|
active pip (`python311._pth`).
|
|
3. `pip install -r ..\backend\requirements.txt` dans l'embed.
|
|
4. **Staging** : copie `..\backend` et `..\frontend` dans `desktop\`.
|
|
5. `cargo tauri build --target x86_64-pc-windows-msvc --bundles nsis`.
|
|
6. Copie `python-embed` à côté de l'exécutable pour le mode dev local.
|
|
7. Nettoie les dossiers stagés.
|
|
|
|
→ **Artefact :** `desktop\target\x86_64-pc-windows-msvc\release\bundle\nsis\ObsiGate_2.0.0_x64-setup.exe`
|
|
|
|
### 4.3 Linux — `build-linux.sh`
|
|
|
|
```bash
|
|
cd desktop
|
|
chmod +x build-linux.sh
|
|
./build-linux.sh
|
|
```
|
|
|
|
Étapes du script :
|
|
|
|
1. Vérifie Rust + Tauri CLI, installe les dépendances système (apt).
|
|
2. Crée un venv `desktop/python-embed/venv` + `pip install -r ../backend/requirements.txt`.
|
|
3. **Staging** : copie `../backend` et `../frontend` dans `desktop/`.
|
|
4. `cargo tauri build --target x86_64-unknown-linux-gnu --bundles deb,appimage`.
|
|
5. Copie le runtime (`python-embed/`, `backend/`, `frontend/`) à côté de l'exécutable.
|
|
|
|
→ **Artefacts :**
|
|
|
|
- `desktop/target/x86_64-unknown-linux-gnu/release/bundle/deb/obsigate_2.0.0_amd64.deb`
|
|
- `desktop/target/x86_64-unknown-linux-gnu/release/bundle/appimage/ObsiGate_2.0.0_amd64.AppImage`
|
|
|
|
---
|
|
|
|
## 5. Builds CI/CD automatiques
|
|
|
|
Le workflow [`.gitea/workflows/desktop-build.yml`](../../.gitea/workflows/desktop-build.yml)
|
|
construit les binaires desktop à chaque push sur `main` touchant `desktop/**`,
|
|
`frontend/**` ou `backend/**` (et manuellement via `workflow_dispatch`), sur des
|
|
**runners self-hosted** :
|
|
|
|
| Job | Runner | Artefacts (30 jours) |
|
|
|---|---|---|
|
|
| `build-windows` | `[self-hosted, windows, desktop]` | `desktop/target/release/bundle/msi/*.msi` |
|
|
| `build-linux` | `[self-hosted, linux, desktop]` | `*.AppImage` + `*.deb` |
|
|
|
|
Les artefacts sont téléchargeables depuis la page **Actions** du run Gitea ; la
|
|
publication en **Gitea Release** est prévue sur les tags `v*`.
|
|
|
|
---
|
|
|
|
## 6. Architecture desktop
|
|
|
|
```
|
|
┌────────────────────────────────────────────┐
|
|
│ Tauri (Rust) │
|
|
│ ├─ Webview (webview système) │
|
|
│ │ └─ Frontend (HTML/JS/CSS) │
|
|
│ └─ Sidecar Python │
|
|
│ └─ uvicorn backend.main:app │
|
|
│ └─ port 127.0.0.1:17890 │
|
|
└────────────────────────────────────────────┘
|
|
```
|
|
|
|
Cycle de vie : Tauri spawn le backend Python → health check → splash → webview.
|
|
À la fermeture : arrêt propre du backend (SIGTERM / kill).
|
|
|
|
---
|
|
|
|
## 7. Mises à jour
|
|
|
|
L'application vérifie les **releases Gitea** et propose la mise à jour (updater
|
|
Tauri signé). Le manifeste `latest.json` est généré automatiquement.
|
|
|
|
> La **signature de code Windows** n'est pas retenue (pas de certificat) : le
|
|
> binaire peut déclencher un avertissement SmartScreen. Alternatives possibles :
|
|
> SignPath.io (OSS gratuit), Certum OSS, Azure Trusted Signing, certificat EV.
|
|
|
|
---
|
|
|
|
## 8. Logs & dépannage
|
|
|
|
Les logs du backend sont écrits dans :
|
|
|
|
- **Windows** : `%APPDATA%\ObsiGate\logs\backend.log`
|
|
- **Linux** : `~/.config/obsigate/logs/backend.log`
|
|
|
|
| Symptôme | Piste |
|
|
|---|---|
|
|
| « Backend ne répond pas » | Vérifier le port `17890` (conflit) et relancer |
|
|
| Build « glob pattern backend/**/* not found » | Le staging n'a pas été fait — utiliser les scripts fournis |
|
|
| Le sélecteur de dossier ne s'ouvre pas | Permissions système / dialogue natif bloqué |
|
|
| Fenêtre blanche | Consulter `backend.log` ; le backend a peut-être échoué au boot |
|
|
| Mise à jour non proposée | Vérifier la connectivité aux releases Gitea |
|
|
|
|
Voir aussi [Prise en main](./PRISE_EN_MAIN.md) et
|
|
[Authentification & sécurité](./AUTHENTIFICATION_SECURITE.md).
|