OpenEEM: Instalación en AlmaLinux 8.10

  • Instalamos
  • Seleccionamos el idioma
  • HD:
  • password root
  • r/ac12
  • usuario adicional

cgi/u4c

Fecha y hora

Datos Servidor

IP: 10.0.3.86

Configuracion de red

  • red
  • Para configurar la red debemos ir a
nano /etc/sysconfig/network-scripts/ifcfg-ens192
  • Y debemos poner
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=ens192
UUID=72db0bdc-09b6-4b3f-98c2-5598d518d453
DEVICE=ens192
ONBOOT=yes
IPADDR=10.0.3.86
PREFIX=23
GATEWAY=10.0.2.1
DNS1=10.0.98.102
DNS2=10.0.98.103
  • Principalmente

Actualizar sistema

  • Ejecutar
sudo dnf check-update
  • Resultado
  • Actualizamos
sudo dnf update
  • Aceptamos

Instalación de OpenEMM

Servicio Cron

  • primero debemos verificar que el servicio cron esta activado
  • Primero verificamos si esta instalado
rpm -q cronie
  • Si no esta instalado
sudo dnf install cronie
  • Lo habilitamos
sudo systemctl enable crond
sudo systemctl start crond
sudo systemctl status crond

Deshabilitar SELINUX

  • Abrimos el archivo
nano /etc/selinux/config
  • Y modificamos
SELINUX=enforcing
X
SELINUX=disabled
  • Y reinicamos el servidor
reboot

Timezone

  • Ahora debemos verificar que la zona horaria este correcta
  • para esto ejecutamos
ls -l /etc/localtime
  • Resultado
lrwxrwxrwx. 1 root root 40 nov 20 11:26 /etc/localtime -> ../usr/share/zoneinfo/America/Costa_Rica

dependencias

  • ejecutamos
dnf update
dnf install gcc make
dnf install xorg-x11-fonts-75dpi fontconfig freetype libX11 libXext libXrender urw-fonts
  • Desinstalamos java si esta instalado
dnf remove java-1.8.0-openjdk

Python 3

  • Instalamos dependencias

dnf install gcc gcc-c++

dnf install gdbm-devel libffi-devel ncurses-devel
dnf install readline-devel sqlite-devel zlib-devel xz-devel
  • python
dnf install python3.11 python3.11-devel python3.11-pip

mariaDB

  • Eliminamos si existe
systemctl stop mysql
dnf remove mysql*
  • Dependencias
dnf install boost libaio ncurses-compat-libs wget
  • Descargamos los paquetes necesarios
cd /tmp

wget https://archive.mariadb.org/mariadb-10.11.7/yum/rhel8-amd64/rpms/MariaDB-client-10.11.7-1.el8.x86_64.rpm

wget https://archive.mariadb.org/mariadb-10.11.7/yum/rhel8-amd64/rpms/MariaDB-common-10.11.7-1.el8.x86_64.rpm

wget https://archive.mariadb.org/mariadb-10.11.7/yum/rhel8-amd64/rpms/MariaDB-server-10.11.7-1.el8.x86_64.rpm

wget https://archive.mariadb.org/mariadb-10.11.7/yum/rhel8-amd64/rpms/MariaDB-shared-10.11.7-1.el8.x86_64.rpm

wget https://archive.mariadb.org/mariadb-10.11.7/yum/rhel8-amd64/rpms/MariaDB-devel-10.11.7-1.el8.x86_64.rpm

wget https://archive.mariadb.org/mariadb-10.11.7/yum/rhel8-amd64/rpms/galera-4-26.4.16-1.el8.x86_64.rpm
  • Mandamos a instalar
dnf install MariaDB-* galera-4-26.4.16-1.el8.x86_64.rpm
  • Abrimos el archivo
nano /etc/my.cnf
  • Actual
#
# This group is read both by the client and the server
# use it for options that affect everything
#
[client-server]

#
# include *.cnf from the config directory
#
!includedir /etc/my.cnf.d
  • Le agregamos
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mariadb/mariadb.log
innodb_stats_persistent=0
  • Quedando así
#
# This group is read both by the client and the server
# use it for options that affect everything
#
[client-server]

