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 libgcrypt-devel libxml2-devel openssl-devel bzip2-devel
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
  • Luego de crear el tiquete para probar
sudo dnf install mailx
  • Probamos
echo "Este es un correo de prueba desde Postfix en AlmaLinux." | mail -s "Prueba de Postfix" gustavo.matamoros@gmail.com
  • Verificar log
sudo tail -f /var/log/maillog

Instalación para imagenes y PDF documents

  • Instalados
dnf install gcc-c++ mesa-libgbm
dnf module reset nodejs
dnf module enable nodejs:18
dnf install nodejs
  • Cambiamos a usuario openemm
su - openemm
  • Ejecutamos
cd /home/openemm/webapps/emm/WEB-INF
npm install