\documentclass{article}
\usepackage{ulem}
\usepackage{graphicx}
\usepackage{hyperref}
\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.

\begin{itemize}
\item Kronolith Calendar


\item Nag Tasks


\item Mnemo Notes


\item Passwd Password


\item Turba Contacts


\item content Tagging support


\item timeobjects Helper for autogenerated calendars


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

<pre><code>
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 
</code></pre>
The general pattern is<br />
composer require horde/\$app \$version

Use the caret \^{} character to pin to a major version. Use the tilde \textasciitilde{} 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 <a href="https://packagist.org/">https://packagist.org/</a> 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

\begin{itemize}
\item var/config/nag/


\item var/config/kronolith


\item var/config/mnemo


\item var/config/turba


\item var/config/passwd


\end{itemize}
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<br />
/horde/admin/config/config.php?app=nag<br />
/horde/admin/config/config.php?app=mnemo<br />
/horde/admin/config/config.php?app=turba<br />
/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.<br />
This would result in the files vanishing on the next update.<br />
You need to move them to the persistent config dir.

<pre><code>
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
</code></pre>
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

<pre><code>
backends.local.php
attributes.local.php
</code></pre>
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

<pre><code>
<?php
/**
 * See backends.php for comments
 */

\$backends['hordeauth']['disabled'] = false;
</code></pre>
Run the 'composer horde-reconfigure' command in the root project dir afterwards.

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

<pre><code>
 ./vendor/bin/horde-db-migrate up
</code></pre>
\end{document}
