# SOGo WebGroupware

# Installation via Docker

Beschreibung:

SOGo Groupware mit ActiveSync CalDAV, Carddav.  
Authentifizierung gegen einen Vorhandenen IMAP/Server.  
Das heißt zum einloggen wird Email Adrese und KEnnwort benötigt.

Vorrausetzung:  
  
Feste Öffentliche IP Adresse

### Installation:

#### Server installation:

Vorraussetzung:

Den Offiziellen PGP Schlüssel

Zu finden unter : https://www.sogo.nu/download.html

So Sieht die URL aus, zum Zeitpunkt des Artikels auch der aktuelle

[https://keys.openpgp.org/vks/v1/by-fingerprint/74FFC6D72B925A34B5D356BDF8A27B36A6E2EAE9](https://keys.openpgp.org/vks/v1/by-fingerprint/74FFC6D72B925A34B5D356BDF8A27B36A6E2EAE9)

```
apt install docker.io docker-compose curl
```

Verzeichnis erstellen

```
mkdir /root/sogo
```

nun die .env Datei erstellen

```
nano /root/sogo/.env
```

Inhalt

```
# SOGo-Konfiguration
MAIL_DOMAIN=example.com
IMAP_SERVER=imap.example.com
SMTP_SERVER=smtp.example.com
SOGO_TIMEZONE=Europe/Berlin
SOGO_SESSION_MAX=2592000

# DB
POSTGRES_DB=sogo
POSTGRES_USER=sogo
POSTGRES_PASSWORD=supergeheim

# Reverse Proxy & SSL
DOMAIN_NAME=mail.example.com
EMAIL=admin@example.com

```

Supervisord

```
nano /root/sogo/supervisord.conf
```

Inhalt

```
[supervisord]
nodaemon=true

[program:sogo]
command=/usr/sbin/sogod -W -WOWorkersCount 2 -WOPort 20000
user=sogo
autorestart=true
stderr_logfile=/var/log/sogo/sogo.err.log
stdout_logfile=/var/log/sogo/sogo.out.log


```

Docker File

```
nano /root/sogo/Docker
```

Inhalt

```
FROM debian:bookworm

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y \
    gnupg2 \
    apt-transport-https \
    ca-certificates \
    wget \
    lsb-release \
    sudo \
    supervisor \
    postgresql-client \
    sogo \
    sope4.9-gdl1-mysql \
    sope4.9-gdl1-postgresql \
    sogo-activesync \
    sogo-sieve \
    nginx \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

COPY supervisord.conf /etc/supervisor/conf.d/sogo.conf

VOLUME ["/var/lib/sogo", "/var/log/sogo"]

EXPOSE 20000

CMD ["/usr/bin/supervisord"]

```

Docker Compose File

```
nano /root/sogo/docker-compose.yml
```

Inhalt

```
version: '3.8'

networks:
  sogo-net:
    driver: bridge

services:
  postgres:
    image: postgres:15
    container_name: sogo-postgres
    restart: always
    environment:
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    networks:
     - sogo-net
    
  sogo:
    build: .
    container_name: sogo
    restart: always
    environment:
      - SOGO_SOGO_DEFAULTDOMAIN=${MAIL_DOMAIN}
      - SOGO_IMAP_SERVER=imaps://${IMAP_SERVER}:993
      - SOGO_SMTP_SERVER=smtps://${SMTP_SERVER}:465
      #diese beiden bei selbssignierten certs
      - SOGO_SOGoTrustProxyAuthentication=YES
      - SOGO_NSSAllowUntrustedCertificates=YES
      - SOGO_TIMEZONE=${SOGO_TIMEZONE}
      - SOGO_ENABLE_EAS=true
      - SOGO_SOGoMaximumSessionDuration=${SOGO_SESSION_MAX}
      - SOGO_SOGoMailDomain=${MAIL_DOMAIN}
      - SOGO_SOGoProfileURL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}/sogo_user_profile
      - SOGO_SOGoFolderInfoURL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}/sogo_folder_info
      - SOGO_SOGoACLsURL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}/sogo_acls
    volumes:
      - ./sogo_data:/var/lib/sogo
      - ./sogo_logs:/var/log/sogo
    depends_on:
      - postgres
    networks:
      - sogo-net

  caddy:
    image: caddy:latest
    restart: always
    ports:
      - "80:80"
      - "443:443"
    command: caddy reverse-proxy --from ${DOMAIN_NAME} --to sogo:20000
    volumes:
      - ./data/caddy/data:/data
      - ./data/caddy/config:/config
    networks:
      - sogo-net



```

Nun den Starten

```
cd /root/sogo
docker-compose up -d
```

Nun einloggen auf [https://example.com](https://example.com)

Debug:

in der compose datei auf restart no stellen.

```
...
sogo:
    build: .
    container_name: sogo
    restart: no
...
```

  
Den container neustarten mit down up-d

Dann in den Container einloggen und sogo manuell starten

```
docker exec -it sogo bash
```

Nun im Container Sogo manuell starten

```
sudo -u sogo /usr/sbin/sogod -W -WOWorkersCount 1 -WOPort 20000
```