edit

Gogs

With Gogs' ability to authenticate over SMTP it is trivial to integrate it with mailcow. Few changes are needed:

1. Open docker-compose.yml and add Gogs:

    gogs-mailcow:
      image: gogs/gogs
      volumes:
        - ./data/gogs:/data
      networks:
        mailcow-network:
          ipv4_address: 172.22.1.123
          aliases:
            - gogs
      ports:
        - "${GOGS_SSH_PORT:-50022}:22"
        - "${GOGS_WWW_PORT:-50080}:3000"
      dns:
        - 172.22.1.254

2. Open data/conf/nginx/site.conf and add in each server{} block

location /gogs/ {
    proxy_pass http://172.22.1.123:3000/;
}

3. Open mailcow.conf and define ports you want Gogs to open, as well as future database password. Example:

GOGS_WWW_PORT=3000
GOGS_SSH_PORT=4000
DBGOGS=CorrectHorseBatteryStaple

4. Create database and user for Gogs to use.

. ./mailcow.conf
docker-compose exec mysql-mailcow mysql -uroot -p$DBROOT
mysql> CREATE USER gogs IDENTIFIED BY 'CorrectHorseBatteryStaple';
mysql> CREATE DATABASE gogs;
mysql> GRANT ALL PRIVILEGES ON gogs.* to gogs;

5. Run docker-compose up -d to bring up Gogs container. Verify with curl http://172.22.1.123:3000/ that it is running.

6. Proceed to installer from browser, for the time being using direct url http://${MAILCOW_HOSTNAME}:${GOGS_WWW_PORT}/, for example http://example.org:3000/. For database details set 172.22.1.2 as database host, user gogs, database name gogs and password as set above

7. Once install is complete, login as admin and in settings - authorization enable SMTP. SMTP Host should be 172.22.1.8 with port 587. You'll probably want to set Skip TLS Verify.

8. Edit data/gogs/gogs/conf/app.ini and set following values. You can consult Gogs cheat sheet for their meaning and other possible values.

[server]
SSH_LISTEN_PORT = 22
SSH_DOMAIN = [domain where ssh is available - used for ssh clone url]
SSH_PORT = [port where ssh is open on host - used for ssh clone url]
ROOT_URL = https://[url]/gogs/

9. Restart Gogs with docker-compose restart gogs-mailcow. Your users should be able to login with mailcow managed accounts.