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¶
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í¶
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 odTRUSTED_PROXIES, což je ve výchozím stavu podsíť kituMAZEVAULT_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 doTRUSTED_PROXIESv.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í¶
- Systémové požadavky — Požadavky na hardware a software
- Konfigurace TLS — Nastavení certifikátů
- Kontroly stavu — Ověření po nasazení
- Záloha a obnova — Postupy zálohování