server-up/apps/unifi-network/files/compose.yaml
Ramon 414324d6e1
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 3m22s
fix(unifi): MongoDB-versie die op een Raspberry Pi 4 draait
Het sjabloon pinde 4.4.29, maar vanaf 4.4.19 eist MongoDB ARMv8.2-A. Op een
Pi 4 (ARMv8.0-A) stopt mongod met 'Illegal instruction', wordt de container
nooit healthy en start UniFi niet.

- Standaard mongo:4.4.18, instelbaar via een geavanceerd veld.
- De reparatiecontainer draait dezelfde versie.
- Healthcheck ruimer: timeout 20s, start_period 90s, tien pogingen.

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

90 lines
3.4 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:
# Vanaf 4.4.19 eist MongoDB ARMv8.2-A; een Pi 4 (Cortex-A72) heeft dat niet
# en mongod stopt daar met 'Illegal instruction'. Zie SERVER-71772. De
# versie is instelbaar, zodat je op nieuwere hardware hoger kunt.
image: mongo:<< mongo_version >>
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 })"'
# Ruim bemeten voor trage hardware: op een Pi kost het starten van de
# mongo-shell zelf al seconden, en de eerste initialisatie op een
# SD-kaart duurt langer dan een halve minuut. Op een snelle host is de
# container gewoon na de eerste controle gezond.
interval: 15s
timeout: 20s
retries: 10
start_period: 90s
restart: unless-stopped
<< service_name >>-mongo-init:
image: mongo:<< mongo_version >>
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: