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
121 lines
3.7 KiB
Markdown
121 lines
3.7 KiB
Markdown
# Исправление 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 - самый надежный способ!** |