[horde] went boum boum

main
_shirenn 2023-05-31 16:15:02 +02:00
parent e6537c233c
commit a1c6f7569c
25 changed files with 0 additions and 471 deletions

View File

@ -26,7 +26,6 @@
- import_playbook: plays/generate_documentation.yml - import_playbook: plays/generate_documentation.yml
- import_playbook: plays/gitlab.yml - import_playbook: plays/gitlab.yml
- import_playbook: plays/home.yml - import_playbook: plays/home.yml
- import_playbook: plays/horde.yml
- import_playbook: plays/irc.yml - import_playbook: plays/irc.yml
- import_playbook: plays/jitsi.yml - import_playbook: plays/jitsi.yml
- import_playbook: plays/keepalived.yml - import_playbook: plays/keepalived.yml

View File

@ -1,18 +0,0 @@
---
glob_horde:
secret: '{{ vault.horde.secret }}'
imap: imap.adm.crans.org
maildomain: crans.org
db: pgsql.adm.crans.org
admins: "{{ vault.horde.admins }}"
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: 172.16.10.0/24
zone_ipv6: fd00:0:0:10::/64
ipv4: "{{ query('ldap', 'ip4', ansible_hostname, 'adm') }}"
ipv6: "{{ query('ldap', 'ip6', ansible_hostname, 'adm') }}"
mailer:
host: redisdead.adm.crans.org

View File

@ -58,7 +58,6 @@ glob_reverseproxy:
- {from: grafana.crans.org, to: "172.16.10.121:3000"} - {from: grafana.crans.org, to: "172.16.10.121:3000"}
- {from: hedgedoc.crans.org, to: "172.16.10.128:3000"} - {from: hedgedoc.crans.org, to: "172.16.10.128:3000"}
- {from: helloworld.crans.org, to: 172.16.10.131} - {from: helloworld.crans.org, to: 172.16.10.131}
- {from: horde.crans.org, to: 172.16.10.108}
- {from: imprimante.crans.org, to: 172.16.10.131} - {from: imprimante.crans.org, to: 172.16.10.131}
- {from: intranet.crans.org, to: 172.16.10.156} - {from: intranet.crans.org, to: 172.16.10.156}
- {from: linx.crans.org, to: "172.16.10.119:8080"} - {from: linx.crans.org, to: "172.16.10.119:8080"}

View File

@ -68,7 +68,6 @@ loc_prometheus:
- https://lists.crans.org/ - https://lists.crans.org/
- https://cas.crans.org/ - https://cas.crans.org/
- https://ethercalc.crans.org/ - https://ethercalc.crans.org/
- https://webmail.crans.org/horde/login.php
- https://gitlab.crans.org/ - https://gitlab.crans.org/
- https://perso.crans.org/crans/ - https://perso.crans.org/crans/
- https://install-party.crans.org/ - https://install-party.crans.org/

View File

@ -1,9 +0,0 @@
---
interfaces:
adm: eth0
loc_unattended:
reboot: true
loc_needrestart:
override: []

View File

@ -18,9 +18,6 @@ loc_postgres:
- db: etherpad_tmp - db: etherpad_tmp
user: crans user: crans
map: {name: etherpad_tmp, system: etherpad, pg: crans} map: {name: etherpad_tmp, system: etherpad, pg: crans}
- db: horde5
user: www-data
map: {name: horde, system: www-data, pg: www-data}
- db: roundcube - db: roundcube
user: roundcube user: roundcube
map: {name: webmail, system: www-data, pg: roundcube} map: {name: webmail, system: www-data, pg: roundcube}

3
hosts
View File

@ -114,9 +114,6 @@ gitlab-ci.adm.crans.org
[grafana] [grafana]
fyre.adm.crans.org fyre.adm.crans.org
[horde]
horde.adm.crans.org
[irc] [irc]
irc.adm.crans.org irc.adm.crans.org

View File

@ -1,8 +0,0 @@
#!/usr/bin/env ansible-playbook
---
# Moi j'aime le ocaml et lui il installe horde
- hosts: horde
vars:
horde: "{{ glob_horde | default({}) | combine(loc_horde | default({})) }}"
roles:
- horde

