Install 3.3

Prepare

  • Make sure you enabled Python 2.7 since Kolab seems not to be ready for Python 3 yet:
$ eselect python list
eselect python list
Available Python interpreters:
  [1]   python2.7 
  [2]   python3.2
$ eselect python set 1
  • Make sure you've set the PHP_TARGETS accordingly:
/etc/portage/make.conf
# ...
PHP_TARGETS="php5-4"
# ...

Unmasking

  • All Kolab packages are masked with ~amd64. Make sure you've unmasked the following required packages before you proceed:

Kolab Package & Dependencies

/etc/portage/package.keywords/kolab33
=app-admin/augeas-1.3.0 ~amd64
=dev-php/PEAR-Net_LDAP3-1.0.2 ~amd64
=dev-php/composer-1.0.0_alpha10 ~amd64
=dev-python/pykolab-0.7.1 ~amd64
~dev-util/kolab-utils-3.1 ~amd64
=net-libs/libcalendaring-4.9.1 ~amd64
=net-libs/libkolab-0.6.0 ~amd64
=net-libs/libkolabxml-1.1.0 ~amd64
=net-mail/cyrus-imapd-2.5 ~amd64
=net-mail/kolab-3.3.0 ~amd64
=net-nds/389-admin-1.1.31-r1 ~amd64
=net-nds/389-ds-base-1.3.0.2-r2 ~amd64
=net-nds/kolab-schema-3.1 ~amd64
=www-apps/kolab-chwala-0.2 ~amd64
~www-apps/kolab-freebusy-1.0.5 ~amd64
=www-apps/kolab-irony-0.2.8 ~amd64
~www-apps/kolab-roundcube-1.1.1 ~amd64
=www-apps/kolab-roundcube-compose-addressbook-8.0.4 ~amd64
=www-apps/kolab-roundcube-contextmenu-2.1 ~amd64
=www-apps/kolab-roundcube-converse-0.8.3.0 ~amd64
=www-apps/kolab-roundcube-getmail-1.0.0 ~amd64
=www-apps/kolab-roundcube-identity-smtp-20141221 ~amd64
=www-apps/kolab-roundcube-listcommands-2.3.5 ~amd64
=www-apps/kolab-roundcube-persistent-login-4.1 ~amd64
=www-apps/kolab-roundcube-recipient-to-contact-0.3 ~amd64
=www-apps/kolab-roundcube-threading-as-default-20110427 ~amd64
=www-apps/kolab-syncroton-2.3.0 ~amd64
=www-apps/kolab-webadmin-3.2.1 ~amd64

You can get the most recent atoms of all packages from the Kolab overlay using eix:

ACCEPT_KEYWORDS="~amd64" eix --in-overlay kolab -l --format "<bestversion:NAMEVERSION>"

Unstable Mainstream Packages

/etc/portage/package.keywords/kolab33-ms
=dev-python/python-augeas-0.4.1 ~amd64

389 Directory Server & Dependencies

/etc/portage/package.keywords/kolab33-389
=net-nds/389-admin-1.1.31-r1 ~amd64
=net-nds/389-ds-base-1.3.0.2-r2 ~amd64
=app-admin/389-ds-console-1.2.6-r1 ~amd64
=app-admin/389-admin-console-1.1.8-r1 ~amd64
=dev-libs/389-adminutil-1.1.15 ~amd64
=www-apache/mod_nss-1.0.8-r1 ~amd64
=dev-java/idm-console-framework-1.1.7 ~amd64
=dev-perl/perl-mozldap-1.5.2 ~amd6=net-nds/389-admin-1.1.31-r1 ~amd64
=net-nds/389-ds-base-1.3.0.2-r2 ~amd64
=app-admin/389-ds-console-1.2.6 ~amd64
=app-admin/389-admin-console-1.1.8 ~amd64
=dev-libs/389-adminutil-1.1.15 ~amd64
=www-apache/mod_nss-1.0.8-r1 ~amd64
=dev-java/idm-console-framework-1.1.7 ~amd64
=dev-perl/perl-mozldap-1.5.2 ~amd64

USE-Flags

There are a couple of USE-flags to be set. You can run emerge and set the USE-flags on demand or just copy & paste the following:

