Přeskočit obsah

On-premise nasazení

Nasazení pomocí Docker Compose na Rocky Linux / RHEL

Verze dokumentu: 1.0.0
Poslední aktualizace: 2026-10-28
Licenční úroveň: Všechny


1. Přehled architektury

graph LR
    FW["🛡️ Firewall"] --> Edge["🌐 Edge (nginx)<br/>(TLS Termination)<br/>:443 / :80"]
    Edge -->|"/api/, /swagger"| BE["⚙️ API Server<br/>:8443"]
    Edge -->|"/ a /bff"| FE["🖥️ Web Interface + BFF<br/>:3000"]
    FE -->|"HTTPS, ověřeno"| BE
    FW --> OCSP["📜 OCSP Responder<br/>:8081"]
    FW --> Docs["📚 Dokumentace<br/>:8088"]
    BE --> PG["🗄️ PostgreSQL<br/>:5432"]
    BE --> Redis["⚡ Redis<br/>:6379"]

    classDef network fill:#F5F5F5,stroke:#9E9E9E,stroke-width:2px,color:#424242
    classDef app fill:#EBF5FB,stroke:#2196F3,stroke-width:2px,color:#1565C0
    classDef data fill:#E8F5E9,stroke:#4CAF50,stroke-width:2px,color:#2E7D32

    class FW,Edge network
    class BE,OCSP,FE,Docs app
    class PG,Redis data

Compose kit spouští tyto kontejnery: edge (nginx, jediná služba, která ukončuje TLS pro webové rozhraní), frontend (webové rozhraní Nuxt s vlastním serverem, BFF), backend, ocsp, docs a init-certs (připravuje certifikáty). OCSP responder (8081) a dokumentace (8088) jsou publikovány na vlastních portech.

2. Systémové požadavky

Komponenta Minimální Doporučené
OS Rocky Linux 9.x / RHEL 9.x Rocky Linux 9.4+
CPU 2 jádra 4+ jader
RAM 4 GB 8+ GB
Úložiště 50 GB SSD 100+ GB SSD
Docker Engine 24+ Nejnovější stabilní verze
Docker Compose 2.20+ Nejnovější stabilní verze

3. Instalace

Krok 1: Instalace Dockeru

# Rocky Linux 9 / RHEL 9
sudo dnf config-manager --add-repo \
  https://download.docker.com/linux/rhel/docker-ce.repo

sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo systemctl enable --now docker
sudo usermod -aG docker $USER

Krok 2: Příprava adresářové struktury

sudo mkdir -p /opt/mazevault/{data,config,certs,backups}
cd /opt/mazevault

Krok 3: Načtení kontejnerových obrazů

Pro izolované prostředí (air-gapped) načtěte předpřipravené obrazy z offline balíčku:

# Extract offline package
tar xzf mazevault-1.8.0-offline.tar.gz

# Load Docker images
docker load < images/mazevault-backend.tar
docker load < images/mazevault-frontend.tar
docker load < images/mazevault-ocsp.tar
docker load < images/postgres-15-alpine.tar
docker load < images/redis-7-alpine.tar
docker load < images/nginx-alpine.tar

Pro prostředí s připojením k internetu pocházejí obrazy i Compose kit z MazeVault Harboru (registry.mazevault.com/mazevault). Použijte robot účet, který jste dostali od MazeVault (jméno obsahuje $, proto ho dejte do uvozovek). Compose kit pro release vX.Y.Z obsahuje instalační, upgrade a rollback skripty, pomocné skripty pro certifikáty, docker-compose.yml, .env.example a SHA256SUMS:

oras login registry.mazevault.com -u 'robot$mazevault+yourcompany'
oras pull registry.mazevault.com/mazevault/compose-kit:vX.Y.Z -o mazevault-kit
cd mazevault-kit
sha256sum -c SHA256SUMS            # pokud některý soubor nesedí, skončete a kontaktujte MazeVault
sudo MAZEVAULT_REGISTRY_USER='robot$mazevault+yourcompany' bash install-mazevault.sh --version vX.Y.Z

oras pull nezachovává příznak spustitelnosti, proto skripty z kitu spouštějte přes bash. Instalátor se přihlásí do registru (když není nastavené MAZEVAULT_REGISTRY_PASSWORD, zeptá se na heslo) a stáhne obrazy. Pro vlastní zrcadlo spusťte z kitu bash mirror-to-registry.sh a instalujte s --registry <váš-registr>/mazevault.

