Гид по технологиям

Установка Gitea на Debian 11

• 6 min read • DevOps • Обновлено 20 Nov 2025
Установка Gitea на Debian 11
Установка Gitea на Debian 11

Gitea логотип и интерфейс управления репозиториями

Введение

Gitea — бесплатный, открытый и самохостящийся Git‑сервер, написанный на Go. Он похож по функционалу на GitHub, но ориентирован на лёгкость и простоту развертывания. Gitea поддерживает issues, трекинг времени, ветвление репозиториев, блокировку файлов, теги, слияния и многое другое. Это отличный выбор для локальной инфраструктуры и команд, которые хотят полный контроль над данными.

Кого это руководство обслуживает

  • Администраторы Linux/DevOps, разворачивающие внутренний Git‑сервис.
  • Разработчики, которым нужна приватная инфраструктура для репозиториев.

Требования

  • Сервер с Debian 11.
  • Доступ root или пользователь с sudo.
  • Домен (опционально, но рекомендуется) для веб‑доступа через Nginx.

Быстрая картинка архитектуры

  • Gitea (порт 3000) — systemd служба, запускает веб‑сервер.
  • MariaDB/MySQL — база данных для хранения метаданных.
  • Nginx — обратный прокси, TLS и виртуальные хосты.

Подготовка MariaDB

Gitea использует MariaDB/MySQL или PostgreSQL. Ниже пример для MariaDB.

Установите MariaDB:

apt-get install mariadb-server -y

Запустите скрипт безопасной настройки:

mysql_secure_installation

Ответьте на вопросы, например:

Enter current password for root (enter for none): 
OK, successfully used password, moving on...
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Подключитесь как root и создайте базу и пользователя Gitea:

mysql -u root -p

Внутри интерфейса MariaDB выполните:

MariaDB [(none)]> CREATE DATABASE gitea;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;

Замените ‘password’ на надёжный пароль. Альтернатива: используйте отдельного пользователя с меньшими привилегиями и настройкой хостов при необходимости.

Установка Gitea

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

adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /opt/git git

Ожидаемый вывод:

