commit
03dde47a48
|
@ -0,0 +1,20 @@
|
|||
glob_horde:
|
||||
secret: '{{ vault_horde_secret }}'
|
||||
imap: imap.adm.crans.org
|
||||
smtp: smtp.crans.org
|
||||
maildomain: crans.org
|
||||
db: thot.adm.crans.org
|
||||
admins:
|
||||
- "'paulon'"
|
||||
- "'vulcain'"
|
||||
- "'graillot'"
|
||||
- "'bombar'"
|
||||
- "'pa'"
|
||||
- "'erdnaxe'"
|
||||
redirection: https://wiki.crans.org/VieCrans/PagesDeDeconnexion/ERR_CHOOSE_WEBMAIL
|
||||
src_hostname: horde.crans.org
|
||||
dest_hostname : webmail.crans.org
|
||||
admin_src_hostname : horde.adm.crans.org
|
||||
admin_dest_hostname : webmail.adm.crans.org
|
||||
zone_ipv4 : 10.231.136.0/24
|
||||
zone_ipv6 : 2a0c:700:0:2::/64
|
|
@ -0,0 +1,2 @@
|
|||
loc_horde:
|
||||
ipv6: '[2a0c:700:0:2:5474:8dff:fe5d:e2be]'
|
2
hosts
2
hosts
|
@ -4,6 +4,8 @@
|
|||
# > We name servers according to location, then type.
|
||||
# > Then we regroup everything in global geographic and type groups.
|
||||
|
||||
[horde]
|
||||
horde-srv.adm.crans.org
|
||||
|
||||
[dhcp]
|
||||
dhcp.adm.crans.org
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
#!/usr/bin/env ansible-playbook
|
||||
---
|
||||
# Moi j'aime le ocaml et lui il installe horde
|
||||
- hosts: horde
|
||||
roles:
|
||||
- horde
|
|
@ -0,0 +1,26 @@
|
|||
# Horde
|
||||
Ce rôle ansible deploie une instance du webmail horde.
|
||||
|
||||
## Variables
|
||||
- glob_horde. :
|
||||
- secret : le secret de horde
|
||||
- imap : le serveur imap
|
||||
- smtp : le serveur smtp (il doit juste être contactable depuis le serveur
|
||||
imap)
|
||||
- maildomain : le nom de domaine depuis qui envoyé les mails
|
||||
- db : la bdd
|
||||
- admins : la liste des admins de horde
|
||||
- redirection : ou rediriger les utilisateurs si il essaie de voir la racine
|
||||
du site
|
||||
- src_hostname : on utilise deux hostnames, le premier va rediriger vers le
|
||||
second. Ici c'est le premier
|
||||
- dest_hostname : Ici c'est le second
|
||||
- admin_src_hostname : même chose mais sur le réseau d'administration. Ici
|
||||
c'est le premier
|
||||
- admin_dest_hostname : Ici c'est le second
|
||||
- zone_ipv4 : la zone ipv4 du réseaux sur lequel le proxy discute avec le
|
||||
serveur
|
||||
- zone ipv6 : la zone ipv6 du réseaux sur lequel le proxy discute avec le
|
||||
serveur
|
||||
- loc_horde :
|
||||
- ipv6 : l'ipv6 du serveur
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
|
||||
- name: Restart nginx
|
||||
service:
|
||||
name: nginx.service
|
||||
state: restarted
|
|
@ -0,0 +1,45 @@
|
|||
---
|
||||
# Setup dependencies
|
||||
- name: Install horde APT dependencies
|
||||
apt:
|
||||
update_cache: true
|
||||
name:
|
||||
- nginx
|
||||
- php-horde-webmail
|
||||
register: apt_result
|
||||
retries: 3
|
||||
until: apt_result is succeeded
|
||||
|
||||
- name: Configure horde
|
||||
template:
|
||||
src: '{{ item }}.j2'
|
||||
dest: '/etc/{{ item }}'
|
||||
owner: www-data
|
||||
group: www-data
|
||||
mode: 0640
|
||||
loop:
|
||||
- horde/horde/conf.php
|
||||
- horde/imp/backends.php
|
||||
|
||||
- name: Configure nginx site
|
||||
template:
|
||||
src: '{{ item }}.j2'
|
||||
dest: '/etc/{{ item }}'
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
loop:
|
||||
- nginx/sites-available/webmail
|
||||
- nginx/sites-available/horde
|
||||
- nginx/snippets/php.conf
|
||||
notify: Restart nginx
|
||||
|
||||
- name: Enable nginx site
|
||||
file:
|
||||
src: '/etc/nginx/sites-available/{{ item }}'
|
||||
dest: '/etc/nginx/sites-enabled/{{ item }}'
|
||||
state: link
|
||||
loop:
|
||||
- webmail
|
||||
- horde
|
||||
notify: Restart nginx
|
|
@ -0,0 +1,127 @@
|
|||
{{ ansible_header | comment(decoration='// ') }}
|
||||
<?php
|
||||
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
|
||||
// $Id: 08fc885cd91fbae2d752e274b554c5f1645129c8 $
|
||||
$conf['vhosts'] = false;
|
||||
$conf['debug_level'] = E_ALL & ~E_NOTICE;
|
||||
$conf['max_exec_time'] = 0;
|
||||
$conf['compress_pages'] = true;
|
||||
$conf['secret_key'] = '{{ glob_horde.secret }}';
|
||||
$conf['umask'] = 077;
|
||||
$conf['testdisable'] = true;
|
||||
$conf['use_ssl'] = 1;
|
||||
$conf['server']['name'] = $_SERVER['SERVER_NAME'];
|
||||
$conf['urls']['token_lifetime'] = 30;
|
||||
$conf['urls']['hmac_lifetime'] = 30;
|
||||
$conf['urls']['pretty'] = false;
|
||||
$conf['safe_ips'] = array();
|
||||
$conf['session']['name'] = 'Horde';
|
||||
$conf['session']['use_only_cookies'] = true;
|
||||
$conf['session']['timeout'] = 0;
|
||||
$conf['session']['cache_limiter'] = 'nocache';
|
||||
$conf['session']['max_time'] = 72000;
|
||||
$conf['cookie']['domain'] = $_SERVER['SERVER_NAME'];
|
||||
$conf['cookie']['path'] = '/';
|
||||
$conf['sql']['username'] = 'www-data';
|
||||
$conf['sql']['hostspec'] = '{{ glob_horde.db }}';
|
||||
$conf['sql']['protocol'] = 'tcp';
|
||||
$conf['sql']['database'] = 'horde5';
|
||||
$conf['sql']['charset'] = 'utf-8';
|
||||
$conf['sql']['splitread'] = false;
|
||||
$conf['sql']['logqueries'] = false;
|
||||
$conf['sql']['phptype'] = 'pgsql';
|
||||
$conf['nosql']['phptype'] = false;
|
||||
$conf['ldap']['useldap'] = false;
|
||||
$conf['auth']['admins'] = array({{ glob_horde.admins | join(', ')}});
|
||||
$conf['auth']['checkip'] = false;
|
||||
$conf['auth']['checkbrowser'] = true;
|
||||
$conf['auth']['resetpassword'] = false;
|
||||
$conf['auth']['alternate_login'] = false;
|
||||
$conf['auth']['redirect_on_logout'] = false;
|
||||
$conf['auth']['list_users'] = 'list';
|
||||
$conf['auth']['params']['hostspec'] = '{{ glob_horde.imap }}';
|
||||
$conf['auth']['params']['port'] = 143;
|
||||
$conf['auth']['params']['secure'] = 'tls';
|
||||
$conf['auth']['driver'] = 'imap';
|
||||
$conf['auth']['params']['count_bad_logins'] = false;
|
||||
$conf['auth']['params']['login_block'] = false;
|
||||
$conf['auth']['params']['login_block_count'] = 5;
|
||||
$conf['auth']['params']['login_block_time'] = 5;
|
||||
$conf['signup']['allow'] = false;
|
||||
$conf['log']['priority'] = 'INFO';
|
||||
$conf['log']['ident'] = 'HORDE';
|
||||
$conf['log']['name'] = LOG_USER;
|
||||
$conf['log']['type'] = 'syslog';
|
||||
$conf['log']['enabled'] = true;
|
||||
$conf['log_accesskeys'] = false;
|
||||
$conf['prefs']['maxsize'] = 65535;
|
||||
$conf['prefs']['params']['driverconfig'] = 'horde';
|
||||
$conf['prefs']['driver'] = 'Sql';
|
||||
$conf['alarms']['params']['driverconfig'] = 'horde';
|
||||
$conf['alarms']['params']['ttl'] = 300;
|
||||
$conf['alarms']['driver'] = 'Sql';
|
||||
$conf['group']['params']['driverconfig'] = 'horde';
|
||||
$conf['group']['driver'] = 'Sql';
|
||||
$conf['perms']['driverconfig'] = 'horde';
|
||||
$conf['perms']['driver'] = 'Sql';
|
||||
$conf['share']['no_sharing'] = false;
|
||||
$conf['share']['auto_create'] = true;
|
||||
$conf['share']['world'] = true;
|
||||
$conf['share']['any_group'] = false;
|
||||
$conf['share']['hidden'] = false;
|
||||
$conf['share']['cache'] = false;
|
||||
$conf['share']['driver'] = 'Sqlng';
|
||||
$conf['cache']['default_lifetime'] = 86400;
|
||||
$conf['cache']['params']['sub'] = 0;
|
||||
$conf['cache']['driver'] = 'File';
|
||||
$conf['cache']['use_memorycache'] = '';
|
||||
$conf['cachecssparams']['url_version_param'] = true;
|
||||
$conf['cachecss'] = false;
|
||||
$conf['cachejsparams']['url_version_param'] = true;
|
||||
$conf['cachejs'] = false;
|
||||
$conf['cachethemes'] = false;
|
||||
$conf['lock']['params']['driverconfig'] = 'horde';
|
||||
$conf['lock']['driver'] = 'Sql';
|
||||
$conf['token']['params']['driverconfig'] = 'horde';
|
||||
$conf['token']['driver'] = 'Sql';
|
||||
$conf['history']['params']['driverconfig'] = 'horde';
|
||||
$conf['history']['driver'] = 'Sql';
|
||||
$conf['davstorage']['params']['driverconfig'] = 'horde';
|
||||
$conf['davstorage']['driver'] = 'Sql';
|
||||
$conf['mailer']['params']['sendmail_path'] = '/usr/lib/sendmail';
|
||||
$conf['mailer']['params']['sendmail_args'] = '-oi';
|
||||
$conf['mailer']['type'] = 'sendmail';
|
||||
$conf['vfs']['params']['driverconfig'] = 'horde';
|
||||
$conf['vfs']['type'] = 'Sql';
|
||||
$conf['sessionhandler']['type'] = 'Builtin';
|
||||
$conf['sessionhandler']['hashtable'] = false;
|
||||
$conf['spell']['driver'] = '';
|
||||
$conf['gnupg']['keyserver'] = array('pool.sks-keyservers.net');
|
||||
$conf['gnupg']['timeout'] = 10;
|
||||
$conf['nobase64_img'] = false;
|
||||
$conf['image']['driver'] = false;
|
||||
$conf['exif']['driver'] = 'Bundled';
|
||||
$conf['timezone']['location'] = 'ftp://ftp.iana.org/tz/tzdata-latest.tar.gz';
|
||||
$conf['problems']['email'] = 'webmaster@example.com';
|
||||
$conf['problems']['maildomain'] = 'example.com';
|
||||
$conf['problems']['tickets'] = false;
|
||||
$conf['problems']['attachments'] = true;
|
||||
$conf['menu']['links']['help'] = 'all';
|
||||
$conf['menu']['links']['prefs'] = 'authenticated';
|
||||
$conf['menu']['links']['problem'] = 'all';
|
||||
$conf['menu']['links']['login'] = 'all';
|
||||
$conf['menu']['links']['logout'] = 'authenticated';
|
||||
$conf['portal']['fixed_blocks'] = array();
|
||||
$conf['accounts']['driver'] = 'null';
|
||||
$conf['user']['verify_from_addr'] = false;
|
||||
$conf['user']['select_view'] = true;
|
||||
$conf['facebook']['enabled'] = false;
|
||||
$conf['twitter']['enabled'] = false;
|
||||
$conf['urlshortener'] = false;
|
||||
$conf['weather']['provider'] = false;
|
||||
$conf['imap']['enabled'] = false;
|
||||
$conf['imsp']['enabled'] = false;
|
||||
$conf['kolab']['enabled'] = false;
|
||||
$conf['hashtable']['driver'] = 'none';
|
||||
$conf['activesync']['enabled'] = false;
|
||||
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */
|
|
@ -0,0 +1,19 @@
|
|||
{{ ansible_header | comment(decoration='// ') }}
|
||||
<?php
|
||||
$servers['imp'] = array(
|
||||
// Disabled by default
|
||||
'disabled' => false,
|
||||
'name' => 'IMAP Cr@ns',
|
||||
'hostspec' => '{{ glob_horde.imap }}',
|
||||
'hordeauth' => true,
|
||||
'protocol' => 'imap',
|
||||
'port' => 143,
|
||||
'secure' => 'tls',
|
||||
'maildomain' => '{{ glob_horde.maildomain }}',
|
||||
'smtp' => array(
|
||||
'host' => '{{ glob_horde.smtp }}',
|
||||
'port' => 25,
|
||||
),
|
||||
'cache' => false,
|
||||
);
|
||||
?>
|
|
@ -0,0 +1,17 @@
|
|||
{{ ansible_header | comment }}
|
||||
server {
|
||||
listen {{ glob_horde.admin_src_hostname }}:80;
|
||||
listen {{ loc_horde.ipv6 }}:80 ipv6only=on;
|
||||
server_name {{ glob_horde.admin_src_hostname }} {{ glob_horde.src_hostname }};
|
||||
|
||||
root /usr/share/;
|
||||
location / {
|
||||
return 302 https://{{ glob_horde.dest_hostname }}/horde;
|
||||
}
|
||||
include "snippets/php.conf";
|
||||
|
||||
set_real_ip_from {{ glob_horde.zone_ipv4 }};
|
||||
set_real_ip_from {{ glob_horde.zone_ipv6 }};
|
||||
real_ip_header P-Real-Ip;
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
{{ ansible_header | comment }}
|
||||
server {
|
||||
listen {{ glob_horde.admin_dest_hostname }}:80;
|
||||
listen {{ loc_horde.ipv6 }}:80;
|
||||
server_name {{ glob_horde.dest_hostname }} {{ glob_horde.admin_dest_hostname }};
|
||||
|
||||
root /usr/share/;
|
||||
location / {
|
||||
return 302 {{ glob_horde.redirection }};
|
||||
}
|
||||
location /horde {
|
||||
try_files $uri $uri/ /horde/rampage.php?$args;
|
||||
index index.php index.htm index.html;
|
||||
}
|
||||
include "snippets/php.conf";
|
||||
|
||||
set_real_ip_from {{ glob_horde.zone_ipv4 }};
|
||||
set_real_ip_from {{ glob_horde.zone_ipv6 }};
|
||||
real_ip_header P-Real-Ip;
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{{ ansible_header | comment }}
|
||||
|
||||
location ~ .+\.php {
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
if (!-e $document_root$fastcgi_script_name) {
|
||||
return 404;
|
||||
}
|
||||
fastcgi_buffer_size 128k;
|
||||
fastcgi_buffers 4 256k;
|
||||
fastcgi_busy_buffers_size 256k;
|
||||
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
location ~ ^/php_(ping|status)$ {
|
||||
access_log off;
|
||||
allow 127.0.0.1;
|
||||
deny all;
|
||||
root /usr/share/nginx/html;
|
||||
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
|
||||
include fastcgi_params;
|
||||
}
|
Loading…
Reference in New Issue