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

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


Это руководство существует для этих версий ОС

  • Debian 11 (Bullseye)
  • Debian 10 (Buster)

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

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

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

    Требования

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

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

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

    Начните с обновления индекса вашего пакета и установите все доступные обновления:

    apt update
    apt upgrade -y
    reboot
    

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

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

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

    apt install -y git nginx certbot postgresql sudo
    

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

    adduser --system --disabled-password --group --shell /bin/bash --home /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 /run/gitea
    chown -R root:gitea /etc/gitea
    chmod -R 750 /var/lib/gitea
    chmod 770 /etc/gitea
    

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

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

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

    systemctl enable --now 
    

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

    sudo -u postgres psql
    postgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password';
    postgres=# CREATE DATABASE gitea;
    postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
    postgres=# exit;
    

    Шаг 3: Установка 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 для Gitea:

    $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
    
    Remove the following line from the [server] section:
    HTTP_PORT = 3000
    
    And add the following lines to the [server] section:
    HTTP_ADDR        = /run/gitea/gitea.sock
    PROTOCOL         = unix
    UNIX_SOCKET_PERMISSION = 666
    

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

    Stop Nginx if it is running, as certbot will need to bind to port 80:
    systemctl stop nginx.service
    

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

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

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

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

    $EDITOR /etc/nginx/sites-available/gitea
    

    И введите следующую конфигурацию:

    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 для прослушивания.

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

    ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled
    

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

    nginx -t
    

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

    systemctl start nginx.service gitea.service
    

    Теперь ваш экземпляр Gitea должен успешно работать. Если вы не создали учетную запись администратора с помощью первоначального веб-установщика, роль администратора будет предоставлена первому зарегистрированному пользователю.

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

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

    По умолчанию Gitea регистрирует сообщения уровня серьезности Info и выше. Скорее всего, вы захотите изменить это на «Предупреждение» или «Ошибка». Для этого откройте файл /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 на любой номер выше 1000, например:

    SSH_PORT = 2222
    

    Затем перезапустите Gitea, чтобы применить изменения.