Adding system user `git' (UID 109) ...
Adding new group `git' (GID 115) ...
Adding new user `git' (UID 109) with group `git' ...
Creating home directory `/opt/git' ...

Скачайте последний релиз Gitea (amd64 Linux):

curl -s https://api.github.com/repos/go-gitea/gitea/releases/latest |grep browser_download_url | cut -d '"' -f 4 | grep '\linux-amd64$' | wget -i -

Переместите бинарник и сделайте его исполняемым:

mv gitea-*-linux-amd64 /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea

Проверьте версию:

gitea --version

Пример вывода:

Gitea version 1.15.3 built with GNU Make 4.1, go1.16.8 : bindata, sqlite, sqlite_unlock_notify

Создайте структуру директорий и выставьте владельцев:

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

Создание systemd unit для Gitea

Создайте файл службы:

nano /etc/systemd/system/gitea.service

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

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysql.service

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
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=/opt/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

Перезагрузите systemd и включите службу:

systemctl daemon-reload
systemctl start gitea
systemctl enable gitea
systemctl status gitea

Если всё прошло успешно, Gitea запущен и слушает порт 3000.

Проверьте сокеты:

ss -antpl | grep 3000

Пример вывода:

LISTEN 0      4096               *:3000             *:*    users:(("gitea",pid=19179,fd=6))

Настройка Nginx как обратного прокси

Установите Nginx:

apt-get install nginx -y

Создайте конфигурацию виртуального хоста:

nano /etc/nginx/conf.d/gitea.conf

Добавьте конфиг (замените server_name на ваш домен):

server {
    listen 80;
    server_name gitea.example.com;
    access_log /var/log/nginx/gitea_access.log;
    error_log /var/log/nginx/gitea_error.log;

    location / {
        proxy_pass http://localhost:3000;
    }
}

Проверьте конфигурацию и перезапустите Nginx:

nginx -t
systemctl restart nginx
systemctl status nginx

Отредактируйте файл /etc/gitea/app.ini и укажите домен:

nano /etc/gitea/app.ini

Измените значения:

DOMAIN           = gitea.example.com
ROOT_URL         = http://gitea.example.com/

Перезапустите Gitea:

systemctl restart gitea

Доступ к веб‑интерфейсу и завершение установки

Откройте https://gitea.example.com или http://gitea.example.com (в зависимости от настройки TLS). На странице установки заполните данные базы, URL, администратора и нажмите Install Gitea.

Страница ввода данных базы данных Gitea

Настройки Gitea в веб-интерфейсе

Форма установки: имя пользователя и пароль администратора

После установки вы увидите дэшборд Gitea:

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

Мини‑методология развертывания

  1. Подготовка ОС: обновление и базовые пакеты. 2. Установка СУБД и создание схемы. 3. Создание пользователя и директорий. 4. Установка бинарника Gitea и systemd unit. 5. Настройка обратного прокси и TLS. 6. Завершение через веб‑мастер.

Безопасность и жёсткая настройка

  • Включите TLS через Let’s Encrypt (certbot) и редирект с HTTP на HTTPS.
  • Откройте доступ по локальному интерфейсу только для Gitea (firewall/ufw).
  • Резервное копирование каталога /var/lib/gitea и базы данных.
  • Отключите анонимный доступ к БД и ограничьте привилегии пользователя gitea.
  • Настройте двухфакторную аутентификацию для админов.

Альтернативные подходы и их плюсы/минусы

  • Docker Compose
    • Плюсы: изоляция, лёгкая миграция, быстрый откат образа.
    • Минусы: дополнительные уровни абстракции, настройка персистентного хранилища.
  • PostgreSQL вместо MariaDB
    • Плюсы: часто предпочтительнее в больших установках и облачной среде.
    • Минусы: требует администрирования, но совместимость хорошая.
  • Пакеты дистрибутива (если доступны)
    • Плюсы: простая установка и обновления через apt.
    • Минусы: версии могут отставать от upstream.

Когда этот подход может не подойти

  • Если вам нужен SaaS‑уровень отказоустойчивости и глобальная репликация — лучше коммерческие решения или облачные сервисы.
  • Для микросервисной архитектуры на Kubernetes предпочтительнее Helm‑чарты и StatefulSets.

Чеклист для ролей

Администратор инфраструктуры:

  • Настроить DNS для домена.
  • Установить и настроить Nginx и TLS.
  • Настроить резервное копирование и мониторинг.

DevOps инженер:

  • Подготовить systemd unit и автоматические обновления.
  • Обеспечить SELinux/AppArmor политики (если применимо).
  • Настроить логирование и ротацию логов.

Администратор Gitea:

  • Создать организации и команды.
  • Настроить политики доступа и 2FA.
  • Настроить Webhooks и CI интеграции.

Критерии приёмки

  • Служба Gitea запущена и активна: systemctl status gitea -> active (running).
  • Порт 3000 слушается локально и доступен через Nginx на порту 80/443.
  • Веб‑страница установки отображается и завершает установку без ошибок.
  • Резервное копирование данных и БД настроено и протестировано.

Тесты и приёмные критерии

  • Проверить создание репозитория, push и pull.
  • Создать issue, назначить участника, закрыть issue.
  • Выполнить backup/restore из сохранённого архива.

Быстрый справочник команд (cheat sheet)

  • Перезапуск Gitea: systemctl restart gitea
  • Логи Gitea: journalctl -u gitea -f
  • Состояние Nginx: systemctl status nginx
  • Проверка порта: ss -antpl | grep 3000

Ментальные модели и эвристики

  • Разделяйте слои: сервисы приложения (Gitea), данные (БД), сеть (Nginx) и храните их отдельно.
  • Минимизируйте права: принцип наименьших привилегий для БД и ОС пользователя.
  • Автоматизируйте бэкапы и тестируйте восстановление регулярно.

Диагностика распространённых проблем

  • Gitea не запускается: проверьте права на /var/lib/gitea и /etc/gitea, журналы systemd.
  • 502 Bad Gateway в Nginx: убедитесь, что Gitea слушает на localhost:3000 и Nginx проксирует корректно.
  • Ошибки подключения к БД: проверьте credentials в app.ini и доступ с локальной машины.

Миграция и совместимость

  • Для миграции с другого Git‑сервера экспортируйте репозитории и импортируйте их в Gitea через UI или API.
  • При переключении БД из SQLite на MariaDB/PostgreSQL выполняйте миграцию данных согласно документации Gitea.

Резюме

Gitea даёт простой способ развернуть приватный Git‑сервис на Debian 11. Основные шаги: установить СУБД, создать системного пользователя, скачать бинарник, настроить systemd и Nginx, затем завершить установку через веб‑интерфейс. Дополнительно следуйте чеклистам по безопасности и бэкапам.

Важно: проверяйте журналы и тестируйте бэкапы до перехода в продуктивную эксплуатацию.

Полезные ссылки и дальнейшие шаги

  • Официальный сайт Gitea: https://gitea.io
  • Документация по бэкапам и миграциям: в разделе docs на официальном сайте

Важно: перед развёртыванием в продакшн проверьте TLS, резервное копирование и политику доступа.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро