logboard/docs/installation.md
Сергей Антропов c40b2b312e docs: update documentation to reflect new project structure
- Update README.md with new project structure and installation instructions
- Update docs/installation.md with simplified setup process
- Update docs/configuration.md with correct file paths
- Update docs/index.md with new documentation structure
- Add docs/project-structure.md with detailed architecture overview
- Reflect changes from refactoring: app/ directory structure, .env file usage
- Update installation instructions to use docker compose up --build -d
- Add comprehensive project structure documentation
2025-08-20 18:32:31 +03:00

457 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Установка и настройка 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
# Настройка переменных окружения
cp env.example .env
```
### Метод 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. Сборка и запуск приложения
```bash
# Сборка и запуск в одном команде
docker compose up --build -d
# Или пошагово:
# Сборка образа
docker compose build --no-cache
# Запуск в фоновом режиме
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)