Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Развёртывание для команды до 50 человек
deployment

Развёртывание для команды до 50 человек

Быстрый старт: установка через Docker, настройка PostgreSQL, базовая конфигурация, первое использование.

Развёртывание для команды до 50 человек

Быстрый старт: установка через Docker, настройка PostgreSQL, базовая конфигурация и первое использование

#Мотивация

Вам нужно быстро развернуть надёжную Git-платформу для команды. Никаких сложных кластеров, Kubernetes и микросервисов — только работающее решение, которое можно настроить за 1–2 часа.

Эта тема — практическое руководство по развёртыванию Gitea для команды до 50 человек на одном сервере.

#Архитектура решения

┌────────────────────────────────────────────────────────────┐
│                      Ваш сервер (VM)                       │
│  ┌──────────────────────────────────────────────────────┐  │
│  │                  Docker Compose                       │  │
│  │  ┌─────────────┐         ┌─────────────────────────┐ │  │
│  │  │    Gitea    │ ──────→ │      PostgreSQL 15      │ │  │
│  │  │   :latest   │  :5432  │   gitea_db (database)   │ │  │
│  │  │   :3000     │         │   :5432 (internal)      │ │  │
│  │  └─────────────┘         └─────────────────────────┘ │  │
│  │         ↓                                              │  │
│  │  ┌──────────────────────────────────────────────────┐ │  │
│  │  │              Хранилище данных (volumes)           │ │  │
│  │  │  /opt/gitea/data    → репозитории, конфиги       │ │  │
│  │  │  /opt/gitea/postgres → данные PostgreSQL         │ │  │
│  │  └──────────────────────────────────────────────────┘ │  │
│  └────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────┘
        ↑                    ↑
   :3000 (web)          :2222 (git ssh)

#Требования к серверу

ПараметрМинимумРекомендуется
CPU2 ядра4 ядра
RAM2 GB4 GB
Disk20 GB50+ GB SSD
ОСUbuntu 22.04, Debian 11+, CentOS 8+Ubuntu 22.04 LTS
ДоступSSH, sudoSSH + firewall

#Шаг 1: Подготовка сервера

#1.1. Обновление системы

sudo apt update && sudo apt upgrade -y

#1.2. Установка Docker и Docker Compose

# Установка Docker curl -fsSL https://get.docker.com | sudo sh # Добавление пользователя в группу docker sudo usermod -aG docker $USER # Установка Docker Compose (если не входит в состав Docker) sudo apt install -y docker-compose-plugin # Проверка docker --version docker compose version

#1.3. Создание директорий

sudo mkdir -p /opt/gitea/{data,postgres} sudo chown -R 1000:1000 /opt/gitea/data sudo chown -R 999:999 /opt/gitea/postgres

Важно: UID 1000 — пользователь gitea в контейнере, UID 999 — пользователь postgres.

#Шаг 2: Создание docker-compose.yml

Создайте файл /opt/gitea/docker-compose.yml:

version: '3.8' services: gitea: image: gitea/gitea:latest container_name: gitea restart: unless-stopped ports: - "3000:3000" # Web-интерфейс - "2222:22" # Git SSH volumes: - ./data:/data environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=postgres - GITEA__database__HOST=db:5432 - GITEA__database__NAME=gitea - GITEA__database__USER=gitea - GITEA__database__PASSWD=gitea_secure_password_2026 - GITEA__service__DISABLE_REGISTRATION=false - GITEA__service__REQUIRE_SIGNIN_VIEW=false - GITEA__repository__DEFAULT_BRANCH=main - GITEA__server__DOMAIN=git.yourcompany.ru - GITEA__server__HTTP_PORT=3000 - GITEA__server__SSH_PORT=2222 - GITEA__server__SSH_DOMAIN=git.yourcompany.ru - GITEA__security__INSTALL_LOCK=true depends_on: db: condition: service_healthy networks: - gitea-net db: image: postgres:15-alpine container_name: gitea-db restart: unless-stopped volumes: - ./postgres:/var/lib/postgresql/data environment: - POSTGRES_USER=gitea - POSTGRES_PASSWORD=gitea_secure_password_2026 - POSTGRES_DB=gitea healthcheck: test: ["CMD-SHELL", "pg_isready -U gitea -d gitea"] interval: 10s timeout: 5s retries: 5 networks: - gitea-net networks: gitea-net: driver: bridge

#Разбор ключевых параметров

ПеременнаяЗначениеОписание
GITEA__database__DB_TYPEpostgresТип БД (postgres, mysql, sqlite)
GITEA__database__HOSTdb:5432Хост и порт БД внутри Docker-сети
GITEA__service__DISABLE_REGISTRATIONfalseРазрешить регистрацию (false = открытая регистрация)
GITEA__service__REQUIRE_SIGNIN_VIEWfalseТребовать вход для просмотра (false = публичные репозитории видны)
GITEA__server__DOMAINgit.yourcompany.ruДомен для доступа к Gitea
GITEA__security__INSTALL_LOCKtrueЗаблокировать повторную установку (защита от сброса)

Важно: Замените gitea_secure_password_2026 на сложный пароль и git.yourcompany.ru на ваш домен.

#Шаг 3: Запуск Gitea

cd /opt/gitea docker compose up -d

Проверка статуса:

docker compose ps

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

NAME          STATUS         PORTS
gitea         Up (healthy)   0.0.0.0:3000->3000/tcp, 0.0.0.0:2222->22/tcp
gitea-db      Up (healthy)   5432/tcp

Просмотр логов:

docker compose logs -f gitea

#Шаг 4: Первоначальная настройка через веб-интерфейс

#4.1. Вход в Gitea

Откройте браузер: http://your-server-ip:3000

Первый пользователь автоматически становится администратором.

#4.2. Создание учётной записи администратора

ПолеЗначение
Usernameadmin (или ваше имя)
Emailadmin@yourcompany.ru
PasswordСложный пароль (12+ символов)

#4.3. Проверка настроек базы данных

На странице установки проверьте:

  • Тип БД: PostgreSQL
  • Хост: db:5432
  • Имя БД: gitea
  • Пользователь: gitea
  • Пароль: (ваш пароль)

Если вы задали переменные окружения правильно, эти поля уже заполнены.

#4.4. Настройки сервера

ПараметрЗначение
URL-адрес Giteahttp://git.yourcompany.ru
Домен Giteagit.yourcompany.ru
Порт HTTP3000
Порт SSH2222
Путь к корню репозитория/data/git/repositories
Пользователь LFSgit

#4.5. Настройки учётной записи

ПараметрЗначение
Имя организацииВаша компания
Доменное имяgit.yourcompany.ru

Нажмите Установить.

#Шаг 5: Настройка NGINX как обратного прокси (опционально)

Для production рекомендуется использовать HTTPS.

#5.1. Установка NGINX

sudo apt install -y nginx

#5.2. Создание конфигурации

/etc/nginx/sites-available/gitea:

