Files
questionnaire/DEPLOYMENT.md

8.1 KiB

Deployment naar Dockge (Home Server)

Deze handleiding beschrijft hoe je de Activiteiten Inventaris applicatie deployt naar je home server met Dockge, Gitea en Nginx Proxy Manager.

Overzicht

  • Gitea: Lokale Git server voor versiebeheer
  • Dockge: Docker Compose stack manager
  • Nginx Proxy Manager: Reverse proxy met SSL
  • Domein: poll.hausmans.cloud

Stap 1: Repository aanmaken in Gitea

1.1 Lokale Git repository initialiseren

Voer deze commando's uit in de project directory op je ontwikkelmachine:

cd /Users/berthausmans/Documents/Development/questionnaire

# Git repository initialiseren
git init

# Alle bestanden toevoegen
git add .

# Eerste commit maken
git commit -m "Initial commit: Activiteiten Inventaris applicatie"

1.2 Repository aanmaken in Gitea

  1. Open Gitea in je browser (bijv. http://gitea.local:3000)
  2. Klik op "+""New Repository"
  3. Vul in:
    • Repository Name: questionnaire
    • Visibility: Private (aanbevolen)
    • Initialize repository: Niet aanvinken (we pushen bestaande code)
  4. Klik op "Create Repository"

1.3 Code pushen naar Gitea

# Remote toevoegen (vervang met je Gitea URL)
git remote add origin http://gitea.local:3000/jouw-gebruiker/questionnaire.git

# Code pushen
git push -u origin main

Tip

: Als je branch master heet i.p.v. main:

git branch -M main
git push -u origin main

Stap 2: Repository clonen op de server

SSH naar je Proxmox server en clone de repository:

# Ga naar de Dockge stacks directory
cd /opt/stacks

# Clone de repository van Gitea
git clone http://gitea.local:3000/jouw-gebruiker/questionnaire.git

Authenticatie: Je wordt gevraagd om je Gitea gebruikersnaam en wachtwoord. Tip: Maak een Access Token aan in Gitea (Settings → Applications → Generate New Token)


Stap 3: Stack aanmaken in Dockge

  1. Open Dockge in je browser (bijv. http://server-ip:5001)
  2. Klik op "+ Compose" om een nieuwe stack aan te maken
  3. Geef de stack een naam: questionnaire
  4. Plak de volgende docker-compose.yml:
version: '3.8'

services:
  app:
    build: .
    container_name: questionnaire
    ports:
      - "4000:4000"
    environment:
      - NODE_ENV=production
      - PORT=4000
      - SESSION_SECRET=${SESSION_SECRET}
      - DB_PATH=/app/data/questionnaire.db
      - DEFAULT_ADMIN_USER=${DEFAULT_ADMIN_USER:-admin}
      - DEFAULT_ADMIN_PASS=${DEFAULT_ADMIN_PASS}
    volumes:
      - ./data:/app/data
    restart: unless-stopped
    networks:
      - proxy

networks:
  proxy:
    external: true
  1. Maak een .env bestand aan (via Dockge's Environment tab) met:
SESSION_SECRET=jouw-super-geheime-sleutel-hier-minimaal-32-tekens
DEFAULT_ADMIN_USER=admin
DEFAULT_ADMIN_PASS=jouw-veilige-wachtwoord

⚠️ Belangrijk: Gebruik sterke, unieke waarden voor SESSION_SECRET en DEFAULT_ADMIN_PASS!


Stap 3: Docker netwerk aanmaken (eenmalig)

Als je nog geen proxy netwerk hebt, maak deze aan via SSH op je server:

docker network create proxy

Dit netwerk wordt gebruikt om de applicatie te verbinden met Nginx Proxy Manager.


Stap 4: Stack deployen

  1. In Dockge, klik op "Deploy" of "Up"
  2. Wacht tot de image is gebouwd en de container draait
  3. Test of de applicatie werkt: http://server-ip:4000

Stap 5: Nginx Proxy Manager configureren

  1. Open Nginx Proxy Manager (bijv. http://server-ip:81)
  2. Ga naar Proxy HostsAdd Proxy Host

Details tab:

Veld Waarde
Domain Names poll.hausmans.cloud
Scheme http
Forward Hostname / IP questionnaire (container naam)
Forward Port 4000
Block Common Exploits
Websockets Support (niet nodig)

SSL tab:

Veld Waarde
SSL Certificate Request a new SSL Certificate
Force SSL
HTTP/2 Support
HSTS Enabled (optioneel)
Email Address jouw@email.com
I Agree...
  1. Klik op Save

Stap 6: DNS configureren

Zorg dat je domein poll.hausmans.cloud naar je home IP-adres wijst:

Type Naam Waarde
A poll jouw-publieke-ip

Of als je een dynamisch IP hebt, gebruik CNAME met een DynDNS service.


Stap 7: Router port forwarding

Zorg dat je router poorten doorstuurt naar Nginx Proxy Manager:

Externe poort Interne poort Protocol Doel IP
80 80 TCP NPM server IP
443 443 TCP NPM server IP

Verificatie

  1. Ga naar https://poll.hausmans.cloud
  2. Je zou de login pagina moeten zien
  3. Log in met je admin credentials

Troubleshooting

Container start niet

# Bekijk logs
docker logs questionnaire

# Of in Dockge, klik op de container en bekijk logs

Database permissies

# Zorg dat de data directory schrijfbaar is
chmod 755 /opt/stacks/questionnaire/data

Netwerk problemen

# Controleer of container in proxy netwerk zit
docker network inspect proxy

NPM kan container niet bereiken

Zorg dat beide containers (questionnaire en NPM) in hetzelfde Docker netwerk zitten (proxy).


Updates deployen

Vanaf je ontwikkelmachine

cd /Users/berthausmans/Documents/Development/questionnaire

# Wijzigingen toevoegen en committen
git add .
git commit -m "Beschrijving van je wijzigingen"

# Pushen naar Gitea
git push

Op de server (via SSH of Dockge terminal)

cd /opt/stacks/questionnaire

# Laatste wijzigingen ophalen
git pull

In Dockge

  1. Open de questionnaire stack
  2. Klik op "Down" (stop de stack)
  3. Klik op "Rebuild" om de image opnieuw te bouwen
  4. Klik op "Up" om de stack te starten

Tip

: Je kunt stap 2-4 ook combineren met de "Recreate" optie als beschikbaar.


Backup

De database wordt opgeslagen in ./data/questionnaire.db. Maak regelmatig backups:

cp /opt/stacks/questionnaire/data/questionnaire.db ~/backups/questionnaire-$(date +%Y%m%d).db

Volledige workflow samenvatting

┌─────────────────┐     git push     ┌─────────────────┐
│  Ontwikkelmachine │ ─────────────► │     Gitea       │
│  (lokaal)        │                 │  (lokaal netwerk)│
└─────────────────┘                 └────────┬────────┘
                                             │ git pull
                                             ▼
                                    ┌─────────────────┐
                                    │  Dockge/Server  │
                                    │  (Proxmox)      │
                                    └────────┬────────┘
                                             │ docker build
                                             ▼
                                    ┌─────────────────┐
                                    │  Docker Container│
                                    │  (port 4000)    │
                                    └────────┬────────┘
                                             │
                                             ▼
                                    ┌─────────────────┐
                                    │ Nginx Proxy Mgr │
                                    │ + Let's Encrypt │
                                    └────────┬────────┘
                                             │
                                             ▼
                                    ┌─────────────────┐
                                    │   Internet      │
                                    │ poll.hausmans.cloud
                                    └─────────────────┘