Ga naar inhoud

PatchMon Productie-installatie (Home-directory)

Deze handleiding bevat de stappen en het Docker Compose-bestand om PatchMon op te zetten.

De configuratie is volledig geoptimaliseerd voor een schone Ubuntu-omgeving: * Er wordt gedraaid vanuit de home-directory (geen sudo-rechten nodig voor dagelijks beheer). * Alle databases en caches worden persistent en veilig opgeslagen binnen ./postgres en ./redis. * De database-instellingen zijn samengevoegd tot de vereiste DATABASE_URL string zodat de server direct stabiel en zonder fouten opstart.


1. Mappenstructuur Voorbereiden

Maak eerst de benodigde directory aan in je home-directory en navigeer erheen:

mkdir -p ~/docker/patchmon
cd ~/docker/patchmon

2. JWT-Beveiligingssleutel Genereren

PatchMon vereist een unieke, sterke cryptografische sleutel voor het beveiligen van JWT-tokens. Genereer deze sleutel met het volgende commando:

openssl rand -base64 32

Kopieer de output van dit commando. Deze string moet je zo dadelijk in het docker-compose.yml bestand plakken bij JWT_SECRET.


3. Docker Compose Bestand Aanmaken

Maak een nieuw bestand aan genaamd docker-compose.yml:

nano docker-compose.yml

Plak de onderstaande volledige configuratie in het bestand.

Belangrijke aanpassingen vooraf:

  • STAP 1 & 2: Vervang VeranderDitWachtwoord123! door een uniek, sterk database-wachtwoord. Zorg dat het wachtwoord in de DATABASE_URL exact hetzelfde is als bij POSTGRES_PASSWORD.
  • STAP 3: Pas de BASE_URL en CORS_ORIGIN aan naar jouw eigen subdomein (bijv. https://example.com).
  • STAP 4: Plak hier de unieke sleutel in die je zojuist met het openssl commando hebt gegenereerd.
services:
  database:
    image: docker.io/library/postgres:17-alpine
    container_name: patchmon-postgres
    environment:
      # STAP 1: Vervang 'VeranderDitWachtwoord123!' door een uniek, sterk database-wachtwoord
      - POSTGRES_PASSWORD=VeranderDitWachtwoord123!
      - POSTGRES_USER=patchmon
      - POSTGRES_DB=patchmon
    volumes:
      # Slaat de databasegegevens veilig op in de huidige map
      - ./postgres:/var/lib/postgresql/data
    restart: unless-stopped

  queue:
    image: docker.io/library/redis:7-alpine
    container_name: patchmon-redis
    command: redis-server --save 60 1 --loglevel warning
    volumes:
      # Slaat de Redis cache-gegevens veilig op in de huidige map
      - ./redis:/data
    restart: unless-stopped

  server:
    image: ghcr.io/patchmon/patchmon-server:latest
    container_name: patchmon-server
    ports:
      # De standaard web-poort voor het PatchMon dashboard
      - "3000:3000"
    environment:
      # De samengevoegde database-URL die de server vereist
      # STAP 2: Zorg dat het wachtwoord hieronder EXACT gelijk is aan het wachtwoord bij de database-service hierboven!
      - DATABASE_URL=postgresql://patchmon:VeranderDitWachtwoord123!@database:5432/patchmon
      - REDIS_HOST=queue
      - REDIS_PORT=6379
      # STAP 3: Configureer de URL waarop je PatchMon benadert via Nginx Proxy Manager
      - BASE_URL=https://example.com
      - CORS_ORIGIN=https://example.com
      # STAP 4: Plak hier je gegenereerde openssl sleutel van 32 tekens
      - JWT_SECRET=PlakHierJeGegeneerdeOpensslSleutel
    depends_on:
      - database
      - queue
    labels:
      # Hiermee mag Watchtower deze container automatisch controleren op updates
      - "com.centurylinklabs.watchtower.enable=true"
    restart: unless-stopped

Sla het bestand op met Ctrl+O, druk op Enter, en sluit de editor met Ctrl+X.


4. PatchMon Starten

Start de applicatie op de achtergrond op. Docker zal nu de benodigde images downloaden en de database-migraties automatisch uitvoeren:

docker compose up -d

5. Status en Logs Controleren

Controleer na een paar seconden of alle drie de containers stabiel draaien en de server de status (healthy) krijgt:

docker compose ps

Je kunt de live opstartlogs van de server bekijken om te controleren of de database-migraties succesvol zijn afgerond ([migrate] applied successfully):

docker compose logs -f server

(Druk op Ctrl+C om de live logs weer te sluiten).


6. Bereikbaarheid

PatchMon luistert nu op poort 3000. Je kunt in Nginx Proxy Manager (NPM) een Proxy Host aanmaken die https://example.com doorstuurt naar het IP-adres van deze VM op poort 3000. Daarna is je dashboard direct klaar voor gebruik!