chore: align infrastructure with server

This commit is contained in:
2026-05-02 17:20:14 +05:00
parent e8c924f63a
commit 73c323685f
36 changed files with 785 additions and 540 deletions
+33 -15
View File
@@ -1,21 +1,39 @@
# XFlow Server Configuration
# Copy this file to .env and update the values
# --- Database Settings ---
POSTGRES_USER=admin
POSTGRES_PASSWORD=your_secure_password
# Domain configuration
GITEA_DOMAIN=your-domain.com
DB_NAME_GITEA=gitea_db
DB_NAME_NPB=npb_app_db
DB_NAME_XFLOW=xflow_crm_db
# Gitea Configuration
GITEA_TOKEN=your_gitea_api_token_here
# --- External Ports ---
DB_EXTERNAL_PORT=5432
ADMINER_PORT=8080
MINIO_API_PORT=9000
MINIO_CONSOLE_PORT=9001
GITEA_EXTERNAL_PORT=3001
XFLOW_PORT=3002
NBP_PORT=3000
# Security
JWT_SECRET=your-super-secret-jwt-key-change-in-production
# --- MinIO Settings ---
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=your_minio_password
# WebDAV (optional)
WEBDAV_USER=admin
WEBDAV_PASSWORD=secure_password_here
# --- Gitea Settings ---
GITEA_RUNNER_TOKEN=your_runner_token
GITEA_RUNNER_NAME=avtex-runner
GITEA_TOKEN=your_personal_access_token
GITEA_ORG=AVTEX
GITEA_MINDMAP_REPO=MMAVTEX
GITEA_PROJECT_REPO=XFlow
# Database (change in production!)
POSTGRES_PASSWORD=change_this_password
# --- Firebase Settings ---
FIREBASE_API_KEY=
FIREBASE_AUTH_DOMAIN=
FIREBASE_PROJECT_ID=
FIREBASE_APP_ID=
FIREBASE_MESSAGING_SENDER_ID=
# API Configuration
API_PORT=8080
# --- AI & External APIs ---
GOOGLE_API_KEY=
REPLICATE_API_KEY=
+20 -77
View File
@@ -1,96 +1,39 @@
version: '3.8'
# Инфраструктура AVTEX
# FastPanel проксирует порты напрямую — nginx контейнер не нужен
# Один postgres для всех проектов организации
# XFlow CRM Service Configuration
# Этот файл описывает только само приложение.
# База данных, Gitea и хранилища являются внешними сервисами.
services:
# PostgreSQL — общий для всех проектов
postgres:
image: postgres:16-alpine
container_name: postgres
restart: always
networks:
- infra
ports:
- "5432:5432"
environment:
POSTGRES_USER: ${POSTGRES_USER:-admin}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: postgres
volumes:
- postgres-data:/var/lib/postgresql/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
# Gitea — Git сервер организации AVTEX
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: always
networks:
- infra
ports:
- "3001:3000"
- "2221:22"
environment:
USER_UID: 1000
USER_GID: 1000
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: postgres:5432
GITEA__database__NAME: gitea
GITEA__database__USER: gitea
GITEA__database__PASSWD: ${GITEA_DB_PASSWORD:-gitea_password}
GITEA__server__DOMAIN: git.a-crm.controlsystem.kz
GITEA__server__ROOT_URL: http://git.a-crm.controlsystem.kz/
GITEA__server__SSH_DOMAIN: git.a-crm.controlsystem.kz
GITEA__server__SSH_PORT: 2221
GITEA__server__SSH_LISTEN_PORT: 22
GITEA__security__INSTALL_LOCK: "true"
GITEA__service__DISABLE_REGISTRATION: "false"
volumes:
- gitea-data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
depends_on:
- postgres
# XFlow — Mind Map приложение
xflow:
image: node:20-alpine
container_name: xflow
xflow_crm:
image: node:22-alpine
container_name: xflow_crm
restart: always
working_dir: /app
command: node .output/server/index.mjs
networks:
- infra
ports:
- "3002:3000"
- "${XFLOW_PORT:-3002}:3000"
environment:
NODE_ENV: production
PORT: 3000
NUXT_JWT_SECRET: ${NUXT_JWT_SECRET}
GITEA_URL: http://gitea:3000
GITEA_URL: http://xflow_gitea:3000
GITEA_TOKEN: ${GITEA_TOKEN}
GITEA_ORG: ${GITEA_ORG:-AVTEX}
GITEA_MINDMAP_REPO: ${GITEA_MINDMAP_REPO:-MMAVTEX}
GITEA_PROJECT_REPO: ${GITEA_PROJECT_REPO:-XFlow}
DATABASE_URL: postgresql://xflow:${XFLOW_DB_PASSWORD:-xflow_pass}@postgres:5432/xflow
NUXT_PUBLIC_FIREBASE_API_KEY: ${NUXT_PUBLIC_FIREBASE_API_KEY:-${FIREBASE_API_KEY}}
NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN: ${NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN:-${FIREBASE_AUTH_DOMAIN}}
NUXT_PUBLIC_FIREBASE_PROJECT_ID: ${NUXT_PUBLIC_FIREBASE_PROJECT_ID:-${FIREBASE_PROJECT_ID}}
NUXT_PUBLIC_FIREBASE_APP_ID: ${NUXT_PUBLIC_FIREBASE_APP_ID:-${FIREBASE_APP_ID}}
NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: ${NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID:-${FIREBASE_MESSAGING_SENDER_ID}}
DATABASE_URL: postgresql://${POSTGRES_USER:-admin}:${POSTGRES_PASSWORD}@xflow_db:5432/${DB_NAME_XFLOW:-xflow_crm_db}
NUXT_PUBLIC_FIREBASE_API_KEY: ${FIREBASE_API_KEY}
NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN: ${FIREBASE_AUTH_DOMAIN}
NUXT_PUBLIC_FIREBASE_PROJECT_ID: ${FIREBASE_PROJECT_ID}
NUXT_PUBLIC_FIREBASE_APP_ID: ${FIREBASE_APP_ID}
NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: ${FIREBASE_MESSAGING_SENDER_ID}
volumes:
- /opt/xflow/.output:/app/.output
- /opt/xflow/prisma:/app/prisma:ro
- /opt/xflow/prisma.config.ts:/app/prisma.config.ts:ro
- /opt/xflow/node_modules:/app/node_modules:ro
- .:/app # Монтируем текущую папку проекта
networks:
- xflow_infra
networks:
infra:
xflow_infra:
external: true
volumes:
postgres-data:
gitea-data:
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
set -e
# Подключаемся к postgres под суперпользователем и создаем базы
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "postgres" <<-EOSQL
CREATE DATABASE "$DB_NAME_GITEA";
CREATE DATABASE "$DB_NAME_NPB";
CREATE DATABASE "$DB_NAME_XFLOW";
EOSQL