- Fixed Docker permissions issue by running as root user - Added DEBUG_MODE support with conditional Swagger docs and auto-reload - Created start.sh script for conditional Uvicorn execution - Removed verbose debug logs from WebSocket status endpoint - Added comprehensive screenshots to documentation - Enhanced help tooltip with full-screen modal design - Added theme switcher to error page - Updated documentation with local development and Docker benefits - Fixed WebSocket status display issues - Improved hotkey functionality and documentation - Added detailed project descriptions for local dev and Docker users Technical improvements: - Dockerfile: removed appuser switch, simplified permissions - docker-compose.yml: kept user: 0:0 for Docker socket access - app.py: removed debug prints, added DEBUG_MODE support - templates: enhanced UI/UX with better tooltips and themes - docs: comprehensive updates with new screenshots and descriptions
460 lines
13 KiB
Markdown
460 lines
13 KiB
Markdown
# Установка и настройка LogBoard+
|
||
|
||
**Автор:** Сергей Антропов
|
||
**Сайт:** https://devops.org.ru
|
||
|
||
## Содержание
|
||
|
||
1. [Обзор и применение](#обзор-и-применение)
|
||
2. [Предварительные требования](#предварительные-требования)
|
||
3. [Установка](#установка)
|
||
4. [Настройка](#настройка)
|
||
5. [Первый запуск](#первый-запуск)
|
||
6. [Проверка установки](#проверка-установки)
|
||
7. [Настройка для продакшена](#настройка-для-продакшена)
|
||
|
||
## Обзор и применение
|
||
|
||
### 🎯 **Идеально для локальной разработки**
|
||
|
||
LogBoard+ создан специально для разработчиков, работающих с микросервисной архитектурой. Если вы используете Docker и Docker Compose для локальной разработки, этот инструмент станет незаменимым помощником:
|
||
|
||
- **Второй монитор** - Держите логи всех микросервисов постоянно видимыми
|
||
- **Быстрая отладка** - Мгновенный доступ к логам без переключения между терминалами
|
||
- **Мониторинг в реальном времени** - Видите проблемы сразу, как они возникают
|
||
- **Централизованный просмотр** - Все логи в одном месте, а не в десятках терминалов
|
||
|
||
### 🐳 **Оптимизирован для Docker и Docker Compose**
|
||
|
||
Если ваша инфраструктура основана на Docker и Docker Compose, LogBoard+ предоставляет:
|
||
|
||
- **Автоматическое обнаружение** всех проектов Docker Compose
|
||
- **Быстрый просмотр логов** всех контейнеров в проекте
|
||
- **Фильтрация по проектам** - легко переключаться между разными проектами
|
||
- **Multi-view режим** - одновременный просмотр логов нескольких контейнеров
|
||
- **Интеграция с Docker API** - прямая работа с контейнерами
|
||
|
||
### 💡 **Сценарии использования**
|
||
|
||
- **Локальная разработка** - мониторинг логов микросервисов на втором мониторе
|
||
- **Отладка проблем** - быстрый поиск ошибок в логах
|
||
- **Тестирование** - наблюдение за поведением системы в реальном времени
|
||
- **Демонстрации** - показ работы системы клиентам или команде
|
||
|
||
## Предварительные требования
|
||
|
||
### Системные требования
|
||
|
||
- **Операционная система:** Linux (Ubuntu 20.04+, CentOS 8+, RHEL 8+)
|
||
- **Docker Engine:** 20.10.0 или выше
|
||
- **Docker Compose:** 2.0.0 или выше
|
||
- **RAM:** Минимум 1 GB, рекомендуется 2 GB
|
||
- **CPU:** Минимум 1 ядро, рекомендуется 2 ядра
|
||
- **Дисковое пространство:** Минимум 2 GB свободного места
|
||
|
||
### Проверка системы
|
||
|
||
```bash
|
||
# Проверка версии Docker
|
||
docker --version
|
||
# Docker version 20.10.21, build baeda1f
|
||
|
||
# Проверка версии Docker Compose
|
||
docker compose version
|
||
# Docker Compose version v2.12.2
|
||
|
||
# Проверка доступной памяти
|
||
free -h
|
||
# total used free shared buff/cache available
|
||
# Mem: 7.7Gi 2.1Gi 4.2Gi 0.0Ki 1.4Gi 5.3Gi
|
||
|
||
# Проверка свободного места
|
||
df -h /
|
||
# Filesystem Size Used Avail Use% Mounted on
|
||
# /dev/sda1 100G 20G 80G 20% /
|
||
```
|
||
|
||
## Установка
|
||
|
||
### Метод 1: Клонирование из Git
|
||
|
||
```bash
|
||
# Клонирование репозитория
|
||
git clone https://github.com/your-username/logboard.git
|
||
cd logboard
|
||
|
||
# Проверка структуры проекта
|
||
ls -la
|
||
```
|
||
|
||
### Метод 2: Скачивание архива
|
||
|
||
```bash
|
||
# Скачивание и распаковка
|
||
wget https://github.com/your-username/logboard/archive/refs/tags/v1.0.0.tar.gz
|
||
tar -xzf v1.0.0.tar.gz
|
||
cd logboard-1.0.0
|
||
```
|
||
|
||
## Настройка
|
||
|
||
### 1. Создание файла переменных окружения
|
||
|
||
```bash
|
||
# Копирование примера конфигурации
|
||
make setup
|
||
|
||
# Или вручную
|
||
cp env.example .env
|
||
```
|
||
|
||
### 2. Редактирование конфигурации
|
||
|
||
Откройте файл `.env` и настройте основные параметры:
|
||
|
||
```bash
|
||
# Основные настройки
|
||
LOGBOARD_PORT=9001
|
||
LOGBOARD_USER=admin
|
||
LOGBOARD_PASS=your-secure-password
|
||
|
||
# Безопасность (обязательно измените!)
|
||
SECRET_KEY=your-very-secure-secret-key-here
|
||
ENCRYPTION_KEY=your-encryption-key-here
|
||
|
||
# Настройки Docker
|
||
DOCKER_HOST=unix:///var/run/docker.sock
|
||
```
|
||
|
||
### 3. Настройка прав доступа к Docker
|
||
|
||
```bash
|
||
# Создание группы docker (если не существует)
|
||
sudo groupadd docker
|
||
|
||
# Добавление пользователя в группу docker
|
||
sudo usermod -aG docker $USER
|
||
|
||
# Проверка прав доступа
|
||
ls -la /var/run/docker.sock
|
||
# srw-rw-rw- 1 root docker 0 Jan 15 10:00 /var/run/docker.sock
|
||
|
||
# Перезагрузка группы (или перелогин)
|
||
newgrp docker
|
||
```
|
||
|
||
### 4. Создание директорий
|
||
|
||
```bash
|
||
# Создание директории для снимков логов
|
||
mkdir -p snapshots
|
||
|
||
# Установка прав доступа
|
||
chmod 755 snapshots
|
||
```
|
||
|
||
## Первый запуск
|
||
|
||
### 1. Сборка Docker образа
|
||
|
||
```bash
|
||
# Сборка образа
|
||
make build
|
||
|
||
# Или вручную
|
||
docker compose build --no-cache
|
||
```
|
||
|
||
### 2. Запуск приложения
|
||
|
||
```bash
|
||
# Запуск в фоновом режиме
|
||
make up
|
||
|
||
# Или вручную
|
||
docker compose up -d
|
||
```
|
||
|
||
### 3. Проверка статуса
|
||
|
||
```bash
|
||
# Проверка статуса контейнеров
|
||
make status
|
||
|
||
# Просмотр логов
|
||
make logs
|
||
```
|
||
|
||
## Проверка установки
|
||
|
||
### 1. Проверка доступности веб-интерфейса
|
||
|
||
```bash
|
||
# Проверка HTTP ответа
|
||
curl -I http://localhost:9001
|
||
# HTTP/1.1 200 OK
|
||
# Content-Type: text/html; charset=utf-8
|
||
|
||
# Проверка health check
|
||
curl http://localhost:9001/healthz
|
||
# ok
|
||
```
|
||
|
||
### 2. Проверка API
|
||
|
||
```bash
|
||
# Получение токена аутентификации
|
||
curl -X POST "http://localhost:9001/api/auth/login" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"username":"admin","password":"your-secure-password"}'
|
||
|
||
# Ответ должен содержать access_token
|
||
```
|
||
|
||
### 3. Проверка Docker интеграции
|
||
|
||
```bash
|
||
# Проверка списка контейнеров
|
||
curl -X GET "http://localhost:9001/api/services" \
|
||
-H "Authorization: Bearer YOUR_TOKEN_HERE"
|
||
|
||
# Проверка списка проектов
|
||
curl -X GET "http://localhost:9001/api/projects" \
|
||
-H "Authorization: Bearer YOUR_TOKEN_HERE"
|
||
```
|
||
|
||
### 4. Проверка WebSocket соединений
|
||
|
||
```bash
|
||
# Тестирование WebSocket (требует специального клиента)
|
||
# Используйте браузер или wscat для тестирования
|
||
```
|
||
|
||
## Настройка для продакшена
|
||
|
||
### 1. Безопасность
|
||
|
||
#### Изменение паролей и ключей
|
||
|
||
```bash
|
||
# Генерация секретного ключа
|
||
openssl rand -hex 32
|
||
# 8a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6
|
||
|
||
# Генерация ключа шифрования
|
||
openssl rand -hex 32
|
||
# 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7
|
||
|
||
# Обновление .env файла
|
||
LOGBOARD_PASS=your-very-secure-password
|
||
SECRET_KEY=8a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6
|
||
ENCRYPTION_KEY=1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7
|
||
```
|
||
|
||
#### Настройка HTTPS
|
||
|
||
Создайте файл `nginx.conf`:
|
||
|
||
```nginx
|
||
server {
|
||
listen 80;
|
||
server_name your-domain.com;
|
||
return 301 https://$server_name$request_uri;
|
||
}
|
||
|
||
server {
|
||
listen 443 ssl http2;
|
||
server_name your-domain.com;
|
||
|
||
ssl_certificate /path/to/your/certificate.crt;
|
||
ssl_certificate_key /path/to/your/private.key;
|
||
|
||
location / {
|
||
proxy_pass http://localhost:9001;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
|
||
# WebSocket поддержка
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection "upgrade";
|
||
}
|
||
}
|
||
```
|
||
|
||
### 2. Мониторинг
|
||
|
||
#### Настройка логирования
|
||
|
||
```bash
|
||
# Создание директории для логов
|
||
sudo mkdir -p /var/log/logboard
|
||
sudo chown $USER:$USER /var/log/logboard
|
||
|
||
# Обновление docker-compose.yml
|
||
volumes:
|
||
- /var/log/logboard:/app/logs
|
||
```
|
||
|
||
#### Настройка systemd сервиса
|
||
|
||
Создайте файл `/etc/systemd/system/logboard.service`:
|
||
|
||
```ini
|
||
[Unit]
|
||
Description=LogBoard+ Docker Compose
|
||
Requires=docker.service
|
||
After=docker.service
|
||
|
||
[Service]
|
||
Type=oneshot
|
||
RemainAfterExit=yes
|
||
WorkingDirectory=/path/to/logboard
|
||
ExecStart=/usr/bin/docker compose up -d
|
||
ExecStop=/usr/bin/docker compose down
|
||
TimeoutStartSec=0
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
```bash
|
||
# Включение автозапуска
|
||
sudo systemctl enable logboard.service
|
||
sudo systemctl start logboard.service
|
||
```
|
||
|
||
### 3. Резервное копирование
|
||
|
||
#### Скрипт резервного копирования
|
||
|
||
Создайте файл `backup.sh`:
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
# Скрипт резервного копирования LogBoard+
|
||
|
||
BACKUP_DIR="/backup/logboard"
|
||
DATE=$(date +%Y%m%d_%H%M%S)
|
||
|
||
# Создание директории для резервных копий
|
||
mkdir -p $BACKUP_DIR
|
||
|
||
# Резервное копирование конфигурации
|
||
tar -czf $BACKUP_DIR/logboard_config_$DATE.tar.gz \
|
||
.env \
|
||
excluded_containers.json \
|
||
docker-compose.yml
|
||
|
||
# Резервное копирование снимков логов
|
||
tar -czf $BACKUP_DIR/logboard_snapshots_$DATE.tar.gz \
|
||
snapshots/
|
||
|
||
# Удаление старых резервных копий (старше 30 дней)
|
||
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
|
||
|
||
echo "Резервное копирование завершено: $DATE"
|
||
```
|
||
|
||
```bash
|
||
# Установка прав на выполнение
|
||
chmod +x backup.sh
|
||
|
||
# Добавление в cron (ежедневно в 2:00)
|
||
crontab -e
|
||
# 0 2 * * * /path/to/logboard/backup.sh
|
||
```
|
||
|
||
### 4. Обновление
|
||
|
||
#### Скрипт обновления
|
||
|
||
Создайте файл `update.sh`:
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
# Скрипт обновления LogBoard+
|
||
|
||
echo "Начинаем обновление LogBoard+..."
|
||
|
||
# Остановка сервисов
|
||
make down
|
||
|
||
# Получение обновлений
|
||
git pull origin main
|
||
|
||
# Пересборка образов
|
||
make build
|
||
|
||
# Запуск сервисов
|
||
make up
|
||
|
||
# Проверка статуса
|
||
make status
|
||
|
||
echo "Обновление завершено!"
|
||
```
|
||
|
||
```bash
|
||
# Установка прав на выполнение
|
||
chmod +x update.sh
|
||
```
|
||
|
||
## Устранение проблем установки
|
||
|
||
### Частые ошибки
|
||
|
||
1. **Ошибка доступа к Docker socket**
|
||
```bash
|
||
# Решение: добавление пользователя в группу docker
|
||
sudo usermod -aG docker $USER
|
||
newgrp docker
|
||
```
|
||
|
||
2. **Ошибка порта уже используется**
|
||
```bash
|
||
# Решение: изменение порта в .env
|
||
LOGBOARD_PORT=9002
|
||
```
|
||
|
||
3. **Ошибка недостаточно памяти**
|
||
```bash
|
||
# Решение: увеличение лимитов Docker
|
||
sudo systemctl edit docker
|
||
# Добавьте:
|
||
# [Service]
|
||
# MemoryLimit=2G
|
||
```
|
||
|
||
4. **Ошибка SSL сертификатов**
|
||
```bash
|
||
# Решение: использование самоподписанных сертификатов для тестирования
|
||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
|
||
-keyout private.key -out certificate.crt
|
||
```
|
||
|
||
### Логи для диагностики
|
||
|
||
```bash
|
||
# Просмотр логов приложения
|
||
make logs
|
||
|
||
# Просмотр логов Docker
|
||
docker logs logboard
|
||
|
||
# Проверка статуса контейнера
|
||
docker inspect logboard
|
||
```
|
||
|
||
## Следующие шаги
|
||
|
||
После успешной установки:
|
||
|
||
1. [Настройте безопасность](./security.md)
|
||
2. [Изучите API документацию](./api.md)
|
||
3. [Настройте конфигурацию](./configuration.md)
|
||
4. [Изучите WebSocket API](./websocket.md)
|
||
|