\documentclass{article}
\usepackage{ulem}
\pagestyle{headings}
\begin{document}
\part{ Web Server}
Users need a Web Server to interact with Horde Groupware.

\section{ Apache Web Server}
- Version 2.4 is supported\newline
- Use SSL certificates to enable HTTPS for anything but local test installations. You can get free SSL certificates via letsencrypt.org\newline
- Use mod\_php to run PHP on the web server or fastcgi and PHP-FPM for larger installations.\newline
- Enable mod\_rewrite for URL rewriting

\subsection{ Configuration Highlights}
- Horde 6 webroot is a sub directory inside the Horde 6 root directory ("/srv/www/horde/")\newline
- Default Horde configuration depends on AllowOverride\footnote{http://example.com/index.php?page=AllowOverride} to enable htaccess files. You can migrate the rewrite rules from the htaccess files into your web server config instead. This is less flexible but enables better performance.\newline
- Some directories need write access for the PHP or web server user:\newline
  - ./web/static\newline
  - ./web/horde/config\newline
  - ./vendor/horde/horde/config\newline
  - ./web/kronolith/config\newline
  - ./vendor/horde/kronolith/config\newline
  - ./web/imp/config\newline
  - ./vendor/horde/imp/config\newline
  - ./var/vfs\newline
  - ./var/tmp\newline
  - ./var/log\newline
  - ./var/cache

\subsection{ Ubuntu and Debian mod\_php Example Virtual Host Config}
cat /etc/apache2/sites-enabled/web.horde.localhost.conf \newline
\begin{verbatim}

<VirtualHost 127.0.0.2:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName web.horde.localhost

        ServerAdmin webmaster@localhost
        DocumentRoot /srv/www/horde/web
<Directory /srv/www/horde/web>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog /var/www/horde-deployment/var/log/error.log
        CustomLog /var/www/horde-deployment/var/log/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>
\end{verbatim}

\subsection{ OpenSUSE\footnote{http://example.com/index.php?page=OpenSUSE} mod\_php and HTTPS Vhost config example}
\begin{verbatim}

<VirtualHost _default_:443>

        #  General setup for the virtual host
        DocumentRoot /srv/www/horde/web
        ServerName dev.maintaina.com
        ServerAdmin admin@maintaina.com
        ErrorLog /srv/www/horde/var/log/apache2/error_log
        TransferLog /srv/www/horde/var/log/apache2/access_log

        #   SSL Engine Switch:
        #   Enable/Disable SSL for this virtual host.
        SSLEngine on

        #   You can use per vhost certificates if SNI is supported.
        SSLCertificateFile /etc/letsencrypt/live/dev.maintaina.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/dev.maintaina.com/privkey.pem

        # modern configuration, tweak to your needs
        SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
        SSLCipherSuite          ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
        SSLHonorCipherOrder     on
        SSLCompression          off
        SSLSessionTickets       off

        #   Per-Server Logging:
        #   The home of a custom SSL log file. Use this when you want a
        #   compact non-error SSL logfile on a virtual host basis.
        CustomLog /var/log/apache2/ssl_request_log   ssl_combined

        ## Configure mod_rewrite for permalink
        <Directory /srv/www/horde/web>
          AllowOverride All
          <FilesMatch "\.php[345]?s$">
              SetHandler application/x-httpd-php-source
          </FilesMatch>

          DirectoryIndex index.php
          AllowOverride All
          Require all granted
          Options +FollowSymlinks

        </Directory>

</VirtualHost>
\end{verbatim}

\section{ nginx}
Horde works with PHP-FPM and nginx 1.16-22\newline
Detailed instructions TBD

\end{document}
