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

Как установить платформу хостинга Gitea Code с HTTPS на CentOS 8


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

  1. Требования
  2. Шаг 1. Подготовка системы
  3. Шаг 2. Настройка базы данных
  4. Шаг 3. Установка Gitea
  5. Шаг 4. Настройка Gitea
  6. Шаг 5. Настройка обратного прокси-сервера
  7. Необязательные действия
    1. Конфигурация ведения журнала
    2. Отдельный SSH-сервер

    Gitea — это веб-приложение для размещения кода, написанное на Go. Как следует из названия, он предназначен для использования с популярной программой управления исходным кодом Git, аналогично Gitlab и Github. В этом руководстве объясняется установка Gitea на CentOS 8 с обратным прокси-сервером Nginx HTTPS.

    Требования

    • Система CentOS 8 с привилегиями root.
    • Зарегистрированное доменное имя, указывающее на ваш сервер.
    • Переменная окружения $EDITOR должна быть установлена на предпочитаемый вами текстовый редактор.
    • Доступ к SMTP-серверу для уведомлений по электронной почте (необязательно).

    Убедитесь, что ваш (под)домен указывает на IPv4-адрес вашего сервера с записью A. При желании создайте запись AAAA, указывающую на IPv6-адрес вашего сервера.

    ПРИМЕЧАНИЕ. В этом руководстве предполагается, что SELinux отключен или разрешен.

    Шаг 1: Подготовка системы

    Начните с установки всех доступных обновлений и перезагрузки:

    dnf update -y
    reboot
    

    Для этой установки требуется несколько программных компонентов:

    • Git, зависимость от Gitea.
    • PostgreSQL, так как для Gitea требуется база данных.
    • Nginx, который будет использоваться в качестве обратного прокси-сервера.
    • Sudo для запуска команд от имени системного пользователя postgres.
    • Получить
    • Certbot, утилита для получения SSL-сертификатов Lets Encrypt. Certbot будет установлен отдельно, поскольку его нет в репозиториях программного обеспечения CentOS.

    Установите их следующим образом:

    dnf install -y git postgresql postgresql-server nginx sudo wget
    

    Certbot-auto — это скрипт, управляющий установкой certbots. Скачать это:

    wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto
    

    Убедитесь, что установлены правильные разрешения:

    chmod 0755 /usr/local/bin/certbot-auto
    

    Выполните следующее, чтобы установить certbot. Вам будет предложено менеджером пакетов подтвердить установку зависимостей, ответьте y.

    certbot-auto --install-only
    

    Затем создайте пользователя для запуска Gitea:

    useradd --system --shell /bin/bash --create-home --home-dir /home/gitea gitea
    

    Затем создайте структуру каталогов для Gitea:

    mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea
    

    И установите права собственности и разрешения следующим образом:

    chown -R gitea:gitea /var/lib/gitea
    chown -R gitea:gitea /var/run/gitea
    chown -R root:gitea /etc/gitea
    chmod -R 750 /var/lib/gitea
    chmod 770 /etc/gitea
    

    Разрешения на /etc/gitea являются временными и будут ужесточены после запуска веб-установщика.

    Включите трафик на порты 80 и 443 навсегда:

    firewall-cmd --add-port 80/tcp --add-port 443/tcp --permanent
    firewall-cmd --reload
    

    Доступ к порту 3000 требуется только временно для первоначальной настройки, поскольку вместо этого мы настроим gitea на использование сокета Unix.

    firewall-cmd --add-port 3000/tcp

    Шаг 2: Настройка базы данных

    Инициализировать Постгрес:

    postgresql-setup --initdb --unit postgresql
    

    Убедитесь, что он включен и работает:

    systemctl enable --now postgresql.service
    

    Войдите в Постгрес:

    sudo -u postgres psql
    

    Затем создайте роль пользователя и базу данных, которые будут использоваться Gitea:

    postgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password';
    postgres=# CREATE DATABASE gitea;
    postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
    postgres=# \q
    

    Откройте файл конфигурации аутентификации клиента Postgres:

    $EDITOR /var/lib/pgsql/data/pg_hba.conf
    

    Добавьте следующую строку сразу после # локальных подключений IPv4 :

    # IPv4 local connections:
    host	gitea		gitea		127.0.0.1/32		md5
    

    Сохраните файл и перезапустите Postgres:

    systemctl restart postgresql.service

    Шаг 3: Установка Gitea

    Загрузите бинарную версию Gitea для linux-amd64 со страницы загрузки Giteas. Например:

    wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea
    

    Установите правильные разрешения для загруженного бинарного файла:

    chmod 755 /usr/local/bin/gitea
    

    Затем создайте файл модуля systemd:

    $EDITOR /etc/systemd/system/gitea.service
    

    И введите следующее:

    [Unit]
    Description=Gitea (Git with a cup of tea)
    After=syslog.target
    After=network.target
    Requires=postgresql.service
    [Service]
    Type=simple
    User=gitea
    Group=gitea
    WorkingDirectory=/var/lib/gitea/
    RuntimeDirectory=gitea
    ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
    Restart=always
    Environment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea
    [Install]
    WantedBy=multi-user.target
    

    Убедитесь, что новый модуль загружен:

    systemctl daemon-reload
    

    Затем попросите systemd запустить Gitea при загрузке:

    systemctl enable gitea.service

    Шаг 4: Настройка Gitea

    Для первоначальной настройки используйте прилагаемый веб-установщик. Сначала запустите Gitea:

    systemctl start gitea.service
    

    Затем перейдите по адресу http://your_domain:3000/install и заполните необходимые параметры следующим образом:

    • Тип базы данных: PostgreSQL
    • Хост: 127.0.0.1:5432
    • Имя пользователя: gitea
    • Пароль. Введите пароль, который вы выбрали при создании роли Postgres.
    • Имя базы данных: gitea
    • SSL: отключить
    • Название сайта: название по вашему выбору.
    • Корневой путь к репозиторию: /var/lib/gitea/data/repositories
    • Корневой путь Git LFS: /var/lib/gitea/data/lfs
    • Имя пользователя для запуска: gitea
    • Домен SSH-сервера: your_domain
    • Порт сервера SSH: 22
    • Пост прослушивания Gitea HTTP: 3000
    • Базовый URL-адрес Gitea: https://ваш_домен/
    • Путь к журналу: /var/lib/gitea/log

    Настройте электронную почту и остальные параметры по своему усмотрению, затем нажмите \Установить Gitea\. Вы будете перенаправлены на ошибочный URL. Это нормально, так как мы еще не настроили Nginx или HTTPS. Из соображений производительности мы теперь настроим Gitea для прослушивания сокета unix вместо TCP-порта по умолчанию.

    Остановите Gitea, прежде чем продолжить:

    systemctl stop gitea.service
    

    Настройте разрешения для /etc/gitea, как показано ниже. Это не позволяет никому, кроме группы gitea, читать app.ini, который содержит конфиденциальную информацию, включая учетные данные базы данных.

    chmod 750 /etc/gitea
    chown root:gitea /etc/gitea/app.ini
    chmod 640 /etc/gitea/app.ini
    

    Откройте его файл конфигурации:

    $EDITOR /etc/gitea/app.ini
    

    Удалите следующую строку из раздела server:

    HTTP_PORT = 3000
    

    И добавьте следующие строки в раздел сервера:

    HTTP_ADDR        = /run/gitea/gitea.sock
    PROTOCOL         = unix
    UNIX_SOCKET_PERMISSION = 666

    Шаг 5: Настройка обратного прокси

    Остановите Nginx, если он запущен, чтобы certbot мог прослушивать порт 80:

    systemctl stop nginx.service
    

    Используйте следующую команду, чтобы получить сертификат для вашего домена:

    certbot-auto certonly --standalone --agree-tos -m  -d your_domain
    

    Lets Encrypt проверит право собственности на домен перед выдачей сертификата. Ваш сертификат, цепочка и закрытый ключ будут храниться в /etc/letsencrypt/live/your_domain/.

    Теперь мы можем настроить Nginx. Создайте новый файл конфигурации:

    $EDITOR /etc/nginx/conf.d/gitea.conf
    

    И введите следующие серверные блоки:

    server {
            listen 80;
            listen [::]:80;
            server_name your_domain;
            return 301 https://$server_name$request_uri;
    	access_log /var/log/nginx/gitea-proxy_access.log;
    	error_log /var/log/nginx/gitea-proxy_error.log;
    }
    server {
            listen 443 ssl;
            listen [::]:443 ssl;
            server_name your_domain;
            ssl on;
            ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
            location / {
                    proxy_pass http://unix:/var/run/gitea/gitea.sock;
    	}
    	access_log /var/log/nginx/gitea-proxy_access.log;
    	error_log /var/log/nginx/gitea-proxy_error.log;
    }

    Первый серверный блок просто служит для перенаправления всех HTTP-запросов на HTTPS. Второй блок прослушивает соединения HTTPS и проксирует их в сокет Unix, на котором мы настроили Gitea для прослушивания.

    После того, как вы сохранили приведенную выше конфигурацию, проверьте наличие синтаксических ошибок и при необходимости отредактируйте конфигурацию:

    nginx -t
    

    Наконец, запустите Nginx и Gitea:

    systemctl start nginx.service gitea.service
    

    Теперь ваш экземпляр Gitea должен успешно работать. Доступ к нему по адресу https://ваш_домен

    Дополнительные шаги

    Конфигурация ведения журнала

    По умолчанию Giteas регистрирует сообщения уровня серьезности Info и выше. Скорее всего, вы захотите изменить это на Warn или Error . Для этого откройте файл /etc/gitea/app.ini и измените параметр LEVEL в разделе [log] на один из следующих: trace, debug, info, warn, error, Critical, Fatal, None. Например, для записи в журнал сообщений уровня серьезности Warn и выше используйте:

    [log]
    MODE = file
    LEVEL = warn
    ROOT_PATH = /var/lib/gitea/log
    

    Перезапустите Gitea, чтобы изменения вступили в силу:

    systemctl restart gitea.service
    

    Отдельный SSH-сервер

    В качестве альтернативы Gitea может использовать собственный SSH-сервер. Чтобы включить его, добавьте следующую строку в раздел конфигурации [server]:

    START_SSH_SERVER = true
    

    И измените порт SSH на любой номер выше 1024, например:

    SSH_PORT = 2222
    

    Затем перезапустите Gitea, чтобы применить изменения и включить трафик на выбранный порт:

    firewall-cmd --add-port 2222/tcp --permanent
    firewall-cmd --reload