Arch Linux based Unifi Controller for GCE with separate MongoDB service
252
tcp:8880; tcp:8443; tcp:8843; tcp:8080 on 0.0.0.0/0 ingressRun locally or set custom metadata in UI:
$ cat <<-EOF > init
#cloud-config
write_files:
- path: /etc/systemd/system/mongodb.service
permissions: 0644
owner: root
content: |
[Unit]
Description=MongoDB Database Service
After=syslog.target network.target
[Service]
ExecStart=/usr/bin/docker run --rm --init -v /home/mongodb:/data/db -p 27017:27017/tcp --name mongodb mongo:3.6.3
ExecStop=/usr/bin/docker stop mongodb
ExecStopPost=/usr/bin/docker rm mongodb
- path: /etc/systemd/system/unifi.service
permissions: 0644
owner: root
content: |
[Unit]
Description=UniFi Controller Service
After=syslog.target network.target mongodb.service
[Service]
ExecStart=/usr/bin/docker run --rm --init -v /home/unifi:/var/lib/unifi/data --net host --name unifi blitzrk/unifi-controller
ExecStop=/usr/bin/docker stop unifi
ExecStopPost=/usr/bin/docker rm unifi
runcmd:
- systemctl daemon-reload
- systemctl start mongodb.service
- systemctl start unifi.service
- iptables -w -A INPUT -p tcp --match multiport --dports 8080,8443,8880,8843 -j ACCEPT
EOF
$ gcloud compute instances add-metadata $INSTANCE --metadata-from-file user-data=./init
FROM base/archlinux
# Install Unifi Controller
RUN set -x; \
pacman -Sy --noconfirm sudo base-devel git go fontconfig jre8-openjdk-headless; \
echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers; \
useradd -m -s /bin/bash unifi; \
usermod -a -G wheel unifi; \
sudo -H -u unifi go get github.com/Jguer/yay; \
sudo -H -u unifi bash -c "\
cd && ./go/bin/yay -G unifi && \
cd unifi && \
sed -i \"s|'mongodb' ||\" ./PKGBUILD && \
makepkg -i --noconfirm && \
cd .. && \
rm -rf unifi"; \
rm -rf /home/unifi/go; \
bash -c 'pacman -R --noconfirm $(comm -23 <(pacman -Qq | sort) <((for i in unifi $(pacman -Qqg base); do pactree -ul "$i"; done) | sort -u))'; \
yes | pacman -Scc
WORKDIR /usr/lib/unifi
COPY docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["/usr/bin/java", "-jar", "/usr/lib/unifi/lib/ace.jar", "start"]
#!/bin/bash
set -euo pipefail
if [ ! -f /usr/lib/unifi/data/system.properties ]; then
{
echo "uuid=$(uuidgen)";
echo "db.mongo.local=false";
echo "db.mongo.uri=mongodb://localhost:27017/unifi-test";
echo "statdb.mongo.uri=mongodb://localhost:27017/unifi-test_stat";
echo "unifi.db.name=unifi-test";
} > /usr/lib/unifi/data/system.properties
fi
echo "Running" "$@"
exec "$@"
Content type
Image
Digest
Size
311.2 MB
Last updated
over 8 years ago
docker pull blitzrk/unifi-controller