View File

@ -1,26 +0,0 @@
# Horde
Ce rôle ansible deploie une instance du webmail horde.
## Variables
- 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

View File

@ -1,5 +0,0 @@
---
- name: Restart nginx
service:
name: nginx.service
state: restarted

View File

@ -1,72 +0,0 @@
---
# Setup dependencies
- name: Install horde APT dependencies
apt:
update_cache: true
name: "{{ item }}"
loop: # Install dependencies in the right order.
- nginx
- php-fpm
- php-horde-webmail
- php-pgsql
- oidentd
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: Enable horde plugins
template:
src: horde/{{ item }}/conf.php.j2
dest: /etc/horde/{{ item }}/conf.php
owner: www-data
group: www-data
mode: 0640
loop:
- gollem
- imp
- ingo
- kronolith
- mnemo
- nag
- trean
- turba
- 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
- name: Indicate role in motd
template:
src: update-motd.d/05-service.j2
dest: /etc/update-motd.d/05-horde
mode: 0755

View File

@ -1,8 +0,0 @@
{{ ansible_header | comment(decoration='// ') }}
<?php
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: c70cc328a58f2b69cb67558ab883380298313e1e $
$conf['backend']['backend_list'] = 'none';
$conf['foldercache']['use_cache'] = false;
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@ -1,130 +0,0 @@
{{ 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'] = '{{ 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'] = '{{ 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({{ 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'] = '{{ 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']['type'] = 'smtp';
$conf['mailer']['params']['host'] = '{{ horde.mailer.host }}';
$conf['mailer']['params']['port'] = 587;
$conf['mailer']['params']['auth'] = true;
$conf['mailer']['params']['username_auth'] = true;
$conf['mailer']['params']['password_auth'] = true;
$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. */

View File

@ -1,21 +0,0 @@
{{ ansible_header | comment(decoration='// ') }}
<?php
$servers['advanced'] = array(
// Disabled by default
'disabled' => false,
'name' => 'IMAP Cr@ns',
'hostspec' => '{{ horde.imap }}',
'hordeauth' => true,
'protocol' => 'imap',
'port' => 143,
'secure' => 'tls',
'maildomain' => '{{ horde.maildomain }}',
'smtp' => array(
'auth' => true,
'horde_auth' => true,
'host' => '{{ horde.mailer.host }}',
'port' => 587,
),
'cache' => false,
);
?>

View File

@ -1,22 +0,0 @@
{{ ansible_header | comment(decoration='// ') }}
<?php
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: 48bf0b4cc99e7941b4432a29e70e145b8d654cc7 $
$conf['user']['allow_view_source'] = true;
$conf['server']['server_list'] = 'none';
$conf['compose']['use_vfs'] = false;
$conf['compose']['link_attachments'] = false;
$conf['compose']['attach_size_limit'] = 0;
$conf['compose']['attach_count_limit'] = 0;
$conf['compose']['reply_limit'] = 200000;
$conf['compose']['ac_threshold'] = 3;
$conf['compose']['htmlsig_img_size'] = 30000;
$conf['pgp']['keylength'] = 0;
$conf['maillog']['driver'] = 'history';
$conf['sentmail']['driver'] = 'Null';
$conf['contactsimage']['backends'] = array('IMP_Contacts_Avatar_Addressbook');
$conf['tasklist']['use_tasklist'] = true;
$conf['notepad']['use_notepad'] = true;
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@ -1,12 +0,0 @@
{{ ansible_header | comment(decoration='// ') }}
<?php
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: 48142d13ef06c07f56427fe5b43981631bdbfdb0 $
$conf['storage']['params']['driverconfig'] = 'horde';
$conf['storage']['driver'] = 'sql';
$conf['rules']['userheader'] = true;
$conf['spam']['header'] = 'X-Spam-Level';
$conf['spam']['char'] = '*';
$conf['spam']['compare'] = 'string';
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@ -1,23 +0,0 @@
{{ ansible_header | comment(decoration='// ') }}
<?php
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: 380230c774efc2661b03a58bd71824d28cdc6040 $
$conf['calendar']['params']['table'] = 'kronolith_events';
$conf['calendar']['params']['driverconfig'] = 'horde';
$conf['calendar']['params']['utc'] = true;
$conf['calendar']['driver'] = 'sql';
$conf['storage']['params']['table'] = 'kronolith_storage';
$conf['storage']['params']['driverconfig'] = 'horde';
$conf['storage']['driver'] = 'sql';
$conf['calendars']['driver'] = 'default';
$conf['resource']['params']['table'] = 'kronolith_resources';
$conf['resource']['params']['driverconfig'] = 'horde';
$conf['resource']['params']['utc'] = true;
$conf['resource']['driver'] = 'sql';
$conf['autoshare']['shareperms'] = 'none';
$conf['share']['notify'] = false;
$conf['holidays']['enable'] = true;
$conf['menu']['import_export'] = true;
$conf['maps']['driver'] = false;
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@ -1,11 +0,0 @@
{{ ansible_header | comment(decoration='// ') }}
<?php
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: d97e56b407852ff0a86c7d88c9a57c8f3089e82f $
$conf['storage']['params']['table'] = 'mnemo_memos';
$conf['storage']['params']['driverconfig'] = 'horde';
$conf['storage']['driver'] = 'sql';
$conf['notepads']['driver'] = 'default';
$conf['menu']['import_export'] = true;
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@ -1,11 +0,0 @@
{{ ansible_header | comment(decoration='// ') }}
<?php
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: 7a2eb8e9002cee73d99d618dfb6509a56ab639ec $
$conf['storage']['params']['table'] = 'nag_tasks';
$conf['storage']['params']['driverconfig'] = 'horde';
$conf['storage']['driver'] = 'sql';
$conf['tasklists']['driver'] = 'default';
$conf['menu']['import_export'] = true;
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@ -1,10 +0,0 @@
{{ ansible_header | comment(decoration='// ') }}
<?php
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: 5622bdf8096764a63c7e1039b09edb337bd46a0f $
$conf['storage']['params']['driverconfig'] = 'horde';
$conf['storage']['driver'] = 'sql';
$conf['content_index']['enabled'] = false;
$conf['favicons']['type'] = 'horde';
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@ -1,11 +0,0 @@
{{ ansible_header | comment(decoration='// ') }}
<?php
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: 4cd616848fb2e5c81200bf7c65930e9086ec2dcd $
$conf['menu']['import_export'] = true;
$conf['shares']['source'] = 'localsql';
$conf['comments']['allow'] = true;
$conf['documents']['type'] = 'horde';
$conf['tags']['enabled'] = true;
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@ -1,16 +0,0 @@
{{ ansible_header | comment }}
server {
listen [{{ horde.ipv6 }}]:80;
server_name {{ horde.admin_src_hostname }} {{ horde.src_hostname }};
root /usr/share/;
location / {
return 302 https://{{ horde.dest_hostname }}/horde;
}
include "snippets/php.conf";
set_real_ip_from {{ horde.zone_ipv4 }};
set_real_ip_from {{ horde.zone_ipv6 }};
real_ip_header P-Real-Ip;
}

View File

@ -1,20 +0,0 @@
{{ ansible_header | comment }}
server {
listen {{ horde.ipv4 }}:80;
server_name {{ horde.dest_hostname }} {{ horde.admin_dest_hostname }};
root /usr/share/;
location / {
return 302 {{ 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 {{ horde.zone_ipv4 }};
set_real_ip_from {{ horde.zone_ipv6 }};
real_ip_header P-Real-Ip;
}

View File

@ -1,26 +0,0 @@
{{ 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.4-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.4-fpm.sock;
include fastcgi_params;
}

View File

@ -1,3 +0,0 @@
#!/usr/bin/tail +14
{{ ansible_header | comment }}
> Horde a été déployé sur cette machine. Voir https://gitlab.crans.org/nounous/ansible/-/tree/master/roles/horde.