commit b3a34f0e8f4380f48ff46d87c526f9a9e546097b Author: zro Date: Mon Jun 8 10:57:27 2026 +0300 init diff --git a/.env.template b/.env.template new file mode 100644 index 0000000..4971af4 --- /dev/null +++ b/.env.template @@ -0,0 +1,24 @@ +POSTGRES_PASSWORD="PostgresPasswordForGitea" + +MINIO_ACCESS_KEY_ID="gitea-access-key" +MINIO_SECRET_ACCESS_KEY="GiteaSecretKey1!" + +# Minio +GITEA__attachment__STORAGE_TYPE="minio" +GITEA__attachment__MINIO_ENDPOINT="minio:9000" +GITEA__attachment__MINIO_ACCESS_KEY_ID="gitea-access-key" +GITEA__attachment__MINIO_SECRET_ACCESS_KEY="GiteaSecretKey1!" +GITEA__attachment__MINIO_BUCKET="gitea-attachments" +GITEA__attachment__MINIO_BASE_PATH="attachments/" +GITEA__attachment__MINIO_USE_SSL="false" +GITEA__attachment__MINIO_INSECURE_SKIP_VERIFY="true" + +# Для LFS (если нужно) --- +GITEA__lfs__STORAGE_TYPE="minio" +GITEA__lfs__MINIO_ENDPOINT="minio:9000" +GITEA__lfs__MINIO_ACCESS_KEY_ID=${MINIO_ACCESS_KEY_ID} +GITEA__lfs__MINIO_SECRET_ACCESS_KEY=${MINIO_SECRET_ACCESS_KEY} +GITEA__lfs__MINIO_BUCKET="gitea-lfs" +GITEA__lfs__MINIO_BASE_PATH="lfs/" +GITEA__lfs__MINIO_USE_SSL="false" +GITEA__lfs__MINIO_INSECURE_SKIP_VERIFY="true" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..805ae17 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# Secrets +.env +*.pem +*.key + +# Dependencies +node_modules/ +vendor/ + +# Build outputs +dist/ +build/ +*.exe + +# IDE +.vscode/ +.idea/ +*.swp + +# OS +.DS_Store +Thumbs.db + +# Logs +*.log diff --git a/README.md b/README.md new file mode 100644 index 0000000..e3fa29d --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Gitea \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6f6a5d6 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,111 @@ +services: + gitea: + image: gitea/gitea:latest + container_name: gitea + restart: unless-stopped + environment: + - USER_UID=1000 + - USER_GID=1000 + + # Подключаемся к существующему PostgreSQL + - GITEA__database__DB_TYPE=postgres + - GITEA__database__HOST=postgres:5432 # Имя контейнера PostgreSQL + - GITEA__database__NAME=gitea # Будет создана автоматически + - GITEA__database__USER=labuser + - GITEA__database__PASSWD=${POSTGRES_PASSWORD} # Из .env файла (ВАЖНО!) + - GITEA__database__SCHEMA=public + # Настройки сервера +# - GITEA__server__DOMAIN=192.168.1.200 +# - GITEA__server__ROOT_URL=http://192.168.1.200:3000 +# - GITEA__server__SSH_DOMAIN=192.168.1.200 +# - GITEA__server__SSH_PORT=22 + - GITEA__server__HTTP_ADDR=0.0.0.0 + - GITEA__server__HTTP_PORT=3000 + + # Redis + # 1. Для хранения сессий пользователей + - GITEA__session__PROVIDER=redis + - GITEA__session__PROVIDER_CONFIG=redis://redis:6379/0?pool_size=100&idle_timeout=180s + + # 2. Для кэширования (ускоряет работу интерфейса) + - GITEA__cache__ENABLED=true + - GITEA__cache__ADAPTER=redis + - GITEA__cache__HOST=redis://redis:6379/1?pool_size=100&idle_timeout=180s + + # 3. Для очередей задач (асинхронные операции) + - GITEA__queue__TYPE=redis + - GITEA__queue__CONN_STR=redis://redis:6379/2?pool_size=100&idle_timeout=180s + + # Minio + - GITEA__attachment__STORAGE_TYPE=${GITEA__attachment__STORAGE_TYPE} + - GITEA__attachment__MINIO_ENDPOINT=${GITEA__attachment__MINIO_ENDPOINT} + - GITEA__attachment__MINIO_ACCESS_KEY_ID=${GITEA__attachment__MINIO_ACCESS_KEY_ID} + - GITEA__attachment__MINIO_SECRET_ACCESS_KEY=${GITEA__attachment__MINIO_SECRET_ACCESS_KEY} + - GITEA__attachment__MINIO_BUCKET=${GITEA__attachment__MINIO_BUCKET} + - GITEA__attachment__MINIO_BASE_PATH=${GITEA__attachment__MINIO_BASE_PATH} + - GITEA__attachment__MINIO_USE_SSL=${GITEA__attachment__MINIO_USE_SSL} + - GITEA__attachment__MINIO_INSECURE_SKIP_VERIFY=${GITEA__attachment__MINIO_INSECURE_SKIP_VERIFY} + + # --- LFS (если нужно) --- + - GITEA__lfs__STORAGE_TYPE=${GITEA__lfs__STORAGE_TYPE} + - GITEA__lfs__MINIO_ENDPOINT=${GITEA__lfs__MINIO_ENDPOINT} + - GITEA__lfs__MINIO_ACCESS_KEY_ID=${GITEA__lfs__MINIO_ACCESS_KEY_ID} + - GITEA__lfs__MINIO_SECRET_ACCESS_KEY=${GITEA__lfs__MINIO_SECRET_ACCESS_KEY} + - GITEA__lfs__MINIO_BUCKET=${GITEA__lfs__MINIO_BUCKET} + - GITEA__lfs__MINIO_BASE_PATH=${GITEA__lfs__MINIO_BASE_PATH} + - GITEA__lfs__MINIO_USE_SSL=${GITEA__lfs__MINIO_USE_SSL} + - GITEA__lfs__MINIO_INSECURE_SKIP_VERIFY=${GITEA__lfs__MINIO_INSECURE_SKIP_VERIFY} + + # Оптимизации + - GITEA__repository__ROOT=/data/git/repositories + - GITEA__repository__DETECTED_CHARSETS_ORDER=UTF-8,UTF-16BE,UTF-16LE + + # Безопасность + #- GITEA__security__INSTALL_LOCK=true + - GITEA__service__DISABLE_REGISTRATION=true # Отключаем публичную регистрацию + + - VIRTUAL_HOST=gitea.domain.ru + - LETSENCRYPT_HOST=gitea.domain.ru + - LETSENCRYPT_EMAIL=my@email.ru + # Можно добавить, если требуется указать внутренний порт: + - VIRTUAL_PORT=3000 + + networks: + - "net" + expose: + - "3000" + ports: + - "3090:3000" +# - "192.168.1.200:22:22" # Теперь SSH на стандартном порту! + volumes: + - gitea-data:/data + # Добавляем конфиг для MinIO + - /mnt/gitea/conf.d/minio-storage.ini:/etc/gitea/conf.d/minio-storage.ini:ro + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + deploy: + resources: + limits: + cpus: '0.5' + memory: 512M + reservations: + cpus: '0.25' + memory: 256M + healthcheck: + test: ["CMD", "/usr/bin/wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + +volumes: + gitea-data: + driver: local + driver_opts: + type: none + device: /mnt/gitea/data + o: bind + +networks: + net: + external: true