server-up/apps/unifi-network/files/compose.yaml
Ramon dce4e34894
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 5m46s
fix(unifi): databasegegevens bij elke start gelijktrekken
Het linuxserver-image schrijft /config/data/system.properties alleen bij de
allereerste start. De authSource en het wachtwoord die daarna in Compose
veranderden kwamen er nooit in, dus UniFi bleef verbinden met de gegevens van
de eerste installatie — MongoDB antwoordde met UserNotFound: unifi@unifi.

- De reparatiecontainer zet db.mongo.uri, statdb.mongo.uri, db.mongo.local en
  unifi.db.name opnieuw uit de actuele omgeving; overige instellingen blijven.
- Gebruikersnaam en wachtwoord worden url-gecodeerd in de URI gezet.
- Het bestand wordt op zijn plaats overschreven, dus eigenaar en rechten
  blijven van UniFi zelf.
- Het wachtwoord uit system.properties telt mee als inlogpoging, zodat een
  afgeweken .env de stack niet onherstelbaar maakt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H9Vcwu7owJZ3nj5dCf4VFT
2026-08-06 20:24:54 +02:00

83 lines
2.8 KiB
YAML

services:
<< service_name >>:
image: lscr.io/linuxserver/unifi-network-application:latest
container_name: << service_name >>
environment:
- PUID=<< puid >>
- PGID=<< pgid >>
- TZ=<< timezone >>
- MONGO_USER=unifi
- MONGO_PASS=<< mongo_password >>
- MONGO_HOST=<< service_name >>-mongo
- MONGO_PORT=27017
- MONGO_DBNAME=unifi
- MONGO_AUTHSOURCE=admin
volumes:
- << appdata_dir >>/<< service_name >>/config:/config
ports:
- "<< port_ui >>:8443"
- "<< port_inform >>:8080"
- "<< port_stun >>:3478/udp"
- "<< port_discovery >>:10001/udp"
depends_on:
<< service_name >>-mongo:
condition: service_healthy
<< service_name >>-mongo-init:
condition: service_completed_successfully
restart: unless-stopped
<< service_name >>-mongo:
image: mongo:4.4.29
container_name: << service_name >>-mongo
environment:
# Dezelfde beheerdersnaam als het allereerste sjabloon gebruikte. Zo
# passen een vers volume en een volume van een oudere installatie op
# dezelfde inloggegevens — ook die van de backup (mongodump).
- MONGO_INITDB_ROOT_USERNAME=unifi
- MONGO_INITDB_ROOT_PASSWORD=<< mongo_password >>
- MONGO_USER=unifi
- MONGO_PASS=<< mongo_password >>
- MONGO_DBNAME=unifi
- MONGO_AUTHSOURCE=admin
volumes:
- << service_name >>_mongodata:/data/db
- ./init-mongo.sh:/docker-entrypoint-initdb.d/init-mongo.sh:ro
healthcheck:
# Bewust zonder inloggegevens: `ping` mag ook zonder aanmelden. Een
# volume dat door een oudere versie van dit sjabloon is aangemaakt kent
# de gebruiker 'root' niet, en dan bleef deze container voor altijd
# ongezond — waardoor de reparatiecontainer hieronder nooit startte.
test:
- CMD-SHELL
- 'mongo --quiet --eval "db.adminCommand({ ping: 1 })"'
interval: 10s
timeout: 5s
retries: 12
start_period: 30s
restart: unless-stopped
<< service_name >>-mongo-init:
image: mongo:4.4.29
container_name: << service_name >>-mongo-init
environment:
- MONGO_INITDB_ROOT_USERNAME=unifi
- MONGO_INITDB_ROOT_PASSWORD=<< mongo_password >>
- MONGO_USER=unifi
- MONGO_PASS=<< mongo_password >>
- MONGO_HOST=<< service_name >>-mongo
- MONGO_PORT=27017
- MONGO_DBNAME=unifi
- MONGO_AUTHSOURCE=admin
volumes:
- ./init-mongo.sh:/init-mongo.sh:ro
# Dezelfde map als UniFi zelf: hierin staat system.properties, dat het
# image alleen bij de allereerste start schrijft.
- << appdata_dir >>/<< service_name >>/config:/unifi-config
entrypoint: ["/bin/bash", "/init-mongo.sh"]
depends_on:
<< service_name >>-mongo:
condition: service_healthy
restart: "no"
volumes:
<< service_name >>_mongodata: