From 1753d0871a34ca6c45833ff390f3cedd5786d74e Mon Sep 17 00:00:00 2001 From: "S.Gromov" Date: Thu, 23 Oct 2025 22:33:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA?= =?UTF-8?q?=D0=B0=20PostgreSQL=20=D0=B8=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B5=20=D0=B1?= =?UTF-8?q?=D1=8D=D0=BA=D0=B0=D0=BF=D1=8B=20=D0=B2=20S3=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20Gitea?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлены переменные окружения для PostgreSQL в env.example. - Обновлен README.md с описанием новых возможностей: автоматические бэкапы и интеграция PostgreSQL. --- .gitignore | 1 + README.md | 218 +++++++++++++++++--------------------------- docker-compose.yaml | 69 ++++++++++---- env.example | 17 ++++ 4 files changed, 156 insertions(+), 149 deletions(-) diff --git a/.gitignore b/.gitignore index f95e4d2..3c2bd42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ data/* .env backups/ +postgres-data/ diff --git a/README.md b/README.md index 8be46c1..835066d 100644 --- a/README.md +++ b/README.md @@ -1,155 +1,107 @@ -# Инструкция по развертыванию и настройке Gitea +# Gitea Server -**Данная инструкция предназначена для запуска Git сервера на локальной машине с URL 127.0.0.1.** +Docker-окружение для развертывания Gitea с PostgreSQL, интеграцией S3 и автоматическими бэкапами. -Это дает возможность протестировать: +## Возможности - ✅ Git сервер -- ✅ Ранеры (Gitea Actions) -- ✅ Отправку писем (SMTP) -- ✅ Интеграцию с S3 +- ✅ Интеграция с S3 (LFS, пакеты, аватары, вложения) +- ✅ Автоматические бэкапы в S3 +- ✅ Отправка писем (SMTP) +- ✅ Gitea Actions ([ранеры в отдельном репозитории](https://github.com/gromov-io/gitea-runner)) -**⚠️ Ограничения локального режима:** -В локальном режиме **не доступен Container Registry**, так как для его работы требуется `https`. +**⚠️ Ограничение:** Container Registry требует `https`, не работает в локальном режиме. ## Оглавление -1. [Настройка и запуск GIT сервера](#настройка-и-запуск-git-сервера) - - [Шаг 1: Конфигурация](#шаг-1-конфигурация) - - [Шаг 2: Запуск сервера](#шаг-2-запуск-сервера) - - [Шаг 3: Настройка темы GitHub (по желанию)](#шаг-3-настройка-темы-github-по-желанию) -2. [Настройка и запуск ранеров](#настройка-и-запуск-ранеров) -3. [Возможные проблемы и их решение](#возможные-проблемы-и-их-решение) - - [1. Изменения в конфигурации сервера не применяются](#1-изменения-в-конфигурации-сервера-не-применяются) - - [2. Проблемы с ранерами после изменения конфигурации](#2-проблемы-с-ранерами-после-изменения-конфигурации) +1. [Быстрый старт](#быстрый-старт) +2. [Автоматические бэкапы в S3](#автоматические-бэкапы-в-s3) +3. [Настройка ранеров](#настройка-ранеров) +4. [Устранение проблем](#устранение-проблем) --- -## Настройка и запуск GIT сервера +## Быстрый старт -В этом разделе описано, как поднять сервер Gitea **локально на своем ПК**. Инструкции по настройке производственной среды (прода) находятся в разделе [Настройка прод сервера](#настройка-прод-сервера). +### 1. Конфигурация +```bash +cp env.example .env +``` -### Шаг 1: Конфигурация -1. Перейдите в директорию `server`: - ```bash - cd server - ``` -2. Скопируйте файл `env.example` в `.env` в корневой директории проекта: - ```bash - cp env.example .env - ``` +Отредактируйте `.env`, укажите пароли и S3 креденшелы (опционально). -### Шаг 2: Запуск сервера - -1. Убедитесь, что у вас установлен Docker и Docker Compose. -2. Выполните следующую команду для запуска Gitea в фоновом режиме: - ```bash - docker-compose up -d - ``` -3. Сервер будет доступен по адресу [http://127.0.0.1:8080](http://127.0.0.1:8080) (по умолчанию) или по адресу, указанному в переменной `GITEA__server__INSTANCE` в файле `.env`. -4. При первом входе вы увидите страницу **Начальная конфигурация**. Базовую настройку лучше не трогать. Вам нужно только указать: - - **Название сайта:** Имя вашего Gitea-сервиса. - - **Настройки учётной записи администратора:** Создайте логин и пароль для главного администратора. - - По желанию можно изучить **Расширенные настройки**, чтобы включить капчу, отключить публичную регистрацию и т.д. -5. **Поздравляем!** На этом этапе вы уже можете работать с вашим GIT сервером: создавать репозитории, клонировать и пушить. - -### Шаг 3: Настройка темы GitHub (по желанию) - -Для выполнения этих шагов, вы должны находиться в директории `server/`. - -1. **Остановите сервер Gitea.** - ```bash - docker-compose down - ``` - -2. **Найдите последнюю версию темы.** - Перейдите на страницу релизов [gitea-github-theme](https://github.com/lutinglt/gitea-github-theme/releases) и скопируйте номер последней версии (например, `v1.24.5`). - -3. **Создайте директорию, скачайте тему и установите права.** - Выполните следующие команды, подставив актуальную версию вместо `v1.24.5`. - ```bash - # Создаем директорию для кастомных тем - mkdir -p data/gitea/custom/public/assets/css/ - - # Скачиваем архив и распаковываем его содержимое (пропуская папку 'dist') - curl -L https://github.com/lutinglt/gitea-github-theme/releases/download/v1.24.5/theme-github.tar.gz | tar -xz --strip-components=1 -C data/gitea/custom/public/assets/css/ - - # Меняем владельца директории, чтобы у Gitea был доступ - chown -R 1000:1000 data/gitea/custom - ``` - -4. **Измените тему по умолчанию.** - Откройте файл `.env` и измените значение переменной `GITEA__ui__DEFAULT_THEME`: - ``` - GITEA__ui__DEFAULT_THEME=github-auto - ``` - -5. **Запустите сервер.** - Перезапустите Gitea, чтобы применить изменения. - ```bash - docker-compose up -d --force-recreate - ``` - -6. **Проверьте установку.** - После запуска сервера перейдите в "Настройки профиля" => "Внешний вид" и убедитесь, что тема по умолчанию установлена как `github-auto`. В списке доступных тем также должны появиться `github-light`, `github-dark` и `github-soft-dark`. - ---- - -## Настройка и запуск ранеров - -1. Перейдите в админ-панель Gitea по адресу [http://127.0.0.1:8080/-/admin/actions/runners/](http://127.0.0.1:8080/-/admin/actions/runners/) и нажмите **"Создать новый раннер"**. -2. Скопируйте полученный токен. -3. Откройте файл `runners/docker-compose.yaml` и вставьте токен в переменную `GITEA_RUNNER_REGISTRATION_TOKEN`. - ```yaml - environment: - - GITEA_RUNNER_REGISTRATION_TOKEN=СЮДА_ВСТАВИТЬ_ВАШ_ТОКЕН - ``` -4. Перейдите в директорию `runners` и запустите раннер: - ```bash - cd runners - docker-compose up -d - ``` -5. Перейдите на вкладку [http://127.0.0.1:8080/-/admin/actions/runners/](http://127.0.0.1:8080/-/admin/actions/runners/) и убедитесь что появился новый раннер, индикатор "Статус" - горит зеленым. - ---- - -## Возможные проблемы и их решение - -### 1. Изменения в конфигурации сервера не применяются - -Если вы изменили значения в файле `.env`, необходимо перезапустить сервер с ключом `--force-recreate` для принудительного пересоздания контейнера: +### 2. Запуск ```bash -cd server +docker-compose up -d +``` + +Сервер доступен по адресу [http://127.0.0.1:8080](http://127.0.0.1:8080). + +### 3. Первичная настройка + +При первом входе укажите: +- Название сайта +- Логин и пароль администратора +- Опционально: капча, регистрация, другие настройки + +--- + +## Автоматические бэкапы в S3 + +Используется решение **[docker-s3-backup](https://github.com/gromov-io/docker-s3-backup)** — элегантный способ бэкапа всего проекта (база данных + файлы). + +### Настройка + +1. В `.env` укажите S3 креденшелы: +```bash +S3_ENDPOINT=storage.yandexcloud.net +S3_ACCESS_KEY=ваш_ключ +S3_SECRET_KEY=ваш_секрет +S3_BUCKET=ваш_бакет +``` + +2. Сервис `backup` автоматически: + - Останавливает Gitea и PostgreSQL перед бэкапом + - Создает архив всего проекта (база данных + файлы) + - Загружает в S3 (папка `gitea-backups/`) + - Запускает сервисы обратно + +3. Расписание настраивается в `docker-compose.yaml` (по умолчанию ежедневно в 05:00). + +### Восстановление + +Просто скачайте архив из S3 и разархивируйте — всё готово к запуску. + +--- + +## Настройка ранеров + +Gitea Actions ранеры находятся в отдельном репозитории: **[gromov-io/gitea-runner](https://github.com/gromov-io/gitea-runner)** + +### Быстрая настройка: + +1. Перейдите в админ-панель: [http://127.0.0.1:8080/-/admin/actions/runners/](http://127.0.0.1:8080/-/admin/actions/runners/) +2. Нажмите **"Создать новый раннер"** и скопируйте токен +3. Следуйте инструкциям в репозитории gitea-runner + +--- + +## Устранение проблем + +### Изменения в .env не применяются + +Пересоздайте контейнеры: +```bash docker-compose down docker-compose up -d --force-recreate ``` -### 2. Проблемы с ранерами после изменения конфигурации +### Сброс настроек -Если вы изменили настройки ранера или возникли проблемы с его работой, самый эффективный способ решения: - -1. **Остановите ранер:** - ```bash - cd runners - docker-compose down - ``` - -2. **Удалите директорию с данными ранера:** - ```bash - sudo rm -rf gitea-runner-1 - ``` - -3. **Создайте новый токен регистрации:** - - Перейдите в админ-панель [http://127.0.0.1:8080/-/admin/actions/runners/](http://127.0.0.1:8080/-/admin/actions/runners/) - - Нажмите **"Создать новый раннер"** - - Скопируйте новый токен - -4. **Обновите токен в конфигурации:** - Откройте файл `runners/docker-compose.yaml` и замените значение `GITEA_RUNNER_REGISTRATION_TOKEN` на новый токен. - -5. **Запустите ранер с принудительным пересозданием:** - ```bash - docker-compose up -d --force-recreate - ``` +Для полного сброса удалите данные: +```bash +docker-compose down +sudo rm -rf data/ postgres-data/ +``` --- diff --git a/docker-compose.yaml b/docker-compose.yaml index 1233091..b78d446 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,11 +1,64 @@ services: + + backup: + image: ghcr.io/gromov-io/docker-s3-backup:latest + container_name: gitea-backup + restart: unless-stopped + depends_on: + postgres: + condition: service_healthy + gitea: + condition: service_started + environment: + - BACKUP_PROJECT_NAME=gitea-server + - BACKUP_S3_BUCKET=${S3_BUCKET} + - BACKUP_S3_ENDPOINT=${S3_ENDPOINT} + - BACKUP_S3_ACCESS_KEY=${S3_ACCESS_KEY} + - BACKUP_S3_SECRET_KEY=${S3_SECRET_KEY} + - BACKUP_S3_FOLDER=gitea-backups + # Останавливаем сервисы перед началом бекапа. + - BACKUP_STOP_SERVICES=gitea postgres + volumes: + - .:/backup-source:ro + - /var/run/docker.sock:/var/run/docker.sock:ro + networks: + - gitea_network + + postgres: + image: postgres:16-alpine + container_name: gitea-postgres + restart: unless-stopped + environment: + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} + volumes: + - ./postgres-data:/var/lib/postgresql/data + networks: + - gitea_network + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 5 + gitea: image: gitea/gitea:latest container_name: gitea restart: unless-stopped + depends_on: + postgres: + condition: service_healthy environment: - USER_UID=1000 - USER_GID=1000 + - GITEA__database__DB_TYPE=postgres + - GITEA__database__HOST=postgres:5432 + - GITEA__database__NAME=${POSTGRES_DB} + - GITEA__database__USER=${POSTGRES_USER} + - GITEA__database__PASSWD=${POSTGRES_PASSWORD} + - GITEA__database__SCHEMA=public + - GITEA__database__SSL_MODE=disable - GITEA__server__APP_DATA_PATH=/data/gitea - GITEA__server__DOMAIN - GITEA__server__HTTP_PORT=80 @@ -115,22 +168,6 @@ services: - ${GITEA__server__DOCKER_SSH_PORT}:22 - ${GITEA__server__PORT}:80 - backup: - image: ghcr.io/gromov-io/docker-s3-backup:latest - container_name: gitea-backup - restart: unless-stopped - environment: - - BACKUP_PROJECT_NAME=gitea-server - - BACKUP_S3_BUCKET=${S3_BUCKET} - - BACKUP_S3_ENDPOINT=${S3_ENDPOINT} - - BACKUP_S3_ACCESS_KEY=${S3_ACCESS_KEY} - - BACKUP_S3_SECRET_KEY=${S3_SECRET_KEY} - - BACKUP_S3_FOLDER=gitea-backups - volumes: - - .:/backup-source:ro - - /var/run/docker.sock:/var/run/docker.sock:ro - - networks: gitea_network: name: gitea_network diff --git a/env.example b/env.example index 2d7df6f..73f85b8 100644 --- a/env.example +++ b/env.example @@ -1,3 +1,20 @@ +# =========================================== +# Конфигурация базы данных PostgreSQL +# +# Этот блок содержит настройки для подключения к базе данных PostgreSQL. +# =========================================== + +# Имя пользователя PostgreSQL +POSTGRES_USER=gitea + +# Пароль пользователя PostgreSQL +POSTGRES_PASSWORD=gitea_secure_password + +# Название базы данных +POSTGRES_DB=gitea + + + # =========================================== # Конфигурация сервера #