Gitea

Материал из ALT Linux Wiki

Gitea - это проект собственного гит сервиса. Что-то вроде Гитхаба или Гитлаба.

2019-01-30 14-30.png

Развёртка Gitea в простом случае

Все команды предполагается запускать от пользователя root.

Установка Gitea

Первым делом надо поставить gitea, если этот этап ещё не выполнен:

apt-get install gitea

Установка базы данных

Gitea умеет работать с 4мя базами данных: MySQL, PostgreSQL, MS-SQL и Sqlite3.

Автор данного руководства предлагает Вам поставить MySQL:

apt-get install MySQL-server

Настройка базы данных

Gitea сам этого не сделает, так что запустите MySQL:

systemctl start mysqld
systemctl enable mysqld

Откройте MySQL:

mysql

Наберите что-нибудь вроде:

CREATE USER 'gitea'@'localhost' IDENTIFIED BY '123';

чтобы создать пользователя gitea. '123' по желанию можно заменить на Ваш самый сложный пароль.

Далее создайте базу данных:

CREATE DATABASE gitea;

После этого надо дать привилегии этому пользователю работать с базой данных:

GRANT ALL PRIVILEGES ON * . * TO 'gitea'@'localhost';

В конце концов надо перевести MySQL в режим сервера, чтобы он отдавал 3306 порт:

control mysqld server
systemctl restart mysqld

Запуск Gitea

Запускается она через сервис-файл

systemctl start gitea
systemctl enable gitea

После этого можно идти на localhost:3000 и увидеть графический интерфейс.

Развёртка Gitea за NAT

Автор данного руководства столкнулся с задачей развёртывания Gitea на ЭВМ стоящей в сети за роутером. Это был тернистый путь и раз уж он один раз был пройден, то было бы неправильно не поделиться результатами с Вами. Вдруг, кто-то захочет повторить?

Решается это следующим патчем:

--- a/app-1.7.0.ini
+++ b/app.ini
@@ -126,9 +116,10 @@ FILE_EXTENSIONS = .md,.markdown,.mdown,.mkd
 
 [server]
 ; The protocol the server listens on. One of 'http', 'https', 'unix' or 'fcgi'.
-PROTOCOL = http
-DOMAIN = localhost
-ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
+PROTOCOL = https
+DOMAIN = grenka.ddns.net
+PORT_TO_REDIRECT_TO = 443
+ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(PORT_TO_REDIRECT_TO)s/
 ; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket.
 HTTP_ADDR = 0.0.0.0
 HTTP_PORT = 3000
@@ -136,8 +127,8 @@ HTTP_PORT = 3000
 ; will be started on PORT_TO_REDIRECT and it will redirect plain, non-secure http requests to the main
 ; ROOT_URL.  Defaults are false for REDIRECT_OTHER_PORT and 80 for
 ; PORT_TO_REDIRECT.
-REDIRECT_OTHER_PORT = false
-PORT_TO_REDIRECT = 80
+REDIRECT_OTHER_PORT = true
+PORT_TO_REDIRECT = 3080
 ; Permission for unix socket
 UNIX_SOCKET_PERMISSION = 666
 ; Local (DMZ) URL for Gitea workers (such as SSH update) accessing web service.

Где grenka.ddns.net должен быть заменён на ваш URL или WAN IP.

Данный патч поднимает Gitea сразу на двух портах: 3000 и 3080. Далее на роутере делаем проброс порта с входящего 80 на ip:3080, где ip - это локальный IP ЭВМ, где установлена Gitea. Кроме всего прочего делаем проброс порта с входящего на роутер 443 на ip:3000. Таким образом Gitea будет по-прежнему работать на localhost:3000, а запросы на localhost:3080 будут автоматически редиректиться на (в моём случае) https://grenka.ddns.net:443, откуда в свою очередь будут пробрасываться роутером на ip:3000.

Особенности конфига

Конфигурационный файл для Gitea достаточно хорошо задокументирован апстримом, кроме того, в нём присутствует ещё и комментарии мейнтейнера (автора данной статьи), начинающиеся с двух точек с запятой. В таких комментариях обозначены места, которые в Альтовом конфиге отличаются от апстримного.

Конфиг обладает свойством noreplace, поэтому при обновлении версии не перезатрётся и не обновится. Тем не менее при обновлении версии программы конфиг имеет свойство дополняться новыми возможностями. Автор данного руководства настоятельно рекомендует следить за такими изменениями апстрима самостоятельно. Для этого в /usr/share/doc/gitea/default-app.ini кладётся оригинальный конфиг для текущей версии.

Другие фишки Gitea (записки на манжетах)

К сожалению, автор данной статьи не нашёл веб-морды для конфигурации Gitea. Любая конфигурация производится через редактирование файла /etc/gitea/app.ini, затем производится перезапуск сервиса:

systemctl restart gitea

К сожалению, версия Gitea 1.6.4 перезаписывает конфигурационный файл. ПОЛНОСТЬЮ. Заменяются переменные типа %(PROTOCOL)s и добавляется большое количество пробелов для форматирования.

Несмотря на то, что конфигурационный файл содержит себе практически все возможные настройки, некоторые он не содержит и их можно найти по этой ссылке.

Gitea имеет встроенную поддержку LetsEncrypt сервиса. Описание тут.