Files
dash/DEPLOYMENT.md

9.2 KiB
Executable File
Raw Permalink Blame History

Инструкция по развертыванию

Быстрый старт

1. Подготовка окружения

Установка зависимостей системы

Ubuntu/Debian:

sudo apt-get update
sudo apt-get install -y python3.9 python3-pip python3-venv postgresql-client nodejs npm

Windows:

  • Установите Python 3.9+ с официального сайта
  • Установите Node.js 18+ с официального сайта
  • Установите PostgreSQL с официального сайта

2. Настройка баз данных

Создание readonly роли для ManicTime БД

ВАЖНО: Выполните эти команды на сервере PostgreSQL, где находится база данных ManicTime:

-- Подключитесь к PostgreSQL как суперпользователь
psql -U postgres

-- Создайте роль
CREATE ROLE manictime_readonly LOGIN PASSWORD 'N0v1y_S3cur3_P@ssw0rd!';

-- Предоставьте права на подключение к БД
GRANT CONNECT ON DATABASE "ManicTimeReports" TO manictime_readonly;

-- Предоставьте права на схему
GRANT USAGE ON SCHEMA public TO manictime_readonly;

-- Предоставьте права на чтение таблиц
GRANT SELECT ON ALL TABLES IN SCHEMA public TO manictime_readonly;

-- Для новых таблиц (если они будут созданы)
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
GRANT SELECT ON TABLES TO manictime_readonly;

Создание служебной базы данных

CREATE DATABASE dashboard_service;

3. Настройка Backend

cd backend

# Создание виртуального окружения
python -m venv venv

# Активация (Windows)
venv\Scripts\activate

# Активация (Linux/Mac)
source venv/bin/activate

# Установка зависимостей
pip install -r requirements.txt

# Создание файла .env
cp .env.example .env

# Отредактируйте .env с вашими настройками
# Используйте любой текстовый редактор

Настройка .env файла

Откройте backend/.env и заполните следующие параметры:

# ManicTime Database (Read-Only)
MANICTIME_DB_HOST=192.168.1.100  # IP или hostname сервера ManicTime БД
MANICTIME_DB_PORT=5432
MANICTIME_DB_NAME=ManicTimeReports
MANICTIME_DB_USER=manictime_readonly
MANICTIME_DB_PASSWORD=N0v1y_S3cur3_P@ssw0rd!  # Пароль, который вы установили выше

# Service Database
SERVICE_DB_HOST=localhost
SERVICE_DB_PORT=5432
SERVICE_DB_NAME=dashboard_service
SERVICE_DB_USER=postgres
SERVICE_DB_PASSWORD=ваш_пароль_postgres

# JWT Settings
JWT_SECRET_KEY=$(openssl rand -hex 32)  # Сгенерируйте случайный ключ
JWT_ALGORITHM=HS256
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=30

Для генерации JWT_SECRET_KEY на Linux/Mac:

openssl rand -hex 32

Для Windows: Используйте онлайн генератор или Python:

import secrets
print(secrets.token_hex(32))

Инициализация базы данных

# Применение миграций
alembic upgrade head

# Создание начальных ролей и администратора
python scripts/init_db.py

4. Запуск Backend

# Режим разработки
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

# Или для production (рекомендуется использовать gunicorn)
gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000

Backend будет доступен по адресу: http://localhost:8000

API документация: http://localhost:8000/docs

5. Настройка Frontend

cd frontend

# Установка зависимостей
npm install

# Запуск в режиме разработки
npm run dev

# Или сборка для production
npm run build

Frontend будет доступен по адресу: http://localhost:3000

6. Первый вход

После успешного запуска:

  1. Откройте браузер и перейдите на http://localhost:3000
  2. Вы увидите страницу входа
  3. Используйте учетные данные:
    • Логин: admin
    • Пароль: admin123
  4. После входа НЕМЕДЛЕННО измените пароль через панель администратора

Развертывание в Production

Использование Docker

# Создайте .env файл в корне проекта
cp backend/.env.example .env

# Отредактируйте .env

# Запуск всех сервисов
docker-compose up -d

# Просмотр логов
docker-compose logs -f

# Остановка
docker-compose down

Настройка Nginx (рекомендуется)

Пример конфигурации Nginx для production:

server {
    listen 80;
    server_name your-domain.com;

    # Frontend
    location / {
        root /path/to/frontend/dist;
        try_files $uri $uri/ /index.html;
    }

    # Backend API
    location /api {
        proxy_pass http://localhost:8000;
        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;
    }
}

Systemd Service (для Linux)

Создайте файл /etc/systemd/system/manictime-dashboard.service:

[Unit]
Description=ManicTime Dashboard Backend
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/path/to/dash/backend
Environment="PATH=/path/to/dash/backend/venv/bin"
ExecStart=/path/to/dash/backend/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000
Restart=always

[Install]
WantedBy=multi-user.target

Активация сервиса:

sudo systemctl daemon-reload
sudo systemctl enable manictime-dashboard
sudo systemctl start manictime-dashboard
sudo systemctl status manictime-dashboard

Устранение неполадок

Проблема: Не удается подключиться к БД ManicTime

Решение:

  1. Проверьте, что роль manictime_readonly создана и имеет правильные права
  2. Проверьте файрвол - порт 5432 должен быть открыт
  3. Проверьте настройки в .env
  4. Попробуйте подключиться вручную: psql -h HOST -U manictime_readonly -d ManicTimeReports

Проблема: Ошибка при миграциях

Решение:

# Проверьте подключение к служебной БД
psql -h localhost -U postgres -d dashboard_service

# Если БД не существует, создайте её
createdb dashboard_service

# Повторите миграции
alembic upgrade head

Проблема: Frontend не может подключиться к Backend

Решение:

  1. Проверьте, что Backend запущен на порту 8000
  2. Проверьте настройки прокси в vite.config.js
  3. Проверьте CORS настройки в backend/app/main.py
  4. Проверьте консоль браузера на наличие ошибок

Проблема: JWT токены не работают

Решение:

  1. Убедитесь, что JWT_SECRET_KEY установлен в .env
  2. Проверьте, что ключ достаточно длинный (минимум 32 символа)
  3. Перезапустите Backend после изменения ключа

Обновление системы

# 1. Остановите сервисы
docker-compose down  # или systemctl stop manictime-dashboard

# 2. Обновите код
git pull  # или скопируйте новые файлы

# 3. Обновите зависимости
cd backend
pip install -r requirements.txt

cd ../frontend
npm install

# 4. Примените миграции БД
cd backend
alembic upgrade head

# 5. Перезапустите сервисы
docker-compose up -d  # или systemctl restart manictime-dashboard

Резервное копирование

База данных служебной БД

# Создание резервной копии
pg_dump -h localhost -U postgres dashboard_service > backup_$(date +%Y%m%d).sql

# Восстановление
psql -h localhost -U postgres dashboard_service < backup_20240101.sql

Файлы конфигурации

Всегда сохраняйте копию файла .env в безопасном месте!