Instalátor nainstaluje do instalačního adresáře (/opt/mazevault nebo --dir) docker-compose.yml z kitu, proto ho spouštějte z rozbaleného kitu; když docker-compose.yml vedle něj chybí, skončí chybou. Pro automatizaci: MAZEVAULT_NO_SYSTEMD=1 přeskočí vytvoření systemd služby i všechna volání systemctl a MAZEVAULT_COMPOSE_PROJECT nastaví název projektu Docker Compose (výchozí mazevault; stejné -p pak používejte i u dalších příkazů docker compose).

Instalace v1.0.60 a starší stahují z GHCR (ghcr.io/mazevault). Pro přechod na Harbor se přihlaste docker login registry.mazevault.com robot účtem a spusťte instalátor z nového kitu s --registry registry.mazevault.com/mazevault --version vX.Y.Z; bez --registry instalace zůstane na současném registru.

Před spuštěním docker compose up -d ověřte, že požadované tagy existují (po docker login registry.mazevault.com):

for img in mazevault-backend mazevault-frontend mazevault-edge mazevault-ocsp mazevault-docs mazevault-init-certs; do
    docker manifest inspect "registry.mazevault.com/mazevault/${img}:vX.Y.Z" >/dev/null
done

Pokud některá kontrola selže, nepokračujte rolloutem na latest; přepněte na known-good pinned release tag nebo použijte offline balíček.

Krok 4: Konfigurace prostředí

Vytvořte soubor s proměnnými prostředí /opt/mazevault/.env:

# Database
POSTGRES_HOST=client-postgres
POSTGRES_PORT=5432
POSTGRES_USER=mazevault
POSTGRES_PASSWORD=<strong-password>
POSTGRES_DB=mazevault

# Redis
REDIS_HOST=client-redis
REDIS_PORT=6379
REDIS_PASSWORD=<strong-password>

# Application
APP_DOMAIN=vault.example.com
APP_PORT=8080
APP_ENV=production
TLS_ENABLED=true

# License
LICENSE_KEY=<your-license-key>

# Encryption (generate with: openssl rand -hex 32)
MASTER_KEY=<64-char-hex-string>

Hlavní šifrovací klíč

MASTER_KEY je kořenový šifrovací klíč pro všechna tajná data. Zálohujte jej bezpečně — ztráta tohoto klíče znamená ztrátu přístupu ke všem šifrovaným datům. Uložte kopii na fyzicky oddělené, bezpečné místo.

Krok 5: Konfigurace TLS certifikátů

Umístěte TLS certifikáty do adresáře /opt/mazevault/certs/:

# Required files:
/opt/mazevault/certs/server.crt    # Server certificate (PEM)
/opt/mazevault/certs/server.key    # Private key (PEM)
/opt/mazevault/certs/ca.crt        # CA chain (PEM)

Podrobné nastavení certifikátů naleznete v sekci Konfigurace TLS.

Krok 6: Nasazení

cd /opt/mazevault
docker compose up -d

Krok 7: Ověření nasazení

# Check all containers are running
docker compose ps

# Check API health
curl -sk https://localhost/api/v1/health | jq .

# Check logs
docker compose logs backend --tail=50

4. Kontejner edge

Kontejner edge z kitu (nginx) ukončuje TLS pomocí server.crt a server.key z adresáře s certifikáty (TLS 1.2 a 1.3) a směruje požadavky. Jeho konfiguraci upravovat nemusíte:

