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:
215
deployment/linux/README.md
Normal file
215
deployment/linux/README.md
Normal 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)
|
||||
Reference in New Issue
Block a user