From 2d77f99e93112f68c46c8f5a56592473d4774a43 Mon Sep 17 00:00:00 2001 From: arkonsadter Date: Sat, 17 Jan 2026 10:56:53 +0600 Subject: [PATCH] fix(docker): simplify deployment by removing nginx and exposing backend on port 80 - Remove nginx service from docker-compose.yml to eliminate configuration issues - Expose backend directly on port 80 for direct access without reverse proxy - Update BASE_URL and FRONTEND_URL environment variables to use port 80 - Add data volume mount for daemon storage at /app/data - Add docker-compose.txt to .gitignore to exclude temporary files - Add LINUX_DOCKER_FIX.md documentation with setup instructions and troubleshooting - Simplify deployment configuration for Linux environments where nginx events section was causing startup failures --- .gitignore | 1 + LINUX_DOCKER_FIX.md | 121 ++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 30 +++-------- 3 files changed, 128 insertions(+), 24 deletions(-) create mode 100644 LINUX_DOCKER_FIX.md diff --git a/.gitignore b/.gitignore index 0d91870..b7628fc 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ frontend/.env.production.local frontend/dist/ backend/build/ backend/users1.json.backup +docker-compose.txt diff --git a/LINUX_DOCKER_FIX.md b/LINUX_DOCKER_FIX.md new file mode 100644 index 0000000..f106eaa --- /dev/null +++ b/LINUX_DOCKER_FIX.md @@ -0,0 +1,121 @@ +# Исправление Docker на Linux + +## Проблема +Nginx не может запуститься из-за отсутствия секции "events" в конфигурации. +Backend работает отлично! + +## ✅ ПРОСТОЕ РЕШЕНИЕ - Запуск без nginx + +### Вариант 1: Быстрое исправление + +```bash +# 1. Остановить все контейнеры +docker compose down + +# 2. Создать папку data с файлами +mkdir -p data +cat > data/users.json << 'EOF' +{"admin":{"username":"admin","password":"$2b$12$PAaomoUWn3Ip5ov.S/uYPeTIRiDMq7DbA57ahyYQnw3QHT2zuYMlG","role":"owner","servers":[],"permissions":{"manage_users":true,"manage_roles":true,"manage_servers":true,"manage_tickets":true,"manage_files":true,"delete_users":true,"view_all_resources":true},"resource_access":{"servers":[],"tickets":[],"files":[]}}} +EOF +echo '{}' > data/tickets.json +echo '{}' > data/daemons.json + +# 3. Изменить порты в docker-compose.yml +sed -i 's/"8000:8000"/"80:8000"/' docker-compose.yml + +# 4. Запустить только mc-panel +docker compose up -d mc-panel +``` + +### Вариант 2: Упрощенный docker-compose (РЕКОМЕНДУЕТСЯ) + +1. **Скопируйте файлы**: + - `docker-compose-linux.yml` + - `backend/daemons.py` (обновленный) + +2. **Выполните команды**: +```bash +# Остановить контейнеры +docker compose down + +# Создать папку data +mkdir -p data +cat > data/users.json << 'EOF' +{"admin":{"username":"admin","password":"$2b$12$PAaomoUWn3Ip5ov.S/uYPeTIRiDMq7DbA57ahyYQnw3QHT2zuYMlG","role":"owner","servers":[],"permissions":{"manage_users":true,"manage_roles":true,"manage_servers":true,"manage_tickets":true,"manage_files":true,"delete_users":true,"view_all_resources":true},"resource_access":{"servers":[],"tickets":[],"files":[]}}} +EOF +echo '{}' > data/tickets.json +echo '{}' > data/daemons.json + +# Запустить с новой конфигурацией +docker compose -f docker-compose-linux.yml up --build -d +``` + +## Проверка + +```bash +# Статус контейнера +docker compose ps + +# Логи +docker compose logs mc-panel + +# Проверка API +curl http://localhost/api/auth/oidc/providers + +# Проверка в браузере +# Откройте http://IP_СЕРВЕРА +``` + +## Результат + +✅ **Панель доступна на IP сервера через порт 80** +✅ **Логин: admin, пароль: Admin** +✅ **SSO работает** +✅ **Никаких проблем с nginx** + +## Если нужен nginx позже + +После того как панель заработает, можно настроить nginx отдельно: + +```bash +# Создать правильную nginx конфигурацию +cat > nginx/simple.conf << 'EOF' +events { + worker_connections 1024; +} + +http { + upstream mc_panel { + server mc-panel:8000; + } + + server { + listen 80; + location / { + proxy_pass http://mc_panel; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + } + } +} +EOF + +# Добавить nginx в docker-compose +# И изменить порты mc-panel обратно на "8000:8000" +``` + +## Структура файлов + +``` +📁 Проект +├── docker-compose-linux.yml # ✅ Упрощенная конфигурация +├── backend/daemons.py # ✅ Исправленные пути +└── data/ # ✅ Создается автоматически + ├── users.json + ├── tickets.json + └── daemons.json +``` + +--- + +**Используйте Вариант 2 - самый надежный способ!** \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index c5fe9b1..d0bb726 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: container_name: mc-panel restart: unless-stopped ports: - - "8000:8000" + - "80:8000" # Прямой доступ через порт 80 environment: # ZITADEL OpenID Connect - ZITADEL_ISSUER=${ZITADEL_ISSUER} @@ -17,8 +17,8 @@ services: - ZITADEL_CLIENT_SECRET=${ZITADEL_CLIENT_SECRET} # URLs - - BASE_URL=${BASE_URL:-http://localhost:8000} - - FRONTEND_URL=${FRONTEND_URL:-http://localhost:3000} + - BASE_URL=${BASE_URL:-http://localhost} + - FRONTEND_URL=${FRONTEND_URL:-http://localhost} # Security - SECRET_KEY=${SECRET_KEY:-change-this-in-production} @@ -31,6 +31,8 @@ services: # Персистентное хранилище для пользователей и тикетов - ./data/users.json:/app/backend/users.json - ./data/tickets.json:/app/backend/tickets.json + # Папка для данных демонов + - ./data:/app/data networks: - mc-panel-network healthcheck: @@ -40,26 +42,6 @@ services: retries: 3 start_period: 40s - # Nginx reverse proxy (опционально) - nginx: - image: nginx:alpine - container_name: mc-panel-nginx - restart: unless-stopped - ports: - - "80:80" - - "443:443" - volumes: - - ./nginx/default.conf:/etc/nginx/nginx.conf:ro - - ./nginx/ssl:/etc/nginx/ssl:ro - depends_on: - - mc-panel - networks: - - mc-panel-network - networks: mc-panel-network: - driver: bridge - -volumes: - servers-data: - users-data: + driver: bridge \ No newline at end of file