Construire une plateforme de gestion de fichiers complète — upload, authentification, analytics, sécurité fail2ban et déploiement Docker.
On part du repo GitHub et on arrive à une app qui tourne en local avec un utilisateur admin prêt à l'emploi.
git clone https://github.com/williamloree/OpenFiler.git
cd OpenFiler
npm installcp .env.example .env
openssl rand -base64 32Coller la clé générée dans .env :
BETTER_AUTH_SECRET=votre-clé-générée-ici
BETTER_AUTH_URL=http://localhost:3000
BETTER_AUTH_TRUSTED_ORIGINS=http://localhost:3000
DATABASE_URL=./openfiler.db
NEXT_PUBLIC_APP_URL=http://localhost:3000npx @better-auth/cli@latest migrate --config lib/auth/server.tsCette commande crée toutes les tables nécessaires à Better Auth dans openfiler.db. Les tables métier (fichiers, corbeille, analytics, sécurité) sont créées au premier démarrage via instrumentation.ts.
npm run devOuvrir http://localhost:3000. Next.js redirige automatiquement vers /login si aucune session n'est active.
Identifiants par défaut :
admin@openfiler.localadmin1234OpenFiler/
├── app/
│ ├── api/ ← toutes les routes API (upload, files, auth...)
│ ├── dashboard.tsx ← application principale (Client Component)
│ ├── login/ ← page de connexion
│ └── share/[token]/ ← accès public aux fichiers partagés
├── components/ ← UI (sidebar, tableau, modals, toasts)
├── lib/
│ ├── auth/ ← config Better Auth (server + client)
│ ├── seed.ts ← création des tables + user par défaut
│ └── ... ← upload, corbeille, partage, analytics
├── instrumentation.ts ← hook Next.js, exécuté au démarrage serveur
└── middleware.ts ← bloque la route /signupinstrumentation.ts est le point d'entrée côté serveur — c'est là que les tables sont créées et que le seed est lancé. On verra ça en détail dans le chapitre sur la base de données.