fix(docker): simplify deployment by removing nginx and exposing backend on port 80
All checks were successful
continuous-integration/drone/push Build is passing

- 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
This commit is contained in:
2026-01-17 10:56:53 +06:00
parent c0125f3962
commit 2d77f99e93
3 changed files with 128 additions and 24 deletions

1
.gitignore vendored
View File

@@ -37,3 +37,4 @@ frontend/.env.production.local
frontend/dist/
backend/build/
backend/users1.json.backup
docker-compose.txt

121
LINUX_DOCKER_FIX.md Normal file
View File

@@ -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 - самый надежный способ!**

View File

@@ -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: