Přeskočit obsah

On-premise nasazení

Nasazení pomocí Docker Compose na Rocky Linux / RHEL

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


1. Přehled architektury

graph LR
    FW["🛡️ Firewall"] --> Nginx["🌐 Nginx<br/>(TLS Termination)<br/>:443"]
    Nginx --> BE["⚙️ API Server<br/>:8080"]
    Nginx --> OCSP["📜 OCSP Responder<br/>:8081"]
    Nginx --> FE["🖥️ Web Interface<br/>:5173"]
    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,Nginx network
    class BE,OCSP,FE app
    class PG,Redis data

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 se obrazy stahují automaticky z kontejnerového registru.

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. Konfigurace Nginx

Výchozí konfigurace Nginx zajišťuje TLS terminaci a reverzní proxy:

server {
    listen 443 ssl http2;
    server_name vault.example.com;

    ssl_certificate     /etc/nginx/certs/server.crt;
    ssl_certificate_key /etc/nginx/certs/server.key;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    # Security headers
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "SAMEORIGIN" always;

    # API Server
    location /api/ {
        proxy_pass http://backend:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # OCSP Responder
    location /ocsp {
        proxy_pass http://ocsp-responder:8081;
    }

    # Web Interface
    location / {
        proxy_pass http://frontend:5173;
    }
}

server {
    listen 80;
    server_name vault.example.com;
    return 301 https://$server_name$request_uri;
}

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), 6379 (Redis) ani 8080 (interní API) do sítě. Tyto porty musí být přístupné pouze v rámci Docker sítě.

sudo systemctl enable mazevault

6. Služba systemd (doporučeno)

Automatická integrace systemd (od vX.X)

Instalační skript (sudo ./install-mazevault.sh nebo sudo ./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í