rrc2software Blog Proyectos
rrc2software Blog Proyectos
Instalar UniFi Controller en CentOS 7

Instalar UniFi Controller en CentOS 7

Este artículo detalla el proceso completo de instalación y configuración de UniFi Controller en un sistema Linux. Incluye la instalación de dependencias necesarias como MongoDB y Java, la creación de un usuario específico para ejecutar el servicio, y la descarga e instalación de la última versión de UniFi. Además, cubre la configuración de un archivo de servicio Systemd, la apertura de puertos en el firewall, la configuración de SELinux, y la habilitación del servicio para que inicie automáticamente. Ideal para administradores que deseen implementar UniFi Controller de forma segura y eficiente.

Instalación del repositorio EPEL

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

yum -y install epel-release

Configuración del repositorio de MongoDB

A continuación, configuramos el repositorio de MongoDB, para utilizar la versión compatible con 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

Instalación de los servicios necesarios

Instalamos los paquetes necesarios para que UniFi Controller funcione correctamente:

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

Creación del usuario para el servicio

Creamos el usuario que ejecutará el servicio de UniFi:

useradd -r ubnt -s /bin/nologin

Descarga y descompresión de UniFi Controller

Descargamos y descomprimimos la última versión disponible 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

Creación del script de inicio para Systemd

Creamos el archivo de configuración del servicio Systemd para UniFi Controller:

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

Configuración de las reglas del firewall

Configuramos las reglas del firewall para permitir el acceso a los puertos necesarios. Dependiendo de tu sistema de firewall (FirewallD o iptables), utiliza uno de los siguientes conjuntos de comandos:

Para 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

Para 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

Configuración de SELinux

A continuación, configuramos SELinux para permitir que UniFi Controller funcione correctamente:

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

Habilitación del servicio

Finalmente, habilitamos el servicio para que se inicie automáticamente:

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

Última modificación: Nov 14, 2024

Volver al inicio