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

Введение
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:

Мини‑методология развертывания
- Подготовка ОС: обновление и базовые пакеты. 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, резервное копирование и политику доступа.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента