# 🚨 GUIDE DE RESTAURATION COMPLET – MATSRVR.CC

**Serveur :** Hetzner CX33 (167.233.56.76)  
**Domaine :** matsrvr.cc  
**Stockage :** Hetzner Storage Box BX11 (1 To)  
**Dernière mise à jour :** 2026-09-12

---

## 🔍 AVANT DE COMMENCER

### Vérifier que la Storage Box est montée

```bash
mount | grep /srv/storage/hetzner
```

Si rien ne s'affiche :

```bash
sudo systemctl start storagebox-sshfs
sudo systemctl status storagebox-sshfs
```

---


### Restaurer Immich

```bash
cd /srv/apps/immich

# 1. Arrêter Immich
sudo docker compose stop immich-server

# 2. Restaurer la dernière sauvegarde
LATEST=$(ls -t /srv/storage/hetzner/backups/postgres/immich/immich_*.sql.gz | head -1)
sudo docker exec -i immich_postgres psql -U postgres -d immich < <(gunzip -c "$LATEST")

# 3. Redémarrer Immich
sudo docker compose start immich-server

# 4. Vérifier
sudo docker logs immich_server --tail 20
```


```bash


# 2. Restaurer la dernière sauvegarde


# 4. Vérifier
```

---

## ⚙️ 2. RESTAURER LES CONFIGURATIONS (Caddy, Docker, systemd)

```bash
# Récupérer la dernière sauvegarde de config
LATEST_CONFIG=$(ls -td /srv/storage/hetzner/backups/config/*/ | head -1)

# Restaurer Caddy
sudo cp "$LATEST_CONFIG/Caddyfile" /etc/caddy/
sudo systemctl reload caddy

# Restaurer Immich
sudo cp "$LATEST_CONFIG/immich-compose.yml" /srv/apps/immich/docker-compose.yml
sudo cp "$LATEST_CONFIG/immich-env" /srv/apps/immich/.env


# Restaurer DeGoog
sudo cp "$LATEST_CONFIG/degoog-env" /srv/apps/degoog/.env
sudo cp -r "$LATEST_CONFIG/degoog-data" /srv/apps/degoog/data

# Restaurer AMUD
sudo cp "$LATEST_CONFIG/amud-env" /srv/apps/amud-dashboard/.env
sudo cp -r "$LATEST_CONFIG/amud-data" /srv/apps/amud-dashboard/data

# Restaurer systemd (Storage Box)
sudo cp "$LATEST_CONFIG/storagebox-sshfs.service" /etc/systemd/system/
sudo systemctl daemon-reload
```

---

## 🐳 3. RECONSTRUIRE LES CONTENEURS DOCKER

Si les conteneurs ont été supprimés ou corrompus :

```bash
# Immich
cd /srv/apps/immich
sudo docker compose up -d

sudo docker compose up -d

# DeGoog
cd /srv/apps/degoog
sudo docker compose up -d

# AMUD
cd /srv/apps/amud-dashboard
sudo docker compose up -d

# Hoodik
cd /srv/apps/hoodik
sudo docker compose up -d

# Vaultwarden
cd /srv/apps/vaultwarden
sudo docker compose up -d

# PairDrop
cd /srv/apps/pairdrop
sudo docker compose up -d

# Uptime Kuma
Bcd /srv/apps/uptime-kuma
sudo docker compose up -d

# Vérifier
sudo docker ps
```

---

## 📁 4. RESTAURER LES FICHIERS (Photos / Documents)

Si les fichiers ont été perdus sur la Storage Box :

```bash
# Vérifier les backups manuels

# Restaurer les fichiers

```

---

## 🛟 5. RESTAURATION COMPLÈTE (AUTOMATIQUE)

Un script fait tout en une fois :

```bash
sudo /srv/scripts/restore-all.sh
```

Il restaure :
- Configurations Caddy / compose / .env
- Redémarre les services

---

