rrc2software Blog Proyectos
rrc2software Blog Proyectos

Instalar UniFi Controller en CentOS 7

Como paso inicial, instalamos el repositorio EPEL, necesario para la instalación de paquetes adicionales:

yum -y install epel-release

Configuramos el repositorios de MongoDB, para poder utilizar la cversión con la cual funciona correctamente UniFi Controller:

cat << 'EOF' >> /etc/yum.repos.d/mongodb-org.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
EOF

Instalamos los servicios necesarios:

yum -y install mongodb-org java-1.8.0-openjdk unzip wget jq
systemctl disable mongod.service
systemctl mask mongod.service

Creamos el usuario que ejecutará el servicio:

useradd -r ubnt -s /bin/nologin

Descargamos y descomprimimos la última versión de UniFi Controller:

LATEST_VERSION=$(wget -q -O - "https://fw-update.ubnt.com/api/firmware?filter=eq~~product~~unifi-controller&filter=eq~~platform~~unix&filter=eq~~channel~~release&sort=-version&limit=1" | jq -r "._embedded.firmware[0]._links.data.href")
cd ~ && wget -O UniFi.unix.zip $LATEST_VERSION
unzip -q UniFi.unix.zip -d /opt
chown -R ubnt:ubnt /opt/UniFi
rm -f UniFi.unix.zip

Creamos el script de inicio del servicio necesarios para funcionar con Systemd:

cat << 'EOF' >> /etc/systemd/system/unifi.service
#
# Systemd unit file for UniFi Controller
#

[Unit]
Description=UniFi Controller
After=syslog.target network.target

[Service]
Type=simple
User=ubnt
WorkingDirectory=/opt/UniFi
ExecStart=/usr/bin/java -Xmx1024M -jar /opt/UniFi/lib/ace.jar start
ExecStop=/usr/bin/java -jar /opt/UniFi/lib/ace.jar stop
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target
EOF

Configuramos las reglas del firewall:

# En caso de tener FirewallD

firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=8443/tcp --permanent
firewall-cmd --zone=public --add-port=8880/tcp --permanent
firewall-cmd --zone=public --add-port=8843/tcp --permanent
firewall-cmd --zone=public --add-port=10001/udp --permanent
firewall-cmd --zone=public --add-port=3478/udp --permanent
firewall-cmd --reload

# En caso de tener iptables

/sbin/iptables -A INPUT -p tcp -m tcp --dport 8080  -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 8081  -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 8443  -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 8880  -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 8843  -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -A INPUT -p udp -m udp --dport 10001 -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -A INPUT -p udp -m udp --dport 3478  -m conntrack --ctstate NEW -j ACCEPT
service iptables save

Configuramos SELinux:

semanage port -a -t mongod_port_t -p tcp 27117
semanage fcontext -a -t mongod_var_lib_t /opt/UniFi/data
semanage fcontext -a -t mongod_var_lib_t /opt/UniFi/logs
semanage fcontext -a -t httpd_sys_content_t /opt/UniFi/lib
semanage fcontext -a -t httpd_sys_content_t /opt/UniFi/webapps
semanage fcontext -a -t httpd_sys_content_t /opt/UniFi/work
restorecon -R /opt/UniFi
setsebool -P httpd_can_network_connect=1
setsebool -P httpd_can_network_connect_db=1

Habilitamos el servicio:

systemctl daemon-reload 
systemctl enable unifi.service
Tweet Share Share Pin Share Email

Última modificación: Jun 1, 2020

Volver al inicio