#
# include *.cnf from the config directory
#
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mariadb/mariadb.log
innodb_stats_persistent=0
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
sql-mode = "STRICT_ALL_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

!includedir /etc/my.cnf.d
  • Habilitamos el servicio y lo iniciamos
systemctl enable mariadb
systemctl start mariadb
systemctl status mariadb
  • Instalamos el driver de python3 y mariadb
exit (root)
python3 -m pip install mariadb
  • If you receive an error message with content like “MariaDB Connector/Python requires MariaDB Connector/C”, try to install an older version of the module:
python3 -m pip install mariadb==1.0.11
  • Establecer password de usuario root
su -
mysql -u root -p

ENTER
  • Ejecutamos
ALTER USER 'root'@'localhost' IDENTIFIED by 'root123';

exit
  • Creamos una archivo .mysqlpw en el directorio /root con permisos de lectura y escritura
cd /root
nano .mysqlpw

# Guardamos la clave
root123

chmod 600 .mysqlpw
  • Ahora para evitar problemas de caracteres en el archivo /etc/my.cnf se debe agregar lo siguiente (Ya esta agregado)
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
  • Definir los modos de operación en /etc/my.cnf (ya esta agregado)
sql-mode = "STRICT_ALL_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Creación de usuario de BD

Creación de usuario de SO openEmm

  • Creamos el usuario openemm/openemm123
groupadd openemm
useradd -m -g openemm -d /home/openemm -s /bin/bash openemm
passwd openemm

# Comprobamos
su - openemm

# Salimos a root
exit

Instalación de firewall

  • Instalamos
dnf install firewalld
systemctl enable firewalld
systemctl start firewalld
systemctl status firewalld
  • Ahora vamos a abrir el puerto 25 y 8080
  • Y vamos hacer una redirección del puerto 80 al 8080
  • Ejecutamos para saber el nombre de la interfaz
firewall-cmd --get-active-zones
  • Ejecutamos
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=25/tcp --permanent
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
firewall-cmd --reload
  • PENDIENTE:
  • Si desea utilizar HTTPS en vez de HTTP debe agregar esta regla para redirigir de puerto 443-> 8443
# firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=8443 --permanent

Postfix

  • Instalamos
systemctl stop sendmail
dnf remove sendmail
dnf install postfix sendmail-milter procmail
  • Cambiamos el SMTP defecto a postfix
alternatives --set mta /usr/sbin/sendmail.postfix
  • Y creamos en enlace simbolico para que OpenEmm pueda encontrar el archivo de log de correo
ln -s /var/log/mail /var/log/maillog
  • Cambiar la configuración de postfix
  • Ingresamos a
cd /etc/postfix
  • verificamos el nombre del servidor
nano /etc/hostname
  • Debe estar con el nombre completo
