debops-contrib.roundcube default variables

Packages and installation

roundcube__required_php_packages

List of PHP packages required by Roundcube. Refer to the official Roundcube documentation for details.

roundcube__required_php_packages:
  - 'iconv'
  - 'openssl'
  - 'session'
  - 'sockets'
  - 'xml'
  # Included in the xml package
  #- 'dom'
  - 'mbstring'
  - 'json'
roundcube__optional_php_packages

List of recommended/optional PHP packages for Roundcube. Refer to the official Roundcube documentation for details.

roundcube__optional_php_packages:
  - 'fileinfo'
  - 'pspell'
  - 'zip'
roundcube__custom_php_packages

List of user defined PHP packages for Roundcube.

roundcube__custom_php_packages: []
roundcube__base_php_packages

List of base PHP packages required by Roundcube.

roundcube__base_php_packages:
  - '{{ roundcube__required_php_packages }}'
  - '{{ roundcube__apt_php_packages }}'
  - '{{ roundcube__optional_php_packages }}'
  - '{{ [ "mysql" ] if (roundcube__database_map[roundcube__database].dbtype == "mysql") else [] }}'
  - '{{ [ "sqlite3" ] if (roundcube__database_map[roundcube__database].dbtype == "sqlite") else [] }}'
roundcube__apt_php_packages

PHP packages which are installed via APT repository if they are available in a sufficiently new version in the current distribution. The required minimal versions are taken from the file:composer.json.dist of the Roundcube 1.3.0 release. If you install an older version of Roundcube you may want to adjust this list.

roundcube__apt_php_packages: '{{ [ "mail-mime", "net-smtp", "pear" ]
                                 if ansible_distribution_release in [ "stretch", "buster", "sid", "xenial", "yakkety", "zesty", "artful" ]
                                 else [] }}'
roundcube__packages

List of additional APT packages (e. g. language dictionaries) that should be installed with Roundcube.

roundcube__packages: []
roundcube__base_packages

APT packages required for the Roundcube installation.

roundcube__base_packages: [ 'curl', 'file', 'unzip' ]
roundcube__composer_packages

APT packages required to install PHP composer.

roundcube__composer_packages: [ 'composer ']
roundcube__composer_phar

If this is set to True the composer.phar script will be downloaded from the roundcube__composer_phar_url and used to install the missing PHP packages. If this is set to False the system-wide composer is used. WARNING: Setting this variable to True has some security implications as the download is not cryptographically verified. This is only meant to be a work-around for old distribution releases not supporting the downstream packaged composer.

roundcube__composer_phar: '{{ True
                              if ansible_distribution_release in [ "jessie", "trusty" ]
                              else False }}'
roundcube__composer_phar_url

URL to the file:composer.phar script which will be used to install PHP packages not available in the APT repository on distribution releases which don't package PHP composer. If this is set to False, composer will be installed via APT package manager.

roundcube__composer_phar_url: 'https://getcomposer.org/composer.phar'

Roundcube user account

roundcube__user

Roundcube system user account.

roundcube__user: 'roundcube'
roundcube__group

Roundcube system user group.

roundcube__group: 'roundcube'
roundcube__home

Path to the home directory of the Roundcube system account.

roundcube__home: '{{ (ansible_local.root.home
                       if (ansible_local|d() and ansible_local.root|d() and
                           ansible_local.root.home|d())
                       else "/var/local") + "/" + roundcube__user }}'
roundcube__comment

The GECOS string set for the Roundcube account.

roundcube__comment: 'Roundcube Webmail'
roundcube__shell

The default shell of the Roundcube account.

roundcube__shell: '/usr/sbin/nologin'

Roundcube source and deployment

roundcube__git_repo

Roundcube source repository.

roundcube__git_repo: 'https://github.com/roundcube/roundcubemail.git'
roundcube__git_dest

Roundcube source directory on the host.

roundcube__git_dest: '{{ roundcube__src + "/" + roundcube__git_repo.split("://")[1] }}'
roundcube__git_version

Roundcube release tag to deploy.

