Установка gitea
Go to file
2026-06-25 13:01:28 +03:00
lib first commit 2026-06-25 13:01:28 +03:00
systemd first commit 2026-06-25 13:01:28 +03:00
.env.example first commit 2026-06-25 13:01:28 +03:00
.gitattributes first commit 2026-06-25 13:01:28 +03:00
.gitignore first commit 2026-06-25 13:01:28 +03:00
deploy.ps1 first commit 2026-06-25 13:01:28 +03:00
deploy.sh first commit 2026-06-25 13:01:28 +03:00
docker-compose.yml first commit 2026-06-25 13:01:28 +03:00
install-service.ps1 first commit 2026-06-25 13:01:28 +03:00
install-service.sh first commit 2026-06-25 13:01:28 +03:00
README.md first commit 2026-06-25 13:01:28 +03:00
reinstall.ps1 first commit 2026-06-25 13:01:28 +03:00
reinstall.sh first commit 2026-06-25 13:01:28 +03:00
remove-service.ps1 first commit 2026-06-25 13:01:28 +03:00
remove-service.sh first commit 2026-06-25 13:01:28 +03:00
start.ps1 first commit 2026-06-25 13:01:28 +03:00
start.sh first commit 2026-06-25 13:01:28 +03:00
stop.ps1 first commit 2026-06-25 13:01:28 +03:00
stop.sh first commit 2026-06-25 13:01:28 +03:00
uninstall.ps1 first commit 2026-06-25 13:01:28 +03:00
uninstall.sh first commit 2026-06-25 13:01:28 +03:00

Развёртывание Gitea

Docker Compose-стек для запуска Gitea с PostgreSQL. Включает скрипты управления для Linux и Windows.

Состав

Компонент Образ Назначение
Gitea gitea/gitea Git-сервер, веб-интерфейс, SSH
PostgreSQL postgres:16-alpine База данных

Данные хранятся в Docker-томах gitea_gitea_data и gitea_postgres_data и сохраняются при перезапуске контейнеров.

Требования

  • Docker с плагином Compose v2 (docker compose)
  • Windows: Docker Desktop
  • Linux: Docker Engine + docker-compose-plugin
  • Свободные порты (по умолчанию 3000 — HTTP, 2222 — SSH)

Быстрый старт

Linux

git clone <url-репозитория> gitea
cd gitea

chmod +x deploy.sh
./deploy.sh install

Скрипт задаст вопросы по настройке (домен, порты, пароль БД и др.). Enter — принять значение по умолчанию в скобках. Для пароля PostgreSQL Enter — автогенерация.

Без интерактивного режима (CI, автоматизация):

./deploy.sh install -y

Windows (PowerShell)

cd D:\shared\Проекты\gitea

.\deploy.ps1 install

Без интерактивного режима:

.\deploy.ps1 install -NonInteractive

После запуска откройте в браузере:

  • Web UI: http://localhost:3000 (или ваш GITEA_DOMAIN:GITEA_HTTP_PORT)
  • Git SSH: ssh://git@localhost:2222

Первоначальная настройка

При первом входе в веб-интерфейс Gitea откроется мастер установки:

  1. Убедитесь, что тип БД — PostgreSQL (уже настроено через переменные окружения).
  2. Создайте учётную запись администратора.
  3. Задайте название сайта и прочие параметры по необходимости.

База данных и подключение к ней уже сконфигурированы в docker-compose.yml. На шаге настройки БД можно оставить значения по умолчанию или проверить, что они совпадают с .env.

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

При ./deploy.sh install или .\deploy.ps1 install создаётся файл .env на основе ваших ответов. Можно также создать его вручную из .env.example.

Интерактивно запрашиваются:

