Install Mideye on RHEL, Rocky Linux & AlmaLinux 8/9/10 (RPM)
This guide covers installing Mideye Server on RHEL-based Linux with MariaDB, MySQL or Microsoft SQL Server.
Supported versions: RHEL, Rocky Linux and AlmaLinux 8, 9 and 10
Before you begin
Section titled “Before you begin”What you’ll need:
- Root or sudo access to the server
- A supported database (MariaDB, MySQL, or SQL Server)
- Network access to the Downloads page
- Firewall port assigned by Mideye Support
Quick overview
Section titled “Quick overview”- Install the Mideye Server package
- Install MariaDB or MySQL
- Create the database and user
- Connect Mideye Server to the database
- Start the service
- Complete the Configuration Wizard
Time required: 15–30 minutes
Step 1: Install Mideye Server
Section titled “Step 1: Install Mideye Server”-
Update the system packages:
Terminal window sudo dnf update -y -
Download the package from Mideye Server Downloads
-
Copy it to your server:
Terminal window scp ~/Downloads/MideyeServer6-x.x.x.el.rpm username@your-server:/tmp/ -
Install the package:
Terminal window sudo dnf install /tmp/MideyeServer6-x.x.x.el.rpm
Step 2: Install the database
Section titled “Step 2: Install the database”Install the database from your operating system’s own packages. It gets security updates together with the rest of the system.
| OS | MariaDB | MySQL |
|---|---|---|
| RHEL, Rocky Linux, AlmaLinux 8 | 10.11 | 8.4 from Oracle’s repository |
| RHEL, Rocky Linux, AlmaLinux 9 | 10.11 | 8.4 |
| RHEL, Rocky Linux, AlmaLinux 10 | 11.8 | 8.4 |
-
Install MariaDB.
Version 10:
Terminal window sudo dnf install mariadb11.8-serverVersion 8 and 9 (the default MariaDB in these versions is too old; select 10.11 first):
Terminal window sudo dnf module enable mariadb:10.11sudo dnf install mariadb-server -
Start MariaDB and verify that it’s running:
Terminal window sudo systemctl enable --now mariadbsudo systemctl status mariadb
-
Install MySQL.
Version 10:
Terminal window sudo dnf install mysql8.4-serverVersion 9 (the default MySQL in version 9 is 8.0, which has reached end of life; select 8.4 first):
Terminal window sudo dnf module enable mysql:8.4sudo dnf install mysql-serverVersion 8: the operating system only has MySQL 8.0, which has reached end of life. Install MySQL 8.4 from Oracle’s repository instead, see MySQL 8.4 on version 8.
-
Start MySQL and verify that it’s running:
Terminal window sudo systemctl enable --now mysqldsudo systemctl status mysqld -
Set a password for MySQL’s root user. MySQL from the operating system starts with an empty root password, so every user on the server can log in to MySQL as root until you set one:
Terminal window sudo mysql_secure_installationThe first question is about the VALIDATE PASSWORD component. If you turn it on, every MySQL password must meet its rules, including the one for Mideye Server in Step 3. Then set a root password and answer Yes to the remaining questions.
For Microsoft SQL Server, see the Windows installation guide or connect to an existing SQL Server instance.
Configure the connection in application-prod.yml:
spring: datasource: url: jdbc:sqlserver://sql-server-host:1433;database=mideyeserver;encrypt=true;trustServerCertificate=true username: mideye password: your_secure_passwordThen continue with Step 5.
Accept connections from the server only
Section titled “Accept connections from the server only”MariaDB and MySQL on RHEL accept connections on all network interfaces. Mideye Server connects through localhost, so
the database only needs to accept connections from the server itself.
This step is optional but recommended. With firewalld running (the default on RHEL), other machines can’t reach the database ports unless you open them. Limiting the database to the server itself also protects it if the firewall is turned off or changed later. Skip this step if other servers need to connect to the database, for example several Mideye Servers sharing one database.
sudo tee /etc/my.cnf.d/zz-bind-localhost.cnf > /dev/null <<'EOF'[mysqld]# Mideye Server: accept database connections from this server onlybind-address = 127.0.0.1EOFsudo systemctl restart mariadbVersion 9 and 10:
sudo tee /etc/my.cnf.d/zz-bind-localhost.cnf > /dev/null <<'EOF'[mysqld]# Mideye Server: accept database connections from this server onlybind-address = 127.0.0.1mysqlx-bind-address = 127.0.0.1EOFsudo systemctl restart mysqldVersion 8 (MySQL from Oracle’s repository): Oracle’s /etc/my.cnf doesn’t read the files in /etc/my.cnf.d/, so add
the settings to /etc/my.cnf itself:
sudo tee -a /etc/my.cnf > /dev/null <<'EOF'
[mysqld]# Mideye Server: accept database connections from this server onlybind-address = 127.0.0.1mysqlx-bind-address = 127.0.0.1EOFsudo systemctl restart mysqldCheck that port 3306 now only shows 127.0.0.1:
sudo ss -tlnp | grep -E ':3306|:33060'Step 3: Create the database and user
Section titled “Step 3: Create the database and user”Open the database prompt as root:
sudo mariadbmysql -u root -pEnter the root password from Step 2.
Create the database and a user for Mideye Server. You can change the database name, the username and the password in the example; use the same values in Step 4 (database names are case-sensitive on Linux).
CREATE DATABASE MideyeServer CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'mideye'@'localhost' IDENTIFIED BY 'your-secure-password';GRANT ALL PRIVILEGES ON MideyeServer.* TO 'mideye'@'localhost';FLUSH PRIVILEGES;EXITCREATE DATABASE MideyeServer CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;CREATE USER 'mideye'@'localhost' IDENTIFIED BY 'your-secure-password';GRANT ALL PRIVILEGES ON MideyeServer.* TO 'mideye'@'localhost';FLUSH PRIVILEGES;EXITStep 4: Connect Mideye Server to the database
Section titled “Step 4: Connect Mideye Server to the database”Edit the configuration file:
sudo nano /opt/mideyeserver6/config/application-prod.ymlThe file already has a datasource block. Set the database name in url, username and password to the values from
Step 3:
datasource: url: jdbc:mariadb://localhost:3306/MideyeServer username: mideye password: 'your-secure-password' datasource: url: jdbc:mariadb://localhost:3306/MideyeServer?sslMode=TRUST username: mideye password: 'your-secure-password'Use jdbc:mariadb:// for MySQL as well. Mideye Server includes the MariaDB driver, which works with both databases;
jdbc:mysql:// doesn’t work.
TLS to the database
Section titled “TLS to the database”- MySQL has TLS turned on. Keep
?sslMode=TRUST: without TLS, MySQL’s default login method fails and Mideye Server doesn’t start. - MariaDB 11.8 (version 10) has TLS turned on. You can add
?sslMode=TRUSTto the URL. - MariaDB 10.11 (version 8 and 9) has TLS turned off. With
?sslMode=TRUST, Mideye Server doesn’t start (Trying to connect with ssl, but ssl not enabled in the server). To use TLS, first turn it on in MariaDB as described in Enabling TLS for MariaDB Server, then add?sslMode=TRUST.
Step 5: Start Mideye Server
Section titled “Step 5: Start Mideye Server”sudo systemctl enable mideyeserver6sudo systemctl start mideyeserver6Verify it’s running:
sudo systemctl status mideyeserver6Step 6: Open firewall ports
Section titled “Step 6: Open firewall ports”Mideye Server needs two ports:
| Port | Protocol | Purpose |
|---|---|---|
| 8443 | TCP | Web interface |
| 1812 | UDP | RADIUS authentication |
sudo firewall-cmd --permanent --add-port=8443/tcpsudo firewall-cmd --permanent --add-port=1812/udpsudo firewall-cmd --reloadStep 7: Complete setup
Section titled “Step 7: Complete setup”-
Get the setup challenge code from the logs:
Terminal window sudo grep CHALLENGE /opt/mideyeserver6/log/mideyeserver.logMideye Server creates a new setup challenge every time it starts, until the configuration is complete. If the command shows more than one, use the one with the latest timestamp.
-
Open the web interface in your browser:
https://<server-ip>:8443 -
Complete the Configuration Wizard using the setup challenge code.
Verify the installation
Section titled “Verify the installation”After completing the setup wizard, verify that Mideye Server is fully operational:
# Check service statussudo systemctl status mideyeserver6
# Verify web interface is listeningsudo ss -tlnp | grep 8443
# Verify RADIUS is listening (after wizard completion)sudo ss -ulnp | grep 1812
# Check logs for errorssudo tail -50 /opt/mideyeserver6/log/mideyeserver.logMySQL 8.4 on version 8
Section titled “MySQL 8.4 on version 8”RHEL, Rocky Linux and AlmaLinux 8 only include MySQL 8.0, which has reached end of life. Install MySQL 8.4 from Oracle’s repository: follow A Quick Guide to Using the MySQL Yum Repository and select the MySQL 8.4 LTS series. Then:
-
Turn off the operating system’s MySQL module, so that dnf uses Oracle’s packages:
Terminal window sudo dnf module disable mysqlsudo dnf install mysql-community-serversudo systemctl enable --now mysqld -
Oracle’s MySQL creates a temporary root password. Find it, and use it when
mysql_secure_installationasks for the current password:Terminal window sudo grep 'temporary password' /var/log/mysqld.logsudo mysql_secure_installation -
Oracle’s MySQL turns on the VALIDATE PASSWORD component by default, so the password for Mideye Server in Step 3 must have upper and lower case letters, a digit and a special character, and at least 8 characters.
Then continue with Accept connections from the server only.
Install without internet access
Section titled “Install without internet access”The Mideye Server package installs without internet access. The database needs its packages and their dependencies.
Download them on a connected machine with the same OS release and architecture that doesn’t have the database
installed. On version 8 and 9, first select the version with dnf module enable as in Step 2.
sudo dnf install --downloadonly --downloaddir=db-pkgs mariadb11.8-server # or the package name from Step 2Copy the db-pkgs folder and the Mideye Server package to the server, then install them from the local files only:
sudo dnf install --disablerepo='*' ./db-pkgs/*.rpmsudo dnf install --disablerepo='*' ./MideyeServer6-x.x.x.el.rpm--disablerepo='*' makes dnf ignore its online repositories for this command. Without it, dnf may try to reach them and
wait until it times out.
Continue with Step 2 from systemctl enable --now.
Upgrade
Section titled “Upgrade”See Upgrades. After an upgrade you may find application-prod.yml.rpmnew next to
application-prod.yml. That’s the new package’s default file; your own configuration is kept and still used. You can
compare the two or delete the .rpmnew file.
Uninstall
Section titled “Uninstall”To remove Mideye Server:
sudo dnf remove mideyeserver6File locations
Section titled “File locations”| File | Path |
|---|---|
| Installation directory | /opt/mideyeserver6/ |
| Configuration | /opt/mideyeserver6/config/application-prod.yml |
| Certificates/Keystore | /opt/mideyeserver6/config/keystore.p12 |
| Logs | /opt/mideyeserver6/log/mideyeserver.log |
| Systemd service | /usr/lib/systemd/system/mideyeserver6.service |
Troubleshooting
Section titled “Troubleshooting”Service won’t start
Section titled “Service won’t start”Check the logs first:
sudo journalctl -u mideyeserver6 -n 50sudo tail -100 /opt/mideyeserver6/log/mideyeserver.errorCommon issues:
| Error | Cause | Solution |
|---|---|---|
Login failed for user | Invalid database credentials | Verify username/password in application-prod.yml |
Access denied for user 'mideye'@'localhost' | Invalid database credentials | Verify that the database name, username and password in application-prod.yml match Step 3 |
Trying to connect with ssl, but ssl not enabled in the server | ?sslMode=TRUST with MariaDB 10.11 | Remove ?sslMode=TRUST, see TLS to the database |
RSA public key is not available client side | MySQL without ?sslMode=TRUST | Add ?sslMode=TRUST to the URL |
Failed to load driver class com.mysql.cj.jdbc.Driver | URL starts with jdbc:mysql:// | Use jdbc:mariadb:// |
BadPaddingException | Wrong keystore password | Check certificate passphrase in configuration |
Address already in use | Port 8443 is occupied | Stop conflicting service or change port |
Database accepts connections from other machines
Section titled “Database accepts connections from other machines”If sudo ss -tlnp | grep -E ':3306|:33060' shows 0.0.0.0, * or [::] after
Accept connections from the server only, open the database prompt as in
Step 3 and check which address the database uses, whichever file the setting is
in:
SHOW VARIABLES LIKE '%bind_address';On version 8 with MySQL from Oracle’s repository, the settings must be in /etc/my.cnf, not in /etc/my.cnf.d/.
No SETUP CHALLENGE in logs
Section titled “No SETUP CHALLENGE in logs”The server may not have started correctly. Check for errors:
sudo cat /opt/mideyeserver6/log/mideyeserver.errorRADIUS not responding
Section titled “RADIUS not responding”RADIUS only starts after completing the setup wizard. Verify with:
sudo ss -ulnp | grep 1812If the port isn’t listening, check that the wizard was completed successfully.
Can’t access web interface
Section titled “Can’t access web interface”- Verify the service is running:
sudo systemctl status mideyeserver6 - Check firewall:
sudo firewall-cmd --list-all - Test local access:
curl -k https://localhost:8443