roundcube__git_version: '1.3.0'
roundcube__git_checkout

Default path where Roundcube source files will be deployed.

roundcube__git_checkout: '{{ roundcube__www + "/sites/" +
                             (roundcube__domain if roundcube__domain is string else roundcube__domain[0]) +
                             "/public" }}'
roundcube__src

Base path for git bare repository with Roundcube source.

roundcube__src: '{{ (ansible_local.root.src
                      if (ansible_local|d() and ansible_local.root|d() and
                          ansible_local.root.src|d())
                      else "/usr/local/src") + "/" + roundcube__user }}'
roundcube__www

Base web root directory for Roundcube website.

roundcube__www: '{{ ansible_local.nginx.www
                    if (ansible_local|d() and ansible_local.nginx|d())
                    else "/srv/www" }}'
roundcube__webserver_user

Roundcube webserver user (needs read-only access to the website code).

roundcube__webserver_user: '{{ ansible_local.nginx.user
                              if (ansible_local|d() and
                                  ansible_local.nginx|d() and
                                  ansible_local.nginx.user|d())
                              else "www-data" }}'

Database configuration

roundcube__database

Database definition to use from the roundcube__database_map.

roundcube__database: 'sqlite-default'
roundcube__database_user

Database user account to use for Roundcube.

roundcube__database_user: 'roundcube'
roundcube__database_password_path

Path to the database password file.

roundcube__database_password_path: '{{ secret + "/credentials/" + ansible_fqdn
                                       + "/roundcube/" + roundcube__database
                                       + "/" + roundcube__database_user + "/password" }}'
roundcube__database_password

Database password for the account given in roundcube__database_user.

roundcube__database_password: '{{ lookup("password", roundcube__database_password_path + " length=30") }}'
roundcube__database_name

Name of the database to use for Roundcube.

roundcube__database_name: 'roundcubemail'
roundcube__database_map

Database connection definitions. Selet the database connection to use in roundcube__database.

roundcube__database_map:

  sqlite-default:
    dbtype: 'sqlite'
    dbname: 'db/roundcube.db'

  mysql-default:
    dbtype: 'mysql'
    dbname: '{{ roundcube__database_name }}'
    dbuser: '{{ roundcube__database_user }}'
    dbpass: '{{ roundcube__database_password }}'
    dbhost: 'localhost'
    dbtableprefix: ''
roundcube__database_schema

Initial Roundcube database schema loaded by Ansible.

roundcube__database_schema: '{{ roundcube__git_checkout + "/SQL/mysql.initial.sql"
    if (roundcube__database_map[roundcube__database].dbtype == "mysql") else ""}}'

Roundcube application options

roundcube__domain

String or List of domains which will be used to access the roundcube instance.

roundcube__domain: [ 'roundcube.{{ ansible_domain }}' ]
roundcube__default_host

Mail host chosen to perform the log-in.

roundcube__default_host: 'localhost'
roundcube__smtp_server

SMTP server host (for sending mails).

roundcube__smtp_server: ''
roundcube__smtp_port

SMTP port.

roundcube__smtp_port: '25'
roundcube__smtp_user

SMTP username (if required) if you use %u as the username Roundcube will use the current username for login.

roundcube__smtp_user: ''
roundcube__smtp_pass

SMTP password (if required) if you use %p as the password Roundcube will use the current user's password for login.

roundcube__smtp_pass: ''
roundcube__des_key

Encryption key for the users imap password which is stored in the session record (and the client cookie if remember password is enabled).

roundcube__des_key: '{{ lookup("password", secret + "/credentials/" + ansible_fqdn + "/roundcube/des_key chars=hexdigits length=24") }}'
roundcube__local_config_map

Custom configuration values for the Roundcube config.inc.php.

roundcube__local_config_map: {}
roundcube__group_local_config_map

Custom configuration values which can be defined on a group level and eventually are merged with roundcube__local_config_map.

roundcube__group_local_config_map: {}
roundcube__host_local_config_map

