You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
4.5 KiB
212 lines
4.5 KiB
- name: set roundcube_cfg
|
|
set_fact:
|
|
roundcube_cfg: "{{ roundcube_default_config | d({}) | combine(roundcube_config | d({}), recursive=true) }}"
|
|
|
|
|
|
- name: install dependencies
|
|
package:
|
|
name:
|
|
- php8
|
|
- curl
|
|
- libgd
|
|
- php8-fpm
|
|
- aspell-libs
|
|
- aspell-en
|
|
- aspell-ru
|
|
- aspell
|
|
- aspell-lang
|
|
- gnupg
|
|
|
|
|
|
- name: install php dependencies
|
|
package:
|
|
name:
|
|
- php8-dom
|
|
- php8-session
|
|
- php8-xml
|
|
- php8-intl
|
|
- php8-json
|
|
- php8-pdo
|
|
- php8-pdo_mysql
|
|
- php8-pdo_pgsql
|
|
- php8-mbstring
|
|
- php8-openssl
|
|
- php8-ctype
|
|
- php8-curl
|
|
- php8-fileinfo
|
|
- php8-exif
|
|
- php8-iconv
|
|
- php8-gd
|
|
- php8-zip
|
|
- php8-pspell
|
|
- php8-pcntl
|
|
- php8-xmlwriter
|
|
- php8-tokenizer
|
|
|
|
|
|
|
|
- name: create user and group
|
|
include_tasks: tasks/create_user.yml
|
|
vars:
|
|
user:
|
|
name: "{{ roundcube_user }}"
|
|
group: "{{ roundcube_group }}"
|
|
dir: "{{ roundcube_dir }}"
|
|
create_home: no
|
|
|
|
|
|
- name: create roundcube directory structure
|
|
file:
|
|
path: "{{ item.path }}"
|
|
state: directory
|
|
mode: "{{ item.mode }}"
|
|
owner: "{{ roundcube_user }}"
|
|
group: "{{ roundcube_group }}"
|
|
loop:
|
|
- path: "{{ roundcube_dir }}"
|
|
mode: "0775"
|
|
- path: "{{ roundcube_enigma_dir }}"
|
|
mode: "0770"
|
|
|
|
|
|
- name: install php and php-fpm
|
|
include_role:
|
|
name: php
|
|
vars:
|
|
php_version: 8
|
|
php_install_fpm: yes
|
|
php_fpm_user: "{{ roundcube_user }}"
|
|
php_fpm_group: "{{ roundcube_group }}"
|
|
php_fpm_socket: "{{ roundcube_fpm_socket }}"
|
|
php_fpm_listener: roundcube
|
|
php_config:
|
|
file_uploads: yes
|
|
session.auto_start: 0
|
|
mbstring.func_overload: 0
|
|
pcre.backtrack_limit: 200000
|
|
upload_max_filesize: "{{ (mail_server.max_mail_size_bytes / 1024) | int | abs }}K"
|
|
post_max_size: "{{ (mail_server.max_mail_size_bytes / 1024) | int | abs }}K"
|
|
allow_url_fopen: yes
|
|
|
|
|
|
- name: install and configure nginx
|
|
include_role:
|
|
name: nginx
|
|
vars:
|
|
nginx:
|
|
servers:
|
|
- conf: nginx_server
|
|
certs: "{{ host_tls }}"
|
|
group: "{{ roundcube_group }}"
|
|
fastcgi: yes
|
|
|
|
|
|
- name: get latest version of roundcube
|
|
include_tasks: get_lastversion.yml
|
|
vars:
|
|
package:
|
|
name: roundcube/roundcubemail
|
|
location: github
|
|
assets: yes
|
|
asset_filter: 'complete.tar.gz$'
|
|
file: "{{ roundcube_dir }}/last_version"
|
|
extract: "{{ roundcube_dir }}"
|
|
user: "{{ roundcube_user }}"
|
|
group: "{{ roundcube_group }}"
|
|
notify: restart php fpm
|
|
strip_first_dir: yes
|
|
|
|
|
|
- name: ensure roundcube logs/temp directories are writable
|
|
file:
|
|
path: "{{ roundcube_dir ~ '/' ~ item }}"
|
|
mode: 0775
|
|
state: directory
|
|
loop:
|
|
- logs
|
|
- temp
|
|
|
|
|
|
- name: download mime types
|
|
get_url:
|
|
url: https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
|
|
dest: "{{ roundcube_dir }}/config/{{ roundcube_mime_types_file }}"
|
|
mode: 0440
|
|
owner: "{{ roundcube_user }}"
|
|
group: "{{ roundcube_group }}"
|
|
notify: restart php fpm
|
|
|
|
|
|
- name: create custom directory
|
|
file:
|
|
path: "{{ roundcube_dir }}/public_html/custom"
|
|
mode: 0775
|
|
owner: "{{ roundcube_user }}"
|
|
group: "{{ roundcube_group }}"
|
|
state: directory
|
|
|
|
|
|
- name: upload files to custom directory
|
|
copy:
|
|
src: "{{ item }}"
|
|
dest: "{{ roundcube_dir }}/public_html/custom/{{ item }}"
|
|
mode: 0444
|
|
owner: "{{ roundcube_user }}"
|
|
group: "{{ roundcube_group }}"
|
|
loop:
|
|
- favicon_mail.ico
|
|
- logo_mail.png
|
|
notify: restart php fpm
|
|
when: roundcube_custom_logo | d(false) == true
|
|
|
|
|
|
- name: template roundcube config
|
|
template:
|
|
src: config.j2
|
|
dest: "{{ roundcube_dir }}/config/config.inc.php"
|
|
force: yes
|
|
mode: 0660
|
|
owner: "{{ roundcube_user }}"
|
|
group: "{{ roundcube_group }}"
|
|
lstrip_blocks: yes
|
|
notify: restart php fpm
|
|
|
|
|
|
- name: delete sample config
|
|
file:
|
|
path: "{{ roundcube_dir }}/config/config.inc.php.sample"
|
|
state: absent
|
|
|
|
|
|
- name: setup database
|
|
include_tasks: db.yml
|
|
|
|
|
|
- name: install plugins
|
|
include_tasks: plugin.yml
|
|
loop: "{{ roundcube_plugins }}"
|
|
loop_control:
|
|
loop_var: plugin
|
|
|
|
|
|
- name: add cleandb cron job
|
|
cron:
|
|
name: roundcube database cleanup
|
|
job: "{{ roundcube_dir }}/bin/cleandb.sh 2>&1 /dev/null"
|
|
hour: "5"
|
|
minute: "0"
|
|
user: "{{ roundcube_user }}"
|
|
|
|
|
|
- name: flush handlers
|
|
meta: flush_handlers
|
|
|
|
|
|
- name: add directories to backup plan
|
|
include_role:
|
|
name: backup
|
|
vars:
|
|
function: add
|
|
backup_items:
|
|
- "{{ roundcube_dir }}"
|
|
- "{{ roundcube_enigma_dir }}"
|
|
|