# Hoppscotch Self-Hosted Fork interne de Hoppscotch pour déploiement self-host. ## Contenu - App web : `packages/hoppscotch-selfhost-web` - Backend NestJS et Prisma : `packages/hoppscotch-backend` - Admin : `packages/hoppscotch-sh-admin` - Image Docker multi-target : `prod.Dockerfile` - Compose dev live : `docker-compose.yml` - Compose prod image-only : `docker-compose.prod.yml` ## Images Docker Les images sont buildées en local puis poussées à la main sur le registry. Images utilisées en prod : ```text forge.lclr.dev/thibaud-lclr/api-client-backend:latest forge.lclr.dev/thibaud-lclr/api-client-app:latest forge.lclr.dev/thibaud-lclr/api-client-sh-admin:latest ``` Targets Docker : ```text backend -> backend + Caddy backend app -> app web + webapp-server + Caddy app sh_admin -> admin + Caddy admin ``` ## Préparer l'environnement Créer `.env` si besoin : ```sh make ensure-env ``` Variables importantes : ```env POSTGRES_PASSWORD= POSTGRES_DB=hoppscotch DATA_ENCRYPTION_KEY= VITE_BASE_URL=https:// VITE_SHORTCODE_BASE_URL=https:// VITE_ADMIN_URL=https:// VITE_BACKEND_GQL_URL=https:///graphql VITE_BACKEND_WS_URL=wss:///graphql VITE_BACKEND_API_URL=https:///v1 WHITELISTED_ORIGINS=https://,https:// TRUST_PROXY=true ``` Pour le compose prod local, ces variables pilotent les images : ```env API_CLIENT_REGISTRY=forge.lclr.dev API_CLIENT_NAMESPACE=thibaud-lclr API_CLIENT_IMAGE_PREFIX=api-client API_CLIENT_TAG=latest ``` ## Build et push registry Se connecter au registry : ```sh docker login forge.lclr.dev ``` Builder les trois images en `latest` : ```sh make docker-build-images TAG=latest ``` Pousser les trois images : ```sh make docker-push-images TAG=latest ``` Faire les deux en une commande : ```sh make docker-build-push-images TAG=latest ``` Pour publier un tag de test : ```sh make docker-build-push-images TAG=fork-v1.0.0 ``` ## Déploiement prod La prod utilise uniquement `docker-compose.prod.yml`. Ce compose ne contient pas de `build:`. Il tire les images du registry. Démarrer avec le tag `latest` : ```sh make prod-up ``` Démarrer avec un autre tag : ```sh make prod-up TAG=fork-v1.0.0 ``` Voir les logs : ```sh make prod-logs ``` Voir l'état des services : ```sh make prod-ps ``` Arrêter : ```sh make prod-down ``` Services prod : - `hoppscotch-db` : PostgreSQL 15 avec volume persistant - `hoppscotch-backend` : backend + migrations Prisma au démarrage - `hoppscotch-app` : app web self-host - `hoppscotch-sh-admin` : admin Ports prod : - `3000` : app web - `3100` : admin - `3170` : backend - `3200` : serveur de bundles webapp ## Développement local Le compose dev est `docker-compose.yml`. Il build une image de base locale et monte le repo en volume. Démarrer : ```sh make dev-up ``` Alias : ```sh make up ``` Voir les logs : ```sh make dev-logs ``` Voir l'état : ```sh make dev-ps ``` Arrêter : ```sh make dev-down ``` Services dev : - `hoppscotch-db` - `hoppscotch-dev-deps` : installe les dépendances dans un volume Docker - `hoppscotch-backend` : `pnpm run start:dev` - `hoppscotch-app` : Vite sur `3000` - `hoppscotch-sh-admin` : Vite sur `3100` Volumes dev : - le repo est monté dans `/usr/src/app` - `node_modules` est dans un volume Docker - le store pnpm est dans un volume Docker ## Procédure de release courte 1. Mettre à jour le code. 2. Vérifier localement. 3. Builder et pousser : ```sh make docker-build-push-images TAG=latest ``` 4. Déployer : ```sh make prod-up ``` 5. Contrôler : ```sh make prod-ps make prod-logs ```