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.
|
# > We name servers according to location, then type.
|
||||||
# > Then we regroup everything in global geographic and type groups.
|
# > Then we regroup everything in global geographic and type groups.
|
||||||
|
|
||||||
|
[horde]
|
||||||
|
horde-srv.adm.crans.org
|
||||||
|
|
||||||
[dhcp]
|
[dhcp]
|
||||||
dhcp.adm.crans.org
|
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