Forge Home


Roundcube webmail resource types


2,085 latest version

4.0 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 1.2.0 (latest)
  • 0.1.35
  • 0.1.34
  • 0.1.33
  • 0.1.32
  • 0.1.31 (deleted)
  • 0.1.30
  • 0.1.29 (deleted)
  • 0.1.28
  • 0.1.27
  • 0.1.26
  • 0.1.25
  • 0.1.24
  • 0.1.23
  • 0.1.22 (deleted)
  • 0.1.21 (deleted)
  • 0.1.20
  • 0.1.19
  • 0.1.18
  • 0.1.17
  • 0.1.16
  • 0.1.15
  • 0.1.14
  • 0.1.13
  • 0.1.12
  • 0.1.11
  • 0.1.10
  • 0.1.9
  • 0.1.8
  • 0.1.7
  • 0.1.6
  • 0.1.5
  • 0.1.4
  • 0.1.3
  • 0.1.2
  • 0.1.1
  • 0.1.0
released Jul 31st 2020
This version is compatible with:
  • Puppet Enterprise 2017.2.x, 2017.1.x, 2016.5.x, 2016.4.x
  • Puppet >= 4.0.0 < 5.0.0

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'hetzner-roundcube', '1.2.0'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add hetzner-roundcube
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install hetzner-roundcube --version 1.2.0

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.



hetzner/roundcube — version 1.2.0 Jul 31st 2020


Table of Contents

  1. Overview - What is the roundcube module?
  2. Module Description - What does the module do?
  3. Setup - The basics of getting started with the roundcube module
  4. Usage - Configuration options and additional functionality
  5. Limitations - OS compatibility, etc.
  6. Development - Guide for contributing to the module


The roundcube module allows you to easilly manage a roundcube webmail instance. Please see the roundcube project page for details about the service:

Module Description

Roundcube is a browser-based IMAP client. This module consists of the classes to implement roundcube. The default behaviour of the roundcube package installation on Debian, is to install the web frontend packages (and all the dependent packages) and mysql as the default backend service on the same host. This module was compiled in a way that allows the frontend and backend to be installed on the same or on different hosts. The frontend classes will install all the required packages on the host that will serve the roundcube web frontend. The backend classes will ensure that the required data store is configured and ready to serve data to the frontend. Note that the module, though very configurable by using parameterised classes, makes some assumptions and defaults about the environment that it runs on.


What roundcube affects:

  • package/service/configuration files for RoundCube
  • package/service/configuration files for Apache (optional, but set as default)
  • package/service/configuration files for PostgreSQL (optional, but set as default)
  • puppet master's runtime (via plugins)
  • listened-to ports

Setup Requirements:

Pluginsync is required if you haven't got all the dependent modules already installed on your puppet implementation. The following additional modules are installed from the forge as dependencies

  • puppetlabs/apache
  • puppetlabs/stdlib
  • puppetlabs/apt
  • puppetlabs/postgresql
  • puppetlabs/inifile

Beginning with roundcube

Whether you choose a single node or a multi-node setup, a basic setup of Roundcube will cause:

  • PostgreSQL to install on the node if it’s not already there.
  • Roundcube postgres database instance and user account to be created
  • the postgres connection to be validated and, if successful, Roundcube to be installed and configured
  • Roundcube connection to be validated
  • Apache to install on the node if it's not already there, mod-php installed and activated
  • roundcube virtualhost configuration created with default directories and options
  • roundcube-pgsql, roundcube-core and roundcube-plugins packages to be installed

Apply the roundcube::roundcubeweb as well as the roundcube::webservice::apache class on the host that will serve the roundcube web site. Apply the roundcube::database::postgresql class to the host where you want the database installed.



The roundcubeweb class is the main class that will get your frontend up and running

Parameters within roundcube::roundcubeweb


What apt mirror to use for package installs (defaults to '')


The path containing the roundcube configuration files: and (defaults to /etc/roundcube).


The webserver technology used to host the roundcube site (defaults to apache)


This toggles whether or not to force roundcube to use https (defaults to false) Note: When set to true, you should set the roundcube::webservice::apache::port value to '443'.


The database technology used to host the roundcube database (defaults to postgresql)


The hostname of the server that will host the roundcube database (defaults to $::fqdn)


The port for the database to listen on (defaults to 5432)


What to call the roundcube database (defaults to roundcubedb)


What user to create for access to the roundcube database (defaults to roundcubedb)


