From 018be6c7787250d27638f301f1d42ca5efd98d04 Mon Sep 17 00:00:00 2001 From: Urban Modig Date: Mon, 13 Jul 2026 13:24:39 +0200 Subject: [PATCH] Add UniFi Docker Compose setup --- .env.example | 6 +++ .gitignore | 16 +++++++ README.md | 96 ++++++++++++++++++++++++++++++++++++++++ compose.yaml | 65 +++++++++++++++++++++++++++ init-mongo/init-mongo.sh | 25 +++++++++++ 5 files changed, 208 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 README.md create mode 100644 compose.yaml create mode 100755 init-mongo/init-mongo.sh diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..05d2c80 --- /dev/null +++ b/.env.example @@ -0,0 +1,6 @@ +MONGO_ADMIN_USER= +MONGO_ADMIN_PASS= + +MONGO_USER=unifi +MONGO_PASS= +MONGO_DBNAME=unifi diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae606fc --- /dev/null +++ b/.gitignore @@ -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 diff --git a/README.md b/README.md new file mode 100644 index 0000000..8b0baa5 --- /dev/null +++ b/README.md @@ -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://:8443 + +## Viktigt + +MongoDB-port 27017 exponeras inte på LAN:et. Databasen är endast +åtkomlig från UniFi-containern via det interna Docker-nätverket. diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..473bae6 --- /dev/null +++ b/compose.yaml @@ -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 diff --git a/init-mongo/init-mongo.sh b/init-mongo/init-mongo.sh new file mode 100755 index 0000000..dcefc75 --- /dev/null +++ b/init-mongo/init-mongo.sh @@ -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}" <