Add UniFi Docker Compose setup

This commit is contained in:
Urban Modig
2026-07-13 13:24:39 +02:00
commit 018be6c778
5 changed files with 208 additions and 0 deletions

6
.env.example Normal file
View File

@ -0,0 +1,6 @@
MONGO_ADMIN_USER=<mongo_admin_user>
MONGO_ADMIN_PASS=<mongo_admin_pwd>
MONGO_USER=unifi
MONGO_PASS=<unifi_pwd>
MONGO_DBNAME=unifi

16
.gitignore vendored Normal file
View File

@ -0,0 +1,16 @@
# Secrets
.env
# Persistent application data
config/
mongodb/
# Local backups and archives
*.tgz
*.tar.gz
*.zip
# Logs and editor files
*.log
.DS_Store
*.swp

96
README.md Normal file
View File

@ -0,0 +1,96 @@
# UniFi Network Controller
Docker Compose-installation av UniFi Network Application på Raspberry Pi 4.
## Plattform
- Raspberry Pi 4B, 4 GB RAM
- Raspberry Pi OS Lite 64-bit, Debian Trixie
- Docker och Docker Compose
- UniFi Network Application från LinuxServer.io
- MongoDB 4.4.18
MongoDB är låst till 4.4.18 eftersom senare MongoDB-versioner kräver
ARMv8.2-A, vilket Raspberry Pi 4 inte stöder.
## Filer
- `compose.yaml` UniFi och MongoDB
- `init-mongo/init-mongo.sh` skapar MongoDB-användare och rättigheter
- `.env.example` exempel på obligatoriska miljövariabler
Följande lagras inte i Git:
- `.env`
- `config/`
- `mongodb/`
## Installation
```bash
cp .env.example .env
nano .env
chmod 600 .env
mkdir -p config mongodb
chmod 755 init-mongo/init-mongo.sh
docker compose pull
docker compose up -d
cat > README.md <<'EOF'
```
# UniFi Network Controller
Docker Compose-installation av UniFi Network Application på Raspberry Pi 4.
## Plattform
- Raspberry Pi 4B, 4 GB RAM
- Raspberry Pi OS Lite 64-bit, Debian Trixie
- Docker och Docker Compose
- UniFi Network Application från LinuxServer.io
- MongoDB 4.4.18
MongoDB är låst till 4.4.18 eftersom senare MongoDB-versioner kräver
ARMv8.2-A, vilket Raspberry Pi 4 inte stöder.
## Filer
- `compose.yaml` UniFi och MongoDB
- `init-mongo/init-mongo.sh` skapar MongoDB-användare och rättigheter
- `.env.example` exempel på obligatoriska miljövariabler
Följande lagras inte i Git:
- `.env`
- `config/`
- `mongodb/`
## Installation
```bash
cp .env.example .env
nano .env
chmod 600 .env
mkdir -p config mongodb
chmod 755 init-mongo/init-mongo.sh
docker compose pull
docker compose up -d
```
## Kontroll
docker compose ps
docker compose logs --tail=100 mongodb
docker compose logs --tail=100 unifi
## Webbgränssnitt:
https://<controller-ip>:8443
## Viktigt
MongoDB-port 27017 exponeras inte på LAN:et. Databasen är endast
åtkomlig från UniFi-containern via det interna Docker-nätverket.

65
compose.yaml Normal file
View File

@ -0,0 +1,65 @@
services:
mongodb:
image: mongo:4.4.18
container_name: unifi-mongodb
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_ADMIN_USER}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ADMIN_PASS}
MONGO_USER: ${MONGO_USER}
MONGO_PASS: ${MONGO_PASS}
MONGO_DBNAME: ${MONGO_DBNAME}
MONGO_AUTHSOURCE: admin
volumes:
- ./mongodb:/data/db
- ./init-mongo/init-mongo.sh:/docker-entrypoint-initdb.d/init-mongo.sh:ro
networks:
- unifi-internal
unifi:
image: lscr.io/linuxserver/unifi-network-application:latest
container_name: unifi
restart: unless-stopped
depends_on:
- mongodb
environment:
PUID: 1002
PGID: 1002
TZ: Europe/Stockholm
MONGO_USER: ${MONGO_USER}
MONGO_PASS: ${MONGO_PASS}
MONGO_HOST: mongodb
MONGO_PORT: 27017
MONGO_DBNAME: ${MONGO_DBNAME}
MONGO_AUTHSOURCE: admin
MEM_LIMIT: 2048
MEM_STARTUP: 1024
volumes:
- ./config:/config
ports:
- "8443:8443"
- "8080:8080"
- "3478:3478/udp"
- "10001:10001/udp"
- "1900:1900/udp"
- "8843:8843"
- "8880:8880"
- "6789:6789"
- "5514:5514/udp"
networks:
- unifi-internal
networks:
unifi-internal:
driver: bridge

25
init-mongo/init-mongo.sh Executable file
View File

@ -0,0 +1,25 @@
#!/bin/bash
if which mongosh > /dev/null 2>&1; then
mongo_init_bin='mongosh'
else
mongo_init_bin='mongo'
fi
"${mongo_init_bin}" <<EOF
use ${MONGO_AUTHSOURCE}
db.auth("${MONGO_INITDB_ROOT_USERNAME}", "${MONGO_INITDB_ROOT_PASSWORD}")
db.createUser({
user: "${MONGO_USER}",
pwd: "${MONGO_PASS}",
roles: [
"clusterMonitor",
{ db: "${MONGO_DBNAME}", role: "dbOwner" },
{ db: "${MONGO_DBNAME}_stat", role: "dbOwner" },
{ db: "${MONGO_DBNAME}_audit", role: "dbOwner" },
{ db: "${MONGO_DBNAME}_restore", role: "dbOwner" }
]
})
EOF