Поиск по сайту:

Как установить службу хостинга Gitea Code на Fedora 34


На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Установите Git
    1. Настройка Git

    1. Создайте служебный файл 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 завершается. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.