Собственный сервер git — аналог github

Современные интернет-сервисы прочно вошли в нашу жизнь. Они удобные, они не требуют от вас никаких усилий кроме регистрации, довольнро часто они даже бесплатны (с некоторыми НО). Однако у всех этих сервисов есть один важный, на мой взгляд, недостаток — эти сервисы вами не контроллируются. В любой момент вам могут закрыть ваш аккаунт из-за того что вы разместили неправильный код, из-за вашего гражданства, пола, расы, политических убеждений и т.п. Выход тут тольок один — максимально взять в свои руки и под своё управление то что можно.

Например — свой код, который я пишу я теперь размещаю на личном сервере в личном аналоге github. И лишь потом зеркалю его на сервис.Сам сервер я запустил на gitea. Gitea это форк gogs и выглядит это приложение как бинарный файл скомпилированный из Go исходников. В этой заметке я расскажу как его установить и запустить как демон.

Оставим в стороне вопрос настройки сервера. Подразумевается что вы знакомы с Linux раз забрели на мой блог и читатете про установку своего аналога github. я буду приводить пример установки под Debian/Ubuntu так как привык к ним и использую везде только их.
И так. Идем на гитхаб и качаем последний релиз gitea вот отсюда: https://github.com/go-gitea/gitea/releases 
И даем скачанному файлу права на запуск.

wget -O gitea https://dl.gitea.com/gitea/1.21.7/gitea-1.21.7-linux-amd64
chmod +x gitea

Далее подготавливаем сервер для gitea

Проверьте что версия git на сервере выше 2.0
git --version

Создайте пользователя под которым будет работать gitea.
adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git

Создаем необходимую структуру директорий:
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea

Для /etc/gitea мы временно установили права на запись для пользователя git, чтобы веб-установщик мог записать файл конфигурации. После завершения установки рекомендуется установить права только на чтение:
chmod 750 /etc/gitea
chmod 640 /etc/gitea/app.ini

Копируем gitea в глобально доступную область:
cp gitea /usr/local/bin/gitea

Теперь создадим сервис для запуска gitea используя systemd

Скачиваем пример gitea.service
wget -O gitea.service https://github.com/go-gitea/gitea/blob/release/v1.21/contrib/systemd/gitea.service

Раскомментируйте любой сервис который нужен для работы gitea если вы её собираетесь настраивать для работы с ним, в частности mysql. А так же проверьте имя пользователя если он отличен от того что приведен в этой статье.

Копируем файл сервиса в /etc/systemd/system/gitea.service

После этого включаем сервис и запускаем его:
sudo systemctl enable gitea
sudo systemctl start gitea

На этом собственно всё. Ваш аналогн github будет работать по адресу вашего сервера на 3000 порту. Для изменения порта можно изменить строку ExecStart=/usr/local/bin/gitea web —config /etc/gitea/app.ini на строку
ExecStart=/usr/local/bin/gitea web -p $PORT --config /etc/gitea/app.ini
Где $PORT — номер нужного вам порта.

Открываете в браузере ваш аналог github и следуете подсказке установщика.
Поделиться ссылкой: