feat: Add Linux deployment scripts and server logs view

- Add deployment/linux/ with deploy.sh for deploying from Claude-Agent LXC to Windows server
- Add ServerLogsView.vue for viewing server logs from frontend
- Add shared/routes/system.py for system health endpoints
- Update CLAUDE.md with quick deploy instructions
- Improve Windows deployment scripts (ROA2WEB-Console.ps1)
- Fix OCR service validation and worker pool improvements
- Update environment config examples
- Various script permission and startup fixes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-01-04 00:26:36 +00:00
parent 495790411f
commit 02a8c8682c
39 changed files with 1939 additions and 80 deletions

215
deployment/linux/README.md Normal file
View File

@@ -0,0 +1,215 @@
# ROA2WEB Linux Deployment
Deploy ROA2WEB to Windows IIS production server from Linux/LXC (claude-agent).
## Quick Deploy (TLDR)
```bash
# Din orice director ROA2WEB (main, worktree, sau branch):
# Exemple locații posibile:
# /workspace/roa2web # clone principal
# /workspace/.worktrees/roa2web/fix/fix-bon # worktree pentru fix
# /workspace/.worktrees/roa2web/feature/xxx # worktree pentru feature
# Deploy complet (frontend + backend)
./deployment/linux/deploy.sh
# Doar frontend
./deployment/linux/deploy.sh frontend
# Doar backend
./deployment/linux/deploy.sh backend
# Test conexiune SSH
./deployment/linux/deploy.sh test
```
**După deploy**: Serverul face auto-deploy în maxim 5 minute (scheduled task).
## Current Setup (claude-agent LXC)
SSH-ul este **deja configurat** pe acest LXC:
```bash
# Verificare conexiune (ar trebui să funcționeze direct)
ssh roa2web-prod "echo OK"
```
**Configurare existentă** (`~/.ssh/config`):
```
Host roa2web-prod
HostName 10.0.20.36
Port 22122
User romfast
IdentityFile ~/.ssh/roa2web_deploy
```
## Prerequisites
1. **Node.js 16+** - pentru build frontend
2. **SSH access** - deja configurat pe claude-agent LXC
## First-Time Setup (doar dacă SSH nu funcționează)
### 1. Generate SSH Key
```bash
ssh-keygen -t ed25519 -f ~/.ssh/roa2web_deploy -C "roa2web-deploy-lxc"
```
### 2. Configure SSH Host
Add to `~/.ssh/config`:
```
Host roa2web-prod
HostName 10.0.20.36
Port 22122
User romfast
IdentityFile ~/.ssh/roa2web_deploy
IdentitiesOnly yes
StrictHostKeyChecking accept-new
```
### 3. Add Public Key to Server
Copy the content of `~/.ssh/roa2web_deploy.pub`:
```bash
cat ~/.ssh/roa2web_deploy.pub
```
On Windows server (via RDP or SSH):
1. Connect: `ssh romfast@10.0.20.36 -p 22122`
2. Add key to `C:\Users\romfast\.ssh\authorized_keys`
### 4. Test Connection
```bash
ssh roa2web-prod "echo OK"
```
## Usage
```bash
cd /workspace/.worktrees/roa2web/fix/fix-bon
# Full deployment (frontend + backend)
./deployment/linux/deploy.sh
# Frontend only
./deployment/linux/deploy.sh frontend
# Backend only
./deployment/linux/deploy.sh backend
# Test SSH connection
./deployment/linux/deploy.sh test
```
## How It Works
```
[LXC] npm run build → dist/
Package: deploy-package-TIMESTAMP/
├── frontend/
├── backend/
├── shared/
└── scripts/
SCP → C:\Temp\deploy-TIMESTAMP\
[Server] Check-And-Deploy.ps1 (scheduled task, every 5 min)
Auto-deploy to C:\inetpub\wwwroot\roa2web\
```
## Server Configuration
| Setting | Value |
|---------|-------|
| Host | 10.0.20.36 |
| SSH Port | 22122 |
| User | romfast |
| Remote Path | C:\Temp |
| Install Path | C:\inetpub\wwwroot\roa2web |
| Logs Path | C:\inetpub\wwwroot\roa2web\logs |
| **Scripts Path** | **C:\TEMP\ROA2WEB-Scripts** |
### Permanent Scripts Location
Scripturile de deploy (`Check-And-Deploy.ps1`, `ROA2WEB-Console.ps1`) rulează din:
```
C:\TEMP\ROA2WEB-Scripts\
```
**IMPORTANT**: Când modifici scripturile, trebuie să le copiezi și aici:
```bash
# După deploy.sh, copiază scripturile actualizate în locația permanentă:
ssh roa2web-prod "powershell -Command \"Copy-Item -Path 'C:\\Temp\\deploy-*\\scripts\\*.ps1' -Destination 'C:\\TEMP\\ROA2WEB-Scripts\\' -Force\""
```
### What Deploy Preserves
Deploy-ul păstrează automat (NU le șterge):
- **`.env`** - Configurația mediului (credențiale, setări)
- **`data/`** - Directorul cu baze de date SQLite:
- `data/receipts/receipts_prod.db` - Bonuri fiscale
- `data/telegram/telegram_prod.db` - Sesiuni Telegram
- `data/cache/` - Cache SQLite
- `data/receipts/uploads/` - Fișiere uploadate
## Production Logs
```bash
# View backend stderr (errors)
ssh roa2web-prod "powershell -Command \"Get-Content 'C:\\inetpub\\wwwroot\\roa2web\\logs\\backend-stderr.log' -Tail 100\""
# View backend stdout (info logs)
ssh roa2web-prod "powershell -Command \"Get-Content 'C:\\inetpub\\wwwroot\\roa2web\\logs\\backend-stdout.log' -Tail 100\""
# Filter OCR errors
ssh roa2web-prod "powershell -Command \"Get-Content 'C:\\inetpub\\wwwroot\\roa2web\\logs\\backend-stderr.log' -Tail 200\"" | grep -i ocr
```
## Troubleshooting
### SSH Connection Failed
```bash
# Check SSH config
cat ~/.ssh/config
# Test with verbose output
ssh -v roa2web-prod "echo test"
# Check if key exists
ls -la ~/.ssh/roa2web_deploy*
```
### Build Failed
```bash
# Check Node.js version
node --version
# Reinstall dependencies
rm -rf node_modules
npm install
```
### Transfer Failed
```bash
# Test SCP manually
scp test.txt roa2web-prod:C:/Temp/
# Check Windows firewall (port 22122)
```
## Related Documentation
- [Windows Deployment](../windows/docs/WINDOWS_DEPLOYMENT.md)
- [Two-Tier IIS Architecture](../windows/docs/TWO-TIER-IIS-DEPLOYMENT.md)
- [ROA2WEB Console](../windows/scripts/ROA2WEB-Console.ps1)