docs: Clean up documentation structure
- Removed 24 outdated documentation files from root - Created simple navigation README in root - All comprehensive documentation now in ospabhost/ directory: - ospabhost/README.md - complete project docs - ospabhost/CONTRIBUTIONS.md - contributor guide - Keeps project structure clean and organized
This commit is contained in:
368
README.md
368
README.md
@@ -1,366 +1,34 @@
|
||||
# Ospabhost 8.1 - Server Management Platform
|
||||
# Ospabhost 8.1
|
||||
|
||||
Полнофункциональная платформа управления серверами на базе Proxmox VE с поддержкой LXC контейнеров.
|
||||
VPS hosting platform with Proxmox VE integration.
|
||||
|
||||
## Возможности
|
||||
## 📁 Project Structure
|
||||
|
||||
### Управление серверами
|
||||
- ✅ Создание LXC контейнеров
|
||||
- ✅ Управление состоянием (запуск, остановка, перезагрузка)
|
||||
- ✅ Изменение конфигурации (CPU, RAM, диск)
|
||||
- ✅ Управление снэпшотами (создание, восстановление, удаление)
|
||||
- ✅ Доступ к консоли через noVNC
|
||||
- ✅ Смена root-пароля
|
||||
This is a monorepo containing:
|
||||
|
||||
### Мониторинг
|
||||
- ✅ Real-time статистика серверов через WebSocket
|
||||
- ✅ Графики использования ресурсов (CPU, RAM, диск, сеть)
|
||||
- ✅ Автоматические алерты при превышении лимитов (>90%)
|
||||
- ✅ Email уведомления о проблемах
|
||||
- ✅ Периодическая проверка состояния (каждые 30 секунд)
|
||||
- **`ospabhost/`** - Main application (backend + frontend)
|
||||
- **`Manuals/`** - Additional documentation and guides
|
||||
|
||||
### Пользовательский интерфейс
|
||||
- ✅ Панель управления серверами
|
||||
- ✅ Real-time обновления статуса
|
||||
- ✅ Интерактивные графики
|
||||
- ✅ Модальные окна для настроек
|
||||
- ✅ Управление снэпшотами
|
||||
- ✅ Встроенная консоль
|
||||
## 📖 Documentation
|
||||
|
||||
## Технологический стек
|
||||
**All documentation is located in the `ospabhost/` directory:**
|
||||
|
||||
### Backend
|
||||
- TypeScript
|
||||
- Express.js
|
||||
- Prisma ORM
|
||||
- Socket.IO (WebSocket)
|
||||
- Nodemailer (Email)
|
||||
- Axios (Proxmox API)
|
||||
- MySQL/MariaDB
|
||||
- **[Main README](./ospabhost/README.md)** - Complete project documentation
|
||||
- **[Contributing Guide](./ospabhost/CONTRIBUTIONS.md)** - How to contribute
|
||||
|
||||
### Frontend
|
||||
- React 19
|
||||
- TypeScript
|
||||
- Vite
|
||||
- TailwindCSS
|
||||
- Socket.IO Client
|
||||
- Recharts (графики)
|
||||
- React Router DOM
|
||||
## 🚀 Quick Start
|
||||
|
||||
## Установка и настройка
|
||||
|
||||
### Требования
|
||||
- Node.js 18+
|
||||
- MySQL/MariaDB
|
||||
- Proxmox VE 7+ с настроенными API токенами
|
||||
- SMTP сервер (опционально, для email уведомлений)
|
||||
|
||||
### Backend
|
||||
|
||||
1. Перейдите в директорию backend:
|
||||
```bash
|
||||
cd ospabhost/backend
|
||||
cd ospabhost
|
||||
```
|
||||
|
||||
2. Установите зависимости:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
Then follow the instructions in [ospabhost/README.md](./ospabhost/README.md).
|
||||
|
||||
3. Создайте файл `.env` с конфигурацией:
|
||||
```env
|
||||
# Database
|
||||
DATABASE_URL="mysql://user:password@localhost:3306/ospabhost"
|
||||
## 📞 Support
|
||||
|
||||
# Proxmox Configuration
|
||||
PROXMOX_API_URL="https://your-proxmox.example.com:8006/api2/json"
|
||||
PROXMOX_TOKEN_ID="user@pam!token-id"
|
||||
PROXMOX_TOKEN_SECRET="your-secret-token"
|
||||
PROXMOX_NODE="proxmox"
|
||||
PROXMOX_WEB_URL="https://your-proxmox.example.com:8006"
|
||||
- **Email:** support@ospab.host
|
||||
- **Telegram:** @ospab_support
|
||||
|
||||
# Server Configuration
|
||||
PORT=5000
|
||||
---
|
||||
|
||||
# JWT Secret
|
||||
JWT_SECRET="your-jwt-secret-key-change-this"
|
||||
|
||||
# SMTP Configuration (optional)
|
||||
SMTP_HOST="smtp.gmail.com"
|
||||
SMTP_PORT=587
|
||||
SMTP_USER="your-email@gmail.com"
|
||||
SMTP_PASS="your-app-password"
|
||||
```
|
||||
|
||||
4. Создайте базу данных и примените миграции:
|
||||
```bash
|
||||
npx prisma migrate dev
|
||||
npx prisma db seed
|
||||
```
|
||||
|
||||
5. Соберите проект:
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
6. Запустите сервер:
|
||||
```bash
|
||||
# Development режим с hot-reload
|
||||
npm run dev
|
||||
|
||||
# Production режим
|
||||
npm start
|
||||
```
|
||||
|
||||
### Frontend
|
||||
|
||||
1. Перейдите в директорию frontend:
|
||||
```bash
|
||||
cd ospabhost/frontend
|
||||
```
|
||||
|
||||
2. Установите зависимости:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
3. Запустите dev-сервер:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
4. Или соберите для production:
|
||||
```bash
|
||||
npm run build
|
||||
npm run preview
|
||||
```
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
ospabhost/
|
||||
├── backend/
|
||||
│ ├── src/
|
||||
│ │ ├── modules/
|
||||
│ │ │ ├── auth/ # Авторизация и аутентификация
|
||||
│ │ │ ├── server/ # Управление серверами
|
||||
│ │ │ │ ├── proxmoxApi.ts # Интеграция с Proxmox
|
||||
│ │ │ │ ├── server.controller.ts
|
||||
│ │ │ │ ├── server.routes.ts
|
||||
│ │ │ │ └── monitoring.service.ts # WebSocket мониторинг
|
||||
│ │ │ ├── notification/ # Email уведомления
|
||||
│ │ │ ├── tariff/ # Тарифные планы
|
||||
│ │ │ ├── os/ # Операционные системы
|
||||
│ │ │ ├── ticket/ # Система тикетов
|
||||
│ │ │ └── check/ # Проверка платежей
|
||||
│ │ ├── index.ts # Точка входа, Socket.IO сервер
|
||||
│ │ └── prisma/
|
||||
│ │ ├── schema.prisma # Схема БД
|
||||
│ │ └── seed.ts # Начальные данные
|
||||
│ ├── API_DOCUMENTATION.md # Документация API
|
||||
│ └── package.json
|
||||
└── frontend/
|
||||
├── src/
|
||||
│ ├── pages/
|
||||
│ │ └── dashboard/
|
||||
│ │ └── serverpanel.tsx # Главная панель управления
|
||||
│ ├── hooks/
|
||||
│ │ └── useSocket.ts # WebSocket хуки
|
||||
│ ├── components/ # Переиспользуемые компоненты
|
||||
│ └── context/ # React контексты
|
||||
└── package.json
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
Полная документация API доступна в файле [API_DOCUMENTATION.md](backend/API_DOCUMENTATION.md).
|
||||
|
||||
Основные эндпоинты:
|
||||
- `GET /api/server` - Список серверов
|
||||
- `GET /api/server/:id/status` - Статус и статистика
|
||||
- `POST /api/server/create` - Создание сервера
|
||||
- `POST /api/server/:id/start` - Запуск
|
||||
- `POST /api/server/:id/stop` - Остановка
|
||||
- `POST /api/server/:id/restart` - Перезагрузка
|
||||
- `PUT /api/server/:id/resize` - Изменение конфигурации
|
||||
- `POST /api/server/:id/snapshots` - Создание снэпшота
|
||||
- `GET /api/server/:id/snapshots` - Список снэпшотов
|
||||
- `POST /api/server/:id/snapshots/rollback` - Восстановление
|
||||
- `DELETE /api/server/:id/snapshots` - Удаление снэпшота
|
||||
|
||||
## WebSocket Events
|
||||
|
||||
Подключение к `http://localhost:5000`:
|
||||
|
||||
```javascript
|
||||
import { io } from 'socket.io-client';
|
||||
|
||||
const socket = io('http://localhost:5000');
|
||||
|
||||
// Подписка на обновления сервера
|
||||
socket.emit('subscribe-server', serverId);
|
||||
|
||||
// Получение статистики
|
||||
socket.on('server-stats', (data) => {
|
||||
console.log('Stats:', data);
|
||||
});
|
||||
|
||||
// Получение алертов
|
||||
socket.on('server-alerts', (data) => {
|
||||
console.log('Alerts:', data);
|
||||
});
|
||||
```
|
||||
|
||||
## Система мониторинга
|
||||
|
||||
Мониторинг работает автоматически после запуска сервера:
|
||||
|
||||
1. **Периодическая проверка** - каждые 30 секунд проверяет все активные серверы
|
||||
2. **Обновление БД** - сохраняет метрики (CPU, RAM, диск, сеть) в базу данных
|
||||
3. **WebSocket broadcast** - отправляет обновления подключенным клиентам
|
||||
4. **Алерты** - генерирует предупреждения при превышении 90% использования ресурсов
|
||||
5. **Email уведомления** - отправляет письма при критических событиях
|
||||
|
||||
## Email уведомления
|
||||
|
||||
Система отправляет уведомления о:
|
||||
- Создании нового сервера
|
||||
- Превышении лимитов ресурсов (CPU/RAM/Disk > 90%)
|
||||
- Приближении срока оплаты
|
||||
- Ответах в тикетах поддержки
|
||||
|
||||
Для работы email требуется настройка SMTP в `.env`.
|
||||
|
||||
## Безопасность
|
||||
|
||||
- JWT токены для аутентификации
|
||||
- Bcrypt для хеширования паролей
|
||||
- CORS настроен для локальной разработки
|
||||
- Proxmox API токены вместо паролей
|
||||
- Автоматическая генерация безопасных паролей
|
||||
|
||||
## Разработка
|
||||
|
||||
### Запуск в dev режиме
|
||||
|
||||
Backend:
|
||||
```bash
|
||||
cd ospabhost/backend
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Frontend:
|
||||
```bash
|
||||
cd ospabhost/frontend
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### Сборка
|
||||
|
||||
Backend:
|
||||
```bash
|
||||
cd ospabhost/backend
|
||||
npm run build
|
||||
```
|
||||
|
||||
Frontend:
|
||||
```bash
|
||||
cd ospabhost/frontend
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Линтинг
|
||||
|
||||
Frontend:
|
||||
```bash
|
||||
cd ospabhost/frontend
|
||||
npm run lint
|
||||
```
|
||||
|
||||
## Примеры использования
|
||||
|
||||
### Создание сервера
|
||||
|
||||
```javascript
|
||||
const createServer = async () => {
|
||||
const response = await fetch('http://localhost:5000/api/server/create', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': `Bearer ${token}`
|
||||
},
|
||||
body: JSON.stringify({
|
||||
osId: 1,
|
||||
tariffId: 2
|
||||
})
|
||||
});
|
||||
const server = await response.json();
|
||||
console.log('Server created:', server);
|
||||
};
|
||||
```
|
||||
|
||||
### Создание снэпшота
|
||||
|
||||
```javascript
|
||||
const createSnapshot = async (serverId) => {
|
||||
const response = await fetch(`http://localhost:5000/api/server/${serverId}/snapshots`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': `Bearer ${token}`
|
||||
},
|
||||
body: JSON.stringify({
|
||||
snapname: 'backup-before-update',
|
||||
description: 'Before major system update'
|
||||
})
|
||||
});
|
||||
const result = await response.json();
|
||||
console.log('Snapshot created:', result);
|
||||
};
|
||||
```
|
||||
|
||||
### Real-time мониторинг
|
||||
|
||||
```javascript
|
||||
import { useServerStats } from './hooks/useSocket';
|
||||
|
||||
function ServerMonitor({ serverId }) {
|
||||
const { stats, alerts, connected } = useServerStats(serverId);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div>Status: {connected ? 'Connected' : 'Disconnected'}</div>
|
||||
<div>CPU: {stats?.data?.cpu * 100}%</div>
|
||||
<div>RAM: {stats?.data?.memory?.usage}%</div>
|
||||
{alerts.map(alert => (
|
||||
<div key={alert.type}>Alert: {alert.message}</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Backend не подключается к Proxmox
|
||||
- Проверьте PROXMOX_API_URL в .env
|
||||
- Убедитесь, что API токен действителен
|
||||
- Проверьте сетевую доступность Proxmox сервера
|
||||
|
||||
### WebSocket не подключается
|
||||
- Убедитесь, что backend запущен
|
||||
- Проверьте CORS настройки в backend/src/index.ts
|
||||
- Проверьте firewall rules
|
||||
|
||||
### Email уведомления не отправляются
|
||||
- Проверьте SMTP настройки в .env
|
||||
- Для Gmail используйте App Password, не обычный пароль
|
||||
- Проверьте логи сервера на ошибки
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT
|
||||
|
||||
## Поддержка
|
||||
|
||||
Для вопросов и поддержки создайте issue в репозитории или свяжитесь с командой разработки.
|
||||
**© 2025 Ospab Hosting. All rights reserved.**
|
||||
|
||||
Reference in New Issue
Block a user