chore: Оптимизация переменных
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
data/*
|
||||
.env
|
||||
.gitea.env
|
||||
backups/
|
||||
postgres-data/
|
||||
|
||||
35
README.md
35
README.md
@@ -23,21 +23,37 @@ Docker-окружение для развертывания Gitea с PostgreSQL,
|
||||
## Быстрый старт
|
||||
|
||||
### 1. Конфигурация
|
||||
|
||||
```bash
|
||||
# Копируем пример и настраиваем
|
||||
cp env.example .env
|
||||
nano .env # Укажите пароли, S3 креденшелы, домен
|
||||
```
|
||||
|
||||
Отредактируйте `.env`, укажите пароли и S3 креденшелы (опционально).
|
||||
### 2. Генерация конфигурации Gitea
|
||||
|
||||
### 2. Запуск
|
||||
⚠️ **Важно:** Генерируем `.gitea.env` ПОСЛЕ настройки `.env`:
|
||||
|
||||
```bash
|
||||
docker-compose up generate-config
|
||||
```
|
||||
|
||||
Это создаст `.gitea.env` с подстановкой ваших значений из `.env`.
|
||||
|
||||
### 3. Запуск
|
||||
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
При каждом запуске **автоматически**:
|
||||
1. 🔧 Обновляется `.gitea.env` из `.env`
|
||||
2. 🔄 Применяется новая конфигурация
|
||||
3. 🚀 Запускаются все сервисы
|
||||
|
||||
Сервер доступен по адресу [http://127.0.0.1:8080](http://127.0.0.1:8080).
|
||||
|
||||
### 3. Первичная настройка
|
||||
### 4. Первичная настройка
|
||||
|
||||
При первом входе укажите:
|
||||
- Название сайта
|
||||
@@ -50,23 +66,14 @@ docker-compose up -d
|
||||
|
||||
Используется решение **[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` автоматически:
|
||||
Сервис `backup` автоматически:
|
||||
- Останавливает Gitea и PostgreSQL перед бэкапом
|
||||
- Создает архив всего проекта (база данных + файлы)
|
||||
- Загружает в S3 (папка `gitea-backups/`)
|
||||
- Запускает сервисы обратно
|
||||
|
||||
3. Расписание настраивается в `docker-compose.yaml` (по умолчанию ежедневно в 05:00).
|
||||
Расписание настраивается в `docker-compose.yaml` (по умолчанию ежедневно в 05:00).
|
||||
|
||||
### Восстановление
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
services:
|
||||
|
||||
# ============================================================
|
||||
# Бэкапы
|
||||
# ============================================================
|
||||
backup:
|
||||
image: ghcr.io/gromov-io/docker-s3-backup:latest
|
||||
container_name: gitea-backup
|
||||
@@ -23,7 +26,10 @@ services:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
networks:
|
||||
- gitea_network
|
||||
|
||||
|
||||
# ============================================================
|
||||
# База данных
|
||||
# ============================================================
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
container_name: gitea-postgres
|
||||
@@ -42,6 +48,9 @@ services:
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
# ============================================================
|
||||
# Git Сервер
|
||||
# ============================================================
|
||||
gitea:
|
||||
image: gitea/gitea:latest
|
||||
container_name: gitea
|
||||
@@ -52,6 +61,9 @@ services:
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
# Название сайта (корневая секция - пустое имя секции = 4 подчеркивания)
|
||||
- GITEA____APP_NAME=${SITE_NAME:-GromLab}
|
||||
# Database Connection (PostgreSQL)
|
||||
- GITEA__database__DB_TYPE=postgres
|
||||
- GITEA__database__HOST=postgres:5432
|
||||
- GITEA__database__NAME=${POSTGRES_DB}
|
||||
@@ -59,35 +71,51 @@ services:
|
||||
- GITEA__database__PASSWD=${POSTGRES_PASSWORD}
|
||||
- GITEA__database__SCHEMA=public
|
||||
- GITEA__database__SSL_MODE=disable
|
||||
# Server Configuration
|
||||
- GITEA__server__APP_DATA_PATH=/data/gitea
|
||||
- GITEA__server__DOMAIN
|
||||
- GITEA__server__DOMAIN=${HOST}
|
||||
- GITEA__server__HTTP_PORT=80
|
||||
- GITEA__server__ROOT_URL=${GITEA__server__INSTANCE}/
|
||||
- GITEA__server__LANDING_PAGE
|
||||
- GITEA__server__SSH_PORT
|
||||
- GITEA__server__SSH_DOMAIN=${GITEA__server__DOMAIN}
|
||||
- GITEA__server__MINIMUM_KEY_SIZE_CHECK=false
|
||||
- GITEA__server__ROOT_URL=${INSTANCE}/
|
||||
- GITEA__server__LANDING_PAGE=explore
|
||||
- GITEA__server__SSH_PORT=${SSH_PORT}
|
||||
- GITEA__server__SSH_DOMAIN=${HOST}
|
||||
- GITEA__server__MINIMUM_KEY_SIZE_CHECK=false
|
||||
- GITEA__server__LFS_START_SERVER=true
|
||||
- GITEA__server__LFS_JWT_SECRET
|
||||
- GITEA__server__LFS_JWT_SECRET=${LFS_JWT_SECRET}
|
||||
- GITEA__server__LFS_HTTP_AUTH_EXPIRY=6h
|
||||
- GITEA__server__OFFLINE_MODE=false
|
||||
- GITEA__server__ENABLE_GZIP=true
|
||||
- GITEA__storage__STORAGE_TYPE
|
||||
- GITEA__ui__THEMES
|
||||
- GITEA__ui__DEFAULT_THEME
|
||||
- GITEA__service__DISABLE_REGISTRATION
|
||||
- GITEA__service__REGISTER_EMAIL_CONFIRM
|
||||
- GITEA__openid__ENABLE_OPENID_SIGNIN
|
||||
- GITEA__openid__ENABLE_OPENID_SIGNUP
|
||||
- GITEA__mailer__ENABLED
|
||||
- GITEA__mailer__FROM
|
||||
- GITEA__mailer__SMTP_ADDR
|
||||
- GITEA__mailer__SMTP_PORT
|
||||
- GITEA__mailer__USER
|
||||
- GITEA__mailer__PASSWD
|
||||
- GITEA__packages__ENABLED
|
||||
- GITEA__container__ENABLED
|
||||
# Storage Type
|
||||
- GITEA__storage__STORAGE_TYPE=${STORAGE_TYPE}
|
||||
# UI Configuration
|
||||
- GITEA__ui__DEFAULT_THEME=gitea-auto
|
||||
- GITEA__ui__THEMES=gitea-auto,gitea-light,gitea-dark
|
||||
# Service Configuration
|
||||
- GITEA__service__DISABLE_REGISTRATION=false
|
||||
- GITEA__service__REGISTER_EMAIL_CONFIRM=true
|
||||
- GITEA__service__ENABLE_CAPTCHA=true
|
||||
- GITEA__service__DEFAULT_KEEP_EMAIL_PRIVATE=true
|
||||
- GITEA__service__ENABLE_NOTIFY_MAIL=true
|
||||
# OpenID Configuration
|
||||
- GITEA__openid__ENABLE_OPENID_SIGNIN=false
|
||||
- GITEA__openid__ENABLE_OPENID_SIGNUP=false
|
||||
# Mailer Configuration
|
||||
- GITEA__mailer__ENABLED=true
|
||||
- GITEA__mailer__FROM=${MAIL_USER}
|
||||
- GITEA__mailer__SMTP_ADDR=${MAIL_SMTP_ADDR}
|
||||
- GITEA__mailer__SMTP_PORT=${MAIL_SMTP_PORT}
|
||||
- GITEA__mailer__USER=${MAIL_USER}
|
||||
- GITEA__mailer__PASSWD=${MAIL_PASSWD}
|
||||
- GITEA__mailer__PROTOCOL=${MAIL_SMTP_PROTOCOL}
|
||||
- GITEA__mailer__IS_TLS_ENABLED=true
|
||||
- GITEA__mailer__SKIP_VERIFY=false
|
||||
- GITEA__mailer__HELO_HOSTNAME=${MAIL_HELO_HOSTNAME}
|
||||
# Packages & Container Configuration
|
||||
- GITEA__packages__ENABLED=true
|
||||
- GITEA__container__ENABLED=true
|
||||
# Custom Path
|
||||
- GITEA_CUSTOM=/data/gitea/custom
|
||||
# S3 Storage Configuration
|
||||
# General Storage Configuration
|
||||
- GITEA__storage__SERVE_DIRECT=true
|
||||
- GITEA__storage__MINIO_ENDPOINT=${S3_ENDPOINT}
|
||||
- GITEA__storage__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
|
||||
@@ -95,8 +123,8 @@ services:
|
||||
- GITEA__storage__MINIO_BUCKET=${S3_BUCKET}
|
||||
- GITEA__storage__MINIO_LOCATION=${S3_LOCATION}
|
||||
- GITEA__storage__MINIO_USE_SSL=${S3_USE_SSL}
|
||||
# Git LFS S3 Configuration
|
||||
- GITEA__lfs__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
|
||||
# Git LFS Configuration
|
||||
- GITEA__lfs__STORAGE_TYPE=${STORAGE_TYPE}
|
||||
- GITEA__lfs__SERVE_DIRECT=true
|
||||
- GITEA__lfs__MINIO_ENDPOINT=${S3_ENDPOINT}
|
||||
- GITEA__lfs__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
|
||||
@@ -105,17 +133,17 @@ services:
|
||||
- GITEA__lfs__MINIO_LOCATION=${S3_LOCATION}
|
||||
- GITEA__lfs__MINIO_USE_SSL=${S3_USE_SSL}
|
||||
- GITEA__lfs__PATH=lfs/
|
||||
# Actions S3 Configuration
|
||||
# Actions Configuration
|
||||
- GITEA__actions__ENABLED=true
|
||||
- GITEA__actions__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
|
||||
- GITEA__actions__STORAGE_TYPE=${STORAGE_TYPE}
|
||||
- GITEA__actions__MINIO_ENDPOINT=${S3_ENDPOINT}
|
||||
- GITEA__actions__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
|
||||
- GITEA__actions__MINIO_SECRET_ACCESS_KEY=${S3_SECRET_KEY}
|
||||
- GITEA__actions__MINIO_BUCKET=${S3_BUCKET}
|
||||
- GITEA__actions__MINIO_LOCATION=${S3_LOCATION}
|
||||
- GITEA__actions__MINIO_USE_SSL=${S3_USE_SSL}
|
||||
# Packages S3 Configuration
|
||||
- GITEA__packages__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
|
||||
# Packages Configuration
|
||||
- GITEA__packages__STORAGE_TYPE=${STORAGE_TYPE}
|
||||
- GITEA__packages__SERVE_DIRECT=true
|
||||
- GITEA__packages__MINIO_ENDPOINT=${S3_ENDPOINT}
|
||||
- GITEA__packages__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
|
||||
@@ -124,8 +152,8 @@ services:
|
||||
- GITEA__packages__MINIO_LOCATION=${S3_LOCATION}
|
||||
- GITEA__packages__MINIO_USE_SSL=${S3_USE_SSL}
|
||||
- GITEA__packages__PATH=packages/
|
||||
# Avatar S3 Configuration
|
||||
- GITEA__avatar__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
|
||||
# Avatar Configuration
|
||||
- GITEA__avatar__STORAGE_TYPE=${STORAGE_TYPE}
|
||||
- GITEA__avatar__SERVE_DIRECT=true
|
||||
- GITEA__avatar__MINIO_ENDPOINT=${S3_ENDPOINT}
|
||||
- GITEA__avatar__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
|
||||
@@ -134,8 +162,8 @@ services:
|
||||
- GITEA__avatar__MINIO_LOCATION=${S3_LOCATION}
|
||||
- GITEA__avatar__MINIO_USE_SSL=${S3_USE_SSL}
|
||||
- GITEA__avatar__PATH=avatars/
|
||||
# Attachments S3 Configuration
|
||||
- GITEA__attachment__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
|
||||
# Attachments Configuration
|
||||
- GITEA__attachment__STORAGE_TYPE=${STORAGE_TYPE}
|
||||
- GITEA__attachment__SERVE_DIRECT=true
|
||||
- GITEA__attachment__MINIO_ENDPOINT=${S3_ENDPOINT}
|
||||
- GITEA__attachment__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
|
||||
@@ -144,8 +172,8 @@ services:
|
||||
- GITEA__attachment__MINIO_LOCATION=${S3_LOCATION}
|
||||
- GITEA__attachment__MINIO_USE_SSL=${S3_USE_SSL}
|
||||
- GITEA__attachment__PATH=attachments/
|
||||
# Repository Archive S3 Configuration
|
||||
- GITEA__repo-archive__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
|
||||
# Repository Archive Configuration
|
||||
- GITEA__repo-archive__STORAGE_TYPE=${STORAGE_TYPE}
|
||||
- GITEA__repo-archive__SERVE_DIRECT=true
|
||||
- GITEA__repo-archive__MINIO_ENDPOINT=${S3_ENDPOINT}
|
||||
- GITEA__repo-archive__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
|
||||
@@ -154,7 +182,7 @@ services:
|
||||
- GITEA__repo-archive__MINIO_LOCATION=${S3_LOCATION}
|
||||
- GITEA__repo-archive__MINIO_USE_SSL=${S3_USE_SSL}
|
||||
- GITEA__repo-archive__PATH=repo-archive/
|
||||
# Cache S3 Configuration
|
||||
# Cache Configuration
|
||||
- GITEA__cache__ENABLED=true
|
||||
volumes:
|
||||
- ./data:/data
|
||||
@@ -165,8 +193,8 @@ services:
|
||||
networks:
|
||||
- gitea_network
|
||||
ports:
|
||||
- ${GITEA__server__DOCKER_SSH_PORT}:22
|
||||
- ${GITEA__server__PORT}:80
|
||||
- ${DOCKER_SSH_PORT}:22
|
||||
- ${DOCKER_HTTP_PORT}:80
|
||||
|
||||
networks:
|
||||
gitea_network:
|
||||
|
||||
137
env.example
137
env.example
@@ -1,144 +1,55 @@
|
||||
# ===========================================
|
||||
# Конфигурация базы данных PostgreSQL
|
||||
#
|
||||
# Этот блок содержит настройки для подключения к базе данных PostgreSQL.
|
||||
# ===========================================
|
||||
|
||||
# Имя пользователя PostgreSQL
|
||||
POSTGRES_USER=gitea
|
||||
|
||||
# Пароль пользователя PostgreSQL
|
||||
POSTGRES_PASSWORD=gitea_secure_password
|
||||
|
||||
# Название базы данных
|
||||
POSTGRES_DB=gitea
|
||||
|
||||
|
||||
|
||||
# ===========================================
|
||||
# Конфигурация сервера
|
||||
#
|
||||
# Этот блок содержит настройки, связанные с основной функциональностью сервера Gitea,
|
||||
# включая домен, URL экземпляра, порты и настройки LFS.
|
||||
# ===========================================
|
||||
|
||||
# Основной URL-адрес экземпляра Gitea.
|
||||
GITEA__server__INSTANCE=http://127.0.0.1
|
||||
# URL-адрес экземпляра Gitea. (для прода пишем полный домен, пример: https://gromlab.ru)
|
||||
INSTANCE=http://127.0.0.1
|
||||
|
||||
# Порты HTTP и SSH на которых будет запущен докер.
|
||||
GITEA__server__PORT=8080
|
||||
GITEA__server__DOCKER_SSH_PORT=222
|
||||
# Порты приложения.
|
||||
DOCKER_HTTP_PORT=8080
|
||||
DOCKER_SSH_PORT=222
|
||||
|
||||
# Вид SSH url, пример: ssh://git@127.0.0.1:222/gromov/test.git
|
||||
HOST=127.0.0.1
|
||||
SSH_PORT=222
|
||||
|
||||
# Домен и порт которые будут отображаться при клонировании/скачивании репозитория.
|
||||
GITEA__server__DOMAIN=127.0.0.1
|
||||
GITEA__server__SSH_PORT=222
|
||||
# Не особо важные опции
|
||||
SITE_NAME=GromLab
|
||||
STORAGE_TYPE=minio
|
||||
|
||||
# Секретный ключ для JWT-аутентификации для Large File Storage (LFS).
|
||||
GITEA__server__LFS_JWT_SECRET=lfs-secret-string
|
||||
|
||||
# Время жизни JWT токенов для LFS операций (6 часов для больших файлов).
|
||||
GITEA__server__LFS_HTTP_AUTH_EXPIRY=6h
|
||||
|
||||
# Переопределяем стартову страницу, вместо промо ставим редирект на страницу авторизации.
|
||||
GITEA__server__LANDING_PAGE=explore
|
||||
# ОБЯЗАТЕЛЬНО изменить на другую рандомную строку.
|
||||
LFS_JWT_SECRET=qGuZz8ZktbppUPjRyhvbdqB7eCNJ2d
|
||||
|
||||
|
||||
|
||||
# ===========================================
|
||||
# Конфигурация пользовательского интерфейса (UI)
|
||||
#
|
||||
# Этот блок содержит настройки для пользовательского интерфейса Gitea, такие как
|
||||
# тема по умолчанию и доступные темы.
|
||||
# Конфигурация базы данных PostgreSQL
|
||||
# ===========================================
|
||||
|
||||
# Тема по умолчанию для интерфейса Gitea.
|
||||
GITEA__ui__DEFAULT_THEME=gitea-auto
|
||||
# Список доступных тем через запятую.
|
||||
GITEA__ui__THEMES=gitea-auto,gitea-light,gitea-dark,github-auto,github-light,github-dark,github-soft-dark
|
||||
|
||||
|
||||
|
||||
|
||||
# ===========================================
|
||||
# Конфигурация служб и аутентификации
|
||||
#
|
||||
# Этот блок содержит настройки для регистрации пользователей, OpenID и других
|
||||
# функций на уровне сервиса.
|
||||
# ===========================================
|
||||
|
||||
# Отключить регистрацию пользователей. Установите 'true', чтобы запретить регистрацию новых пользователей.
|
||||
GITEA__service__DISABLE_REGISTRATION=false
|
||||
# Включить OpenID для входа пользователей.
|
||||
GITEA__openid__ENABLE_OPENID_SIGNIN=false
|
||||
# Включить OpenID для регистрации пользователей.
|
||||
GITEA__openid__ENABLE_OPENID_SIGNUP=false
|
||||
# Включить подтверждение регистрации.
|
||||
GITEA__service__REGISTER_EMAIL_CONFIRM=true
|
||||
|
||||
|
||||
|
||||
# ===========================================
|
||||
# Конфигурация хранилища
|
||||
#
|
||||
# Этот блок определяет бэкенд для хранения данных Gitea. Это может быть локальное
|
||||
# хранилище или облачное решение, такое как S3 (например, Minio).
|
||||
# ===========================================
|
||||
|
||||
# Тип используемого хранилища. 'local' для локальной файловой системы, 'minio' для S3-совместимого хранилища.
|
||||
GITEA__storage__STORAGE_TYPE=minio
|
||||
|
||||
POSTGRES_USER=gitea
|
||||
POSTGRES_PASSWORD=gitea_secure_password
|
||||
POSTGRES_DB=gitea
|
||||
|
||||
|
||||
# ===========================================
|
||||
# Конфигурация S3 хранилища
|
||||
#
|
||||
# Общие настройки для всех типов S3 хранилища в Gitea.
|
||||
# Детальная конфигурация каждого типа хранилища находится в docker-compose.yaml
|
||||
#
|
||||
# Для включения S3 хранилища измените GITEA__storage__STORAGE_TYPE=minio
|
||||
# ===========================================
|
||||
|
||||
# Эндпоинт S3 сервиса (Yandex Object Storage)
|
||||
S3_ENDPOINT=storage.yandexcloud.net
|
||||
|
||||
# Ключи доступа к S3
|
||||
S3_ACCESS_KEY=
|
||||
S3_SECRET_KEY=
|
||||
# Название бакета для хранения всех данных Gitea
|
||||
S3_BUCKET=
|
||||
# Регион Yandex Cloud
|
||||
S3_BUCKET=dev.gromlab.gitea
|
||||
S3_LOCATION=ru-central1
|
||||
# Использование SSL для подключения к S3
|
||||
S3_USE_SSL=true
|
||||
|
||||
|
||||
|
||||
|
||||
# ===========================================
|
||||
# Конфигурация почтового сервера (SMTP)
|
||||
#
|
||||
# Этот блок содержит настройки для отправки электронных писем из Gitea, таких как
|
||||
# уведомления и сброс пароля.
|
||||
# ===========================================
|
||||
|
||||
# Включить почтовую службу.
|
||||
GITEA__mailer__ENABLED=true
|
||||
# Адрес электронной почты, с которого будут отправляться письма.
|
||||
GITEA__mailer__FROM=no-reply@gromlab.ru
|
||||
# Адрес SMTP-сервера.
|
||||
GITEA__mailer__SMTP_ADDR=smtp.mail.ru
|
||||
# Порт SMTP-сервера.
|
||||
GITEA__mailer__SMTP_PORT=465
|
||||
# Имя пользователя для аутентификации на SMTP-сервере.
|
||||
GITEA__mailer__USER=no-reply@gromlab.ru
|
||||
# Пароль для аутентификации на SMTP-сервере.
|
||||
GITEA__mailer__PASSWD=
|
||||
# Протокол для SMTP (для Mail.ru нужен SSL).
|
||||
GITEA__mailer__PROTOCOL=smtps
|
||||
# Включить TLS для безопасного соединения.
|
||||
GITEA__mailer__IS_TLS_ENABLED=true
|
||||
# Пропустить проверку TLS сертификата (если нужно).
|
||||
GITEA__mailer__SKIP_VERIFY=false
|
||||
# Имя хоста для HELO команды.
|
||||
GITEA__mailer__HELO_HOSTNAME=gromlab.ru
|
||||
MAIL_SMTP_PROTOCOL=smtps
|
||||
MAIL_SMTP_ADDR=smtp.mail.ru
|
||||
MAIL_SMTP_PORT=465
|
||||
MAIL_USER=no-reply@gromlab.ru
|
||||
MAIL_PASSWD=
|
||||
MAIL_HELO_HOSTNAME=gromlab.ru
|
||||
Reference in New Issue
Block a user