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:
2. JWT-Beveiligingssleutel Genereren
PatchMon vereist een unieke, sterke cryptografische sleutel voor het beveiligen van JWT-tokens. Genereer deze sleutel met het volgende commando:
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:
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 deDATABASE_URLexact hetzelfde is als bijPOSTGRES_PASSWORD. - STAP 3: Pas de
BASE_URLenCORS_ORIGINaan naar jouw eigen subdomein (bijv.https://example.com). - STAP 4: Plak hier de unieke sleutel in die je zojuist met het
opensslcommando 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:
5. Status en Logs Controleren
Controleer na een paar seconden of alle drie de containers stabiel draaien en de server de status (healthy) krijgt:
Je kunt de live opstartlogs van de server bekijken om te controleren of de database-migraties succesvol zijn afgerond ([migrate] applied successfully):
(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!