## 🔐 6. RESTAURER TAILSCALE (VPN)

Si tu utilises Tailscale pour l'accès SSH, voici comment le réinstaller :

```bash
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
```

L'IP Tailscale du serveur sera réaffichée. Note-la dans le README.

---

## 🔑 6.1. RESTAURER L'ACCÈS SSH

L'accès SSH se fait **uniquement par clé** (mot de passe désactivé).

### Connexion

```bash
ssh matadmin@167.233.56.76
```

⚠️ On utilise l'**IP directe** (`167.233.56.76`) et non le domaine `matsrvr.cc`, car le domaine est proxied par Cloudflare (ou pas configuré pour SSH).

### Clé utilisée

- **Clé privée :** `id_ed25519` sur le PC de Mateo (protégée par une passphrase)
- **Sauvegarde :** La clé privée est stockée dans un **gestionnaire de mots de passe**

### Restauration de l'accès SSH

1. Récupérer la clé privée depuis le gestionnaire de mots de passe
2. La placer dans `~/.ssh/id_ed25519` sur le PC
3. Définir les permissions :

```bash
chmod 600 ~/.ssh/id_ed25519
```

4. Se connecter :

```bash
ssh matadmin@167.233.56.76
```

### Si la clé est perdue

1. Accéder au serveur via la **console Hetzner** (VNC)
2. Ajouter une nouvelle clé publique dans `~/.ssh/authorized_keys`
3. Se reconnecter avec la nouvelle clé

---

## 🔄 7. RESTAURER LES LABELS AMUD

Les labels Docker sont dans les `docker-compose.yml` respectifs. Si tu les as perdus, voici les labels à ajouter :

### Immich (`immich-server`)
```yaml
labels:
  - "amud.enable=true"
  - "amud.name=Immich"
  - "amud.url=https://photos.matsrvr.cc"
  - "amud.icon=immich"
```

```yaml
labels:
  - "amud.enable=true"
  - "amud.url=https://cloud.matsrvr.cc"
```

### DeGoog (`degoog`)
```yaml
labels:
  - "amud.enable=true"
  - "amud.name=DeGoog"
  - "amud.url=https://search.matsrvr.cc"
  - "amud.icon=search"
```

# Hoodik
cd /srv/apps/hoodik
sudo docker compose up -d

# Vaultwarden
cd /srv/apps/vaultwarden
sudo docker compose up -d

# PairDrop
cd /srv/apps/pairdrop
sudo docker compose up -d

### Hoodik (`hoodik`)
```yaml
labels:
  - "amud.enable=true"
  - "amud.name=Hoodik"
  - "amud.url=https://hoodik.matsrvr.cc"
  - "amud.icon=cloud"
```

### Vaultwarden (`vaultwarden`)
```yaml
labels:
  - "amud.enable=true"
  - "amud.name=Vaultwarden"
  - "amud.url=https://vault.matsrvr.cc"
  - "amud.icon=lock"
```

### PairDrop (`pairdrop`)
```yaml
labels:
  - "amud.enable=true"
  - "amud.name=PairDrop"
  - "amud.url=https://drop.matsrvr.cc"
  - "amud.icon=share"
```

### Uptime Kuma (`uptime-kuma`)
```yaml
labels:
  - "amud.enable=true"
  - "amud.name=Uptime Kuma"
  - "amud.url=https://status.matsrvr.cc"
  - "amud.icon=monitoring"
```

---

## 🔄 8. RESTAURER AUTOHEAL

Autoheal redémarre automatiquement les conteneurs `unhealthy`.

```bash
mkdir -p /srv/apps/autoheal
cd /srv/apps/autoheal
sudo tee docker-compose.yml > /dev/null <<'EOF'
services:
  autoheal:
    image: willfarrell/autoheal:latest
    container_name: autoheal
    restart: always
    environment:
      - AUTOHEAL_CONTAINER_LABEL=all
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
EOF
sudo docker compose up -d

---

## 🛟 8.1. RESTAURER LES DONNÉES DEPUIS OVH

Si tu dois restaurer les données depuis OVH Object Storage :

```bash
# Lister les fichiers disponibles
rclone ls ovhcloud-eu-west-par:mat-backup/immich/ | head

