Client web léger pour le projet Popcorn, basé sur Astro + Preact.
Il se connecte à un serveur Popcorn distant (projet popcorn-server) via une API HTTP.
Cette application :
- ✅ Affiche l’interface utilisateur (Astro + Preact)
- ✅ Communique avec le serveur Popcorn via API REST
- ✅ Gère l’authentification et les tokens JWT
- ✅ Chiffre/déchiffre certaines métadonnées côté client
- ❌ Ne contient pas de logique BitTorrent (torrents, indexers, streaming)
- ❌ Ne contient pas de backend intégré
Toute la logique métier est dans le dépôt popcorn-server.
Ce scénario déploie client + serveur avec Docker en utilisant le dépôt popcorn-server.
- Cloner les dépôts dans le même dossier parent :
cd /chemin/vers/vos-projets
git clone https://github.com/USERNAME/popcorn-server.git
git clone https://github.com/USERNAME/popcorn-client.git- Se placer dans le dossier
popcorn-server/docker:
cd popcorn-server/docker- Créer les répertoires de données (côté serveur) :
mkdir -p ../data/.data ../data/downloads ../data/transcode_cache- (Optionnel) Créer un fichier
.envà côté dedocker-compose.ymlpour configurer quelques variables :
PUBLIC_BACKEND_URL=http://192.168.1.10:3000 # URL du backend vue par les navigateurs
API_USERNAME=admin
API_PASSWORD=motdepasse-solide
TZ=Europe/Paris
PUID=1000
PGID=1000- Lancer la stack :
docker compose -f docker-compose.yml up -d- Interface web :
http://localhost:4325(ou l’IP/port de votre machine) - API backend :
http://localhost:3000
Pour le détail fin de la configuration Docker (volumes, reverse proxy, etc.), voir la documentation de
popcorn-server.
Si vous avez déjà un backend Popcorn accessible publiquement (Docker, serveur dédié, NAS…), vous pouvez déployer ce client indépendamment.
-
Prérequis :
- Node.js 20+
- npm
-
Installer les dépendances :
npm install- Créer un fichier
.envà la racine :
# URL publique de votre backend Popcorn
PUBLIC_SERVER_URL=http://votre-backend:3000- Builder le site :
npm run build- Déployer le contenu du dossier
dist/sur votre hébergeur statique (Vercel, Netlify, nginx, etc.).
Le dépôt fournit un Dockerfile (dossier docker/) qui construit une image nginx servant le build Astro.
Depuis la racine du dépôt :
docker build -f docker/Dockerfile -t popcorn-client .
docker run -d \
-p 8080:80 \
-e PUBLIC_BACKEND_URL=http://votre-backend:3000 \
--name popcorn-client \
popcorn-client- Interface web :
http://localhost:8080
- Installer les dépendances :
npm install- Créer un fichier
.env:
PUBLIC_SERVER_URL=http://localhost:3000- Lancer le mode développement :
npm run devPar défaut, l’interface sera disponible sur http://localhost:4326 (voir package.json).
popcorn-client/
├── docs/ # Documentation utilisateur / technique
├── docker/ # Dockerfile, nginx.conf, entrypoint pour le client
├── scripts/ # Scripts internes (CI, outils dev, etc.)
├── src-tauri/ # Configuration Tauri (usage interne, non documenté ici)
├── src/
│ ├── lib/
│ ├── components/
│ └── pages/
└── package.json
- Authentification : JWT (access + refresh tokens)
- Chiffrement : certaines métadonnées sensibles sont chiffrées côté client (WebCrypto)
- Stockage local : utilisation de
localStoragepour les tokens et préférences
- Configuration des variables d’environnement :
docs/README-ENV.md - Déploiement Docker complet (client + serveur) : voir la documentation de
popcorn-server