Požadavek Kam jde
port 80 přesměrování na https://
/api/ (včetně websocketu agenta /api/v1/agents/me/connect) backend
/swagger backend
vše ostatní (stránky, /bff/*) frontend
  • Požadavky smějí trvat až 300 sekund, websockety agentů až 3600 sekund, nahrávání do 50 MB.
  • Edge připojuje adresu klienta do X-Forwarded-For. Backend jí důvěřuje jen od TRUSTED_PROXIES, což je ve výchozím stavu podsíť kitu MAZEVAULT_SUBNET (172.31.250.0/24). Pokud před edge umístíte load balancer v jiném privátním rozsahu, přidejte ho do TRUSTED_PROXIES v .env.
  • Edge předává požadavky backendu bez ověření certifikátu backendu (vnitřní úsek privátní sítě Dockeru). Server webového rozhraní (BFF) ho ověřuje, a to proti ca-bundle.crt.
  • Edge nepřidává vlastní bezpečnostní hlavičky. HSTS, CSP, COEP a další hlavičky posílá webová aplikace.
  • Edge je zabezpečený: souborový systém jen pro čtení, žádná nová oprávnění, všechny capabilities zrušeny, limit paměti 64 MB (EDGE_MEMORY_LIMIT). Skripty pro certifikáty ho po importu nebo obnovení restartují.
  • OCSP responder (8081) a dokumentace (8088) jsou publikovány na vlastních portech, ne přes edge.

5. Konfigurace firewallu

# Rocky Linux / RHEL with firewalld
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

# Verify
sudo firewall-cmd --list-all

Warning

Nevystavujte porty 5432 (PostgreSQL) ani 6379 (Redis) do sítě. Tyto porty musí být přístupné pouze v rámci Docker sítě. Agenti a klienti API se k API dostanou přes edge na portu 443 (kit navíc publikuje samotný backend na BACKEND_PORT, výchozí 8443; pokud ho nepotřebujete, omezte ho firewallem).

Aktualizace Compose kitu

upgrade-mazevault.sh zálohuje instalaci a poté nainstaluje docker-compose.yml z nového kitu. Spusťte upgrade skript dodaný v novém kitu (oras pull registry.mazevault.com/mazevault/compose-kit:vX.Y.Z -o mazevault-kit, poté sudo bash mazevault-kit/upgrade-mazevault.sh --version vX.Y.Z), u offline aktualizace předejte nový balík přes --offline (nainstaluje se i jeho docker-compose.yml); ne kopii v instalačním adresáři. Se starším docker-compose.yml (bez služby edge) se skript zastaví dřív, než cokoli změní, a vypíše správný příkaz. Docker síť frontend se znovu vytvoří s pevnou podsítí MAZEVAULT_SUBNET (výchozí 172.31.250.0/24), což způsobí krátký výpadek. Než skript cokoli zastaví, zkontroluje, že se podsíť nepřekrývá s jinou sítí Dockeru ani trasou hostitele; pokud ano, skončí a původní stack dál běží, vy v .env nastavíte volnou MAZEVAULT_SUBNET a spustíte ho znovu. Nové image se stáhnou (nebo načtou z balíku) dřív, než se přepne compose soubor a IMAGE_TAG, takže při neúspěšném stažení skript skončí a původní stack, compose soubor i IMAGE_TAG zůstanou beze změny. Offline aktualizace nastaví IMAGE_REGISTRY na registr v názvech image z balíku (offline instalace z v1.0.60 má ghcr.io/mazevault) a stejně skončí, když image nového compose souboru v balíku chybí. Pokud docker compose up změněnou síť odmítne, spusťte docker compose down (bez -v, které by smazalo datové svazky) a poté docker compose up -d.

Pokud používáte vlastní FRONTEND_PORT a FRONTEND_URL port neobsahuje, skript vypíše přesný řádek NUXT_PUBLIC_ORIGIN=<base>:<port>, který přidejte do .env; bez něj webové rozhraní odmítne přihlášení (origin se musí přesně rovnat adrese v prohlížeči).

sudo systemctl enable mazevault

6. Služba systemd (doporučeno)

Automatická integrace systemd (od vX.X)

Instalační skript (sudo bash install-mazevault.sh nebo sudo bash install-mazevault-offline.sh) nyní automaticky vytvoří a povolí systemd službu MazeVault. Manuální kroky níže jsou potřeba pouze při vlastních úpravách nebo nestandardním nasazení.

Poznámka: Instalační skript musí být spuštěn pod rootem (sudo).

Pro ruční vytvoření nebo úpravu systemd služby:

sudo cat > /etc/systemd/system/mazevault.service << 'EOF'
[Unit]
Description=MazeVault Enterprise Secrets Manager
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/mazevault
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
TimeoutStartSec=120

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable mazevault

7. Offline balíček pro nasazení

Pro izolované prostředí (air-gapped) obsahuje offline balíček následující:

Komponenta Formát Velikost (přibližně)
Backend obraz .tar ~150 MB
Frontend obraz .tar ~50 MB
OCSP obraz .tar ~30 MB
PostgreSQL obraz .tar ~80 MB
Redis obraz .tar ~30 MB
Nginx obraz .tar ~20 MB
Konfigurace Docker Compose .yml <1 KB
Dokumentace .tar (statické HTML) ~10 MB
Celkem ~370 MB

Pro získání offline balíčku kontaktujte svého obchodního zástupce MazeVault.

Související