# Restaurer Immich (photos)
rclone sync ovhcloud-eu-west-par:mat-backup/immich/ /srv/storage/hetzner/immich/ --progress


# Restaurer les backups PostgreSQL
rclone sync ovhcloud-eu-west-par:mat-backup/backups/ /srv/storage/hetzner/backups/ --progress

# Restaurer Vaultwarden (CRITIQUE - mots de passe)
rclone sync ovhcloud-eu-west-par:mat-backup/vaultwarden/ /srv/apps/vaultwarden/vw-data/ --progress

# Restaurer Hoodik (cloud chiffré)

# Restaurer FreeDrive
rclone sync ovhcloud-eu-west-par:mat-backup/freedrive/ /srv/apps/freedrive/data/ --progress
rclone sync ovhcloud-eu-west-par:mat-backup/hoodik/ /srv/apps/hoodik/data/ --progress

⚠️ Note : Avant de restaurer depuis OVH, assure-toi que la Storage Box est bien montée.

---

## ✅ 9. VÉRIFICATIONS POST-RESTAURATION

### Vérifier que les services répondent

```bash
curl -I https://photos.matsrvr.cc
curl -I https://cloud.matsrvr.cc
curl -I https://status.matsrvr.cc
curl -I https://search.matsrvr.cc
curl -I https://home.matsrvr.cc
curl -I https://docs.matsrvr.cc
```

### Vérifier que Docker tourne

```bash
sudo docker ps
```

### Vérifier la Storage Box

```bash
ls -la /srv/storage/hetzner/immich/
```

### Vérifier Atlas

```bash
atlas monitor
```

### Vérifier Tailscale

```bash
sudo tailscale status
```

---

## 📌 COMMANDES UTILES (RAPPEL)

| Commande | Utilité |
|----------|---------|
| `systemctl list-timers \| grep backup` | Voir les backups programmés |
| `ls -lth /srv/storage/hetzner/backups/postgres/immich/` | Derniers backups Immich |
| `sudo docker logs immich_server --tail 50` | Logs Immich |
| `sudo docker logs degoog --tail 50` | Logs DeGoog |
| `sudo docker logs amud_app --tail 50` | Logs AMUD |
| `sudo journalctl -u caddy -n 30` | Logs Caddy |
| `sudo systemctl status storagebox-sshfs` | Statut Storage Box |

### Timers importants

| Timer | Fréquence | Action |
|-------|-----------|--------|
| `backup-immich-db.timer` | Quotidienne | Backup PostgreSQL Immich |
| `atlas-backup.timer` | Quotidienne | Backup configurations |
| `cleanup.timer` | Hebdomadaire | Nettoyage |
| `atlas-monitor.timer` | 5 minutes | Monitoring |
| `atlas-check.timer` | Quotidienne | Check santé |
| `rclone-backup.timer` | Quotidienne | Synchro hors-site OVH |

---

## 📁 OÙ SONT LES BACKUPS ?

| Donnée | Emplacement |
|--------|-------------|
| Immich DB | `/srv/storage/hetzner/backups/postgres/immich/` |
| Configurations | `/srv/storage/hetzner/backups/config/` |
| Photos Immich | `/srv/storage/hetzner/immich/` |
| Hors-site OVH | `ovhcloud-eu-west-par:mat-backup` |
| Documentation | `/srv/www/docs/RESTAURATION.md` |

---

## 🧠 CONSEILS

- **Toujours avoir une sauvegarde récente** : les backups sont faits tous les jours à 00:00.
- **Tester une restauration** : une fois par mois, lance une restauration sur un serveur de test.