Custom configuration values which can be defined ona host level and eventually are merged with roundcube__local_config_map.

roundcube__host_local_config_map: {}
roundcube__default_plugins

List of plugins shipped and enabled by default with Roundcube.

roundcube__default_plugins: [ 'archive', 'filesystem_attachments', 'jqueryui', 'zipdownload' ]
roundcube__plugins

Additional Roundcube plugins to enable. Check the plugins/ folder for the plugins shipped by default.

roundcube__plugins: []

Other variables

roundcube__max_file_size

Maximum upload size, in MB.

roundcube__max_file_size: '30'

Role-dependent configuration

roundcube__nginx__dependent_servers

nginx server configuration managed by the debops.nginx role.

roundcube__nginx__dependent_servers:

  - name: '{{ roundcube__domain }}'
    filename: 'debops-contrib.roundcube'
    by_role: 'debops-contrib.roundcube'
    type: 'php'
    default: False
    root: '{{ roundcube__git_checkout }}'
    access_policy: '{{ roundcube__nginx_access_policy }}'
    index: 'index.php'

    options: |
      autoindex off;
      client_max_body_size {{ roundcube__max_file_size }}M;
      client_body_buffer_size 128k;

    location_list:
      - pattern: '/'
        options: |
          try_files $uri $uri/ @roundcube;

      - pattern: '@roundcube'
        options: |
          rewrite ^/favicon\.ico$ skins/larry/images/favicon.ico last;

      - pattern: '~ ^/?(installer|[A-Z0-9]+$)'
        options: |
          deny all;

      - pattern: '~ ^/?(\.git|\.tx|SQL|bin|config|logs|temp|tests|program\/(include|lib|localization|steps))'
        options: |
          deny all;

      - pattern: '~ /(README\.md|composer\.json-dist|composer\.json|package\.xml|Dockerfile)$'
        options: |
          deny all;

    php_options: |
      fastcgi_intercept_errors        on;
      fastcgi_ignore_client_abort     off;
      fastcgi_connect_timeout         60;
      fastcgi_send_timeout            180;
      fastcgi_read_timeout            180;
      fastcgi_buffer_size             128k;
      fastcgi_buffers               4 256k;
      fastcgi_busy_buffers_size       256k;
      fastcgi_temp_file_write_size    256k;

    php_upstream: 'php_roundcube'
roundcube__nginx_access_policy

Name of the "nginx access policy" for Roundcube webpage. See debops.nginx Ansible role for more details.

roundcube__nginx_access_policy: ''
roundcube__nginx__dependent_upstreams

PHP upstream server configuration managed by the debops.nginx role.

roundcube__nginx__dependent_upstreams:

  - name: 'php_roundcube'
    by_role: 'debops-contrib.roundcube'
    enabled: True
    type: 'php'
    php_pool: 'roundcube'
roundcube__php__dependent_packages

List of PHP packages to install using the debops.php role.

roundcube__php__dependent_packages:
  - '{{ roundcube__base_php_packages }}'
  - '{{ roundcube__optional_php_packages }}'
  - '{{ roundcube__custom_php_packages }}'
roundcube__php__dependent_pools

PHP pools managed by the debops.php role.

roundcube__php__dependent_pools:
  name: 'roundcube'
  by_role: 'debops-contrib.roundcube'
  user: '{{ roundcube__user }}'
  group: '{{ roundcube__group }}'

  php_values:
    ## https://secure.php.net/manual/en/info.configuration.php#ini.upload-max-filesize
    upload_max_filesize:        '{{ roundcube__max_file_size }}M'

    ## https://secure.php.net/manual/en/ini.core.php#ini.post-max-size
    post_max_size:              '{{ roundcube__max_file_size }}M'

    ## https://github.com/roundcube/roundcubemail/wiki/Install-Requirements
    file_uploads:               'on'
    mbstring.func_overload:     'off'
    memory_limit:               '64M'
    magic_quotes_runtime:       'off'
    magic_quotes_sybase:        'off'
    session.auto_start:         'off'
    suhosin.session.encrypt:    'off'