Руководство по установке и настройке Gitea: от Docker до локальной инсталляции на Ubuntu 24.04

Оцените статью

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-среды необходимо выполнить несколько дополнительных шагов:

  1. Создайте домен, на котором будет доступен Gitea (например, git.example.com).
  2. Получите SSL-сертификат от Let’s Encrypt с помощью Certbot.
  3. Настройте обратный прокси (reverse proxy) на домен, чтобы перенаправлять HTTPS-трафик на локальный порт Gitea (например, 18001 или 3000).
  4. Измените конфигурационный файл 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-сервис, готовый к использованию в команде или личных проектах.

Похожие записи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Руководство по установке и настройке Gitea: от Docker до локальной инсталляции на Ubuntu 24.04

Руководство по установке и настройке Gitea: от Docker до локальной инсталляции на Ubuntu 24.04

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Немного о настройке UFW в Ubuntu: от основ до продвинутых правил

Немного о настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04