Add basic Unifi Network Application deployment
- Write initial docker-compose.yml for Unifi containers - Create a template for initializing MongoDB databases - Add README with setup instructions for the initial environment
This commit is contained in:
commit
03c9d835dc
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.env
|
||||||
|
init-mongo.js
|
12
LICENSE
Normal file
12
LICENSE
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Copyright (C) 2024 by Kris Lamoureux <kris@lamoureux.io>
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||||
|
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
65
README.md
Normal file
65
README.md
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# UniFi Network Server Deployment
|
||||||
|
|
||||||
|
This project provides a simple setup for self-hosting a UniFi Network Server
|
||||||
|
inside a container to manage Ubiquiti networking gear. It leverages the
|
||||||
|
community-managed linuxserver.io container to save time and engineering effort.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
- Docker / Docker Compose
|
||||||
|
- `pwgen` (optional, for password generation)
|
||||||
|
|
||||||
|
## Compatibility
|
||||||
|
Starting with version 8.1 of UniFi Network Application, MongoDB versions 3.6
|
||||||
|
through 7.0 are supported.
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
Follow these steps to get your UniFi Network Server up and running.
|
||||||
|
|
||||||
|
1. Clone this repository and navigate to the project directory
|
||||||
|
|
||||||
|
2. Copy the example MongoDB initialization script
|
||||||
|
```txt
|
||||||
|
cp example-init-mongo.js init-mongo.js
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Change the default password to a random string
|
||||||
|
```txt
|
||||||
|
sed -i "s/changeme/$(pwgen -s 32 1)/g" init-mongo.js
|
||||||
|
```
|
||||||
|
Note: This command requires `pwgen`. If you don't have it installed, you can
|
||||||
|
manually edit the file and replace "changeme" with a strong password of your
|
||||||
|
choice.
|
||||||
|
|
||||||
|
4. Set the following environment variables in the `.env` file
|
||||||
|
- `UNIFI_VERSION`: The desired UniFi Network Application version
|
||||||
|
- `MONGO_VERSION`: The desired MongoDB version
|
||||||
|
- `MONGO_PASS`: The password you set in step 3
|
||||||
|
|
||||||
|
5. Start the containers using Docker Compose:
|
||||||
|
```txt
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## Version Selection
|
||||||
|
|
||||||
|
### UniFi Network Application
|
||||||
|
It's recommended to install the
|
||||||
|
[latest UniFi version](https://github.com/linuxserver/docker-unifi-network-application/releases),
|
||||||
|
preferably by specifying the version number. You can omit the `-lsXX` suffix if desired.
|
||||||
|
|
||||||
|
### MongoDB
|
||||||
|
It's highly recommended to use a specific version tag for
|
||||||
|
[MongoDB](https://www.mongodb.com/try/download/community) since there are no
|
||||||
|
automatic upgrades between major versions.
|
||||||
|
|
||||||
|
**Note:** Modern MongoDB relies on AVX support. You might encounter issues with
|
||||||
|
pre-Tiger Lake Celeron and Pentium CPUs on versions after 4.4. For non-AVX
|
||||||
|
systems, you can use version 4.4.
|
||||||
|
|
||||||
|
## Additional Information
|
||||||
|
For more details and configuration options, please refer to the
|
||||||
|
[linuxserver/docker-unifi-network-application](https://docs.linuxserver.io/images/docker-unifi-network-application/)
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
## License
|
||||||
|
This project is free software under the [Zero-Clause BSD](LICENSE).
|
31
docker-compose.yml
Normal file
31
docker-compose.yml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: ${UNIFI_IMAGE:-linuxserver/unifi-network-application}:${UNIFI_VERSION:?}
|
||||||
|
container_name: ${UNIFI_NAME:-unifi}
|
||||||
|
environment:
|
||||||
|
PUID: 1000
|
||||||
|
PGID: 1000
|
||||||
|
TZ: ${TIMEZONE:-America/New_York}
|
||||||
|
MONGO_HOST: db
|
||||||
|
MONGO_PORT: 27017
|
||||||
|
MONGO_DBNAME: ${MONGO_DBNAME:-unifi}
|
||||||
|
MONGO_USER: ${MONGO_USER:-unifi}
|
||||||
|
MONGO_PASS: ${MONGO_PASS:?}
|
||||||
|
volumes:
|
||||||
|
- app:/config
|
||||||
|
ports:
|
||||||
|
- 8443:8443
|
||||||
|
- 3478:3478/udp
|
||||||
|
- 10001:10001/udp
|
||||||
|
- 8080:8080
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: ${MONGO_IMAGE:-mongo}:${MONGO_VERSION:?}
|
||||||
|
container_name: ${MONGO_NAME:-unifi-db}
|
||||||
|
volumes:
|
||||||
|
- db:/data/db
|
||||||
|
- ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
db:
|
||||||
|
app:
|
8
example-init-mongo.js
Normal file
8
example-init-mongo.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
db.getSiblingDB("unifi").createUser({
|
||||||
|
user: "unifi",
|
||||||
|
pwd: "changeme",
|
||||||
|
roles: [
|
||||||
|
{ role: "dbOwner", db: "unifi" },
|
||||||
|
{ role: "dbOwner", db: "unifi_stat" }
|
||||||
|
]
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user