Рубрики
SOFTWARE

Gitea — развертывание Raspberry PI

Gitea — легковесный хостинг для проектов и ведения разработки с помощью git.
В данной заметке я поделюсь опытом установки на Raspberry Pi 4B (4Gb) с работающим nginx. В сравнении с gitlab на том же железе gitea занимает меньше памяти и создает меньшую нагрузку на процессор во время работы веб сервера.

Установка и настройка

Для установки на сервер потребуются СУБД MySQL (MariaDB для Raspbian OS) и пакет git.
Установить их можно следующей командой для Ubuntu:

# sudo apt-get update && sudo apt-get install git mysql-server -y

Для Raspbian OS:

# sudo apt-get update && sudo apt-get install git mariadb-server -y

Далее добавим пользователя git. Флаг —disabled-login означает, что для данного пользователя не будет вызван passwd для установки пароля и его нельзя использовать для авторизации в системе до установки пароля.

# sudo adduser --disabled-login git

Запустим настройку MySQL:

# sudo mysql_secure_installation

В ходе настройки необходимо задать пароль root пользователя СУБД и отключить удаленное подключение через root.

Требуется создать базу данных и пользователя для gitea, для этого зайдем в MySQL:

# sudo mysql -u root -p

После ввода пароля выполним следующие команды:

> CREATE DATABASE gitea;
> CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'ПАРОЛЬ';
> GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost';
> FLUSH PRIVILEGES;
> exit

Первая команда создает базу данных с названием «gitea». Вторая создает пользователя «gitea» с заданным паролем, а третья выдает все права к ранее созданной базе.
Четвертая команда обновляет привилегии пользователей в системе.
Для выхода используется команда «exit», либо можно использовать комбинацию клавиш CTRL+D.

Переключимся на пользователя git:

# sudo su git

Создадим директорию и загрузим туда Gitea с официального зеркала:

# mkdir ~/gitea
# cd ~/gitea
# wget https://dl.gitea.io/gitea/1.4.0/gitea-1.4.0-linux-arm-7 -O gitea
# chmod +x gitea

Последняя команда дает права на запуск исполняемого файла.

Создадим скрипт для systemd /etc/systemd/system/gitea.service с содержимым:

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target

[Service]
# Modify these two values ​​and uncomment them if you have
# repos with lots of files and get to HTTP error 500 because of that
###
# LimitMEMLOCK=infinity
# LimitNOFILE=65535
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/gitea
ExecStart=/home/git/gitea/gitea web
Restart=always
Environment=USER=git 
HOME=/home/git

[Install]
WantedBy=multi-user.target

Включим скрипт и запустим сервис:

sudo systemctl enable gitea.service
sudo systemctl start gitea.service

После запуска веб сервер доступен по адресу: http://192.168.0.143:3000

В процессе настроек необходимо указать пароль от пользователя базы данных и создать пользователя в пункте 3.
Параметры домена и URL адреса я не менял. Позднее, после настройки nginx, изменил в конфиге (/home/git/gitea/custom/conf/app.iniROOT_URL) для корректной генерации ссылкок для git clone.

Gitea + nginx

Для использования Gitea в связке с nginx необходимо создать конфигурационный файл (gitea.conf) в директории /etc/nginx/sites-enabled/ со следующим содержимым:

server {
    listen 80;
    server_name git.rekovalev.site;
    
    location / {
        client_max_body_size 364M;
        proxy_pass http://localhost:3000;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Подключение SSL рассмотрим в другой заметке.

Перезагрузим nginx командой:

sudo systemctl restart nginx

Изменение стартовой страницы («Landing page»)

Для изменения стартовой страницы со стандартной Gitea на собственную необходимо создать каталог /home/git/gitea/custom/templates/ и файл home.tmpl внутри. Ниже приведено содержимое файла шаблона с заголовком и картинкой под ним:

{{template "base/head" .}}
<div class="home">
	<div class="ui stackable middle very relaxed page grid">
		<div class="sixteen wide center aligned centered column">
			<div class="hero">
				<h1 class="ui icon header title">
					Заголовок
				</h1>
			</div>
			<div>
				<img class="logo" src="{{AppSubUrl}}/img/logo.png" />
			</div>
		</div>
	</div>
</div>
{{template "base/footer" .}}

Картинку необходимо разместить по адресу /home/git/gitea/custom/img/

Помимо этого заместо стандартной страницы можно сразу открывать страницу обзора репозиториев. Для этого необходимо добавить строку в конфигурационный файл /home/git/gitea/custom/conf/app.ini в раздел [server] следующую строку:

LANDING_PAGE = explore

Подробнее о кастомизации gitea можно прочитать в официальной вики.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.