English documentation : README_EN.md
Copi est une application web auto-hebergee pour planifier, executer et superviser des sauvegardes de bases de donnees.
Ce produit s'adresse aux personnes qui administrent un serveur personnel (NAS, homelab, mini-PC, VPS, serveur local) et qui veulent fiabiliser leurs sauvegardes de bases de donnees sans multiplier les scripts manuels.
Ce projet a aussi ete concu pour un besoin concret sur mon propre serveur: centraliser et automatiser les sauvegardes de plusieurs moteurs de bases de donnees avec une interface simple.
- Utilisateurs de NAS (Synology, QNAP, Unraid, TrueNAS, etc.)
- Admins homelab/self-hosted
- Freelances, petites equipes ou devs qui hebergent leurs propres services
- Toute personne qui veut une interface claire pour les sauvegardes DB
- Gestion des jobs de sauvegarde (creation, edition, suppression)
- Execution manuelle ou planifiee (cron)
- Historique des executions
- Compression des dumps (
NONE,GZIP,ZIP) - Politiques de retention (
NONE,COUNT,DAYS) - Support MySQL, MariaDB, PostgreSQL, MongoDB
- Authentification par session (compte
admin)
- Backend: Java 21, Spring Boot, Spring Security, JPA, SQLite
- Frontend: React, Vite, Tailwind CSS
- Outils de dump:
mysqldump,mariadb-dump,pg_dump,pg_dumpall,mongodump
copi/
|- backend/ # API Spring Boot + logique metier + migrations
|- frontend/ # UI React
|- Dockerfile
|- docker-compose.yml
`- .bash/build.sh # Build frontend -> copie static -> package backend
- Docker
- Docker Compose
- Java 21
- Maven 3.9+
- Node.js 20+ et npm
- Outils de dump installes localement et accessibles dans le
PATH
Depuis la racine du projet:
docker compose up -d --buildApplication disponible sur:
Identifiants par defaut:
- utilisateur:
admin - mot de passe:
copi(viaCOPI_ADMIN_PASSWORDdansdocker-compose.yml)
Arret:
docker compose downDepuis backend/:
./mvnw spring-boot:run -Dspring-boot.run.profiles=devSous Windows PowerShell:
.\mvnw.cmd spring-boot:run "-Dspring-boot.run.profiles=dev"Backend expose par defaut sur http://localhost:8080.
Depuis frontend/:
npm install
npm run devFrontend disponible sur http://localhost:5173.
Le proxy Vite redirige /api vers http://localhost:8080.
Le script .bash/build.sh:
- Build le frontend (
npm run build) - Copie
frontend/distdansbackend/src/main/resources/static - Package le backend (
mvn clean package -DskipTests)
Commande:
bash .bash/build.shVariables principales:
SPRING_PROFILES_ACTIVE(devouprod)COPI_ADMIN_PASSWORD(mot de passe admin)MASTER_KEY(cle de chiffrement interne)SERVER_PORT(port backend, defaut8080)SESSION_TIMEOUT(minutes, defaut30)SPRING_DATASOURCE_URL(defautjdbc:sqlite:/config/copi.db)APP_BACKUP_DIR(defaut/app/backups)MYSQLDUMP_PATH,MARIADUMP_PATH,PGDUMP_PATH,PGDUMPALL_PATH,MONGODUMP_PATH
En Docker, ces variables sont preconfigurees dans docker-compose.yml.
POST /api/login: connexionPOST /api/logout: deconnexionGET /api/auth/check: verification de sessionGET /api/session/config: timeout de sessionGET /api/jobs: liste des jobsPOST /api/jobs: creation d'un jobPUT /api/jobs/{id}: mise a jour d'un jobDELETE /api/jobs/{id}: suppression d'un jobPOST /api/jobs/{id}/start: execution manuelleGET /api/executions: historique globalGET /api/executions/{jobId}: historique d'un job
- Metadonnees applicatives SQLite:
- local:
backend/data/copi.db - docker: bind mount
./backend/config:/configvers/config/copi.db
- local:
- Fichiers de sauvegarde:
- local:
backend/backups/ - docker: volume
copi_backupsmonte sur/app/backups
- local:
- Changer au minimum:
COPI_ADMIN_PASSWORDMASTER_KEY
- Proteger l'acces reseau (VPN, reverse proxy, firewall)
- Verifier regulierement la restauration des dumps
- Sur NAS, monter un stockage persistant dedie aux sauvegardes