openemm.una.ac.cr
    • revisamos el archivo host
    nano /etc/hosts
    • Agregamos al archivo
    127.0.0.1   openemm openemm.una.ac.cr
    • Y creamos o modificamos el archivo
    nano /etc/mailname
    • Y le agregamos
    openemm.una.ac.cr
    • Abrimos el archivo de configuración
    nano /etc/postfix/main.cf
    • Borramos todo su contenido y le pegamos
    # See /usr/share/postfix/main.cf.dist for a commented, more complete version
    
    
    # Debian specific:  Specifying a file name will cause the first
    # line of that file to be used as the name.  The Debian default
    # is /etc/mailname.
    #myorigin = /etc/mailname
    
    smtpd_banner = $myhostname ESMTP $mail_name (AlmaLinux)
    biff = no
    
    # appending .domain is the MUA's job.
    append_dot_mydomain = no
    
    # Uncomment the next line to generate "delayed mail" warnings
    #delay_warning_time = 4h
    
    readme_directory = no
    
    # See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
    # fresh installs.
    compatibility_level = 2
    
    
    
    # TLS parameters
    #smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    #smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    #smtpd_tls_security_level=may
    
    #smtp_tls_CApath=/etc/ssl/certs
    #smtp_tls_security_level=may
    #smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
    
    smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destinati>
    myhostname = openemm.una.ac.cr
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    mydestination = $myhostname, openemm.una.ac.cr, localhost.una.ac.cr, localhost
    relayhost = mail.una.ac.cr
    mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = loopback-only
    inet_protocols = all
    • Debe abrir el archivo
    nano /etc/postfix/master.cf
    • Y comentar la linea
    tlsmgr unix - - n 1000? 1 tlsmgr
    • Asi
    • Para que permita «mailloop» debemos agregar las siguientes dos lineas
    • NOTA: no omita los dos espacios en blanco antes de la palabra flags para indicarle a procesador que es una linea continua
    mailloop unix - n n - - pipe
      flags=RX user=openemm argv=/usr/bin/procmail /home/openemm/lib/bav.rc
    • Reiniciamos postfix
    systemctl restart postfix
    systemctl status postfix
    • Para garantizar que postfix inicia con los reboot del servidor
    chkconfig --level 35 postfix on

    Configurar Log de Sistema Operativo

    • Abrimos el archivo
    nano /etc/systemd/journald.conf
    • Y modificamos y descomentamos
    #RateLimitIntervalSec=30s
    X
    RateLimitIntervalSec=10s
    
    #RateLimitBurst=10000
    X
    RateLimitBurst=20000
    • Y reinicimos
    systemctl restart systemd-journald
    • Abrimos el archivo
    nano /etc/rsyslog.conf
    • Vamos a cambiar esta linea
    module(load="imjournal"             # provides access to the systemd journal
           UsePid="system" # PID nummber is retrieved as the ID of the process the journal entry originates from
           StateFile="imjournal.state") # File to store the position in the journal
    
    • Para agregarle esto al final del parentesis
    ratelimit.interval="10" ratelimit.burst="20000"
    • Asi
    module(load="imjournal"             # provides access to the systemd journal
           UsePid="system" # PID nummber is retrieved as the ID of the process the journal entry originates from
           StateFile="imjournal.state" ratelimit.interval="10" ratelimit.burst="20000") # File to store the position in the journal
    • Recargamos
    systemctl restart rsyslog
    systemctl status rsyslog
    • OpenEmm ocupa poder trabajar con /var/log/maillog
    • Para esto abrimos el archivo
    nano /etc/logrotate.d/syslog
    • Archivo original
    /var/log/cron
    /var/log/maillog
    /var/log/messages
    /var/log/secure
    /var/log/spooler
    {
        missingok
        sharedscripts
        postrotate
    	/usr/bin/systemctl -s HUP kill rsyslog.service >/dev/null 2>&1 || true
        endscript
    }
    
    • Y después de la la linea «sharedscripts» vamos agregar
    create 0644
    • Quedando así
    /var/log/cron
    /var/log/maillog
    /var/log/messages
    /var/log/secure
    /var/log/spooler
    {
        missingok
        sharedscripts
        create 0644
        postrotate
    	/usr/bin/systemctl -s HUP kill rsyslog.service >/dev/null 2>&1 || true
        endscript
    }
    
    • Y modificamos los permisos del log del mail
    chmod 644 /var/log/maillog

    Instalación de java 17 (NO SE HACE)

    • Verificamos si esta instalado
    java -version
    • Instalamos
    sudo dnf update -y
    sudo dnf install -y java-17-openjdk java-17-openjdk-devel
    • Lo instalamos como predeterminado
    sudo alternatives --config java
    • Verificamos la version
    java -version
    • Configurar variables de entorno (JAVA_HOME)
    • creamos el archivo
    sudo nano /etc/profile.d/java.sh
    • Le agregamos
    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
    export PATH=$JAVA_HOME/bin:$PATH
    • Recargamos el archivo
    source /etc/profile.d/java.sh
    • Verificamos
    echo $JAVA_HOME
    • Resultado

    Instalación de tomcat (No se hace)

    • Actualizamos
    # Actualizamos
    sudo dnf update -y
    
    # Dependencias
    sudo dnf install -y java-17-openjdk java-17-openjdk-devel
    • Instalación
    # Vamos al directorio opt
    cd /opt
    
    # Descargamos el programa
    sudo wget https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.1/bin/apache-tomcat-11.0.1.tar.gz
    
    # Descomprimimos
    sudo tar -xvzf apache-tomcat-11.0.1.tar.gz
    
    # Renombramos la carpeta
    sudo mv apache-tomcat-11.0.1 tomcat11
    
    • Configura las variables de entorno
    • Abrimos el archivo
    /etc/profile.d/java.sh
    • Borramos su contenido y pegamos lo siguiente
    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
    export CATALINA_HOME=/opt/tomcat11       
    export PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH
    • Actualizamos
    source /etc/profile.d/java.sh
    • Probamos
    echo $JAVA_HOME
    echo $CATALINA_HOME
    • Cambiamos los permisos y crear usuario tomcat
    sudo useradd -r -m -U -d /opt/tomcat11 -s /bin/false tomcat
    sudo chown -R tomcat:tomcat /opt/tomcat11
    • Configurar tomcat como servicio
    sudo nano /etc/systemd/system/tomcat.service
    • Le agregamos
    [Unit]
    Description=Apache Tomcat Web Application Container
    After=network.target
    
    [Service]
    Type=forking
    
    Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk
    Environment=CATALINA_HOME=/opt/tomcat11
    Environment=CATALINA_BASE=/opt/tomcat11
    Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
    
    ExecStart=/opt/tomcat11/bin/startup.sh
    ExecStop=/opt/tomcat11/bin/shutdown.sh
    
    User=tomcat
    Group=tomcat
    UMask=0007
    RestartSec=10
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    
    • Habilitamos el servicio
    #recarga los servicios de systemd
    sudo systemctl daemon-reload
    
    # Inicia Tomcat:
    sudo systemctl start tomcat
    
    #Habilita Tomcat para que inicie automáticamente al arrancar:
    sudo systemctl enable tomcat
    
    # Verificar
    sudo systemctl status tomcat
    

    Instalación de OpenEMM Maintenance Tool

    • Lo subimos al servidor a la carpeta openemm/openemm123
    scp openemm-runtime-24.04.000.098.tar.gz openemm@10.0.3.86:/home/openemm/
    • ahora dentro del servidor
    • Debemos darle permisos de sudo al usuario openemm
    # Como root agregamos el usuario al grupo sudo
    usermod -aG wheel openemm
    • Instalr npm
    sudo dnf update
    sudo dnf install curl dnf-plugins-core
    dnf module list nodejs 
    sudo dnf module install nodejs:18
    • Creación de certificados TLS
    • Creamso la carpeta «certificados» en /home/openemm para alamacenar los certificados
    su - openemm
    mkdir certificados
    • ahora como root
    exit
    cd /home/openemm/certificados/
    sudo dnf install openssl -y
    
    #Generar llave privada
    openssl genrsa -out ca-root.key 2048
    
    openssl req -x509 -new -nodes -key ca-root.key -sha256 -days 3650 -out ca-root.crt
    openssl genrsa -out ca-intermediate.key 2048
    openssl req -new -key ca-intermediate.key -out ca-intermediate.csr
    openssl x509 -req -in ca-intermediate.csr -CA ca-root.crt -CAkey ca-root.key -CAcreateserial -out ca-intermediate.crt -days 3650 -sha256
    
    cat ca-intermediate.crt ca-root.crt > ca-bundle.crt
    
    openssl genrsa -out 10.0.3.86.key 2048
    
    openssl req -new -key 10.0.3.86.key -out 10.0.3.86.csr
    
    openssl x509 -req -in 10.0.3.86.csr -CA ca-intermediate.crt -CAkey ca-intermediate.key -CAcreateserial -out 10.0.3.86.crt -days 365 -sha256
    
    • Esto nos creo los siguientes archivos
    ls
    • Darle permiso de escritura al /home/openemm/tomcat/logs
    chmod 777 -R /home/openemm/tomcat/logs
    • Nos logeamos con el usuario openemm
    su - openemm
    • Lo descomprimimos
    tar -xvzpf openemm-runtime-24.04.000.098.tar.gz
    • Y mandamos a ejecutar
    sudo ./bin/OMT.sh
    • Primero nos pregunta si deseamos cambiar esto
    • System value for maximum parallel files open (= ulimit) is 1024. Must be at least 16384.
    Checking python installation ...
    Python version found: 3.11.10 (/usr/bin/python3)
    Checking Zip installation ...
    Zip version 3.0 found
    Starting python ...
    System value for maximum parallel files open (= ulimit) is 1024. Must be at least 16384.
    Change it now (N/y, Blank => Cancel):
    
    • Nos indica que debemos reiniciar
    Changing /etc/security/limits.conf
    Changing /etc/systemd/user.conf
    Changing /etc/systemd/system.conf
    To let this changes take effect the system needs to be rebooted
    • reiniciamos
    exit
    reboot
    • Volvemos a ingresar y lo volvemos a ejecutar
    ssh 10.0.3.86 -l cgi
    
    # root
    su -
    
    # openemm
    su - openemm
    
    # Ejecutamos
    sudo ./bin/OMT.sh
    • Nos muestra la siguiente ventana
    • Aca debemos configurar la variable JAVA_HOME y CATALINA_HOME, es decir debemos instalar java y tomcat
    • Para esto primero escribimos JAVA_HOME -> ENTER
    • Y nos dice que deseamos establecer la ubicación de un java ya existente en nuestra MV o instalar el que el programa trae, escogemos este dendo en blanco -> enter y luego «Y»
    • Lo comienza a descargar e instalar cuando termine se vera así
    • Ahora hacemos lo mismo con Tomcat
    • Resultado
    • Estando aqui le damos ENTER para volver al menu principal
    • Y nos muestra este menu
    • Ahora debemos configurar la base de datos
    • Presionamos 2
    • Nos muestra esta ventana
    • Y vamos a escoger dbms -> mariadb
    • Nos modifica
    • Y ahora agregamos el usuario y pass de la base de datos
    • root/root123
    • quedado así
    • Ahora le damos guardar escribiendo save
    • creamos la bd
    • Nos dicfe que la creo
    • Ahora que tenemos la BD debemos instalar el sistema
    • Para esto vamos al menu principal ENTER y 0
    • Y le damos la opción 5
    • Y le decimos que si baje la ultima versión
    • Y que no deseamos actualizar -> N
    • Le decimos -> y
    • N
    • Que instale la misma versión -> y
    • y que no instale java y tomcat
    • le decimos que Y
    • Y comienza a descargar
    • le decimos que si instale
    • y comienza a instalar
    • instalamos la aplicación Statistics
    • y Webservices / Backend
    • Nos manda al menu principal y nos indica que que nos falta alguna configuración basica
    • entre ellas el dominio pero de momento la vamos a manejar como IP
    • Marcamos la opcion 2 Configuration
    • Y agregamos la dirección
    https://10.0.3.86
    • Resultado
    • Ahora como hemos definido la URL con https debemos crear el certificado
    • Le damos ENTER para regresar al menu
    • Le damos la opcion 0
    • Y ahora la opción 4 Security
    • Y ahora vamos a la opción de 2 configuración de certificados
    • Le decimos que -> y
    • y le damos las rutas
    /home/openemm/certificados/10.0.3.86.crt
    
    /home/openemm/certificados/10.0.3.86.key
    
    /home/openemm/certificados/ca-bundle.crt
    • Nos indica si desea utilizar otro puerto que el defecto -> N
    • Y lo mismo para puerto http->N
    • Regrsamos a menu principal -> 0
    • Ahorta lo reiniciamos opocion -> 10
    • le decimos que -> y
    • Da el siguiente error
    • Se intenta volver a instalarlo con actualizacion
    • ahora sin restart
    • Resultado
    • Nos indica que reinicio correctamete
    • Ahora debemos crear la contraseña del usuario ‘emm-master’
    • En el menu principal le damos la opción 4 Security
    • opción 1 Create new initial ‘emm-master’ password
    • Le decimos que si -> y
    • Y esto nos crea un password temporal con el que nos pódemos logear
    • Y nos pide cambiarla
    • Nueva $OpenEmm123
    • Y asi podemos ingresar
    • Ahora ingresamos a Administration -> System Status
    • Y podemos verificar que todo esta instalado de forma correcta