169 lines
6.5 KiB
Markdown
169 lines
6.5 KiB
Markdown
---
|
|
title: PG Back Web
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, database, postgresql, backup, go, beginner]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Database, https://github.com/eduardolat/pgbackweb]
|
|
---
|
|
|
|
# 🗄️ PG Back Web
|
|
|
|
> **Les sauvegardes PostgreSQL sans la douleur** : une web UI minimaliste pour programmer, superviser et restaurer vos dumps Postgres. Plus simple que `pg_dump` en cron, plus visible que les scripts maisons.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Champ | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | (GitHub) |
|
|
| **GitHub** | [eduardolat/pgbackweb](https://github.com/eduardolat/pgbackweb) |
|
|
| **License** | MIT |
|
|
| **Langage** | Go (backend) + TypeScript / Svelte (frontend) |
|
|
| **Étoiles GitHub** | 2,5k ⭐ |
|
|
| **Catégorie** | [[cat-database\|Database]] |
|
|
| **Public** | Débutants à intermédiaires |
|
|
|
|
## 📝 Description
|
|
|
|
**PG Back Web** est une **interface web dédiée aux sauvegardes PostgreSQL**. Le projet se positionne comme une alternative moderne à `pg_dump` + cron : au lieu de bricoler un script et de surveiller des logs en clair, vous avez une UI qui liste les bases, programme les dumps, et permet de restaurer en un clic.
|
|
|
|
- ✅ **Découverte automatique des bases** : connectez votre Postgres, l'app détecte les bases
|
|
- ✅ **Planification flexible** : cron-like, granularité à la minute
|
|
- ✅ **Sauvegardes locales et S3** : disque local, MinIO, AWS S3, Backblaze B2, etc.
|
|
- ✅ **Restauration en un clic** : depuis l'UI, sélectionnez un dump, choisissez la base cible
|
|
- ✅ **Rétention configurable** : combien de dumps garder, par base
|
|
- ✅ **Compression** : gzip/zstd automatique
|
|
- ✅ **Notifications** : email, Discord, Slack, Telegram (en cas d'échec)
|
|
- ✅ **API REST** : tout est scriptable
|
|
- ✅ **Multi-instances** : sauvegardez plusieurs serveurs Postgres depuis une seule UI
|
|
- ✅ **Authentification intégrée** : multi-utilisateurs
|
|
- ✅ **Léger** : binaire Go unique, faible empreinte mémoire
|
|
|
|
**Public cible** : **les devs et petites équipes qui self-hostent du Postgres** et qui veulent une solution de backup **visible et self-hosted** sans payer pganalyze / pgBackRest manager. Très bon choix si vous n'avez pas 10 instances : simple, rapide à mettre en place, et bien plus lisible qu'un cron obscur.
|
|
|
|
## 🚀 Installation
|
|
|
|
### Docker Compose
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: '3.8'
|
|
services:
|
|
pgbackweb:
|
|
image: eduardolat/pgbackweb:latest
|
|
container_name: pgbackweb
|
|
restart: unless-stopped
|
|
environment:
|
|
PBW_ENCRYPTION_KEY: change-me-32-bytes-base64
|
|
PBW_POSTGRES_HOST: postgres
|
|
PBW_POSTGRES_PORT: 5432
|
|
PBW_POSTGRES_USER: pgbackweb
|
|
PBW_POSTGRES_PASSWORD: change-me
|
|
PBW_POSTGRES_DB: pgbackweb
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
volumes:
|
|
- pgbackweb-data:/app/data
|
|
- pgbackweb-backups:/app/backups
|
|
ports:
|
|
- "8085:8085"
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.pgbackweb.rule=Host(`pgback.example.com`)"
|
|
- "traefik.http.routers.pgbackweb.entrypoints=websecure"
|
|
- "traefik.http.routers.pgbackweb.tls.certresolver=letsencrypt"
|
|
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
container_name: pgbackweb-db
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: pgbackweb
|
|
POSTGRES_PASSWORD: change-me
|
|
POSTGRES_DB: pgbackweb
|
|
volumes:
|
|
- pgbackweb-pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U pgbackweb"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
volumes:
|
|
pgbackweb-data:
|
|
pgbackweb-backups:
|
|
pgbackweb-pgdata:
|
|
```
|
|
|
|
### Bare-metal (Go)
|
|
|
|
```bash
|
|
git clone https://github.com/eduardolat/pgbackweb.git
|
|
cd pgbackweb
|
|
go build -o pgbackweb ./cmd/pgbackweb
|
|
./pgbackweb
|
|
```
|
|
|
|
## ⚙️ Configuration Initiale
|
|
|
|
1. **Accéder à l'UI** : `http://IP:8085` (ou via votre reverse-proxy)
|
|
2. **Créer le compte admin** : premier lancement, on vous demande un email + mot de passe
|
|
3. **Ajouter une instance Postgres à sauvegarder** : menu "Servers" → "New" → host, port, user, password, base à découvrir
|
|
4. **Créer un plan de backup** : choisissez la base, la fréquence (cron), la destination (local, S3), la rétention
|
|
5. **Tester un dump manuel** : bouton "Run now" pour vérifier que tout fonctionne
|
|
6. **Restaurer** : sélectionnez un dump dans la liste → "Restore" → choisissez la base cible
|
|
|
|
## 🔄 Alternatives
|
|
|
|
### Open Source
|
|
|
|
- [[app-portabase]] — Backup multi-bases (Postgres, MySQL, Mongo)
|
|
- [[app-velld]] — Backup multi-bases avec planification
|
|
- **pgBackRest** — Le standard bare-metal pour Postgres, sans UI web
|
|
- **wal-g** — Alternative orientée cloud (S3, GCS)
|
|
- **Barman** — Solution de backup enterprise par 2ndQuadrant
|
|
|
|
### Comparaison PG Back Web vs autres
|
|
|
|
| Critère | PG Back Web | pgBackRest | Portabase | Velld |
|
|
| :--- | :--- | :--- | :--- | :--- |
|
|
| **Interface web** | ✅ | ❌ (CLI) | ✅ | ✅ |
|
|
| **SGBD supportés** | Postgres | Postgres | Multi | Multi |
|
|
| **Installation** | 5 min | 30 min | 5 min | 5 min |
|
|
| **Granularité cron** | ✅ | ✅ | ✅ | ✅ |
|
|
| **Restauration UI** | ✅ | Partielle | ✅ | ✅ |
|
|
| **S3 / cloud** | ✅ | ✅ | ✅ | ✅ |
|
|
| **Poids** | Léger | Natif | Léger | Léger |
|
|
|
|
**Verdict** : PG Back Web est **le meilleur choix si vous ne gérez que du Postgres** et que vous voulez une UI simple. Pour du multi-bases, Portabase ou Velld sont plus adaptés.
|
|
|
|
### Propriétaires (ce que PG Back Web remplace)
|
|
|
|
- **pganalyze** (SaaS, plan gratuit limité)
|
|
- **pgBackRest Manager** (interface payante autour de pgBackRest)
|
|
- **Cloud SQL automated backups** (si vous migrez vers du managé)
|
|
|
|
## 🔐 Sécurité
|
|
|
|
- **`PBW_ENCRYPTION_KEY`** : clé de chiffrement des credentials stockés — **ne jamais la perdre**, et la garder hors du repo Git
|
|
- **Ne jamais exposer PG Back Web publiquement** : c'est un outil d'admin, gardez-le derrière un VPN (cf. [[securisation-home-lab]]) ou derrière une auth SSO
|
|
- **HTTPS obligatoire** : passez par [[app-traefik]] avec un certificat valide
|
|
|
|
## 📚 Ressources
|
|
|
|
- [GitHub eduardolat/pgbackweb](https://github.com/eduardolat/pgbackweb)
|
|
- [Documentation officielle](https://pgbackweb.evolutio.pt/)
|
|
- [Démo live](https://demo.pgbackweb.evolutio.pt/)
|
|
|
|
## Pages Liées
|
|
|
|
- [[cat-database]] — Catégorie Database
|
|
- [[app-traefik]] — Reverse-proxy HTTPS
|
|
- [[recettes-docker-compose]] — Templates Docker Compose
|
|
- [[securisation-home-lab]] — Sécuriser l'accès aux interfaces d'admin
|
|
- [[app-portainer]] — Gestion des containers Docker
|
|
- [[app-dockge]] — Alternative UI à Portainer
|