Initial commit: Activiteiten Inventaris applicatie

This commit is contained in:
2026-01-06 01:23:45 +01:00
commit 6d26aea0cf
38 changed files with 9818 additions and 0 deletions

314
DEPLOYMENT.md Normal file
View File

@@ -0,0 +1,314 @@
# 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:
```bash
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
```bash
# 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`:
> ```bash
> 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:
```bash
# 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`:
```yaml
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
```
5. Maak een `.env` bestand aan (via Dockge's Environment tab) met:
```env
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:
```bash
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 Hosts****Add 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... | ✅ |
3. 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
```bash
# Bekijk logs
docker logs questionnaire
# Of in Dockge, klik op de container en bekijk logs
```
### Database permissies
```bash
# Zorg dat de data directory schrijfbaar is
chmod 755 /opt/stacks/questionnaire/data
```
### Netwerk problemen
```bash
# 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
```bash
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)
```bash
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:
```bash
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
└─────────────────┘
```