diff --git a/.gitignore b/.gitignore index a1bac96..8e57205 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,7 @@ op-session */config/ # Systeem bestanden -.DS_Store \ No newline at end of file +.DS_Store + +# Negeer Traefik certificaten (worden op de server gegenereerd) +acme.json \ No newline at end of file diff --git a/1. docker-stacks/traefik/data/traefik.yml b/1. docker-stacks/traefik/data/traefik.yml new file mode 100644 index 0000000..30a3e09 --- /dev/null +++ b/1. docker-stacks/traefik/data/traefik.yml @@ -0,0 +1,24 @@ +api: + dashboard: true + insecure: true # Zetten we uit zodra Authentik werkt + +entryPoints: + web: + address: ":80" + websecure: + address: ":443" + +providers: + docker: + endpoint: "unix:///var/run/docker.sock" + exposedByDefault: false + network: proxy + +# We bereiden SSL alvast voor (staat nog even uit tot je een domein hebt) +# certificatesResolvers: +# letsencrypt: +# acme: +# email: jouw@email.com +# storage: acme.json +# httpChallenge: +# entryPoint: web \ No newline at end of file diff --git a/1. docker-stacks/traefik/docker-compose.yml b/1. docker-stacks/traefik/docker-compose.yml index e69de29..22c4c3f 100644 --- a/1. docker-stacks/traefik/docker-compose.yml +++ b/1. docker-stacks/traefik/docker-compose.yml @@ -0,0 +1,27 @@ +services: + traefik: + image: traefik:v3.0 + container_name: traefik + restart: unless-stopped + security_opt: + - no-new-privileges:true + networks: + - proxy + ports: + - "80:80" + - "443:443" + - "8080:8080" + volumes: + - /etc/localtime:/etc/localtime:ro + - /var/run/docker.sock:/var/run/docker.sock:ro + - ./data/traefik.yml:/traefik.yml:ro + - ./data/acme.json:/acme.json # Deze wordt door het script aangemaakt! + labels: + - "traefik.enable=true" + - "traefik.http.routers.traefik.entrypoints=http" + - "traefik.http.routers.traefik.rule=Host(`traefik.local`)" + - "traefik.http.services.traefik.loadbalancer.server.port=8080" + +networks: + proxy: + external: true \ No newline at end of file diff --git a/3. scripts/update-all.sh b/3. scripts/update-all.sh index e4c4a03..a55e825 100644 --- a/3. scripts/update-all.sh +++ b/3. scripts/update-all.sh @@ -1,9 +1,6 @@ #!/bin/bash - -# Stop het script als er iets fout gaat set -e -# Pad naar je repo op de server (pas dit aan als het anders is) REPO_DIR="$HOME/docker" STACKS_DIR="$REPO_DIR/1. Docker-Stacks" @@ -11,33 +8,39 @@ echo "==========================================" echo "๐Ÿš€ Start Docker Update Script - $(date)" echo "==========================================" -# 1. Haal de laatste versie op uit Git echo "๐Ÿ“ฅ Pullen van Git..." cd "$REPO_DIR" git pull origin main -# 2. Loop door elke map in '1. Docker-Stacks' echo "๐Ÿ”„ Containers bijwerken..." -# Zoek alle mappen die een docker-compose.yml bevatten +# Zoek alle mappen met docker-compose.yml find "$STACKS_DIR" -maxdepth 2 -name "docker-compose.yml" | while read composefile; do dir=$(dirname "$composefile") service_name=$(basename "$dir") echo " ๐Ÿ‘‰ Bezig met service: $service_name" - cd "$dir" + + # --- SPECIAAL VOOR TRAEFIK --- + # Als we in de Traefik map zitten, check dan het acme.json bestand + if [ "$service_name" == "traefik" ]; then + if [ ! -f "./data/acme.json" ]; then + echo " ๐Ÿ”จ Traefik: acme.json aanmaken en rechten zetten..." + touch ./data/acme.json + chmod 600 ./data/acme.json + fi + fi + # ----------------------------- - # We gebruiken 'op run' zodat 1Password referenties (op://) worden ingevuld - # '--env-file .env' wordt alleen gebruikt als het bestand bestaat + # Check voor .env en start if [ -f .env ]; then - op run --env-file=".env" --no-masking -- docker compose up -d --remove-orphans + docker compose up -d --remove-orphans else - op run --no-masking -- docker compose up -d --remove-orphans + docker compose up -d --remove-orphans fi done -# 3. Opruimen echo "๐Ÿงน Oude images opruimen..." docker image prune -f