Установка Gitea · 10 min read · Oct 10, 2025

Как установить Gitea на Ubuntu 22.04

Gitea — это бесплатный, открытый и самоуправляемый сервис Git. Он написан на языке GO и предоставляет более простой способ размещения вашей собственной системы контроля версий в интернете. Он прост, легковесен и может быть установлен на системах с низкой мощностью. Он очень похож на GitHub и GitLab и предлагает богатый набор функций, таких как редактор файлов репозитория, отслеживание проблем проекта, управление пользователями, уведомления, встроенная вики и многое другое. Он кроссплатформенный и может быть установлен на всех основных операционных системах, включая Linux, macOS, Windows, архитектуры ARM и PowerPC.

В этом руководстве мы покажем вам, как установить сервис Git Gitea с Nginx и SSL Let’s Encrypt на Ubuntu 22.04.

Предварительные требования

  • Сервер с установленной Ubuntu 22.04.
  • Действительное доменное имя, указывающее на IP вашего сервера.
  • Настроенный пароль root на вашем сервере.

Начало работы

Сначала обновите и обновите все системные пакеты до последней версии, выполнив следующую команду:

apt update -y  
apt upgrade -y

Затем установите пакет Git, выполнив следующую команду:

apt-get install git -y

После установки пакета Git вы можете перейти к следующему шагу.

Установка и настройка MariaDB

Gitea использует MariaDB в качестве базы данных. Поэтому вам нужно будет установить его на вашем сервере. Вы можете установить его, выполнив следующую команду:

apt install mariadb-server -y

После установки вам нужно будет обеспечить безопасность MariaDB и установить пароль root. Вы можете обеспечить безопасность, выполнив скрипт mysql_secure_installation:

mysql_secure_installation

Этот скрипт установит пароль root, удалит анонимных пользователей, запретит удаленный вход root и удалит тестовую базу данных, как показано ниже:

Введите текущий пароль для root (нажмите Enter, если нет):
Установить пароль root? [Y/n]: Y
Удалить анонимных пользователей? [Y/n]: Y
Запретить удаленный вход root? [Y/n]: Y
Удалить тестовую базу данных и доступ к ней? [Y/n]:  Y
Перезагрузить таблицы привилегий сейчас? [Y/n]:  Y

После того как MariaDB будет защищена, войдите в оболочку MariaDB с помощью следующей команды:

mysql -u root -p

Введите свой пароль root, когда будет предложено. Затем измените GLOBAL innodeb_file_per_table на On:

MariaDB [(none)]>SET GLOBAL innodb_file_per_table = ON;

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

MariaDB [(none)]>CREATE DATABASE gitea;  
MariaDB [(none)]>CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'password';

Затем предоставьте все привилегии базе данных giteadb:

MariaDB [(none)]>GRANT ALL ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

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

MariaDB [(none)]>ALTER DATABASE gitea CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;

Наконец, сбросьте привилегии и выйдите из оболочки MariaDB с помощью следующей команды:

MariaDB [(none)]>FLUSH PRIVILEGES;  
MariaDB [(none)]>EXIT;

Затем вам нужно будет отредактировать файл конфигурации по умолчанию MariaDB и добавить параметры InnoDB:

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Добавьте следующие строки в секцию [mysqld]:

innodb_file_format = Barracuda
innodb_large_prefix = 1
innodb_default_row_format = dynamic

Сохраните и закройте файл. Затем перезапустите службу MariaDB, чтобы применить изменения:

systemctl restart mariadb

На этом этапе ваша база данных MariaDB настроена. Теперь вы можете перейти к следующему шагу.

Установка и настройка Gitea

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

wget https://dl.gitea.io/gitea/1.17.1/gitea-1.17.1-linux-amd64

После завершения загрузки скопируйте загруженный файл в директорию /usr/bin/ и дайте разрешения на выполнение:

cp gitea-1.17.1-linux-amd64 /usr/bin/gitea  
chmod 755 /usr/bin/gitea

Затем создайте системного пользователя для Gitea с помощью следующей команды:

adduser --system --shell /bin/bash --group --disabled-password --home /home/git git

Затем создайте структуру каталогов для Gitea с помощью следующей команды:

mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}  
chown git:git /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}  
chmod 750 /var/lib/gitea/{data,indexers,log}  
chmod 770 /etc/gitea

После завершения вы можете перейти к следующему шагу.

Создание файла службы Gitea Systemd

Затем вам нужно будет создать файл службы systemd для управления сервисом Gitea с помощью systemd. Вы можете создать его с помощью следующей команды:

nano /etc/systemd/system/gitea.service

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

[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=mysql.service

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/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

Сохраните и закройте файл. Затем перезагрузите демон systemd и запустите сервис Gitea с помощью следующей команды:

systemctl daemon-reload  
systemctl start gitea

Вы можете проверить статус сервиса Gitea с помощью следующей команды:

systemctl status gitea

Вы должны увидеть следующий вывод:

? gitea.service - Gitea
     Loaded: loaded (/etc/systemd/system/gitea.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-08-21 12:19:23 UTC; 8s ago
   Main PID: 24766 (gitea)
      Tasks: 6 (limit: 2242)
     Memory: 121.2M
        CPU: 800ms
     CGroup: /system.slice/gitea.service
             ??24766 /usr/bin/gitea web -c /etc/gitea/app.ini

Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/bin/gitea
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /var/lib/gitea
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /var/lib/gitea/cus>
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /var/lib/gitea/log
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:25:PreloadSettings() [I] Configuration file: /etc/gitea/>
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:26:PreloadSettings() [I] Prepare to run install page
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:29:PreloadSettings() [I] SQLite3 is supported
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 cmd/web.go:217:listen() [I] [630222cb-6] Listen: http://0.0.0.0:3000
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 cmd/web.go:221:listen() [I] [630222cb-6] AppURL(ROOT_URL): http://localhost:3000/
Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/graceful/server.go:61:NewServer() [I] [630222cb-6] Starting new Web server:>

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

systemctl enable gitea

На этом этапе Gitea запущен и слушает на порту 3000. Теперь вы можете перейти к следующему шагу.

Настройка Nginx как обратного прокси для Gitea

По умолчанию Gitea слушает на порту 3000. Поэтому вам нужно будет настроить Nginx как обратный прокси, чтобы получить доступ к Gitea без указания порта.

Сначала установите веб-сервер Nginx, выполнив следующую команду:

apt-get install nginx -y

После установки создайте новый файл конфигурации виртуального хоста Nginx для Gitea:

nano /etc/nginx/sites-available/gitea

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

upstream gitea {
    server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name git.example.com;
    root /var/lib/gitea/public;
    access_log off;
    error_log off;

    location / {
      try_files maintain.html $uri $uri/index.html @node;
    }

    location @node {
      client_max_body_size 0;
      proxy_pass http://localhost:3000;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_max_temp_file_size 0;
      proxy_redirect off;
      proxy_read_timeout 120;
    }
}

Сохраните и закройте файл. Затем включите файл конфигурации виртуального хоста Nginx с помощью следующей команды:

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

Наконец, перезапустите службу Nginx и проверьте статус службы Nginx с помощью следующей команды:

systemctl restart nginx
systemctl status nginx

Вы должны получить следующий вывод:

? nginx.service - Высокопроизводительный веб-сервер и сервер обратного прокси
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-08-21 12:21:23 UTC; 5s ago
       Docs: man:nginx(8)
    Process: 24799 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 24800 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 24801 (nginx)
      Tasks: 2 (limit: 2242)
     Memory: 4.5M
        CPU: 44ms
     CGroup: /system.slice/nginx.service
             ??24801 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??24802 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Aug 21 12:21:23 ubuntu2204 systemd[1]: Starting Высокопроизводительный веб-сервер и сервер обратного прокси...
Aug 21 12:21:23 ubuntu2204 systemd[1]: Started Высокопроизводительный веб-сервер и сервер обратного прокси.

На этом этапе Nginx настроен для обслуживания Gitea. Теперь вы можете перейти к следующему шагу.

Защита Gitea с помощью SSL Let’s Encrypt

Сначала вам нужно будет установить клиент Certbot для установки и управления SSL Let’s Encrypt в вашей системе. Вы можете установить его, выполнив следующую команду:

apt-get install certbot python3-certbot-nginx -y

После установки Certbot выполните следующую команду, чтобы загрузить и установить SSL Let’s Encrypt для веб-сайта Gitea.

certbot --nginx -d gitea.linuxbuz.com

Укажите свой адрес электронной почты и примите условия обслуживания, как показано ниже:

Сохранение журнала отладки в /var/log/letsencrypt/letsencrypt.log
Выбраны плагины: Аутентификатор nginx, Установщик nginx
Введите адрес электронной почты (используется для срочного продления и уведомлений о безопасности) (Введите 'c' для отмены): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Пожалуйста, прочитайте Условия обслуживания по адресу
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Вы должны
согласиться, чтобы зарегистрироваться на сервере ACME по адресу
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Вы готовы поделиться своим адресом электронной почты с Фондом Электронных Свобод,
основным партнером проекта Let's Encrypt и некоммерческой организацией,
которая разрабатывает Certbot? Мы хотели бы отправить вам электронное письмо о нашей работе
по шифрованию интернета, новостях EFF, кампаниях и способах поддержки цифровой свободы.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Получение нового сертификата
Выполнение следующих задач:
http-01 challenge для gitea.linuxbuz.com
Ожидание проверки...
Очистка задач
Развертывание сертификата на виртуальном хосте /etc/nginx/sites-enabled/gitea

Затем выберите, хотите ли вы перенаправить HTTP-трафик на HTTPS, как показано ниже:

Пожалуйста, выберите, хотите ли вы перенаправить HTTP-трафик на HTTPS, удалив доступ по HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Нет перенаправления - Не вносить дальнейшие изменения в конфигурацию веб-сервера.
2: Перенаправить - Сделать так, чтобы все запросы перенаправлялись на безопасный доступ HTTPS. Выберите это для
новых сайтов или если вы уверены, что ваш сайт работает на HTTPS. Вы можете отменить это
изменение, отредактировав конфигурацию вашего веб-сервера.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Выберите соответствующий номер [1-2], затем [введите] (нажмите 'c' для отмены): 2

Введите 2 и нажмите Enter, чтобы установить сертификат, как показано ниже:

Перенаправление всего трафика на порт 80 на ssl в /etc/nginx/sites-enabled/gitea

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Поздравляем! Вы успешно включили https://gitea.linuxbuz.com

Вы должны протестировать свою конфигурацию по адресу:
https://www.ssllabs.com/ssltest/analyze.html?d=gitea.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ВАЖНЫЕ ЗАМЕТКИ:
 - Поздравляем! Ваш сертификат и цепочка были сохранены по адресу:
   /etc/letsencrypt/live/gitea.linuxbuz.com/fullchain.pem
   Ваш файл ключа был сохранен по адресу:
   /etc/letsencrypt/live/gitea.linuxbuz.com/privkey.pem
   Ваш сертификат истечет 2022-11-21. Чтобы получить новый или измененный
   вариант этого сертификата в будущем, просто выполните certbot снова
   с опцией "certonly". Чтобы неинтерактивно продлить *все*
   ваши сертификаты, выполните "certbot renew"
 - Если вам нравится Certbot, пожалуйста, подумайте о поддержке нашей работы:

   Пожертвование ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Пожертвование EFF:                    https://eff.org/donate-le

Теперь ваш веб-сайт Gitea защищен с помощью SSL Let’s Encrypt. Теперь вы можете перейти к следующему шагу.

Доступ к веб-интерфейсу Gitea

Теперь откройте ваш веб-браузер и введите URL https://git.example.com/. Вы будете перенаправлены на следующую страницу:

Конфигурация Gitea

Общие настройки

Дополнительные настройки

Укажите имя вашей базы данных Gitea, имя пользователя, пароль, путь к репозиторию, имя пользователя для запуска, порт прослушивания, базовый URL Gitea, путь к журналу, имя администратора Gitea, пароль и нажмите кнопку Установить Gitea. После завершения установки вы должны увидеть панель управления Gitea на следующем экране:

Панель управления Gitea

Заключение

Поздравляем! Вы успешно установили Gitea с Nginx и SSL Let’s Encrypt на сервере Ubuntu 22.04. Теперь вы можете развернуть Gitea в вашей организации и начать создание вашего первого репозитория с Gitea. Для получения дополнительной информации посетите документацию Gitea.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.