The password to use to access the roundcube database as the database_username (defaults to roundcubedb)


Whether or not to connect to the database via ssl (defaults to false)


The default_host value to override in (defaults to '')


The des_key value to use in the file (defaults to 'rcmail-!24ByteDESkey*Str')


The imap auth type to use in the file (defaults to 'null')


What ip(s) postgresql should listen on (default to $::fqdn)


Whether or not set log_logins in (defaults to false)


Firewall options for the postgresql host (defaults to undef)


The location of the template file (defaults to 'roundcube/')


Any additional plugins to load in the file (default undef)


The skin to use in (defaults to 'larry')


The smtp_server set in (defaults to '')


The smtp_port to use in (defaults to 25)


The smtp_user setting in (defaults to '')


The smtp pass setting in (defaults to '')


The smtp_auth_type setting in (defaults to '')


The timezone setting in (defaults to 'auto')


Override the default 'googie' (Google) spellchecker engine, the only alternative at the moment is aspell


An optional array of languages to be used with aspell, for example ['en','uk','de'] (defaults to 'en')

Parameters within roundcube::webservice::apache

These are the parameters used to configure apache to server the roundcube web


Whether or not to create a default virtual host with the apache installation (defaults to false)


What servername to set in the roundcube virtualhost file (defaults to $::fqdn)


An array of serveraliases to add to the virtualhost file (defaults to [])


The documentroot for the roundcube virtual host (defaults to '/var/lib/roundcube')


An array of handlers to add to the defined directory section in the virtual host (defaults to [])


Removes all other apache configs and vhosts (defaults to true)


Whether or not to install OS specific default modules (defaults to false)


Whether to purge the default configuration files in the apache conf.d directory (defaults to false)


What mpm module to use for apache (defaults to prefork)


Command to trigger roundcube reconfiguration after setting db configuration (defaults to '/usr/sbin/dpkg-reconfigure')


Boolean you can set to have a vhost on non-ssl redirect to your ssl enabled vhost


Boolean to enable ssl in the vhost file.


The path to the ssl ca used


The path to the ssl certificate


The path to the ssl key


Scriptaliases to include in the virtual host file (defaults to [ { alias => '/program/js/tiny_mce/', path => '/usr/share/tinymce/www/' } ])


The port to bind the apache process to (defaults to '80')


What directories to configure for the virtualhost (defaults are as below)

{ path           => $documentroot,
options        => '+FollowSymLinks',
allow_override => 'All',
order          => 'allow,deny',
allow          => 'from all' },

{ path           => "${documentroot}/config",
options        => '-FollowSymLinks',
allow_override => 'None' }, 

{ path           => "${documentroot}/temp",
options        => '-FollowSymLinks',
allow_override => 'None',
order          => 'allow,deny',
deny           => 'from all' }, 

{ path           => "${documentroot}/logs",
options        => '-FollowSymLinks',
allow_override => 'None',
order          => 'allow,deny',
deny           => 'from all' }, 

{ path           => '/usr/share/tinymce/www/',
options        => 'Indexes MultiViews FollowSymLinks',
allow_override => 'None',
order          => 'allow,deny',
allow          => 'from all' }

Parameters within roundcube::database::postgresql


The address that the web server should bind to for HTTP requests (defaults to $::fqdn)


The host that runs the roundcube database (defaults to $::fqdn)


The name of the database that roundcube uses (defaults to 'roundcubedb')


The name of the user configured to access the roundcube database (defaults to 'roundcubedb')


The password used to access the roundcube database (defaults to 'roundcubedb')


  • The module has only been tested and built on Debian7 (Wheezy).
  • The wheezy-backports roundcube packages are required and installed, making use of the puppetlabs/apt module to pin them.
  • The module defaults to using apache as the web server and uses the puppetlabs/apache module to configure it.
  • The module defaults to using mod-php with apache.
  • The module defaults to using postgresql as the database server and uses the puppetlabs/postgresql module to configure it.
  • The database configuration is modified by using the puppetlabs/inifile module resources and updating the /etc/dbconfig-common/roundcube file with all the relevant database config options, then calling dpkg-reconfigure roundcube-core, as per the package documentation/recommendation.
  • So far no support for adding and installing additional roundcube plugins has been done, but this will probably happen in the next iteration of the module.


Feel free and please add compatibility with other platforms, databases and webservers, but please adhere to the puppet modules

You can read the complete module contribution guide on the Puppet Labs wiki.