feat(infra): add Dokploy LXC 103 and new IIS web domains

- Add LXC 103 Dokploy infrastructure (v0.28.2) with Traefik
- Deploy pdf-qr-app and qr-generator via Dokploy from GitHub
- Configure IIS VM 201: roa-qr and *.roa.romfast.ro wildcard sites
- Add SSL certificates (Let's Encrypt + wildcard DNS challenge)
- Fix Docker Swarm VIP DNS issue with dnsrr endpoint mode
- Document architecture: IIS → Traefik → Dokploy containers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-03-03 15:44:53 +00:00
parent ae325d33b6
commit fcf1e06c66
8 changed files with 770 additions and 6 deletions

View File

@@ -0,0 +1,166 @@
# LXC 103 - Dokploy + Traefik (Control Plane Public)
## Informații Generale
- **CTID:** 103
- **IP:** 10.0.20.167
- **Rol:** Dokploy Control Plane + Traefik routing public
- **Host Proxmox:** pvemini (10.0.20.201)
- **Status:** Running (onboot: enabled)
---
## Arhitectura
LXC 103 este nodul central pentru deployment-ul aplicațiilor publice ROMFAST.
```
Internet → 188.26.14.103 → VM 201 IIS (SSL termination)
*.roa.romfast.ro, roa-qr, dokploy
LXC 103 :443 (Traefik)
├── dokploy.romfast.ro → Dokploy UI :3000
├── roa-qr.romfast.ro → pdf-qr-app container
├── app1.roa.romfast.ro → app1 container
└── app2.roa.romfast.ro → app2 container
```
### De ce app-urile publice stau pe LXC 103
Dokploy instalează Traefik SEPARAT pe fiecare server. Traefik LXC 103 și
Traefik LXC 100 nu comunică între ele. Wildcadul `*.roa.romfast.ro` poate fi
conectat doar la UN singur Traefik — LXC 103.
**LXC 100** se folosește pentru:
- Backend-uri consumate intern (fără DNS public)
- Job-uri cron, workers, servicii administrative
---
## Servicii Instalate
| Serviciu | Port | Descriere |
|----------|------|-----------|
| Dokploy UI | 3000 | Management deployment, CI/CD |
| Traefik | 443 | Routing HTTPS pentru toate app-urile publice |
| Traefik Dashboard | 8080 | Monitoring routelor (intern) |
---
## Domenii Gestionate
| Domeniu | Destinație |
|---------|-----------|
| `dokploy.romfast.ro` | Dokploy UI (port 3000) |
| `roa-qr.romfast.ro` | pdf-qr-app container |
| `*.roa.romfast.ro` | Orice app deployată prin Dokploy |
---
## Setup Inițial
### Pasul 1 — Oprire nginx existent pe LXC 100
> **Executat pe LXC 100** (10.0.20.170) via Portainer terminal sau Proxmox console:
```bash
docker stop docker-nginx-1
docker rm docker-nginx-1
# Verifică porturile sunt libere
ss -tlnp | grep -E ':80|:443'
```
### Pasul 2 — Generare SSH Key în Dokploy + Adăugare LXC 100
**În Dokploy UI** (https://dokploy.romfast.ro):
1. Settings → SSH Keys → **Create SSH Key**
2. Copiază public key-ul generat
**Pe LXC 100** (10.0.20.170):
```bash
echo "ssh-ed25519 AAAA...[cheia copiată din Dokploy]" >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
```
**În Dokploy UI:**
1. Servers → **Add Server**
2. IP: `10.0.20.170`, User: `root`
3. **Test Connection****Setup Server**
4. Verificare: pe LXC 100, `docker ps` → trebuie container Traefik
### Pasul 3 — Deploy pdf-qr-app pe LXC 103
**În Dokploy UI:**
1. Services → **Create Service** → Docker Compose
2. **Server:** LXC 103 (local)
3. Docker Compose: conținutul app-ului pdf-qr (vezi `docs/pdf-qr-app.md`)
4. Domain: `roa-qr.romfast.ro`
5. **Deploy**
---
## Workflow: Adăugare App Nouă
```
1. Dokploy UI → New Service → docker-compose → domain: numeapp.roa.romfast.ro
2. DNS: adaugă numeapp.roa.romfast.ro A 188.26.14.103
(dacă e sub *.roa.romfast.ro, wildcard DNS acoperă automat)
3. SSL: Win-ACME pe VM 201 generează cert dacă nu există wildcard
4. Gata — Traefik pe LXC 103 routează automat
```
---
## Verificare
```bash
# Traefik funcționează (din LAN)
curl -I https://10.0.20.167/
# Dokploy UI accesibil
curl -I https://dokploy.romfast.ro/
# pdf-qr-app accesibil
curl -I https://roa-qr.romfast.ro/
# Test wildcard (după deploy app cu hostname)
curl -I https://app1.roa.romfast.ro/
# LXC 100 Portainer funcționează în continuare
curl -sk https://10.0.20.170:9443/api/status
```
---
## Configurare Traefik (gestionat automat de Dokploy)
Traefik pe LXC 103 este configurat și actualizat automat de Dokploy la fiecare
deploy. Nu modificați manual configurația Traefik fără să înțelegeți impactul.
```bash
# Status containere pe LXC 103
docker ps
# Logs Traefik
docker logs traefik -f
# Verificare routere Traefik
curl http://localhost:8080/api/http/routers | jq .
```
---
## Documentație Asociată
- **Arhitectură completă IIS:** `../vm201-windows/docs/vm201-dokploy-infrastructure.md`
- **Setup IIS VM 201:** `../vm201-windows/scripts/setup-new-iis-sites.ps1`
- **Web.config IIS proxy:** `../vm201-windows/iis-configs/`
- **LXC 100 (Remote Node):** `../lxc100-portainer/README.md` *(de creat)*
---
**Ultima actualizare:** 2026-03-02
**Autor:** Marius Mutu
**Proiect:** ROMFASTSQL - LXC 103 Dokploy

View File

@@ -0,0 +1,87 @@
# pdf-qr-app — Migrare pe Dokploy LXC 103
## Descriere
Aplicație pentru generare PDF cu coduri QR, migrată de pe VM 201 IIS
pe Dokploy/LXC 103 ca serviciu Docker containerizat.
- **Domeniu:** `roa-qr.romfast.ro`
- **Server:** LXC 103 (10.0.20.167)
- **Deployment:** Dokploy → Docker Compose
---
## Deploy în Dokploy UI
### 1. Creare Service
1. Deschide https://dokploy.romfast.ro
2. **Services****Create Service****Docker Compose**
3. Name: `pdf-qr-app`
4. Server: **LXC 103 (local)**
### 2. Docker Compose
Completează cu docker-compose.yml al app-ului:
```yaml
version: "3.8"
services:
pdf-qr-app:
image: <image-pdf-qr>
restart: unless-stopped
environment:
- NODE_ENV=production
labels:
- "traefik.enable=true"
- "traefik.http.routers.pdf-qr.rule=Host(`roa-qr.romfast.ro`)"
- "traefik.http.routers.pdf-qr.tls=true"
- "traefik.http.services.pdf-qr.loadbalancer.server.port=3000"
```
### 3. Domain Configuration
În Dokploy, secțiunea **Domains**:
- Domain: `roa-qr.romfast.ro`
- HTTPS: enabled
- Certificate: managed by Traefik
### 4. Deploy
Click **Deploy** → monitorizează logs
---
## Verificare Post-Deploy
```bash
# Din LAN (direct Traefik)
curl -I https://10.0.20.167/ -H "Host: roa-qr.romfast.ro"
# Public (prin IIS proxy)
curl -I https://roa-qr.romfast.ro/
```
---
## DNS Necesar
```
roa-qr.romfast.ro A 188.26.14.103
```
---
## SSL Certificate (Win-ACME pe VM 201)
```powershell
cd C:\Tools\win-acme
# Găsește Site ID pentru roa-qr
Import-Module WebAdministration
Get-Website | Select-Object ID, Name
# Generează certificat
.\wacs.exe --source iis --siteid <ID_roa-qr> --accepttos --emailaddress admin@romfast.ro
iisreset
```