Переменная По умолчанию Описание
GITEA_DOMAIN localhost Домен или IP сервера (без http://)
GITEA_HTTP_PORT 3000 Порт веб-интерфейса
GITEA_SSH_PORT 2222 Внешний порт SSH для Git
GITEA_VERSION 1.22.6 Версия образа Gitea
POSTGRES_USER gitea Пользователь PostgreSQL
POSTGRES_PASSWORD автогенерация Пароль PostgreSQL (скрытый ввод)
POSTGRES_DB gitea Имя базы данных
TZ Europe/Moscow Часовой пояс

Если .env уже существует, скрипт спросит, пересоздать ли конфигурацию.

Пример для продакшена:

GITEA_DOMAIN=git.example.com
GITEA_HTTP_PORT=3000
GITEA_SSH_PORT=2222
POSTGRES_PASSWORD=your_strong_secret_password
TZ=Europe/Moscow

Управление

Помимо универсального deploy.sh / deploy.ps1 доступны отдельные скрипты:

Скрипт (Linux) Скрипт (Windows) Описание
start.sh start.ps1 Запуск контейнеров
stop.sh stop.ps1 Остановка контейнеров
install-service.sh install-service.ps1 Автозапуск при загрузке системы
remove-service.sh remove-service.ps1 Удаление из автозагрузки
uninstall.sh uninstall.ps1 Удаление контейнеров
reinstall.sh reinstall.ps1 Переустановка (обновление образов)

Linux

chmod +x *.sh

./start.sh
./stop.sh

sudo ./install-service.sh      # systemd: автозапуск
sudo ./remove-service.sh       # удалить из systemd

./uninstall.sh                 # удалить контейнеры (данные сохраняются)
./uninstall.sh --purge         # удалить контейнеры и данные

./reinstall.sh                 # пересоздать контейнеры, данные сохраняются
./reinstall.sh --purge         # чистая переустановка

После install-service.sh управление через systemd:

sudo systemctl start gitea
sudo systemctl stop gitea
sudo systemctl status gitea
sudo systemctl enable gitea
sudo systemctl disable gitea

Windows

.\start.ps1
.\stop.ps1

# Запуск от администратора:
.\install-service.ps1          # задача в планировщике (автозапуск)
.\remove-service.ps1           # удалить задачу

.\uninstall.ps1                # удалить контейнеры (данные сохраняются)
.\uninstall.ps1 -Purge         # удалить контейнеры и данные

.\reinstall.ps1                # пересоздать контейнеры
.\reinstall.ps1 -Purge         # чистая переустановка

Универсальный deploy (все команды)

Linux

./deploy.sh install     # Первичное развёртывание
./deploy.sh start       # Запуск
./deploy.sh stop        # Остановка
./deploy.sh restart     # Перезапуск
./deploy.sh update      # Обновление образов
./deploy.sh status      # Статус контейнеров
./deploy.sh logs        # Логи Gitea (follow)
./deploy.sh backup      # Резервная копия
./deploy.sh restore backups/gitea-backup-20260101-120000.tar.gz
./deploy.sh uninstall   # Удаление контейнеров (данные сохраняются)

Windows

.\deploy.ps1 install
.\deploy.ps1 start
.\deploy.ps1 stop
.\deploy.ps1 restart
.\deploy.ps1 update
.\deploy.ps1 status
.\deploy.ps1 logs
.\deploy.ps1 backup
.\deploy.ps1 restore -BackupFile backups\gitea-backup-20260101-120000.tar.gz
.\deploy.ps1 uninstall

Резервное копирование и восстановление

Создание бэкапа

./deploy.sh backup
# или
.\deploy.ps1 backup

Архив сохраняется в каталог backups/ с именем gitea-backup-YYYYMMDD-HHMMSS.tar.gz. В архив входят Docker-тома с данными Gitea и PostgreSQL.

Восстановление

./deploy.sh restore backups/gitea-backup-20260101-120000.tar.gz
.\deploy.ps1 restore -BackupFile backups\gitea-backup-20260101-120000.tar.gz

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

Обновление Gitea

  1. При необходимости измените GITEA_VERSION в .env.
  2. Выполните обновление:
./deploy.sh update

Скрипт загрузит новые образы и перезапустит контейнеры. Данные в томах сохраняются.

Структура проекта

.
├── docker-compose.yml     # Описание сервисов
├── .env.example           # Шаблон переменных окружения
├── deploy.sh / deploy.ps1 # Универсальный скрипт управления
├── start.sh / start.ps1   # Запуск
├── stop.sh / stop.ps1     # Остановка
├── install-service.sh / install-service.ps1   # Автозапуск
├── remove-service.sh / remove-service.ps1     # Удаление автозапуска
├── uninstall.sh / uninstall.ps1               # Удаление
├── reinstall.sh / reinstall.ps1               # Переустановка
├── lib/                   # Общие функции
├── systemd/               # Шаблон unit-файла для Linux
├── backups/               # Резервные копии (создаётся автоматически)
└── README.md

Продакшен

HTTPS

Для продакшена рекомендуется разместить Gitea за reverse proxy (Nginx, Caddy, Traefik) с TLS-сертификатом. После настройки прокси обновите в .env:

GITEA_DOMAIN=git.example.com
GITEA_HTTP_PORT=3000

И задайте корректный ROOT_URL — при необходимости добавьте в docker-compose.yml:

GITEA__server__ROOT_URL: https://git.example.com/

Firewall

Откройте только нужные порты:

  • GITEA_HTTP_PORT — веб-интерфейс (или только через reverse proxy на 443)
  • GITEA_SSH_PORT — Git по SSH

Полное удаление данных

Контейнеры удаляются командой uninstall, но тома остаются. Для полной очистки:

docker compose down
docker volume rm gitea_gitea_data gitea_postgres_data

Устранение неполадок

Контейнер Gitea не стартует

docker compose logs gitea
docker compose logs db

Убедитесь, что POSTGRES_PASSWORD задан в .env и PostgreSQL прошёл healthcheck.

Порт занят

Измените GITEA_HTTP_PORT или GITEA_SSH_PORT в .env и перезапустите:

./deploy.sh restart

SSH clone не работает

Проверьте, что порт GITEA_SSH_PORT проброшен и доступен с клиента:

ssh -p 2222 git@your-server

В Gitea SSH-домен должен совпадать с GITEA_DOMAIN из .env.

Сброс пароля администратора

docker compose exec gitea gitea admin user list
docker compose exec gitea gitea admin user change-password --username admin --password newpassword

Лицензия

Gitea распространяется под лицензией MIT. Данный репозиторий содержит только конфигурацию развёртывания.