Установка 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:
- Fedora/RHEL/CentOS:
2.2 База данных
- Установите нужную базу данных.
2.2.1 SqLite
- Установите sqlite:
1dnf install sqlite
- Настроек не требуется.
2.2.2 PostgreSQL
Установите postgresql:
1dnf install postgresql-server postgresql
Создайте начальную базу данных:
1/usr/bin/postgresql-setup --initdb
Запустите PostgreSQL:
1systemctl enable --now postgresql
Если требуется удалённая настройка PostgreSQL, добавьте адрес для прослушивания вашего IP-адреса, отредактировав
listen_addresses
в/var/lib/pgsql/data/postgresql.conf
:1listen_addresses = 'localhost, 203.0.113.3'
PostgreSQL по умолчанию использует схему запрос-ответ
md5
для аутентификации.- В настоящее время эта схема не считается безопасной.
- Вместо этого используйте схему
SCRAM-SHA-256
, отредактировавpostgresql.conf
:1password_encryption = scram-sha-256
На сервере базы данных войдите в консоль базы данных как суперпользователь:
1su -c psql - postgres
Создайте пользователя базы данных с правами входа и паролем:
1CREATE ROLE gitea WITH LOGIN PASSWORD 'gitea';
Создайте базу данных с кодировкой UTF-8, принадлежащую пользователю базы данных, созданному ранее:
1CREATE 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
.- Для локальной базы данных:
- Для удаленной базы данных:
1host gitea gitea 192.0.2.10/32 scram-sha-256
- Замените имя базы данных, пользователя и IP-адрес экземпляра Gitea на свои собственные.
Перезапустите PostgreSQL, чтобы применить новые правила аутентификации:
1systemctl restart postgresql.service
На вашем сервере Gitea проверьте соединение с базой данных.
Вам будет предложено ввести пароль для пользователя базы данных и подключиться к базе данных.
2.3 Брандмауэр
- Если не будете включать проксирование через web-сервер, то разрешите работать по порту 3000:
3 Установка
3.1 Установка бинарного пакета
- Пакета
gitea
в Rocky Linux нет. - Устанавливать будем в локальную иерархию:
1cd /usr/local/bin
- Скачаем последнюю версию
gitea
:1curl -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
- Установим права на выполнение файла:
1chmod +x /usr/local/bin/gitea
- Восстановим метки безопасности:
1restorecon -rv /usr/local/bin/gitea
3.2 Структура папок
- Создадим рабочую структур папок:
3.3 Сервис systemd
- Скачает файл сервиса:
1wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/
- Перечитает файлы сервисов:
1systemctl daemon-reload
3.4 Запуск gitea
- Запустим gitea:
1systemctl enable --now gitea
4 Проксирование
- Можно настроить проксирование gitea через nginx.
- Это не обязательно.
4.1 Установка nginx
- Установим nginx:
1dnf install nginx
4.2 Брандмауэр
- Настроим брандмауэр:
4.3 SELinux
- Разрешите nginx перенаправление:
4.4 Конфигурация nginx
- В файле
/etc/nginx/conf.d/gitea.conf
опишем конфигурацию для перенаправления:1server { 2 server_name hub.example.com; 3 4 location / { 5 client_max_body_size 512M; 6 proxy_pass http://localhost:3000; 7 proxy_set_header Host $host; 8 proxy_set_header X-Real-IP $remote_addr; 9 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 10 proxy_set_header X-Forwarded-Proto $scheme; 11 } 12}
4.5 Конфигурационный файл app.ini
- Добавьте в
/etc/gitea/app.ini
в секцию[security]
чтобы задать доверенные прокси-серверы:
4.6 Настройка SSL
- Установите certbot (см. Клиенты ACME. Certbot)
- Создайте сертификат.
- Конфигурационный файл Nginx будет иметь вид:
1server { 2 listen 443 ssl http2; 3 listen [::]:443 ssl http2; 4 5 server_name hub.example.com; 6 7 ssl_certificate /etc/letsencrypt/live/hub.example.com/fullchain.pem; 8 ssl_certificate_key /etc/letsencrypt/live/hub.example.com/privkey.pem; 9 include /etc/letsencrypt/options-ssl-nginx.conf; 10 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 11 12 charset utf-8; 13 gzip on; 14 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; 15 16 proxy_read_timeout 300; 17 proxy_connect_timeout 300; 18 proxy_send_timeout 300; 19 20 21 location / { 22 client_max_body_size 512M; 23 proxy_pass http://localhost:3000; 24 proxy_set_header Connection $http_connection; 25 proxy_set_header Upgrade $http_upgrade; 26 proxy_set_header Host $host; 27 proxy_set_header X-Real-IP $remote_addr; 28 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 29 proxy_set_header X-Forwarded-Proto $scheme; 30 } 31} 32 33server { 34 # Redirect HTTP traffic to HTTPS 35 listen 80; 36 listen [::]:80; 37 server_name hub.example.com; 38 return 301 https://$server_name$request_uri; 39}
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
: - Добавьте ограничение
/etc/fail2ban/jail.d/80-gitea.conf
: - Поправьте секцию
[log]
в/etc/gitea/app.ini
: - Создайте нужный каталог:
6.2 Имя ветки по умолчанию
- Gitea устанавливает имя главной ветки по умолчанию на
main
. - Имя ветка по умолчанию можно установить в файле
/etc/gitea/app.ini
: