7.1 KiB
🖥️ Guide de l'application desktop (Tauri)
ObsiGate Desktop est une application native construite avec Tauri (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· Checklist E2E :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 :
| Plateforme | Formats |
|---|---|
| Linux | .deb + .AppImage |
| Windows | .msi + .exe (NSIS) |
Linux
# .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
:: Double-cliquer sur ObsiGate_2.0.0_x64.msi (ou le setup NSIS)
:: Ou lancer ObsiGate depuis le menu Démarrer
3. Démarrage
- Lancez l'application depuis le menu ou la ligne de commande.
- Le backend Python démarre automatiquement sur
127.0.0.1:17890(splash « Démarrage… » pendant le boot). - La fenêtre s'ouvre et charge l'interface ObsiGate.
- Premier lancement : sélectionnez le dossier de vos vaults Obsidian via le sélecteur natif.
- Pour fermer : icône tray → Quitter (arrêt propre du backend).
4. Construire depuis les sources
Guide détaillé : 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.jsonembarquebackend/**etfrontend/**depuis le dossierdesktop/. Les scripts de build copient automatiquement../backendet../frontenddansdesktop/avantcargo tauri build. Sans ce staging, le build échoue avec « glob pattern backend/**/* path not found ».
4.2 Windows — build-windows.bat
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 :
- Tue les processus Python résiduels (
taskkill /F /IM python.exe). - Télécharge Python 3.11 embed (python.org) →
desktop\python-embed\+ active pip (python311._pth). pip install -r ..\backend\requirements.txtdans l'embed.- Staging : copie
..\backendet..\frontenddansdesktop\. cargo tauri build --target x86_64-pc-windows-msvc --bundles nsis.- Copie
python-embedà côté de l'exécutable pour le mode dev local. - 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
cd desktop
chmod +x build-linux.sh
./build-linux.sh
Étapes du script :
- Vérifie Rust + Tauri CLI, installe les dépendances système (apt).
- Crée un venv
desktop/python-embed/venv+pip install -r ../backend/requirements.txt. - Staging : copie
../backendet../frontenddansdesktop/. cargo tauri build --target x86_64-unknown-linux-gnu --bundles deb,appimage.- 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.debdesktop/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
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 et Authentification & sécurité.