Установка 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 nginxsystemctl 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, имя пользователя, пароль, путь к репозиторию, имя пользователя для запуска, порт прослушивания, базовый URL Gitea, путь к журналу, имя администратора Gitea, пароль и нажмите кнопку Установить Gitea. После завершения установки вы должны увидеть панель управления Gitea на следующем экране:

Заключение
Поздравляем! Вы успешно установили Gitea с Nginx и SSL Let’s Encrypt на сервере Ubuntu 22.04. Теперь вы можете развернуть Gitea в вашей организации и начать создание вашего первого репозитория с Gitea. Для получения дополнительной информации посетите документацию Gitea.
Get new posts in your inbox
No spam. Unsubscribe anytime.