Gogs

Благодаря возможности Gogs выполнять аутентификацию через SMTP, его интеграция с animails тривиальна. Требуется всего несколько изменений:

  1. Чтобы создать базу данных для Gogs, подключитесь к оболочке (shell) и выполните следующие команды:

    source animails.conf
    docker exec -it $(docker ps -f name=mysql-animails -q) mysql -uroot -p${DBROOT} -e "CREATE DATABASE gogs;"
    docker exec -it $(docker ps -f name=mysql-animails -q) mysql -uroot -p${DBROOT} -e "CREATE USER 'gogs'@'%' IDENTIFIED BY 'your_strong_password';"
    docker exec -it $(docker ps -f name=mysql-animails -q) mysql -uroot -p${DBROOT} -e "GRANT ALL PRIVILEGES ON gogs.* TO 'gogs'@'%';
    

  2. Откройте docker-compose.override.yml и добавьте Gogs:

services:

    gogs-animails:
      image: gogs/gogs
      volumes:
        - ./data/gogs:/data
      networks:
        animails-network:
          aliases:
            - gogs
      ports:
        - "${GOGS_SSH_PORT:-127.0.0.1:4000}:22"
  1. Создайте data/conf/nginx/site.gogs.custom и добавьте:

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

  2. Откройте animails.conf и определите привязку, которую Gogs должен использовать для SSH. Пример:

GOGS_SSH_PORT=127.0.0.1:4000
  1. Выполните команды для запуска контейнера Gogs и последующего перезапуска контейнера nginx-animails:
docker compose up -d
docker compose restart nginx-animails
docker-compose up -d
docker-compose restart nginx-animails
  1. Откройте http://${MAILCOW_HOSTNAME}/gogs/, например http://mx.example.org/gogs/. В деталях базы данных установите mysql в качестве хоста. Используйте значение gogs как имя базы данных, gogs как пользователя базы данных и your_strong_password, который вы определили ранее на шаге 1, в качестве пароля.

  2. После завершения установки войдите под администратором и установите «settings» -> «authorization» -> «enable SMTP». SMTP-хостом должен быть postfix с портом 587, установите Skip TLS Verify, так как мы используем SAN, не входящий в список («postfix», скорее всего, не является частью вашего сертификата).

  3. Создайте data/gogs/gogs/conf/app.ini и установите следующие значения. Вы можете обратиться к шпаргалке Gogs для понимания их смысла и других возможных значений.

[server]
SSH_LISTEN_PORT = 22
# Для GOGS_SSH_PORT=127.0.0.1:4000 в animails.conf установите:
SSH_DOMAIN = 127.0.0.1
SSH_PORT = 4000
# Для MAILCOW_HOSTNAME=mx.example.org в animails.conf (и портов HTTPS по умолчанию) установите:
ROOT_URL = https://mx.example.org/gogs/
  1. Перезапустите Gogs с помощью следующей команды. Ваши пользователи должны иметь возможность входить в систему под учетными записями, управляемыми animails.
docker compose restart gogs-animails
docker-compose restart gogs-animails