# ROA2WEB Scripts - Secrets Management

## Backup & Restore Environment Secrets

Aceste script-uri ajută la backup-ul securizat (criptat) al fișierelor `.env` și `.env.prod` care conțin credențiale sensibile.

### 🔐 Backup Secrets

**Creează backup criptat cu AES256:**

```bash
./scripts/backup-secrets.sh
```

**Ce face:**
- Găsește toate fișierele `.env` și `.env.prod`
- Le criptează cu GPG (AES256)
- Le salvează în `secrets-backup/YYYY-MM-DD_HH-MM-SS/`
- Creează README cu instrucțiuni

**Rezultat:**
```
secrets-backup/
└── 2025-01-15_14-30-00/
    ├── .env.gpg
    ├── .env.prod.gpg
    └── README.md
```

**Notă:** Vei fi rugat să introduci o parolă pentru criptare. **Salvează această parolă în gestionar de parole!**

### 🔓 Restore Secrets

**Restaurează din backup criptat:**

```bash
# Restaurează din ultimul backup
./scripts/restore-secrets.sh

# Restaurează din backup specific
./scripts/restore-secrets.sh 2025-01-15_14-30-00
```

**Ce face:**
- Decriptează fișierele .gpg din backup
- Le plasează înapoi în locațiile originale
- backend/.env
- backend/.env.prod
- backend/modules/telegram/.env
- backend/modules/telegram/.env.prod

**Notă:** Vei fi rugat să introduci parola de decriptare.

## 🗂️ Opțiuni de Salvare a Backup-urilor

### Opțiunea 1: Commit în Git (Recomandat)

Fișierele `.gpg` sunt criptate și pot fi comise în siguranță:

```bash
# Creează backup
./scripts/backup-secrets.sh

# Adaugă în git
git add secrets-backup/
git commit -m "Add encrypted secrets backup"
git push
```

**Avantaje:**
- Sincronizat automat cu remote
- Versioning complet
- Acces de pe orice mașină
- Sigur (criptat cu parolă)

**Dezavantaje:**
- Trebuie să ții minte parola

### Opțiunea 2: Backup Local (Doar Local)

Păstrează backup-urile doar pe mașina locală:

```bash
# Decomentează în .gitignore:
# secrets-backup/

# Copiază backup-urile pe USB/cloud manual
cp -r secrets-backup /mnt/usb/roa2web-secrets-backup
```

### Opțiunea 3: Gestionar de Parole

**Pentru backup manual rapid:**

```bash
# Copiază conținutul și salvează în Bitwarden/1Password
cat backend/.env
cat backend/.env.prod
cat backend/modules/telegram/.env
cat backend/modules/telegram/.env.prod
```

## 🔒 Best Practices

1. **Rulează backup înaintea deployment-ului:**
   ```bash
   ./scripts/backup-secrets.sh
   git add secrets-backup/
   git commit -m "Backup secrets before deployment"
   ```

2. **Salvează parola de criptare în gestionar de parole:**
   - Bitwarden: Secure Note "ROA2WEB GPG Backup Password"
   - 1Password: Document "ROA2WEB Secrets Password"
   - LastPass: Secure Note

3. **Testează restore periodic:**
   ```bash
   # Backup
   ./scripts/backup-secrets.sh

   # Șterge temporar
   mv backend/.env backend/.env.backup

   # Restore
   ./scripts/restore-secrets.sh

   # Verifică
   diff backend/.env backend/.env.backup
   ```

4. **Pentru echipă:**
   - Partajează parola GPG în gestionar de parole partajat
   - Sau folosește chei GPG separate pentru fiecare membru

## 🚨 Troubleshooting

### "gpg: decryption failed: Bad session key"
- Parola introdusă este greșită
- Verifică în gestionar de parole

### "No such file or directory"
- Asigură-te că rulezi script-ul din root-ul proiectului:
  ```bash
  cd /path/to/roa2web
  ./scripts/backup-secrets.sh
  ```

### "gpg: command not found"
```bash
# Ubuntu/Debian
sudo apt-get install gnupg

# Windows WSL
sudo apt-get install gnupg
```

## 📋 Alternative de Backup

### 1. Manual GPG (un fișier):
```bash
gpg --symmetric --cipher-algo AES256 backend/.env
# Rezultat: .env.gpg
```

### 2. Tar + GPG (toate odată):
```bash
tar -czf - backend/**/.env* | gpg --symmetric --cipher-algo AES256 > secrets-backup.tar.gz.gpg
```

### 3. Ansible Vault:
```bash
ansible-vault encrypt backend/.env.prod
```

## 📝 Deployment pe Windows Server

Pentru deployment pe Windows, copiază fișierele `.env.prod`:

```bash
# Linux/WSL -> Windows Server

# 1. Creează backup local
./scripts/backup-secrets.sh

# 2. Copiază backup-ul pe server Windows
scp -r secrets-backup/latest/ administrator@server-ip:C:/temp/

# 3. Pe server Windows, decriptează:
gpg --decrypt .env.prod.gpg > C:\inetpub\wwwroot\roa2web\backend\.env.prod
gpg --decrypt .env.prod.gpg > C:\inetpub\wwwroot\roa2web\telegram-bot\.env.prod
```

## 🔗 Vezi și

- `.gitignore` - Pattern-uri pentru .env files
- `DEPLOYMENT_GUIDE.md` - Deployment production
- `deployment/windows/docs/WINDOWS_DEPLOYMENT.md` - Windows deployment