/etc/portage/package.use/kolab33-389
www-servers/apache suexec threads
dev-libs/nss utils
/etc/portage/package.use/kolab33-cyrus
net-mail/cyrus-imapd ldap nntp perl replication sieve
dev-libs/cyrus-sasl openldap
dev-libs/openssl -bindist
net-misc/openssh -bindist
/etc/portage/package.use/kolab33-libkolab
dev-qt/qtcore qt3support
dev-qt/qtsql qt3support mysql
dev-qt/qtgui qt3support
media-video/vlc dbus ogg vorbis
sys-libs/zlib minizip
sys-apps/dbus X
sys-auth/consolekit policykit
dev-qt/qtdeclarative qt3support
app-text/ghostscript-gpl cups
dev-qt/qtopengl qt3support
x11-libs/cairo X
sys-fs/udev gudev
/etc/portage/package.use/kolab33-php
dev-lang/php fpm mysqli ldap gd pdo sockets curl mysql exif imap intl spell sqlite xmlwriter zip
app-eselect/eselect-php fpm
dev-php/PEAR-Net_SMTP sasl
/etc/portage/package.use/kolab33-postfix
mail-mta/postfix sasl
/etc/portage/package.use/kolab33-python
dev-lang/python sqlite

Emerge

  • Some packages are using PHP composer to download vendor files from Github. This might result in exhausting the public Github API limit for your host. To avoid this, you must set the GITHUB_API_TOKEN variable with the API token from your personal Github account. You can fetch your Github API token using curl:
$ curl -u "yourgithubname" https://api.github.com/authorizations | grep token
    "token": "YOUR TOKEN",
    "token": "ANOTHER TOKEN",
  • Further export the Github token:
$ export GITHUB_API_TOKEN <YOUR TOKEN>
  • Install Kolab:
$ emerge -av "=net-mail/kolab-3.3.0"

Initial setup

  • Kolab needs MySQL to be setup properly. So make sure to configure MySQL before you proceed:
# To setup dev-db/mariadb:
$ emerge --config mariadb
# or to setup dev-db/mysql:
$ emerge --config mysql
  • Update your defaults in /etc/kolab/kolab.conf and run `emerge –config` for first time setup:
$ emerge --config "=net-mail/kolab-3.2.0"

This will invoke setup-kolab which assumes a blank installation and might overwrite existing configuration files. See notes here if you want to update an existing Kolab setup.

Setup Roundcube

$ emerge --config kolab-roundcube

Webserver

We recommend to enable nginx and php-fpm for your webserver. To enable Kolab for a virtual host, just include the Kolab config. This is a sample configuration for the hostname example.org using SSL:

/etc/nginx/sites-available/example.org
server
{
    listen 80;
    listen [::]:80;
    server_name example.org;
    return 301 https://example.org$request_uri;
}
 
server
{
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.org;
 
    root /var/www/example.org/htdocs;
    index index.php index.html index.htm;
 
    ssl_certificate /etc/ssl/nginx/nginx.crt;
    ssl_certificate_key /etc/ssl/nginx/nginx.key;
    ssl_trusted_certificate /etc/ssl/nginx/nginx.pem;
    include /etc/nginx/ssl.conf;
 
    access_log /var/log/nginx/example.org.access.log;
    error_log /var/log/nginx/example.org.error.log debug;
 
    location = /robots.txt  { access_log off; log_not_found off; }
    location = /favicon.ico { access_log off; log_not_found off; }
 
    # this prevents hidden files (beginning with a period) from being served
    location ~ /\.          { access_log off; log_not_found off; deny all; }
 
    # Enable Kolab Groupware for this domain.
    include /etc/nginx/conf.d/kolab-*.conf;
}

Further make sure that /etc/php/fpm.d/*.conf will be included in the appropriate php-fpm configuration:

/etc/php/fpm-php5.5/php-fpm.conf
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;

; All relative paths in this configuration file are relative to PHP's install
; prefix (/usr/lib/php5.3). This prefix can be dynamicaly changed by using the
; '-p' argument from the command line.

; Include one or more files. If glob(3) exists, it is used to include a bunch of
; files from a glob(3) pattern. This directive can be used everywhere in the
; file.
; Relative path can also be used. They will be prefixed by:
;  - the global prefix if it's been set (-p arguement)
;  - /usr/lib/php5.3 otherwise
include=/etc/php/fpm.d/*.conf

; ...

Make sure, nginx and php-fpm is enabled in the default runlevel:

$ rc-update add nginx default
$ rc-update add php-fpm default

After you've started the services, you should be able to access your Kolab Groupware by pointing your browser to http://example.org.

The web administration panel can be found at http://example.org/wap.