[commits] [Wiki] created: OpenSuse16LeapInstallationNotes

boekhorstb1 wikiguest at horde.org
Wed Oct 7 13:26:03 UTC 2026


dc6614599d7a6767a1d256383af89e27  Wed, 07 Oct 2026 13:26:03 +0000

Created page: https://wiki.horde.org/OpenSuse16LeapInstallationNotes

# Fresh Installation of Horde 6 on OpenSuse


There are a few helpful links that could help in case you get stuck:
- the [hordectl github  
repository](https://github.com/horde/hordectl/blob/FRAMEWORK_6_0/doc/INSTALL_HORDE.md) contains very useful documentation that is not readily available in the horde  
wiki.

# Installation on OpenSuse Leap 16.0

## Requirements

- composer v2
- apache2
- mariadb (used version: 11.8.8-160000.1.1, should work on newest)
- PHP 8.4 with cli, fpm, mysql, xml (note this means xmlreader and  
xmlwriter for OpenSuse), mbstring, curl, gd, intl, bcmath, zip  
extensions.
- unzip

OPTIONAL:
- a public IP
- an FQDN

NOTE: I will use `12.345.678.90.nip.io` as my FQDN. Note that nip.io  
has DNS entries for all existing ips. So you can use yours there too  
(just replace 12.345.678.90 with your ip).
       I do this because I want to generate SSL certificates to run  
horde with https.

OK lets start. You need to setup php 8.4 first, then install all the  
required packages as follows:

```
$ zypper in php8-cli php8-fpm php8-mysql php8-xmlreader php8-xmlwriter  
php8-mbstring php8-curl php8-gd php8-intl php8-bcmath php8-zip \
             php-composer2 \
             apache2 \
             mariadb \
             unzip
```

NOTE: composer will run when user is root. If it does not work for a  
normal user you can create the following simlink:

```
sudo ln -s /usr/bin/composer /usr/local/bin/composer
```

## Install Hordectl

You need to be root (or use sudo) for this and all following steps.

```root
composer global require horde/hordectl:dev-FRAMEWORK_6_0
echo 'export PATH="$HOME/.config/composer/vendor/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```

Test:

```root
hordectl version
```

NOTE (OPTIONAL) that this might not work:

```root
sudo hordectl version
```

This is becuase sudo has an own "secure_path" which is set in the  
sudoers file (run `visudo`). If you want to sudo to work (not  
necessary in when using root user)
then adapt that file or create an alias in the `.bashrc` file.m (add  
something like `alias sudop='sudo env PATH=$PATH'` after above  
exported Path variable).

## Prepare the database

Use `mariadb-secure-installation` to setup a root user and password.
Reference the hordectl docs  
[here](https://github.com/horde/hordectl/blob/FRAMEWORK_6_0/doc/INSTALL_HORDE.md#database-mysql--mariadb).
Then log into mariadb as root and create the DB and User with full  
access to it:

```root
mariadb -u root <<'EOF'
CREATE DATABASE horde CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'horde'@'localhost' IDENTIFIED BY '<secure-password>';
GRANT ALL PRIVILEGES ON horde.* TO 'horde'@'localhost';
FLUSH PRIVILEGES;
EOF
```

## Fetch and setup Horde in working directory

Setup horde in working directory `/srv/www/horde-deployment`

```root
hordectl install --install-dir=/srv/www/horde-deployment --stability=dev
```

Add permissions:

```root
chown -R wwwrun:www /srv/www/horde-deployment
chmod -R 775 /srv/www/horde-deployment
```

## Setup Apache

Than change it to use a socket and not localhost:

```root
sudo vim /etc/php8/fpm/php-fpm.d/www.conf
```

Change:

```root
listen = 127.0.0.1:9000
```

to something like:

```root
listen = /run/php/php8.4-fpm.sock
```

Also uncomment the following:

```root
listen.owner = wwwrun
listen.group = www
listen.mode = 0660
```

Restart php-fpm or/and ensure it is running and enabled:

```root
systemctl enable --now php-fpm
systemctl restart php-fpm
```

Troubleshoot if php-fpm is not starting or reloading:

```root
mkdir /run/php/
```

Now finally start creating the needed configuration files for apache2.  
Reference the hordectl docs  
[here](https://github.com/horde/hordectl/blob/FRAMEWORK_6_0/doc/INSTALL_HORDE.md#web-server-apache). Run this (for ssl see note  
below):

```root
hordectl webserver-config apache-vhost \
     --default-url=http://12.345.678.90.nip.io \
     --root-bundle-path=/srv/www/horde-deployment \
     --output-dir=/srv/www/horde-deployment/var/webserver/apache-vhost \
     --force
```

Note: if you need SSL then use `https://<server_name>` with command  
above and afterwards edit  
/srv/www/horde-deployment/var/webserver/apache-vhost/horde-includes/tls/<server_name>.conf for SSL  
settings.
Extra note: if you have no domain name and still want to test SSL with  
an IP only you can use certbot with this DNS service (or use certbot  
with staging and version 5.4 or higher to get an ip-certificate for 6  
days).

```root
certbot certonly --apache -d 12.345.678.90.nip.io
```

Copy config files to apache2 folders:

```root
# Note: Unlike Debian/Ubuntu, openSUSE does not need an a2ensite step
cp -r  
/srv/www/horde-deployment/var/webserver/apache-vhost/horde-includes  
/etc/apache2/
cp /srv/www/horde-deployment/var/webserver/apache-vhost/sites/*.conf  
/etc/apache2/vhosts.d/
apachectl configtest
systemctl reload apache2
```

Then enable required modules:

```root
a2enmod rewrite proxy_fcgi setenvif
```

## Activate Horde

```root
hordectl activate
chown -R wwwrun:www /srv/www/horde-deployment/var
```

## Configure database, session and authentication

```root
hordectl configure database \
     --type=mysql --host=localhost --port=3306 \
     --username=horde --password=<secret-password> \
     --database=horde --charset=utf8mb4

hordectl configure session \
     --type=builtin --cookie-domain='' \
     --ensure-session-secret

hordectl configure auth --driver=sql --encryption=ssha
```

now migrate the database:

```root
su wwwrun -s /bin/bash -c  
"/srv/www/horde-deployment/vendor/bin/horde-db-migrate up"
```

## Enable the admin API for admin support

Note: the target-name is the working directories name ("horde-deployment").

Reference to hordectl docs  
[here](https://github.com/horde/hordectl/blob/FRAMEWORK_6_0/doc/INSTALL_HORDE.md#8-enable-the-admin-api)

IMPORTANT: the endpoint must be reachable. So if you pass localhost  
instead of <fqdn> (which is legit) then be sure that your apache  
config does not block anything or resend stuff to https (in that case  
add your fqdn here)

```root
hordectl target update horde-deployment --endpoint=http://<fqdn>/horde
hordectl secret generate
```

/etc/apache2 # certbot certonly --apache -d 12.345.678.90.nip.io

## Verifyn and Troubleshoot

You can try these verification commands (but in my experience hordectl  
does not verify correctly, also see troubleshoots bellow):

sudo hordectl test all
curl -f http://<fqdn>/horde/

### FQDN is not reachable, permission denied

- run the chown command again and restart apache2:

```root
# chown -R wwwrun:www /srv/www/horde-deployment
# chown -R wwwrun:wwwrun /srv/www/horde-deployment/var
# systemctl restart apache2
```

- edit `var/config/horde/conf.php` and make sure the servername is set  
to FQDN and not localhost. NOTE: this might lead to problems later on,  
because the files are generated by hordectl, so check if you can use  
hordectl correctly to generate these configs.

```
$conf = array (
   'use_ssl' => 2,
   'server' =>
   array (
     'name' => '<fqdn>', # replace localhost with FQDN
   ),
  [...]
```

- "ERROR no permissions to reach directory" (similar apache errors).  
Be sure to check your configs. You might try adding this to your vhost  
configuration (but there is a `.htaccess` file in the `web/` dir that  
should do this allready:

```
     <Directory /srv/www/horde-deployment/web>
         Options FollowSymLinks
         AllowOverride All
         Require all granted
     </Directory>
```



- "ERROR user could not login to SQL" (similar errors). Be sure that  
the DB user is set correctly in `var/config/horde/conf.php`. NOTE:  
this might lead to problems later on, because the files are generated  
by hordectl, so check if you can use hordectl correctly to generate  
these configs:

```
   'auth' =>
   array (
     'admins' =>
     array (
       0 => 'administrator',
     ),
     'driver' => 'sql',
     'params' =>
     array (
       'username' => 'horde', # this should be the username you  
configured when setting up the DB
       'driverconfig' => 'horde',
       'table' => 'horde_users',
       'username_field' => 'user_uid',
       'password_field' => 'user_pass',
       'encryption' => 'ssha',
     ),
     [...]
```

## Install Horde applications

Now you can start to install horde applications like so:

```
# cd /srv/www/horde-deployment
# composer require horde/kronolith # the calendar app
# composer require horde/imp       # the emailclient
# composer require horde/turba # the address book
# composer require horde/mnemo # the notes app
```

NOTE: According to the release notes these apps should be working.  
Reference to mailing list archinves:  
https://lists.horde.org/archives/horde/Week-of-Mon-20260713/060404.html

```
"Repositories ready for release:
   - ActiveSync (3 feat, 6 fix) 3.1.0
   - Core (0 feat, 4 fix) 3.2.1
   - Log (0 feat, 3 fix)  3.0.1
   - Rpc (1 feat, 1 fix) 3.1.0
   - base (1 feat, 2 fix)  6.2.0
   - imp (1 feat, 3 fix)   7.1.0
   - ingo (0 feat, 3 fix)  4.0.1
   - kronolith (0 feat, 1 fix)   5.0.2
   - timeobjects (0 feat, 1 fix)  3.0.0-beta3
   - turba (0 feat, 1 fix) 5.0.1
```

NOTE: I recommend installing apps one by one so you can test them and  
see if they spwan errors.
As of 10.08.2026 not all apps are working. I encountered problems when  
installing some apps that are not on the
relase list above:

```root
# composer require horde/gollem and horde/imp
# ...
#    
file_get_contents(/srv/www/horde-deployment/vendor/horde/gollem/web/js/horde/form_helpers.js)
#   : Failed to open stream: No such file or directory
```

You can try the dev-FRAMEWORK_6_0 branches to see if that mitigates the error.

Also when updateing the database schemes of the installed apps (also  
the ones on the release list!) you might get this error:

```
SQLSTATE[42S02]: Base table or view not found: 1146 Table  
'horde.rampage_types' doesn't exist
```

This is probably a bug and I do not know the direct conseqences of it.

## Bugs


List any tickets on http://bugs.horde.org/ that cover this issue or  
are relevant to it.

## People


Who is or might be involved in this project? Who can answer questions  
about it, either about a specific technology \(iCalendar\) or about a  
specific part of Horde \(Kronolith\)?

## Description


Detailed project description. Include implementation steps, current  
status, plan, etc.

## Resources


Include links to protocol descriptions, specifications, RFCs, external  
applications, presentations on http://horde.org/papers/ or elsewhere  
that are relevant, articles, API docs from http://dev.horde.org/ -  
anything that might be useful to someone working on this.


---
Back to the [Project List](Project)



More information about the commits mailing list