server { listen 80; server_name git.yourcompany.ru; # Для HTTPS раскомментируйте после получения сертификата # listen 443 ssl http2; # ssl_certificate /etc/letsencrypt/live/git.yourcompany.ru/fullchain.pem; # ssl_certificate_key /etc/letsencrypt/live/git.yourcompany.ru/privkey.pem; client_max_body_size 100M; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; } }

#5.3. Включение сайта и перезапуск

sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/gitea sudo nginx -t sudo systemctl restart nginx

#5.4. Получение HTTPS сертификата (Let's Encrypt)

sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d git.yourcompany.ru

#Шаг 6: Первая работа с Gitea

#6.1. Создание первого репозитория

  1. Войдите под администратором
  2. Нажмите + → Новый репозиторий
  3. Укажите имя: my-first-repo
  4. Выберите видимость: Приватный или Публичный
  5. Нажмите Создать

#6.2. Клонирование репозитория

# По HTTPS git clone http://git.yourcompany.ru/admin/my-first-repo.git # По SSH (порт 2222) git clone ssh://git@git.yourcompany.ru:2222/admin/my-first-repo.git

#6.3. Настройка SSH-ключа

  1. Профиль → Настройки → Ключи SSH
  2. Добавить ключ
  3. Вставьте содержимое ~/.ssh/id_ed25519.pub
# Генерация ключа (если нет) ssh-keygen -t ed25519 -C "your@email.ru" cat ~/.ssh/id_ed25519.pub

#Шаг 7: Резервное копирование

#7.1. Скрипт бэкапа

/opt/gitea/backup.sh:

#!/bin/bash set -e BACKUP_DIR="/opt/gitea/backups" DATE=$(date +%Y%m%d_%H%M%S) mkdir -p "$BACKUP_DIR" # Бэкап через gitea dump docker exec gitea gitea dump -F "$BACKUP_DIR/gitea-$DATE.zip" # Бэкап PostgreSQL docker exec gitea-db pg_dump -U gitea gitea > "$BACKUP_DIR/postgres-$DATE.sql" # Удаление бэкапов старше 30 дней find "$BACKUP_DIR" -name "*.zip" -mtime +30 -delete find "$BACKUP_DIR" -name "*.sql" -mtime +30 -delete echo "Backup completed: $DATE"
chmod +x /opt/gitea/backup.sh

#7.2. Настройка cron (ежедневный бэкап в 2:00)

sudo crontab -e

Добавьте строку:

0 2 * * * /opt/gitea/backup.sh >> /var/log/gitea-backup.log 2>&1

#Шаг 8: Мониторинг состояния

#8.1. Проверка здоровья

# Статус контейнеров docker compose ps # Использование ресурсов docker stats gitea gitea-db # Логи docker compose logs --tail=100

#8.2. Эндпоинты здоровья

  • http://git.yourcompany.ru/api/health — общий статус
  • http://git.yourcompany.ru/api/v1/version — версия Gitea

#Типовые проблемы и решения

#Проблема 1: Gitea не запускается, ошибка БД

Симптомы: В логах connection refused к PostgreSQL.

Решение:

# Проверка статуса БД docker compose ps db # Если БД не healthy, подождите ещё 30 секунд docker compose logs db # Перезапуск docker compose restart db gitea

#Проблема 2: SSH не работает, permission denied

Симптомы: git@host: Permission denied (publickey).

Решение:

  1. Проверьте, что SSH-ключ добавлен в профиль
  2. Убедитесь, что порт SSH указан в команде клонирования: ssh://git@host:2222/...
  3. Проверьте firewall: sudo ufw allow 2222/tcp

#Проблема 3: 502 Bad Gateway через NGINX

Симптомы: NGINX отдаёт 502, Gitea не отвечает.

Решение:

# Проверка, что Gitea запущена docker compose ps gitea # Проверка логов docker compose logs gitea # Перезапуск docker compose restart gitea

#Проблема 4: Закончилось место на диске

Симптомы: Ошибки записи, репозитории не обновляются.

Решение:

# Проверка места df -h # Очистка старых бэкапов rm /opt/gitea/backups/gitea-*.zip.old # Очистка Docker логов sudo truncate -s 0 /var/lib/docker/containers/*/*-json.log

#Чеклист завершения развёртывания

  • Docker и Docker Compose установлены
  • docker-compose.yml создан с правильными паролями
  • Gitea запущена (docker compose ps показывает healthy)
  • Веб-интерфейс доступен по http://server-ip:3000
  • Создан аккаунт администратора
  • Настроен домен и HTTPS (опционально)
  • SSH-ключи добавлены
  • Скрипт бэкапа настроен в cron
  • Первый репозиторий создан и клонирован

#Что дальше?

Теперь у вас есть работающая Gitea. Следующие шаги:

  1. Настройка LDAP/SSO — интеграция с корпоративной аутентификацией
  2. Мониторинг — Prometheus + Grafana для отслеживания метрик
  3. CI/CD — Gitea Actions для автоматизации сборки и тестирования
  4. Безопасность — политики доступа, аудит, 152-ФЗ

Следующий шаг: Полная автономия: работа в закрытом контуре

Далее: Полная автономия: работа в закрытом контуре