veza/docs/REMOTE_DEV_R720.md

176 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Développement Veza sur R720 (Remote-SSH)
Guide pour développer Veza sur le serveur Dell PowerEdge R720 depuis un laptop via Cursor Remote-SSH. Le laptop devient un terminal léger ; tout le compute (Docker, tests, builds) tourne sur le R720.
## Prérequis
- R720 initialisé selon le guide (Debian 13, WireGuard, nftables, Suricata, Incus)
- Cursor installé sur le laptop
- Connexion SSH vers le R720 (`Host r720` dans `~/.ssh/config`)
## Phase 1 — Installation sur le R720
### 1.1 Docker
```bash
# Sur le R720 (en SSH)
sudo apt update && sudo apt install -y docker.io docker-compose-plugin
sudo usermod -aG docker senke
# Reconnecter pour activer le groupe : exit && ssh r720
```
### 1.2 Outils de développement
- **Node.js** (20+) : `nvm` ou `sudo apt install nodejs npm`
- **Go** (1.22+) : `sudo apt install golang-go` ou [go.dev/dl](https://go.dev/dl)
- **Rust** : `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`
- **Optionnel** : `air` (hot reload Go), `cargo-watch` (hot reload Rust)
### 1.3 Cloner le projet
```bash
mkdir -p ~/git
cd ~/git
git clone <url-du-repo> veza
cd veza
```
## Phase 2 — Configuration des variables d'environnement
### 2.1 Racine du projet
```bash
cp env.remote-r720.example .env
```
Le fichier `env.remote-r720.example` contient `APP_DOMAIN=localhost` et les URLs localhost pour le port forwarding Cursor.
### 2.2 Frontend (apps/web)
```bash
cp apps/web/env.remote-r720.example apps/web/.env
# ou apps/web/.env.local
```
### 2.3 Backend (veza-backend-api)
Le backend charge son `.env` depuis `veza-backend-api/`. Créez-le avec les mêmes valeurs :
```bash
cat > veza-backend-api/.env << 'EOF'
APP_DOMAIN=localhost
DATABASE_URL=postgres://veza:devpassword@localhost:15432/veza?sslmode=disable
REDIS_URL=redis://localhost:16379
RABBITMQ_URL=amqp://veza:devpassword@localhost:15672/
CORS_ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3000
JWT_SECRET=dev-secret-key-minimum-32-characters-long
EOF
```
### 2.4 Stream server (veza-stream-server)
Si vous lancez le stream server en local, créez `veza-stream-server/.env` avec :
```
DATABASE_URL=postgres://veza:devpassword@localhost:15432/veza?sslmode=disable
REDIS_URL=redis://localhost:16379
```
## Phase 3 — Connexion Cursor Remote-SSH
### 3.1 SSH config (laptop)
Vérifiez `~/.ssh/config` :
```
Host r720
HostName 192.168.0.102
User senke
IdentityFile ~/.ssh/r720
ServerAliveInterval 60
```
### 3.2 Accès distant (hors LAN)
- **Sur le LAN** : SSH vers `192.168.0.102`
- **Hors LAN** : activez WireGuard sur le laptop, puis SSH. Si le VPN ne route pas `192.168.0.0/24`, ajoutez cette plage dans `AllowedIPs` du client WireGuard.
### 3.3 Connexion Cursor
1. `Ctrl+Shift+P` → "Remote-SSH: Connect to Host"
2. Choisir `r720`
3. Ouvrir le dossier `/home/senke/git/veza` (ou le chemin réel du clone)
## Phase 4 — Workflow de développement
### 4.1 Démarrage
```bash
# 1. Infra Docker (postgres, redis, rabbitmq, clamav, minio)
make infra-up-dev
# 2. Migrations (si nécessaire)
make db-migrate
# 3. Lancer le dev complet (backend + stream + web avec hot reload)
make dev-full
```
Ou par service :
```bash
make infra-up-dev
make dev-web # frontend seul
make dev-backend-api # backend Go seul
make dev-stream-server # stream Rust seul
```
### 4.2 Port forwarding Cursor
Cursor détecte généralement les serveurs (Vite, etc.) et propose le forwarding. Sinon, vérifiez longlet **Ports** :
| Port | Service |
|-------|--------------|
| 5173 | Vite (web) |
| 18080 | Backend API |
| 18082 | Stream |
| 15432 | PostgreSQL |
| 16379 | Redis |
| 25672 | RabbitMQ UI |
| 6006 | Storybook |
### 4.3 Accès depuis le laptop
- Frontend : http://localhost:5173
- API : http://localhost:18080
- RabbitMQ UI : http://localhost:25672
## Phase 5 — Tests
```bash
# Tous les tests (infra doit être up pour les tests backend)
make test
# Par service
make test-backend-api
make test-stream-server
make test-web
```
## Points dattention
1. **`/etc/hosts`** : Avec `APP_DOMAIN=localhost`, pas besoin de `veza.fr` dans `/etc/hosts` pour le dev remote.
2. **Storybook** : `npm run storybook` dans `apps/web` ; forwarder le port 6006.
3. **Performances** : Édition et indexation via SSH peuvent être plus lentes ; un lien réseau stable (LAN ou VPN) est important.
4. **Incus vs Docker** : Docker pour le dev (postgres, redis, etc.) ; Incus reste pour la prod (veza-api, veza-front, etc. dans net-veza).
## Ordre dexécution recommandé
1. Installer Docker + outils (Node, Go, Rust) sur le R720
2. Cloner le repo dans `~/git/veza`
3. Créer les `.env` : `cp env.remote-r720.example .env` et `cp apps/web/env.remote-r720.example apps/web/.env`
4. Créer `veza-backend-api/.env` (voir Phase 2.3)
5. Tester : `make infra-up-dev` puis `make dev-web`
6. Se connecter en Remote-SSH avec Cursor et ouvrir le dossier
7. Vérifier le port forwarding et laccès à http://localhost:5173
8. Lancer `make dev-full` et valider le flux complet