init
This commit is contained in:
commit
939402bd34
16
Dockerfile
Normal file
16
Dockerfile
Normal file
@ -0,0 +1,16 @@
|
||||
FROM ubuntu:noble
|
||||
#ARG SOGO_VERSION="5.10.0"
|
||||
|
||||
RUN apt-get update && apt-get install -y apt-transport-https wget gnupg
|
||||
RUN wget -O- "https://keys.openpgp.org/vks/v1/by-fingerprint/74FFC6D72B925A34B5D356BDF8A27B36A6E2EAE9" | gpg --dearmor | apt-key add -
|
||||
COPY SOGo.list /etc/apt/sources.list.d/SOGo.list
|
||||
RUN apt-get update && apt-get install -y sope4.9-gdl1-postgresql sogo
|
||||
|
||||
VOLUME /usr/lib/GNUstep/SOGo/WebServerResources
|
||||
EXPOSE 20000
|
||||
|
||||
# setup user
|
||||
RUN id -u sogo &>/dev/null || useradd sogo
|
||||
USER sogo
|
||||
|
||||
CMD [ "sogod", "-WONoDetach", "YES", "-WOPort", "0.0.0.0:20000", "-WOLogFile", "-", "-WOPidFile", "/tmp/sogo.pid"]
|
||||
11
README.md
Normal file
11
README.md
Normal file
@ -0,0 +1,11 @@
|
||||
# DISQU SOGo Container
|
||||
|
||||
Das `Dockerfile` in diesem Repo baut einen Container für die Groupware SOGo.
|
||||
Basis ist das Ubuntu-Containerimage, in welchem SOGo aus dem offiziellem SOGo-Repo installiert wird.
|
||||
Da nur das Nightly-Repo ohne Subskription verfügbar ist, wird beim Bauen des Containers automatisch die neuste Version von SOGo installiert.
|
||||
Entsprechend müssen wir nach dem Bauen des Containers diesen selbst mit einer passenden Versionsnummer taggen und auf unsere Registry hochladen.
|
||||
|
||||
Bei Kundeninstallationen verwenden wir dann die so gebaute Version des Containerimages.
|
||||
|
||||
Die beiliegende `docker-compose.yml` zeigt beispielhalf, wie der SOGo-Container genutzt werden kann.
|
||||
Es wird beispielsweise ein Webserver benötigt, welcher die statischen Assets ausliefert.
|
||||
1
SOGo.list
Normal file
1
SOGo.list
Normal file
@ -0,0 +1 @@
|
||||
deb https://packages.sogo.nu/nightly/5/ubuntu/ noble noble
|
||||
40
docker-compose.yaml
Normal file
40
docker-compose.yaml
Normal file
@ -0,0 +1,40 @@
|
||||
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
sogo:
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
# replace by your desired version
|
||||
version: 5.10.0
|
||||
# links:
|
||||
# - db
|
||||
volumes:
|
||||
# replace by your own file
|
||||
- ./sogo.conf:/etc/sogo/sogo.conf
|
||||
environment:
|
||||
- "TZ=Europe/Berlin"
|
||||
db:
|
||||
image: postgres:17.6
|
||||
environment:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_DB: postgres
|
||||
# for debug purpose only: reach the database from outside
|
||||
#ports:
|
||||
# - "5432"
|
||||
# memcached:
|
||||
# image: memcached:1.6-alpine
|
||||
nginx:
|
||||
image: nginx
|
||||
links:
|
||||
- sogo
|
||||
volumes_from:
|
||||
# you will be able to serve assets from sogo image
|
||||
- sogo:ro
|
||||
ports:
|
||||
# publish on port 8003
|
||||
- "8003:80"
|
||||
volumes:
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
105
nginx.conf
Normal file
105
nginx.conf
Normal file
@ -0,0 +1,105 @@
|
||||
user nginx;
|
||||
worker_processes 1;
|
||||
|
||||
error_log /var/log/nginx/error.log warn;
|
||||
pid /var/run/nginx.pid;
|
||||
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||
'$status $body_bytes_sent "$http_referer" '
|
||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||
|
||||
access_log /var/log/nginx/access.log main;
|
||||
error_log /var/log/nginx/error.log;
|
||||
|
||||
sendfile on;
|
||||
#tcp_nopush on;
|
||||
|
||||
keepalive_timeout 65;
|
||||
|
||||
gzip off;
|
||||
|
||||
|
||||
|
||||
|
||||
server
|
||||
{
|
||||
listen 80 default;
|
||||
|
||||
root /usr/lib/GNUstep/SOGo/WebServerResources/;
|
||||
|
||||
## requirement to create new calendars in Thunderbird ##
|
||||
proxy_http_version 1.1;
|
||||
|
||||
location = /
|
||||
{
|
||||
absolute_redirect off;
|
||||
return 301 /SOGo;
|
||||
allow all;
|
||||
}
|
||||
# For IOS 7
|
||||
|
||||
location = /principals/
|
||||
{
|
||||
rewrite ^ `https://$server_name/SOGo/dav`;
|
||||
allow all;
|
||||
}
|
||||
location ^~/SOGo
|
||||
{
|
||||
proxy_pass http://sogo:20000;
|
||||
proxy_redirect `http://sogo:20000` default;
|
||||
# forward user's IP address
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header x-webobjects-server-protocol HTTP/1.0;
|
||||
proxy_set_header x-webobjects-remote-host 127.0.0.1;
|
||||
proxy_set_header x-webobjects-server-name $server_name;
|
||||
proxy_set_header x-webobjects-server-url $scheme://$host;
|
||||
proxy_set_header x-webobjects-server-port $server_port;
|
||||
proxy_connect_timeout 90;
|
||||
proxy_send_timeout 90;
|
||||
proxy_read_timeout 90;
|
||||
proxy_buffer_size 4k;
|
||||
proxy_buffers 4 32k;
|
||||
proxy_busy_buffers_size 64k;
|
||||
proxy_temp_file_write_size 64k;
|
||||
client_max_body_size 50m;
|
||||
client_body_buffer_size 128k;
|
||||
break;
|
||||
}
|
||||
|
||||
location /SOGo.woa/WebServerResources/
|
||||
{
|
||||
alias /usr/lib/GNUstep/SOGo/WebServerResources/;
|
||||
allow all;
|
||||
}
|
||||
|
||||
location /SOGo/WebServerResources/
|
||||
{
|
||||
alias /usr/lib/GNUstep/SOGo/WebServerResources/;
|
||||
allow all;
|
||||
}
|
||||
|
||||
location (^/SOGo/so/ControlPanel/Products/([^/]*)/Resources/(.*)$)
|
||||
{
|
||||
alias /usr/lib/GNUstep/SOGo/$1.SOGo/Resources/$2;
|
||||
}
|
||||
|
||||
location (^/SOGo/so/ControlPanel/Products/[^/]*UI/Resources/.*\.(jpg|png|gif|css|js)$)
|
||||
{
|
||||
alias /usr/lib/GNUstep/SOGo/$1.SOGo/Resources/$2;
|
||||
}
|
||||
}
|
||||
}
|
||||
151
sogo.conf
Normal file
151
sogo.conf
Normal file
@ -0,0 +1,151 @@
|
||||
{
|
||||
/* ********************* Main SOGo configuration file **********************
|
||||
* *
|
||||
* Since the content of this file is a dictionary in OpenStep plist format, *
|
||||
* the curly braces enclosing the body of the configuration are mandatory. *
|
||||
* See the Installation Guide for details on the format. *
|
||||
* *
|
||||
* C and C++ style comments are supported. *
|
||||
* *
|
||||
* This example configuration contains only a subset of all available *
|
||||
* configuration parameters. Please see the installation guide more details. *
|
||||
* *
|
||||
* ~sogo/GNUstep/Defaults/.GNUstepDefaults has precedence over this file, *
|
||||
* make sure to move it away to avoid unwanted parameter overrides. *
|
||||
* *
|
||||
* **************************************************************************/
|
||||
|
||||
/* Database configuration (mysql:// or postgresql://) */
|
||||
SOGoProfileURL = "postgresql://postgres:postgres@db:5432/postgres/sogo_user_profile";
|
||||
OCSFolderInfoURL = "postgresql://postgres:postgres@db:5432/postgres/sogo_folder_info";
|
||||
OCSSessionsFolderURL = "postgresql://postgres:postgres@db:5432/postgres/sogo_sessions_folder";
|
||||
|
||||
/* Mail */
|
||||
//SOGoDraftsFolderName = Drafts;
|
||||
//SOGoSentFolderName = Sent;
|
||||
//SOGoTrashFolderName = Trash;
|
||||
SOGoIMAPServer = "imaps://mail.beyerm.de:143/?tls=yes";
|
||||
SOGoSieveServer = sieve://mail.beyerm.de:4190;
|
||||
SOGoSMTPServer = mail.beyerm.de;
|
||||
SOGoMailDomain = disqu.de;
|
||||
SOGoMailingMechanism = smtp;
|
||||
SOGoForceExternalLoginWithEmail = YES;
|
||||
SOGoSMTPAuthenticationType = PLAIN;
|
||||
SOGoForceExternalLoginWithEmail = YES;
|
||||
//SOGoMailSpoolPath = /var/spool/sogo;
|
||||
//NGImap4ConnectionStringSeparator = "/";
|
||||
|
||||
/* Notifications */
|
||||
//SOGoAppointmentSendEMailNotifications = NO;
|
||||
//SOGoACLsSendEMailNotifications = NO;
|
||||
//SOGoFoldersSendEMailNotifications = NO;
|
||||
|
||||
/* Authentication */
|
||||
SOGoPasswordChangeEnabled = NO;
|
||||
|
||||
/* LDAP authentication example */
|
||||
/* LDAP authentication example */
|
||||
SOGoUserSources = (
|
||||
{
|
||||
type = ldap;
|
||||
CNFieldName = cn;
|
||||
UIDFieldName = uid;
|
||||
IDFieldName = uid; // first field of the DN for direct binds
|
||||
MailFieldNames = (mail);
|
||||
bindFields = (uid, mail); //(uid, mail); // array of fields to use for indirect binds
|
||||
baseDN = "ou=people,dc=office,dc=disqu,dc=de";
|
||||
bindDN = "cn=sogo,ou=people,dc=office,dc=disqu,dc=de";
|
||||
bindPassword = sogotopsecretpassword;
|
||||
canAuthenticate = YES;
|
||||
displayName = "Shared Addresses";
|
||||
hostname = ldap://172.17.0.1:3890;
|
||||
id = public;
|
||||
isAddressBook = YES;
|
||||
passwordPolicy = NO;
|
||||
}
|
||||
);
|
||||
|
||||
/* LDAP AD/Samba4 example */
|
||||
//SOGoUserSources = (
|
||||
// {
|
||||
// type = ldap;
|
||||
// CNFieldName = cn;
|
||||
// UIDFieldName = sAMAccountName;
|
||||
// baseDN = "CN=users,dc=domain,dc=tld";
|
||||
// bindDN = "CN=sogo,CN=users,DC=domain,DC=tld";
|
||||
// bindFields = (sAMAccountName, mail);
|
||||
// bindPassword = password;
|
||||
// canAuthenticate = YES;
|
||||
// displayName = "Public";
|
||||
// hostname = ldap://127.0.0.1:389;
|
||||
// filter = "mail = '*'";
|
||||
// id = directory;
|
||||
// isAddressBook = YES;
|
||||
// }
|
||||
//);
|
||||
|
||||
|
||||
/* SQL authentication example */
|
||||
/* These database columns MUST be present in the view/table:
|
||||
* c_uid - will be used for authentication - it's the username or username@domain.tld)
|
||||
* c_name - which can be identical to c_uid - will be used to uniquely identify entries
|
||||
* c_password - password of the user, plain-text, md5 or sha encoded for now
|
||||
* c_cn - the user's common name - such as "John Doe"
|
||||
* mail - the user's mail address
|
||||
* See the installation guide for more details
|
||||
*/
|
||||
//SOGoUserSources =
|
||||
// (
|
||||
// {
|
||||
// type = sql;
|
||||
// id = directory;
|
||||
// viewURL = "postgresql://sogo:sogo@127.0.0.1:5432/sogo/sogo_view";
|
||||
// canAuthenticate = YES;
|
||||
// isAddressBook = YES;
|
||||
// userPasswordAlgorithm = md5;
|
||||
// }
|
||||
// );
|
||||
|
||||
/* Web Interface */
|
||||
//SOGoPageTitle = SOGo;
|
||||
//SOGoVacationEnabled = YES;
|
||||
//SOGoForwardEnabled = YES;
|
||||
//SOGoSieveScriptsEnabled = YES;
|
||||
//SOGoMailAuxiliaryUserAccountsEnabled = YES;
|
||||
//SOGoTrustProxyAuthentication = NO;
|
||||
//SOGoXSRFValidationEnabled = YES;
|
||||
|
||||
/* General */
|
||||
//SOGoLanguage = English;
|
||||
//SOGoTimeZone = America/Montreal;
|
||||
//SOGoCalendarDefaultRoles = (
|
||||
// PublicDAndTViewer,
|
||||
// ConfidentialDAndTViewer
|
||||
//);
|
||||
//SOGoSuperUsernames = (sogo1, sogo2); // This is an array - keep the parens!
|
||||
//SxVMemLimit = 384;
|
||||
//WOPidFile = "/var/run/sogo/sogo.pid";
|
||||
|
||||
|
||||
// reach memcached through docker
|
||||
SOGoMemcachedHost = "memcached";
|
||||
|
||||
// this has a great impact on performance: you should adjust the number
|
||||
// of workers according to the number of users and the performance of your
|
||||
// machine
|
||||
WorkersCount = 4;
|
||||
|
||||
|
||||
|
||||
|
||||
/* Debug */
|
||||
//SOGoDebugRequests = YES;
|
||||
//SoDebugBaseURL = YES;
|
||||
//ImapDebugEnabled = YES;
|
||||
//LDAPDebugEnabled = YES;
|
||||
//PGDebugEnabled = YES;
|
||||
//MySQL4DebugEnabled = YES;
|
||||
//SOGoUIxDebugEnabled = YES;
|
||||
//WODontZipResponse = YES;
|
||||
//WOLogFile = /var/log/sogo/sogo.log;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user