initial
This commit is contained in:
commit
2fc94b54bd
24
.gitignore
vendored
Normal file
24
.gitignore
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# ---> Ansible
|
||||||
|
*.retry
|
||||||
|
|
||||||
|
# ---> Vim
|
||||||
|
# Swap
|
||||||
|
[._]*.s[a-v][a-z]
|
||||||
|
!*.svg # comment out if you don't need vector files
|
||||||
|
[._]*.sw[a-p]
|
||||||
|
[._]s[a-rt-v][a-z]
|
||||||
|
[._]ss[a-gi-z]
|
||||||
|
[._]sw[a-p]
|
||||||
|
|
||||||
|
# Session
|
||||||
|
Session.vim
|
||||||
|
Sessionx.vim
|
||||||
|
|
||||||
|
# Temporary
|
||||||
|
.netrwhist
|
||||||
|
*~
|
||||||
|
# Auto-generated tag files
|
||||||
|
tags
|
||||||
|
# Persistent undo
|
||||||
|
[._]*.un~
|
||||||
|
|
45
README.adoc
Normal file
45
README.adoc
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
SoGO
|
||||||
|
====
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
You need to have debian (or compatible, like ubuntu) already installed.
|
||||||
|
|
||||||
|
It will install all dependencies on host-machine:
|
||||||
|
|
||||||
|
* LDAP - Yes, you need a LDAP-server. It can be installed anywhere, but you need one.
|
||||||
|
|
||||||
|
A https-Server is not included, so you need a nginx oder nginx-unit in front of.
|
||||||
|
|
||||||
|
Role Variables
|
||||||
|
--------------
|
||||||
|
|
||||||
|
sogo_ldap_base_dn::
|
||||||
|
|
||||||
|
Example Playbook
|
||||||
|
----------------
|
||||||
|
|
||||||
|
[source,yaml]
|
||||||
|
----
|
||||||
|
---
|
||||||
|
# vim: set expandtab tabstop=2 shiftwidth=2:
|
||||||
|
|
||||||
|
- hosts: sogo
|
||||||
|
remote_user: root
|
||||||
|
become: false
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- import_role:
|
||||||
|
name: sogo
|
||||||
|
----
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
AGPLv3
|
||||||
|
|
||||||
|
Author Information
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Denis Knauf - https://git.denkn.at/deac/ansible-role-sogo
|
7
defaults/main.yml
Normal file
7
defaults/main.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
sogo_super_usernames: []
|
||||||
|
sogo_favicon_uri: /favicon.ico
|
||||||
|
sogo_page_title: '{{sogo_mail_domain}}'
|
||||||
|
sogo_submission_server: 'smtp://localhost:587/?tls=YES&tlsVerifyMode=allowInsecureLocalhost'
|
||||||
|
sogo_imap_server: 'imap://localhost:143/'
|
||||||
|
sogo_sieve_server: 'sieve://localhost:4190/'
|
||||||
|
sogo_ldap_server: 'ldapi://'
|
51
meta/main.yml
Normal file
51
meta/main.yml
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
galaxy_info:
|
||||||
|
author: Denis Knauf
|
||||||
|
description: SoGO Groupware server compilation, installation and configuration
|
||||||
|
|
||||||
|
# If the issue tracker for your role is not on github, uncomment the
|
||||||
|
# next line and provide a value
|
||||||
|
# issue_tracker_url: http://example.com/issue/tracker
|
||||||
|
|
||||||
|
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||||
|
# - BSD-3-Clause (default)
|
||||||
|
# - MIT
|
||||||
|
# - GPL-2.0-or-later
|
||||||
|
# - GPL-3.0-only
|
||||||
|
# - Apache-2.0
|
||||||
|
# - CC-BY-4.0
|
||||||
|
license: AGPL-3.0-or-later
|
||||||
|
|
||||||
|
min_ansible_version: 2.9
|
||||||
|
|
||||||
|
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||||
|
# min_ansible_container_version:
|
||||||
|
|
||||||
|
#
|
||||||
|
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||||
|
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||||
|
# To view available platforms and versions (or releases), visit:
|
||||||
|
# https://galaxy.ansible.com/api/v1/platforms/
|
||||||
|
#
|
||||||
|
# platforms:
|
||||||
|
# - name: Fedora
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - 25
|
||||||
|
# - name: SomePlatform
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - 1.0
|
||||||
|
# - 7
|
||||||
|
# - 99.99
|
||||||
|
|
||||||
|
galaxy_tags: []
|
||||||
|
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||||
|
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||||
|
# remove the '[]' above, if you add tags to this list.
|
||||||
|
#
|
||||||
|
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||||
|
# Maximum 20 tags per role.
|
||||||
|
|
||||||
|
dependencies: []
|
||||||
|
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||||
|
# if you add dependencies to this list.
|
158
tasks/main.yml
Normal file
158
tasks/main.yml
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
---
|
||||||
|
# vim: set expandtab tabstop=2 shiftwidth=2:
|
||||||
|
|
||||||
|
- name: '[sogo] install gnutls, sogo, deps...'
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- gnutls-bin
|
||||||
|
- postgresql-client
|
||||||
|
- python-psycopg2
|
||||||
|
- python-passlib
|
||||||
|
- python-openssl
|
||||||
|
- memcached
|
||||||
|
|
||||||
|
- gnustep-base-common
|
||||||
|
- gnustep-base-runtime
|
||||||
|
- gobjc
|
||||||
|
- libldap-common
|
||||||
|
- libxml2-dev
|
||||||
|
- tzdata
|
||||||
|
- zlib1g
|
||||||
|
- build-essential
|
||||||
|
- cdbs
|
||||||
|
- curl
|
||||||
|
- debhelper
|
||||||
|
- gcc
|
||||||
|
- git
|
||||||
|
- gnustep-make
|
||||||
|
- libgnustep-base-dev
|
||||||
|
- libcurl4-openssl-dev
|
||||||
|
- libldap2-dev
|
||||||
|
- liblasso3-dev
|
||||||
|
- libmemcached-dev
|
||||||
|
- libsodium-dev
|
||||||
|
- libssl-dev
|
||||||
|
- make
|
||||||
|
- postgresql-server-dev-all
|
||||||
|
- python
|
||||||
|
- libzip-dev
|
||||||
|
|
||||||
|
- name: '[sogo] sope-git'
|
||||||
|
git:
|
||||||
|
repo: https://github.com/inverse-inc/sope
|
||||||
|
dest: /root/develop/sope
|
||||||
|
version: '{{sope_checkout}}'
|
||||||
|
- name: '[sogo] sogo-git'
|
||||||
|
git:
|
||||||
|
repo: https://github.com/inverse-inc/sogo
|
||||||
|
dest: /root/develop/sogo
|
||||||
|
version: '{{sogo_checkout}}'
|
||||||
|
|
||||||
|
- name: '[sogo] configure sope'
|
||||||
|
shell: |
|
||||||
|
./configure --disable-debug --enable-strip --with-gnustep --disable-mysql --enable-openldap --enable-postgresql --enable-xml --with-ssl=gnutls
|
||||||
|
args:
|
||||||
|
chdir: /root/develop/sope
|
||||||
|
- name: '[sogo] make sope'
|
||||||
|
shell: make
|
||||||
|
args:
|
||||||
|
chdir: /root/develop/sope
|
||||||
|
- name: '[sogo] install sope'
|
||||||
|
shell: make install
|
||||||
|
args:
|
||||||
|
chdir: /root/develop/sope
|
||||||
|
|
||||||
|
- name: '[sogo] configure sogo'
|
||||||
|
shell: |
|
||||||
|
./configure --disable-debug --enable-strip --enable-saml2 --with-ssl=gnutls
|
||||||
|
args:
|
||||||
|
chdir: /root/develop/sogo
|
||||||
|
- name: '[sogo] make sogo'
|
||||||
|
shell: make
|
||||||
|
args:
|
||||||
|
chdir: /root/develop/sogo
|
||||||
|
- name: '[sogo] install sogo'
|
||||||
|
shell: make install
|
||||||
|
args:
|
||||||
|
chdir: /root/develop/sogo
|
||||||
|
- name: '[sogo] ld.so.conf.d/sogo'
|
||||||
|
copy:
|
||||||
|
dest: /etc/ld.so.conf.d/sogo.conf
|
||||||
|
content: /usr/local/lib/sogo
|
||||||
|
- name: '[sogo] ldconfig'
|
||||||
|
shell: ldconfig
|
||||||
|
|
||||||
|
- name: '[sogo] create db sogo'
|
||||||
|
become: yes
|
||||||
|
become_user: postgres
|
||||||
|
delegate_to: '{{postgresql_server}}'
|
||||||
|
run_once: yes
|
||||||
|
postgresql_db:
|
||||||
|
name: sogo
|
||||||
|
encoding: UTF-8
|
||||||
|
template: template0
|
||||||
|
- name: '[sogo] create db-user sogo'
|
||||||
|
become: yes
|
||||||
|
become_user: postgres
|
||||||
|
delegate_to: '{{postgresql_server}}'
|
||||||
|
run_once: yes
|
||||||
|
postgresql_user:
|
||||||
|
db: sogo
|
||||||
|
name: sogo
|
||||||
|
encrypted: yes
|
||||||
|
password: '{{postgresql_user_password | default("sogo")}}'
|
||||||
|
|
||||||
|
- name: '[sogo] group sogo'
|
||||||
|
group:
|
||||||
|
name: sogo
|
||||||
|
- name: '[sogo] user sogo'
|
||||||
|
user:
|
||||||
|
name: sogo
|
||||||
|
group: sogo
|
||||||
|
|
||||||
|
- name: '[sogo] directory /etc/sogo'
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
dest: /etc/sogo
|
||||||
|
owner: sogo
|
||||||
|
group: sogo
|
||||||
|
mode: 0700
|
||||||
|
|
||||||
|
- name: '[sogo] sogo.conf'
|
||||||
|
template:
|
||||||
|
src: sogo.conf.j2
|
||||||
|
dest: /etc/sogo/sogo.conf
|
||||||
|
mode: 0400
|
||||||
|
owner: sogo
|
||||||
|
group: sogo
|
||||||
|
|
||||||
|
- name: '[sogo] /var/spool/sogo'
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
dest: /var/spool/sogo
|
||||||
|
owner: sogo
|
||||||
|
group: sogo
|
||||||
|
mode: 0700
|
||||||
|
|
||||||
|
- name: '[sogo] /var/log/sogo'
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
dest: /var/log/sogo
|
||||||
|
owner: sogo
|
||||||
|
group: sogo
|
||||||
|
mode: 0700
|
||||||
|
|
||||||
|
- name: '[sogo] sogo.service'
|
||||||
|
template:
|
||||||
|
src: sogo.service.j2
|
||||||
|
dest: /etc/systemd/system/sogo.service
|
||||||
|
|
||||||
|
- name: '[sogo] start services'
|
||||||
|
systemd:
|
||||||
|
name: '{{item}}'
|
||||||
|
state: restarted
|
||||||
|
enabled: yes
|
||||||
|
daemon_reload: yes
|
||||||
|
with_items:
|
||||||
|
- sogo
|
||||||
|
- memcached
|
77
templates/sogo.conf.j2
Normal file
77
templates/sogo.conf.j2
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
{
|
||||||
|
SOGoProfileURL = "{{postgresql_uri}}/sogo_user_profile";
|
||||||
|
OCSFolderInfoURL = "{{postgresql_uri}}/sogo_folder_info";
|
||||||
|
OCSSessionsFolderURL = "{{postgresql_uri}}/sogo_sessions_folder";
|
||||||
|
OCSEMailAlarmsFolderURL = "{{postgresql_uri}}/sogo_alarms_folder";
|
||||||
|
SOGoLanguage = German;
|
||||||
|
SOGoAppointmentSendEMailNotifications = YES;
|
||||||
|
SOGoMailingMechanism = smtp;
|
||||||
|
SOGoSMTPServer = "{{sogo_submission_server}}";
|
||||||
|
SOGoSMTPAuthenticationType = PLAIN;
|
||||||
|
SOGoTimeZone = UTC;
|
||||||
|
SOGoSentFolderName = INBOX;
|
||||||
|
SOGoTrashFolderName = Trash;
|
||||||
|
SOGoDraftsFolderName = Drafts;
|
||||||
|
SOGoJunkFolderName = Spam;
|
||||||
|
SOGoForceExternalLoginWithEmail = NO;
|
||||||
|
SOGoIMAPServer = "{{sogo_imap_server}}";
|
||||||
|
SOGoSieveServer = "{{sogo_sieve_server}}";
|
||||||
|
SOGoIMAPAclConformsToIMAPExt = YES;
|
||||||
|
SOGoVacationEnabled = NO;
|
||||||
|
SOGoForwardEnabled = NO;
|
||||||
|
SOGoSieveScriptsEnabled = YES;
|
||||||
|
SOGoVacationEnabled = YES;
|
||||||
|
SOGoForwardEnabled = YES;
|
||||||
|
SOGoSuperUsernames = ( {{sogo_super_usernames|join(', ')}});
|
||||||
|
SOGoFirstDayOfWeek = 0;
|
||||||
|
SOGoMailMessageCheck = manually;
|
||||||
|
SOGoMailAuxiliaryUserAccountsEnabled = NO;
|
||||||
|
SOGoMemcachedHost = 127.0.0.1;
|
||||||
|
SOGoMailDomain = "{{sogo_mail_domain}}";
|
||||||
|
SOGoXSRFValidationEnabled = YES;
|
||||||
|
SOGoPasswordChangeEnabled = YES;
|
||||||
|
SOGoUserSources = (
|
||||||
|
{
|
||||||
|
type = ldap;
|
||||||
|
CNFieldName = cn;
|
||||||
|
IDFieldName = mail;
|
||||||
|
UIDFieldName = mail;
|
||||||
|
baseDN = "{{sogo_ldap_base_dn}}";
|
||||||
|
{% if sogo_ldap_bind_dn %}
|
||||||
|
bindDN = "{{sogo_ldap_bind_dn}}";
|
||||||
|
{% endif %}
|
||||||
|
{% if sogo_ldap_bind_password %}
|
||||||
|
bindPassword = "{{sogo_ldap_bind_password}}";
|
||||||
|
{% endif %}
|
||||||
|
canAuthenticate = YES;
|
||||||
|
bindFields = (mail);
|
||||||
|
hostname = "{{sogo_ldap_server}}";
|
||||||
|
SearchFieldNames = (uid, cn, sn, givenname, mail);
|
||||||
|
id = auth;
|
||||||
|
isAddressBook = NO;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = ldap;
|
||||||
|
CNFieldName = cn;
|
||||||
|
IDFieldName = mail;
|
||||||
|
UIDFieldName = mail;
|
||||||
|
baseDN = "{{sogo_ldap_base_dn}}";
|
||||||
|
{% if sogo_ldap_bind_dn %}
|
||||||
|
bindDN = "{{sogo_ldap_bind_dn}}";
|
||||||
|
{% endif %}
|
||||||
|
{% if sogo_ldap_bind_password %}
|
||||||
|
bindPassword = "{{sogo_ldap_bind_password}}";
|
||||||
|
{% endif %}
|
||||||
|
canAuthenticate = NO;
|
||||||
|
hostname = "{{sogo_ldap_server}}";
|
||||||
|
SearchFieldNames = (uid, cn, sn, givenname, mail);
|
||||||
|
id = public;
|
||||||
|
isAddressBook = YES;
|
||||||
|
displayName = "Global";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
SOGoPageTitle = "{{sogo_page_title}}";
|
||||||
|
SOGoFaviconRelativeURL = "{{sogo_favicon_uri}}";
|
||||||
|
SOGoExternalAvatarsEnabled = YES;
|
||||||
|
SOGoGravatarEnabled = NO;
|
||||||
|
}
|
19
templates/sogo.service.j2
Normal file
19
templates/sogo.service.j2
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
[Unit]
|
||||||
|
Description=SOGo is a groupware server
|
||||||
|
Documentation=https://sogo.nu/files/docs/SOGoInstallationGuide.html
|
||||||
|
After=network.target
|
||||||
|
After=postgresql.service
|
||||||
|
After=mariadb.service
|
||||||
|
After=mysql.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Environment="PREFORK=3"
|
||||||
|
EnvironmentFile=-/etc/default/sogo
|
||||||
|
Type=forking
|
||||||
|
ExecStart=/usr/local/sbin/sogod -WOWorkersCount ${PREFORK} -WOPidFile /run/sogo/sogo.pid -WOLogFile /var/log/sogo/sogo.log
|
||||||
|
RuntimeDirectory=sogo
|
||||||
|
PIDFile=/run/sogo/sogo.pid
|
||||||
|
User=sogo
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in a new issue