Установка gitea
Установка gitea.
Содержание
1 Информация
1.1 Поддерживаемые базы данных
- MySQL (>=5.7)
- PostgreSQL (>=10)
- SQLite3
- MSSQL (>=2008R2 SP3)
- TiDB (MySQL protocol)
2 Пререквизиты
- Установите базовый сервер (см. Rocky Linux. Установка сервера).
2.1 Пользователь
- Создадим пользователя для работы с gitea.
- Ubuntu/Debian:
adduser \ --system \ --shell /bin/bash \ --gecos 'Git Version Control' \ --group \ --disabled-password \ --home /home/git \ git
- Fedora/RHEL/CentOS:
groupadd --system git adduser \ --system \ --shell /bin/bash \ --comment 'Git Version Control' \ --gid git \ --home-dir /home/git \ --create-home \ git
- Ubuntu/Debian:
2.2 База данных
- Установите нужную базу данных.
2.2.1 SqLite
- Установите sqlite:
dnf install sqlite
- Настроек не требуется.
2.2.2 PostgreSQL
Установите postgresql:
dnf install postgresql-server postgresql
Создайте начальную базу данных:
/usr/bin/postgresql-setup --initdb
Запустите PostgreSQL:
systemctl enable --now postgresql
Если требуется удалённая настройка PostgreSQL, добавьте адрес для прослушивания вашего IP-адреса, отредактировав
listen_addresses
в/var/lib/pgsql/data/postgresql.conf
:listen_addresses = 'localhost, 203.0.113.3'
PostgreSQL по умолчанию использует схему запрос-ответ
md5
для аутентификации.- В настоящее время эта схема не считается безопасной.
- Вместо этого используйте схему
SCRAM-SHA-256
, отредактировавpostgresql.conf
:password_encryption = scram-sha-256
На сервере базы данных войдите в консоль базы данных как суперпользователь:
su -c psql - postgres
Создайте пользователя базы данных с правами входа и паролем:
CREATE ROLE gitea WITH LOGIN PASSWORD 'gitea';
- Замените имя пользователя и пароль соответствующим образом.
- Сменить пароль потом можно будет следующим образом:
- На сервере базы данных войдите в консоль базы данных как суперпользователь:
su -c psql - postgres
- Смените пароль пользователю
gitea
:\password gitea
- На сервере базы данных войдите в консоль базы данных как суперпользователь:
Создайте базу данных с кодировкой UTF-8, принадлежащую пользователю базы данных, созданному ранее:
CREATE DATABASE gitea WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'ru_RU.UTF-8' LC_CTYPE 'ru_RU.UTF-8';
- Замените имя базы данных соответствующим образом.
Разрешите пользователю базы данных доступ к базе данных, созданной выше, добавив следующее правило аутентификации в файл
/var/lib/pgsql/data/pg_hba.conf
.- Для локальной базы данных:
local gitea gitea scram-sha-256 host gitea gitea 127.0.0.1/32 scram-sha-256
- Для удаленной базы данных:
host gitea gitea 192.0.2.10/32 scram-sha-256
- Замените имя базы данных, пользователя и IP-адрес экземпляра Gitea на свои собственные.
- Для локальной базы данных:
Перезапустите PostgreSQL, чтобы применить новые правила аутентификации:
systemctl restart postgresql.service
На вашем сервере Gitea проверьте соединение с базой данных.
- Для локальной базы данных:
psql -U gitea -d giteadb
- Для удаленной базы данных:
psql "postgres://gitea@203.0.113.3/giteadb"
gitea
: пользователь базы данных,giteadb
: имя базы данных;- 203.0.113.3 : IP-адрес экземпляра вашей базы данных.
- Для локальной базы данных:
Вам будет предложено ввести пароль для пользователя базы данных и подключиться к базе данных.
2.3 Брандмауэр
- Если не будете включать проксирование через web-сервер, то разрешите работать по порту 3000:
firewall-cmd --permanent --zone=public --add-port=3000/tcp firewall-cmd --reload
3 Установка
3.1 Установка бинарного пакета
- Пакета
gitea
в Rocky Linux нет. - Устанавливать будем в локальную иерархию:
cd /usr/local/bin
- Скачаем последнюю версию
gitea
:curl -s https://api.github.com/repos/go-gitea/gitea/releases/latest |grep browser_download_url | cut -d '"' -f 4 | grep '\linux-amd64$' | wget -i - -O /usr/local/bin/gitea
- Установим права на выполнение файла:
chmod +x /usr/local/bin/gitea
- Восстановим метки безопасности:
restorecon -rv /usr/local/bin/gitea
3.2 Структура папок
- Создадим рабочую структур папок:
mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log} chown git:git /var/lib/gitea/{data,indexers,log} chmod 750 /var/lib/gitea/{data,indexers,log} chown root:git /etc/gitea chmod 770 /etc/gitea
3.3 Сервис systemd
- Скачает файл сервиса:
wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/
- Перечитает файлы сервисов:
systemctl daemon-reload
3.4 Запуск gitea
- Запустим gitea:
systemctl enable --now gitea
4 Проксирование
- Можно настроить проксирование gitea через nginx.
- Это не обязательно.
4.1 Установка nginx
- Установим nginx:
dnf install nginx
4.2 Брандмауэр
- Настроим брандмауэр:
firewall-cmd --add-servic={http,https} --permanent firewall-cmd --reload
4.3 SELinux
- Разрешите nginx перенаправление:
setsebool -P httpd_can_network_connect 1 setsebool httpd_can_network_connect 1
4.4 Конфигурация nginx
- В файле
/etc/nginx/conf.d/gitea.conf
опишем конфигурацию для перенаправления:server { server_name hub.example.com; location / { client_max_body_size 512M; proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
4.5 Конфигурационный файл app.ini
- Добавьте в
/etc/gitea/app.ini
в секцию[security]
чтобы задать доверенные прокси-серверы:[security] REVERSE_PROXY_LIMIT = 1 REVERSE_PROXY_TRUSTED_PROXIES = 127.0.0.1/8
4.6 Настройка SSL
- Установите certbot (см. Клиенты ACME. Certbot)
- Создайте сертификат.
- Конфигурационный файл Nginx будет иметь вид:
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name hub.example.com; ssl_certificate /etc/letsencrypt/live/hub.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hub.example.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; charset utf-8; gzip on; gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_send_timeout 300; location / { client_max_body_size 512M; proxy_pass http://localhost:3000; proxy_set_header Connection $http_connection; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } server { # Redirect HTTP traffic to HTTPS listen 80; listen [::]:80; server_name hub.example.com; return 301 https://$server_name$request_uri; }
5 Начальная конфигурация
- Без проксирования: подключитесь к хосту с gitea по порту 3000 (
http://yourserver-ip-address:3000
). - C проксированием: подключитесь к хосту с gitea (
http://yourserver-ip-address
). - Заполните настройки gitea:
- Тип базы данных: PostgreSQL.
- Имя пользователя: gitea
- Пароль: пароль, который Вы задали.
- Имя базы данных: gitea
6 Дополнительные настройки
6.1 fail2ban
- Настроим fail2ban (см. fail2ban. Основные настройки)
- Документация: https://docs.gitea.com/next/administration/fail2ban-setup
- Добавьте фильтр
/etc/fail2ban/filter.d/gitea.conf
:# gitea.conf [Definition] failregex = .*(Failed authentication attempt|invalid credentials|Attempted access of unknown user).* from <HOST> ignoreregex =
- Добавьте ограничение
/etc/fail2ban/jail.d/80-gitea.conf
:[gitea] enabled = true filter = gitea logpath = /var/log/gitea/gitea.log maxretry = 10 findtime = 3600 bantime = 900 action = iptables-allports
- Поправьте секцию
[log]
в/etc/gitea/app.ini
:[log] MODE = file LEVEL = info ROOT_PATH = /var/log/gitea
- Создайте нужный каталог:
mkdir -p /var/log/gitea chown git:git /var/log/gitea
6.2 Имя ветки по умолчанию
- Gitea устанавливает имя главной ветки по умолчанию на
main
. - Имя ветка по умолчанию можно установить в файле
/etc/gitea/app.ini
:[repository] DEFAULT_BRANCH = master