Installation Instructions#

To install Znuny you need:

  • A database of your choice:

    • MySQL 8.0 or MySQL 8.4

    • MariaDB 10.3 or newer

    • Postgresql 12 or newer

    • Oracle 19 or newer

  • A webserver (Apache)

  • Some additional Perl modules, depending on the distribution you are using

  • Disabled SELinux when using Red Hat Linux, Rocky Linux, etc.

Note

This manual is based on the assumption that you are installing on a fresh and empty system using MariaDB.

The installation instructions mention Linux distributions. Debian based refers to Debian, Ubuntu and similar. RHEL based refers to Red Hat Enterprise Linux, Rocky Linux, Alma Linux and similar. We use mostly Debian 12 and Rocky Linux 9 in our tests.

Basics#

Important

For RHEL based distributions SELinux needs to be disabled or set to permissive.

Some basic packages are needed to get going. This includes the web server, database (MariaDB in this case), cpanminus to install additional Perl modules and Tar to extract the source.

dnf update -y
dnf install -y epel-release httpd mariadb mariadb-server cpanminus gcc make dnf-plugins-core tar bash-completion perl-core
crb enable
apt update -y
apt install -y apache2 mariadb-client mariadb-server tar bash-completion

The installation via RPM

dnf install -y https://download.znuny.org/releases/RPMS/rhel/7/znuny-7.1.3-01.noarch.rpm

The installation from the source takes some more steps:

# Download Znuny
cd /opt
wget https://download.znuny.org/releases/znuny-latest-7.1.tar.gz

# Extract
tar xfz znuny-latest-7.1.tar.gz

# Create a symlink
ln -s /opt/znuny-7.1.3 /opt/znuny

# Add user for RHEL
useradd -d /opt/znuny -c 'Znuny user' -g apache -s /bin/bash -M -N znuny

# Add user for Debian/Ubuntu
useradd -d /opt/znuny -c 'Znuny user' -g www-data -s /bin/bash -M -N znuny

# Copy default Config.pm
cp /opt/znuny/Kernel/Config.pm.dist /opt/znuny/Kernel/Config.pm

# Set permissions
/opt/znuny/bin/znuny.SetPermissions.pl

# As Znuny user - create default cronjobs
su - znuny
cd var/cron
for foo in *.dist; do cp $foo `basename $foo .dist`; done

Install Required Perl Modules#

Based on your distribution there are several different was to install the needed modules.

Some of the needed Perl modules are installed, when installing the RPM. You just need to complete the missing ones.

yum install -y "perl(Moo)"  "perl(Text::CSV_XS)" "perl(YAML::XS)" "perl(ModPerl::Util)" "perl(Mail::IMAPClient)" "perl(JSON::XS)" "perl(Encode::HanExtra)" "perl(Crypt::Eksblowfish::Bcrypt)" "perl(Data::UUID)" "perl(Date::Format)" "perl(DateTime::TimeZone)" "perl(DateTime)" "perl(DBD::mysql)" "perl(DBI)" "perl(Hash::Merge)" "perl(Net::LDAP)" "perl(Net::DNS)" "perl(Template)" "perl(Template::Stash::XS)" "perl(XML::LibXML)" "perl(XML::LibXSLT)" "perl(XML::Parser)" "perl(Spreadsheet::XLSX)" "perl(Package::Stash)"

cpanm JavaScript::Minifier::XS CSS::Minifier::XS iCal::Parser
apt -y install libapache2-mod-perl2 libdbd-mysql-perl libtimedate-perl libnet-dns-perl libnet-ldap-perl libio-socket-ssl-perl libpdf-api2-perl libsoap-lite-perl libtext-csv-xs-perl libjson-xs-perl libapache-dbi-perl libxml-libxml-perl libxml-libxslt-perl libyaml-perl libarchive-zip-perl libcrypt-eksblowfish-perl libencode-hanextra-perl libmail-imapclient-perl libtemplate-perl libdatetime-perl libmoo-perl bash-completion libyaml-libyaml-perl libjavascript-minifier-xs-perl libcss-minifier-xs-perl libauthen-sasl-perl libauthen-ntlm-perl libhash-merge-perl libical-parser-perl libspreadsheet-xlsx-perl libdata-uuid-perl

Database Configuration#

MySQL and Maria DB needs some configuation modifications. If you are using PostgreSQL you can skip this step:

Create a new configuration file for MariaDB:

vi /etc/my.cnf.d/znuny_config.cnf
vi /etc/mysql/mariadb.conf.d/50-znuny_config.cnf
Content for the configuration file#
[mysql]
max_allowed_packet=256M
[mysqldump]
max_allowed_packet=256M


[mysqld]
innodb_log_file_size = 256M
max_allowed_packet=256M

Important

The web installer requires a password. Check your Linux distributions manual how to set a passwort for the database admin user.

Restart the MariaDB database to apply the changes

systemctl restart mariadb

Webserver Configuration#

The Apache config is already in place if you used the RPM install, for the source install create a symbolic link:

ln -s /opt/znuny/scripts/apache2-httpd.include.conf /etc/httpd/conf.d/znuny.conf

Enable MPM prefork module:

sed -i '/^LoadModule mpm_event_module modules\/mod_mpm_event.so/s/^/#/' /etc/httpd/conf.modules.d/00-mpm.conf
sed -i '/^#LoadModule mpm_prefork_module modules\/mod_mpm_prefork.so/s/^#//' /etc/httpd/conf.modules.d/00-mpm.conf

To enable the Znuny Apache configuration you need to create a symlink to our included configuration file.

ln -s /opt/znuny/scripts/apache2-httpd.include.conf /etc/apache2/conf-available/znuny.conf

Enable the needed Apache modules and configuration:

a2dismod mpm_event
a2enmod mpm_prefork headers filter perl
a2enconf znuny

Start / Restart the web server to apply the changes.

systemctl restart httpd
systemctl restart apache2

Now start the web based installer:

http://HOSTNAME/znuny/installer.pl

Start-up Configuration#

You should enable the web server and the database to get started on boot.

systemctl enable mariadb httpd
systemctl enable mariadb apache2

Enable Znuny Cron#

Switch to the znuny user and fill the crontab

su - znuny
bin/Cron.sh start