https://github.com/nathanejohnson/docker_compose_unifi_mongo
docker compose for spinning up unifi-network-application and mongodb along with a custom acme.sh deployment hook
https://github.com/nathanejohnson/docker_compose_unifi_mongo
acme-sh docker docker-compose unifi-network-application
Last synced: 3 months ago
JSON representation
docker compose for spinning up unifi-network-application and mongodb along with a custom acme.sh deployment hook
- Host: GitHub
- URL: https://github.com/nathanejohnson/docker_compose_unifi_mongo
- Owner: nathanejohnson
- License: mit
- Created: 2024-08-06T03:05:15.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-12T16:07:41.000Z (almost 2 years ago)
- Last Synced: 2025-01-26T01:42:15.975Z (over 1 year ago)
- Topics: acme-sh, docker, docker-compose, unifi-network-application
- Language: Shell
- Homepage:
- Size: 36.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## unifi application with mongodb docker-compose.yml that runs on raspberry pi (among others)
Uses the [linuxserver.io unifi image ](https://docs.linuxserver.io/images/docker-unifi-network-application/) as well as the [official mongo docker image](https://hub.docker.com/_/mongo)
clone this into a directory
copy env.template to .env
edit .env file and populate variables appropriately
This expects that the unifi controller will run on a dedicated externally defined docker network created with
docker network create
and specify the name of the network created as `MANAGEMENT_NETWORK` in .env . This is meant to run with a static IP within the subnet defined in the network, defined as `UNIFI_ADDRESS` in the .env. I use an ipvlan network for this, as all of my APs run on a management vlan that doesn't have internet access through the firewall. Tweak as necessary. You'll also want the user id and group id to be accurate for the `PUID` and `PGID` fields, using values from the `id` command.
As an example, this is how I created my vlan network for my management network, vlan 2, with 192.168.2.0/24 as the subnet, and 192.168.2.1 as the gateway, and a ipam range of 192.168.2.176-192.168.2.192, hung off interface eth0 vlan 2 (eth0.2) - it will create eth0.2 for you, no need to worry about it existing beforehand. I have a dhcp server on this same vlan, but I make sure both the --ip-range specified as well as the `UNIFI_ADDRESS` are outside of this range, for obvious reasons. `UNIFI_ADDRESS` should also be outside of the --ip-range specified.
docker network create -d ipvlan --gateway 192.168.2.1 --subnet '192.168.2.0/24' --ip-range '192.168.2.176/28' -o 'parent=eth0.2' ipvlan2
docker compose up -d and enjoy!
Included also is an [acme.sh](https://github.com/acmesh-official/acme.sh) [deploy hook](unifi_docker.sh) meant to be run on the docker host without requiring the docker container to have network access. This allows us to use zerossl / letsencrypt to generate TLS certificates for our web UI.
In order to use the deploy hook, first make sure you have created a certificate for the domain you plan to use for your unifi controller. Next you'll need to symlink the `unifi_docker.sh` script into the acme deploy hook directory. For example:
ln -s $(pwd)/unifi_docker.sh ~/.acme.sh/deploy/
There are three optional environment / configuration variables that can influence behavior. The first is
UNIFI_DOCKER_DIR
This is used to indicate the location on disk where this repository is cloned. If this variable isn't set, it will attempt to use pull the docker compose file location out of the output from a docker inspect command, and failing that, `${HOME}/docker_compose_unifi_mongo` if it exists. Otherwise it will error out, unless `UNIFI_HOST_DATA_DIR` is set explicitly. Normally the docker inspect should do the right thing.
UNIFI_HOST_DATA_DIR
Set this if you're moved the /config/data mount volume mount location. Defaults to `"${UNIFI_DOCKER_DIR}/unifi-data/data"`
UNIFI_CONTAINER_NAME
Set this if you've changed the name of the unifi container. Defaults to `unifi-network-application`
This deploy hook saves the state of these environment variables into the acme.sh configuration variables, so it should persist when running subsequently from cron after the initial invocation.
In other words, no need to set these environment variables again after the initial successful invocation. If something goes wrong, pass the `--debug` flag to
acme.sh
### NOTE: if you're on a raspberry PI, you need to do this in order for ipvlan / macvlan networks to work (assuing ubuntu or likely debian) and reboot:
apt install linux-modules-extra-raspi