Gitea — это легковесный, самоуправляемый сервис для хостинга Git-репозиториев, написанный на Go. Он является отличной альтернативой GitHub, GitLab или Bitbucket для тех, кто хочет сохранить полный контроль над своими данными и инфраструктурой. В этой статье мы рассмотрим два способа развертывания Gitea: с помощью Docker (через docker-compose) и локально на Ubuntu 24.04.
Запуск Gitea в Docker
Docker — это платформа для контейнеризации приложений, которая позволяет изолировать сервисы и упрощает их развертывание. Docker Compose, в свою очередь, помогает управлять многоконтейнерными приложениями, описывая их в одном YAML-файле. Ниже представлен пример docker-compose.yml для запуска Gitea вместе с PostgreSQL.
version: "3.9"
services:
postgresql:
image: postgres:14.5-alpine
ports:
- '5432:5432'
environment:
# init DB
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=PASSWORD
volumes:
- /opt/postgresql-data:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
- /etc/hosts:/etc/hosts:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 20s
timeout: 10s
retries: 5
# swarm
deploy:
placement:
constraints:
- "node.labels.hostname == srv-prod-db-01"
gitea:
image: gitea/gitea:1.17.3
restart: always
environment:
- USER_UID=1000
- USER_GID=1000
volumes:
- /mnt/gluster-storage/interlan/gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- '18080:3000'
- '2224:22'
# swarm
deploy:
placement:
constraints:
- "node.labels.status == worker"
Пояснения:
— PostgreSQL используется в качестве базы данных для хранения метаданных Gitea.
— Том /opt/postgresql-data хранит данные PostgreSQL на хосте, чтобы они не терялись при перезапуске контейнера.
— Healthcheck проверяет готовность базы данных с помощью команды pg_isready.
— Gitea монтирует каталог /mnt/gluster-storage/interlan/gitea для хранения репозиториев и конфигурации.
— Порты: 18080 перенаправляется на внутренний порт Gitea 3000 (веб-интерфейс), а 2224 — на порт 22 (SSH для Git).
Настройка после запуска Docker
После запуска контейнеров необходимо создать базу данных и пользователя в PostgreSQL. Это можно сделать через командную строку внутри контейнера или с помощью клиента, подключившись к хостовому порту 5432. Пример команд:
docker exec -it <postgres_container_id> psql -U postgres
CREATE DATABASE gitea;
CREATE USER gitea WITH PASSWORD 'your_strong_password';
GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
Затем откройте браузер и перейдите по адресу http://your-server-ip:18080. Вы увидите мастер конфигурирования Gitea. Введите данные базы данных (хост — postgresql, порт — 5432, имя БД — gitea, пользователь — gitea, пароль — your_strong_password). Остальные настройки можно оставить по умолчанию.
Установка Gitea локально в Ubuntu 24.04
Если вы предпочитаете не использовать Docker, можно установить Gitea напрямую на сервер. Этот способ даёт больше контроля над окружением и может быть предпочтительнее в некоторых сценариях.
Создание каталога и загрузка бинарного файла
Создайте каталог в /opt, где будет размещён сервис, скачайте последнюю версию Gitea и сделайте её исполняемой:
# mkdir /opt/gitea
# cd /opt/gitea/
# wget -O gitea https://dl.gitea.io/gitea/1.27.0/gitea-1.27.0-linux-amd64
# chmod +x ./gitea
Создание пользователя и тестовый запуск
Gitea рекомендуется запускать от отдельного непривилегированного пользователя. Создадим пользователя git и выполним пробный запуск:
# adduser --system --shell /bin/bash --gecos 'Gitea' --group --disabled-password --home /opt/gitea/ git
# chown -R git:git /opt/gitea/
# su git
$ ./gitea
Теперь можно подключиться браузером (в моём случае http://185.135.80.10:3000). Вы увидите мастер настройки, аналогичный Docker-версии.
Базовая настройка через веб-интерфейс
- Создайте базу данных и пользователя в PostgreSQL (аналогично Docker-разделу).
- В веб-мастере укажите параметры подключения к базе данных (хост — localhost, порт — 5432).
- Остальные настройки (тип базы данных, путь к репозиториям) можно оставить по умолчанию.
Настройка для запуска в реальном окружении
Для production-среды необходимо выполнить несколько дополнительных шагов:
- Создайте домен, на котором будет доступен Gitea (например, git.example.com).
- Получите SSL-сертификат от Let’s Encrypt с помощью Certbot.
- Настройте обратный прокси (reverse proxy) на домен, чтобы перенаправлять HTTPS-трафик на локальный порт Gitea (например, 18001 или 3000).
- Измените конфигурационный файл Gitea (/opt/gitea/custom/conf/app.ini), указав домен, протокол и другие параметры.
Пример получения сертификата при помощи Certbot и плагина для Nginx
# certbot certonly --nginx -d git.shiskitech.ru
Пример настройки Nginx в качестве обратного прокси
server {
listen 80;
server_name git.shiskitech.ru;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name git.shiskitech.ru;
ssl_certificate /etc/letsencrypt/live/git.shiskitech.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.shiskitech.ru/privkey.pem;
location / {
proxy_pass http://127.0.0.1:18001;
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;
}
}
Обратите внимание, что это минимальный вариант и он требует доработки под ваши задачи. После настройки Nginx перезапустите его:
# systemctl restart nginx
Systemd unit для запуска Gitea
Чтобы Gitea автоматически запускалась при старте системы и перезапускалась в случае сбоя, создадим systemd-юнит.
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
[Service]
LimitNOFILE=524288:524288
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/opt/gitea
ExecStart=/opt/gitea/gitea web
Restart=always
Environment=USER=git HOME=/opt/gitea/ GITEA_WORK_DIR=/opt/gitea/
[Install]
WantedBy=multi-user.target
Пояснения:
— LimitNOFILE увеличивает лимит открытых файлов, что важно для Git-сервера с большим количеством репозиториев.
— Restart=always гарантирует автоматический перезапуск при падении процесса.
— WorkingDirectory и Environment задают рабочую директорию и переменные окружения.
Сохраните файл как /etc/systemd/system/gitea.service, затем выполните:
# systemctl daemon-reload
# systemctl enable gitea
# systemctl start gitea
Проверьте статус:
# systemctl status gitea
Заключение
Мы рассмотрели два способа установки Gitea — через Docker и локально на Ubuntu 24.04. Оба подхода имеют свои преимущества: Docker упрощает развертывание и обновление, а локальная установка даёт больше гибкости. В любом случае, после настройки базы данных, обратного прокси и SSL вы получите полноценный self-hosted Git-сервис, готовый к использованию в команде или личных проектах.




