- Delete data-entry-app/ (1.6GB), reports-app/ (447MB), .auto-build-data/
- Saved ~1.4GB disk space (64% reduction: 2.2GB → 845MB)
Updated references across 38 files:
- .claude/rules/ paths: backend/modules/, src/modules/
- .claude/commands/validate.md: all validation paths
- docs/ (13 files): data-entry, telegram, README, CLAUDE.md
- scripts/ (3 files): backup-secrets, restore-secrets, test-docker
- security/ (2 files): git_cleanup, SECURITY_PROCEDURES
- deployment/ & shared/: updated all stale comments
All paths now reflect ultrathin monolith architecture:
- Backend: backend/modules/{reports,data_entry,telegram}/
- Frontend: src/modules/{reports,data-entry}/
- Shared: shared/{auth,database,routes}/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
199 lines
4.5 KiB
Markdown
199 lines
4.5 KiB
Markdown
# 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
|