Как установить службу хостинга Gitea Code на Fedora 34
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите Git
- Настройка Git
- Создайте служебный файл Systemd.
Gitea — это решение для хостинга кода с открытым исходным кодом, основанное на платформе Git. Он написан на языке Go. Он включает в себя редактор файлов репозитория, отслеживание проблем, запросы на вытягивание, управление пользователями, уведомления, встроенную вики, поддержку LFS, хуки Git и многое другое.
Это легкое приложение. Поэтому его можно устанавливать на маломощные системы. Если вы ищете самостоятельную платформу Git с меньшей платформой памяти, вам следует проверить Gitea.
В этой статье рассказывается, как установить и настроить Gitea на Fedora 34 и как настроить свой первый репозиторий Git. Gitea можно установить из исходного кода, бинарного файла, пакета докеров или пакета. Для нашего урока мы установим его из двоичного файла.
Предпосылки
- A server running Fedora 34.
- A non-root sudo user.
- SELinux Disabled.
-
Make sure everything is updated.
$ sudo dnf update
Шаг 1. Настройте брандмауэр
Первым шагом является настройка брандмауэра. Сервер Fedora поставляется с брандмауэром Firewalld.
Проверьте, работает ли брандмауэр.
$ sudo firewall-cmd --state
Вы должны получить следующий вывод.
running
Проверьте текущие разрешенные службы/порты.
$ sudo firewall-cmd --permanent --list-services
Он должен показать следующий вывод.
dhcpv6-client mdns ssh
Разрешить порты HTTP и HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Перепроверьте состояние брандмауэра.
$ sudo firewall-cmd --permanent --list-services
Вы должны увидеть аналогичный вывод.
dhcpv6-client http https mdns ssh
Перезагрузите брандмауэр.
$ sudo systemctl reload firewalld
Шаг 2 — Установите Git
Первый шаг — установить Git.
$ sudo dnf install git
Проверьте установку, проверив версию Git.
$ git --version git version 2.31.1
Настроить Git
Git можно настроить с помощью команды
git config
. Укажите свое имя и адрес электронной почты для работы с Git.$ git config --global user.name "Your Name" $ git config --global user.email ""
Вы можете проверить конфигурацию с помощью следующей команды.
$ git config --list user.name=Your Name
Шаг 3 — Установите и настройте PostgreSQL
Gitea поддерживает SQLite, MySQL/Mariadb, MSSQL и PostgreSQL. Для нашего руководства мы будем использовать PostgreSQL.
Установите и инициализируйте PostgreSQL.
$ sudo dnf module enable postgresql:13 $ sudo dnf install postgresql-server postgresql-contrib $ sudo postgresql-setup --initdb --unit postgresql $ sudo systemctl enable --now postgresql
PostgreSQL по умолчанию использует схему шифрования md5 для аутентификации по паролю, что не является безопасным. Вам необходимо переключиться на схему
SCRAM-SHA-256
. И если вы собираетесь подключаться к удаленной базе данных PostgreSQL, вам необходимо настроить ее для прослушивания вашего IP-адреса. Оба эти параметра можно изменить, отредактировав файл/var/lib/pgsql/data/postgresql.conf
. Откройте его для редактирования.$ sudo nano /var/lib/pgsql/data/postgresql.conf
Отредактируйте следующие переменные следующим образом.
listen_addresses = 'localhost, 201.0.110.0' password_encryption = scram-sha-256
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезапустите PostgreSQL.
$ sudo systemctl restart postgresql
Войдите в оболочку PostgreSQL.
$ sudo -u postgres psql
Создайте нового пользователя SQL и базу данных для Gitea. Выберите надежный пароль для пользователя базы данных.
postgres-# CREATE ROLE gitea WITH LOGIN PASSWORD 'yourpassword'; postgres-# CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
Замените имя пользователя, имя базы данных и пароль на соответствующие.
Выйдите из оболочки, набрав
\q
.Разрешите пользователю базы данных доступ к базе данных, созданной выше, добавив следующее правило аутентификации в
/var/lib/pgsql/data/pg_hba.conf
.Если база данных локальная, то добавьте эту строку.
local giteadb gitea scram-sha-256
Вместо этого для удаленной базы данных используйте следующий код.
host giteadb gitea 192.0.2.10/32 scram-sha-256
Вам также потребуется отредактировать следующие строки, заменив
ident
наscram-sha-256
.# IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident
Они должны выглядеть следующим образом.
# IPv4 local connections: host all all 127.0.0.1/32 scram-sha-256 # IPv6 local connections: host all all ::1/128 scram-sha-256
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезапустите PostgreSQL.
$ sudo systemctl restart postgresql
Вам также нужно будет добавить следующее правило в брандмауэр, если вы хотите разрешить удаленные подключения.
$ sudo firewall-cmd --permanent--add-service=postgresql $ sudo firewall-cmd --reload
Шаг 4 — Создайте пользователя Git
Создайте нового системного пользователя для запуска приложения Gitea.
$ sudo useradd \ --system \ --shell /bin/bash \ --comment 'Git Version Control' \ --create-home \ --home /home/git \ git
Эта команда создает нового пользователя и группу с именем
git
и устанавливает домашний каталог в/home/git
.Шаг 5 — Установите Gitea
Откройте страницу загрузок Gitea и проверьте номер версии последнего доступного бинарного файла. На момент написания этого руководства последней версией была 1.14.3. Если есть более новая версия, измените ее в переменной
VERSION
в приведенной ниже команде.Используйте утилиту
wget
, чтобы получить последний двоичный файл Gitea.$ GITEAVERSION=1.14.3 $ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
Переместите загруженный двоичный файл в каталог
/usr/local/bin
.$ sudo mv gitea /usr/local/bin
Сделайте бинарный исполняемый файл.
$ sudo chmod +x /usr/local/bin/gitea
Выполните следующие команды, чтобы создать каталоги и установить необходимые разрешения для правильной работы Gitea.
$ sudo mkdir -p /var/lib/gitea/{custom,data,log} $ sudo chown -R git:git /var/lib/gitea/ $ sudo chmod -R 750 /var/lib/gitea/ $ sudo mkdir /etc/gitea $ sudo chown root:git /etc/gitea $ sudo chmod 770 /etc/gitea
Для каталога
/etc/gitea
установлено разрешение 770, чтобы мастер установки мог создать файл конфигурации. После завершения установки мы установим более ограничительные разрешения.Создайте служебный файл Systemd
Мы будем запускать Gitea как сервис systemd. Для этого создайте новый файл входа systemd для Gitea.
$ sudo nano /etc/systemd/system/gitea.service
Вставьте в него следующий код.
[Unit] Description=Gitea After=syslog.target After=network.target After=postgresql.service [Service] RestartSec=2s Type=simple User=git Group=git WorkingDirectory=/var/lib/gitea/ ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini Restart=always Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea [Install] WantedBy=multi-user.target
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Для справки вы можете взглянуть на образец файла systemd, доступный в репозитории Gitea.
Перезагрузите демон systemd, чтобы включить только что созданный файл.
$ sudo systemctl daemon-reload
Включите и запустите службу Gitea.
$ sudo systemctl enable --now gitea
Убедитесь, что Gitea работает.
$ sudo systemctl status gitea gitea.service - Gitea Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2021-07-04 20:33:38 EDT; 1 day 8h ago Main PID: 46404 (gitea) Tasks: 7 (limit: 2328) Memory: 115.5M
CPU: 9min 12.061s CGroup: /system.slice/gitea.service ---46404 /usr/local/bin/gitea web -c /etc/gitea/app.ini ...Шаг 6 — Настройте Gitea
Gitea по умолчанию прослушивает порт 3000. Вы можете использовать либо другой порт, либо придерживаться порта по умолчанию. Поэтому нам нужно открыть и порт 3000.
$ sudo firewall-cmd --permanent --add-port=3000/tcp $ sudo firewall-cmd --reload
Откройте браузер и введите
https://ВАШ IP-АДРЕС:3000
, и вас встретит установщик Gitea. Используйте следующие значения для настройки.Настройки базы данных
- Тип базы данных: выберите PostgreSQL из раскрывающегося списка.
- Хост: 127.0.0.1:5432
- Имя пользователя: gitea
- Пароль: ваш пароль
- Имя базы данных: gitea
общие настройки
- Название сайта: введите название вашей организации
- Корневой путь репозитория: оставьте путь по умолчанию.
- Корневой путь Git LFS: оставьте путь по умолчанию.
- Запуск от имени пользователя: git
- Домен SSH-сервера: введите свой IP-адрес.
- Порт прослушивания HTTP: 3000 (вы можете изменить порт здесь, но вам потребуется доступ к нему через брандмауэр).
- Базовый URL-адрес Gitea: http://ВАШ IP-АДРЕС:3000.
- Путь журнала: оставьте значение по умолчанию.
Вы можете настроить параметры электронной почты и сервера на этом этапе или изменить их позже. Однако вы должны заполнить параметры учетной записи администратора.
Чтобы начать установку, нажмите кнопку Install Gitea*. После завершения вы будете автоматически авторизованы и перенаправлены на панель управления учетной записью.
При установке будет создан файл конфигурации Gitea. Измените его разрешение на чтение.
$ sudo chmod 750 /etc/gitea $ sudo chmod 640 /etc/gitea/app.ini
Вот и все. Теперь Gitea установлена на вашем сервере.
Шаг 7. Установите SSL с помощью Lets Encrypt
Чтобы установить SSL-сертификат с помощью Lets Encrypt, нам нужно загрузить инструмент Certbot с помощью установщика пакета Snapd, включенного в Ubuntu 20.04.
Выполните следующие команды, чтобы установить Certbot.
$ sudo dnf install certbot
Создайте SSL-сертификат.
$ sudo certbot certonly --standalone --preferred-challenges http -d example.com
Приведенная выше команда загрузит сертификат в каталог
/etc/letsencrypt/live/example.com
на вашем сервере.Создайте корневой каталог вызова для автоматического обновления Lets Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Создайте задание Cron для обновления SSL. Он будет запускаться каждый день для проверки сертификата и его обновления при необходимости. Для этого сначала создайте файл
/etc/cron.daily/certbot-renew
и откройте его для редактирования.$ sudo nano /etc/cron.daily/certbot-renew
Вставьте следующий код.
#!/bin/sh certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Измените права доступа к файлу задачи, чтобы сделать его исполняемым.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Шаг 8 — Установите и настройте Nginx
Следующим шагом будет установка сервера Nginx.
$ sudo dnf install nginx
Создайте файл конфигурации Nginx для Gitea.
$ sudo nano /etc/nginx/conf.d/gitea.conf
Вставьте в него следующий код.
server { listen 80; location ~ /\.well-known/acme-challenge { root /var/lib/letsencrypt/; } server_name yourdomain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name your_domain; client_max_body_size 50m; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; # about 40000 sessions ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20- POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; ssl_prefer_server_ciphers off; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem; proxy_read_timeout 720s; proxy_connect_timeout 720s; proxy_send_timeout 720s; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; location / { proxy_redirect off; proxy_pass http://127.0.0.1:3000; } access_log /var/log/nginx/gitea.access.log; error_log /var/log/nginx/gitea.error.log; }
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Убедитесь, что файл конфигурации работает правильно.
$ sudo nginx -t
Перезапустите сервер Nginx.
$ sudo systemctl restart nginx
Затем измените домен Gitea и корневой URL. Для этого откройте файл конфигурации
/etc/gitea/app.ini
.$ sudo nano /etc/gitea/app.ini
Измените следующие значения.
[server] SSH_DOMAIN = git.example.com DOMAIN = git.example.com ROOT_URL = https://git.example.com/
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезапустите службу Gitea.
$ sudo systemctl restart gitea
Шаг 9. Настройка уведомлений по электронной почте
Если вы хотите получать уведомления по электронной почте, вы можете включить их либо через Sendmail, либо через стороннюю службу транзакций электронной почты, такую как Amazon SES, Postmark, Mailgun или Sendgrid.
Чтобы включить уведомления, откройте файл конфигурации
/etc/gitea/app.ini
.$ sudo nano /etc/gitea/app.ini
Отредактируйте следующий раздел в файле и добавьте следующий код.
[mailer] ENABLED = true FROM = MAILER_TYPE = smtp HOST = mail.mydomain.com:587 IS_TLS_ENABLED = true USER = PASSWD = `password`
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезапустите службу Gitea.
$ sudo systemctl restart gitea
Шаг 10 — Обновление Gitea
Обновление Gitea включает в себя загрузку и замену бинарного файла Gitea.
Во-первых, остановите службу Gitea.
$ sudo systemctl stop gitea
Загрузите и установите двоичный файл Gitea.
$ GITEAVERSION=LATESTVERSION $ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64 $ sudo mv gitea /usr/local/bin $ sudo chmod +x /usr/local/bin/gitea
Перезапустите службу Gitea.
$ sudo systemctl start gitea
Шаг 11 - Как использовать SSH
Чтобы использовать SSH, нам нужно добавить в Gitea собственный ключ SSH. Если у вас его нет, вы можете создать его, используя следующую команду в вашей локальной системе.
$ ssh-keygen -N "yourpassphrase" -t ed25519 -C "gitea_key"
Это создаст ключ с именем
id_ed25519
в каталоге~/.ssh
. Чтобы добавить этот ключ, скопируйте содержимое файла~/.ssh/id_ed25519.pub
в буфер обмена. Затем добавьте этот ключ на страницу настроек Gitea на вкладке Ключи SSH/GPG. Нажмите кнопку «Добавить ключ», дайте ключу имя и вставьте его в поле.Если у вас есть список разрешенных пользователей в файле конфигурации sshd, вам нужно добавить в него
git
.Откройте файл конфигурации SSHD.
$ sudo nano /etc/ssh/sshd_config
Найдите строку, которая должна выглядеть следующим образом.
AllowUsers myuser myotheruser git
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезапустите службу SSHD.
$ sudo systemctl restart ssh
Вам нужно добавить парольную фразу для созданного нами ключа в инструмент
ssh-agent
в вашей локальной системе, чтобы он не запрашивался повторно. Выполните следующие команды, чтобы сделать это.$ eval $(ssh-agent) Agent pid 46436 $ ssh-add ~/.ssh/id_ed25519
Вы можете клонировать свой репозиторий, чтобы проверить SSH-соединение.
$ git clone ssh:///username/repo.git Cloning into 'repo'... The authenticity of host 'example.com (201.110.80.160)' can't be established. ECDSA key fingerprint is SHA256:Kx9l19zpGhHfbb2wHtmWeC7/WWv8e5/T3Tcws2qwVEw. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'example.com,201.110.80.160' (ECDSA) to the list of known hosts. remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (4/4), done. remote: Total 5 (delta 0), reused 0 (delta 0) Receiving objects: 100% (5/5), 4.77 KiB | 977.00 KiB/s, done.
Заключение
На этом руководство по установке и настройке службы размещения кода Gitea в Fedora 34 завершается. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.