\documentclass{article}
\usepackage{ulem}
\pagestyle{headings}
\begin{document}
\part{ Install Horde Groupware Applications}
This will install a set of applications for a calendar/tasks/addressbook use case but not Email.

- Kronolith Calendar\newline
- Nag Tasks\newline
- Mnemo Notes\newline
- Passwd Password\newline
- Turba Contacts\newline
- content Tagging support\newline
- timeobjects Helper for autogenerated calendars

\section{ Install applications}
Inside your Root Project, run

\begin{verbatim}

sudo -u www-data composer require horde/kronolith ^5 horde/nag ^5 horde/content ^3 horde/timeobjects ^3 horde/mnemo ^5 horde/turba ^5 horde/passwd 
\end{verbatim}

The general pattern is\newline
composer require horde/\$app \$version

Use the caret \^ character to pin to a major version. Use the tilde $\sim$ to pin to a major and minor version. Use a fully qualified version name to pin to an exact version. This is normally not recommended. See the composer documentation for more advanced requirements. See the repo https://packagist.org/\footnote{https://packagist.org/} for available versions of individual apps. Note that only the latest major version will currently run with composer.

Warning: As of now, installing apps without a version constraint may result in installing the app from the development branch. This will be changed when the apps are officially released.

\section{ Provide configuration}
Put config files into

- var/config/nag/\newline
- var/config/kronolith\newline
- var/config/mnemo\newline
- var/config/turba\newline
- var/config/passwd

Run composer horde-reconfigure command

\section{ Configure via Web UI}
Go to the web UI and generate the default configs for the calendar and tasks apps:

/horde/admin/config/config.php?app=kronolith\newline
/horde/admin/config/config.php?app=nag\newline
/horde/admin/config/config.php?app=mnemo\newline
/horde/admin/config/config.php?app=turba\newline
/horde/admin/config/config.php?app=passwd

The content app does not need this.

On a fresh installation, the config UI will try to place the files in the web dir.\newline
This would result in the files vanishing on the next update.\newline
You need to move them to the persistent config dir.

\begin{verbatim}

mv web/kronolith/config/conf.php var/config/kronolith/conf.php
mv web/nag/config/conf.php var/config/nag/conf.php
mv web/mnemo/config/conf.php var/config/mnemo/conf.php
mv web/turba/config/conf.php var/config/turba/conf.php
mv web/passwd/config/conf.php var/config/passwd/conf.php
composer horde-reconfigure
\end{verbatim}

For later changes, the config UI should recognize the symlink and edit the target file instead.

\subsection{ Extra config for turba Addressbook}
Put these extra files into var/config/turba/ for customizing your addressbook layout and storage

\begin{verbatim}

backends.local.php
attributes.local.php
\end{verbatim}

Turba will otherwise use a default setup with addressbooks stored in the SQL database.

Run the 'composer horde-reconfigure' command in the root project dir afterwards.

\subsection{ Extra config for passwd}
The password changing app will not be useful without additional configuration.

Put this extra file into var/config/passwd/ to make horde delegate password changing to your configured auth driver:

backends.local.php\newline
\begin{verbatim}

<?php
/**
 * See backends.php for comments
 */

$backends['hordeauth']['disabled'] = false;
\end{verbatim}

Run the 'composer horde-reconfigure' command in the root project dir afterwards.

\section{ Setup the database tables}
Run this command:\newline
\begin{verbatim}

 ./vendor/bin/horde-db-migrate up
\end{verbatim}

\end{document}
