# CVN Docker és VPS telepítés

0.3.0 · 2026. október 10.

## Mit telepítünk

Egyetlen Node.js alapú statikus demót: hétképernyős UI, folyamat/use case oldal, Markdown-letöltések. Nincs adatbázis, lánc vagy üzleti háttérszolgáltatás. A konténer nem fogad POST/feltöltési kérést; a kijelölt PDF a látogató böngészőjében marad. A demó nyilvános anyagai kerülnek a VPS-re; titkokat vagy eredeti ügyfélszerződéseket a csomag nem tartalmaz.

## Forrásból építés

A projekt gyökerében:

```sh
node scripts/build-cvn-demo.mjs
docker compose config
docker compose up -d --build
docker compose ps
curl --fail http://localhost:8092/healthz
```

Az alapbeállítás `127.0.0.1:8092`. Publikus szintetikus demóhoz:

```sh
CVN_BIND_ADDRESS=0.0.0.0 docker compose up -d --build
```

A `CVN_HTTP_PORT` állítja a host portját, a konténer mindig 8080-on figyel. Az `.env.example` titkot nem tartalmaz. A `CVN_NODE_IMAGE` felülírható ellenőrzött image-digesttel. A 0.3.0 csomag a VPS-en ellenőrzött hivatalos Node image-et rögzíti digesttel: `node:22-alpine@sha256:0a7108bf6c7bf5de370ffb1a3ed6be93d405b43ff159f681a8d18c0e2bc2e402`. Frissítéskor az új digestet külön teszteld és rögzítsd a Dockerfile, Compose és generátor beállításában.

## Hostinger VPS, önálló Compose-fájllal

A generált `infrastructure/cvn/hostinger.compose.yaml` a teljes bemutatót tartalmazza. A Hostinger Docker Manager YAML-mezője 32 768 karaktert enged, ezért ez a csomag a VPS webkonzolján vagy SSH/SCP-vel fájlként telepítendő; a teljes fájlt ne próbáld a méretkorlátos mezőbe beilleszteni.

1. Build után juttasd a Compose-fájlt a VPS `/docker/cvn-demo/docker-compose.yaml` útvonalára. SSH esetén SCP; a Hostinger Web console felületén idézett heredoc is használható. Ellenőrizd az átvitt fájl SHA-256 lenyomatát.
2. Futtasd: `docker compose -f /docker/cvn-demo/docker-compose.yaml config --quiet`.
3. Indítás: `docker compose -f /docker/cvn-demo/docker-compose.yaml up -d`.
4. Ellenőrzés: `docker compose -f /docker/cvn-demo/docker-compose.yaml ps`, majd `curl --fail http://127.0.0.1:8092/healthz`.

A Compose a tömörített statikus fájlokat a `CVN_STATIC_BUNDLE_BASE64` környezeti változóban hordozza, és ugyanazt az olvasható `server.mjs` kódot futtatja a hivatalos Node image-ben. A base64 szállítási forma, nem titkosítás. Nem kell registry-push, Git-token vagy külső forrásletöltési URL.

A demó külön Compose-projekt és hálózat, nincs Docker socket vagy host-volume csatolva. A 8092 port csak loopbacken érhető el; a nyilvános elérést a domainhez rendelt Nginx biztosítja. Ha foglalt a port, kizárólag ennél a projektnél válassz másikat, és igazítsd a proxy célját.

## Domain és HTTPS

Publikus IP-n HTTP csak a mintaadatokkal végzett bemutatóhoz használható. A WebCrypto PDF-lenyomatképzés HTTPS-t vagy localhostot igényel; HTTP-n a demó ezt jelzi, a mintaokirat teljes folyamata használható. Ne kapcsold ki emiatt a böngésző biztonsági ellenőrzését.

Saját domain esetén DNS a VPS-re, és a választott reverse proxy érvényes TLS-tanúsítvánnyal továbbítson a demó 8080-as belső portjára vagy a loopback 8092-re. A meglévő 80/443-as szolgáltatást előbb azonosítsd; ne telepíts rá másik proxyt ellenőrzés nélkül. Belépés és tenant-védelem előtt csak szintetikus adatot használj; valódi ügyfélpilot az üzleti backend elkészülése után következik.

## Konkrét teszttelepítés — 2026. október 10.

- URL: https://cvn.hyfrey.com; folyamat/use case: `/docs/`; agent-átadó: `/docs/AGENT_HANDOFF.md`.
- DNS: `cvn` A-rekord a `187.124.175.203` VPS-re, TTL 300.
- Compose-projekt: `cvn-demo`; fájl: `/docker/cvn-demo/docker-compose.yaml`; belső elérés: `127.0.0.1:8092`.
- Meglévő rendszer-Nginx proxy; saját vhost: `/etc/nginx/sites-available/cvn-demo`, aktív link: `/etc/nginx/conf.d/cvn-demo.conf`. Ezen a VPS-en az Nginx a `conf.d/*.conf` fájlokat tölti be; a `sites-enabled` link önmagában nem aktivál.
- A vhost forrása: `infrastructure/cvn/nginx-cvn.conf`. HTTP-ről HTTPS-re átirányítás, ACME webroot: `/var/www/cvn-acme`.
- Let’s Encrypt tanúsítvány neve: `cvn-demo`, helye: `/etc/letsencrypt/live/cvn-demo/`; első lejárat: 2027-01-08. A meglévő `certbot.timer` és Nginx reload deploy hookok kezelik a megújítást. A privát kulcs kizárólag a VPS-en marad.

A telepítés a Hostinger hitelesített VPS Web Terminal felületén történt, mert a YAML-mező méretkorlátos. A szolgáltatás Docker Compose-ként fut; a kezelőfelület megjelenítését ettől külön kell ellenőrizni.

## Frissítés és visszaállítás

Forrásmódosítás → build → tesztek → új image vagy új generált Compose. A Hostinger alkalmazás mentett előző Compose-fájlját őrizd meg; visszaállításhoz az előző csomagot telepítsd újra ugyanarra az alkalmazásra. A demóban nincs tartós üzleti adat, az újraindítás nem migrál adatbázist. `docker compose down` kizárólag ezt a projektet állítja le; más stackeket ne állíts le.

Állapot: `docker compose ps`; napló: `docker compose logs --tail 50 cvn-demo`. A szerver nem naplóz dokumentumtartalmat vagy űrlapadatot. A `/version.json` azonosítja a csomag forrásainak SHA-256 lenyomatát; az image-digest külön telepítési adat.

## Ellenőrzés

```sh
npm test
node --test apps/cvn-demo/server.test.mjs
CVN_PREVIEW_URL=http://localhost:8080 node scripts/cvn-journey-ui-qa.mjs
```

A UI QA-hoz a `CVN_PLAYWRIGHT_MODULE` és `CVN_CHROME_PATH` megadásával másik gép használható. A csomagban nincs böngésző vagy Docker daemon. A tényleges ellenőrzési eredmények és a konkrét VPS telepítési státusza a `docs/cvn/VERIFICATION.md` fájlban követhető; a generált Compose létezése önmagában nem igazolja a sikeres konténerindítást.

Technikai forrás: [hivatalos Node Docker image](https://github.com/nodejs/docker-node), [Docker Compose services](https://docs.docker.com/reference/compose-file/services/).
