Develop #3
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
**A self-hosted, browser-based system monitoring dashboard powered by Angular and Spring Boot.**
|
**Пользовательский веб-дашборд для мониторинга системы на базе Angular и Spring Boot.**
|
||||||
|
|
||||||
|
htop-web объединяет фронтенд на Angular и бэкенд на Spring Boot WebFlux в одном Docker-контейнере, предоставляя веб-интерфейс для просмотра метрик системы и информации о процессах.
|
||||||
|
|
||||||
htop-web packages its Angular frontend and Spring Boot WebFlux backend into a single Docker container, providing a web interface for viewing system metrics and process information.
|
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img alt="Java 21" src="https://img.shields.io/badge/Java-21-orange?logo=openjdk&logoColor=white">
|
<img alt="Java 21" src="https://img.shields.io/badge/Java-21-orange?logo=openjdk&logoColor=white">
|
||||||
<img alt="Spring Boot" src="https://img.shields.io/badge/Spring%20Boot-WebFlux-6DB33F?logo=springboot&logoColor=white">
|
<img alt="Spring Boot" src="https://img.shields.io/badge/Spring%20Boot-WebFlux-6DB33F?logo=springboot&logoColor=white">
|
||||||
@@ -13,55 +13,55 @@ htop-web packages its Angular frontend and Spring Boot WebFlux backend into a si
|
|||||||
<img alt="Docker" src="https://img.shields.io/badge/Docker-Compose-2496ED?logo=docker&logoColor=white">
|
<img alt="Docker" src="https://img.shields.io/badge/Docker-Compose-2496ED?logo=docker&logoColor=white">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## Demo
|
## Демо
|
||||||
|
|
||||||
https://htop-web.jambotron.com/
|
https://htop-web.jambotron.com/
|
||||||
|
|
||||||
## Features
|
## Возможности
|
||||||
|
|
||||||
- **System dashboard** — inspect system information through a browser.
|
- **Системный дашборд** — просмотр информации о системе через браузер.
|
||||||
- **CPU and memory metrics** — view resource measurements exposed by the backend.
|
- **Метрики CPU и памяти** — просмотр показателей использования ресурсов.
|
||||||
- **Process information** — inspect available system process details.
|
- **Информация о процессах** — просмотр деталей системных процессов.
|
||||||
- **Linux system information** — collect additional operating-system metrics.
|
- **Информация о Linux-системе** — дополнительные метрики операционной системы.
|
||||||
- **Reactive backend** — built with Spring WebFlux.
|
- **Реактивный бэкенд** — реализован на Spring WebFlux.
|
||||||
- **Single-container architecture** — Angular production assets are served by Spring Boot.
|
- **Архитектура одного контейнера** — статические файлы Angular обслуживаются Spring Boot.
|
||||||
- **Docker Compose deployment** — build, start, inspect and stop the application with standard Docker commands.
|
- **Развёртывание через Docker Compose** — сборка, запуск, просмотр и остановка приложения стандартными командами Docker.
|
||||||
|
|
||||||
> **Monitoring scope:** metrics depend on the operating system, container runtime and granted permissions. Docker Desktop on Windows runs Linux containers in a virtualized environment; metrics from a container should not be assumed to represent the complete Windows host.
|
> **Область мониторинга:** метрики зависят от операционной системы, среды контейнера и предоставленных прав. Docker Desktop на Windows запускает Linux-контейнеры в виртуальной среде; метрики из контейнера не обязательно отражают полную картину Windows-хоста.
|
||||||
|
|
||||||
## Technology Stack
|
## Технологический стек
|
||||||
|
|
||||||
| Layer | Technology |
|
| Слой | Технология |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Frontend | Angular 22, TypeScript, RxJS |
|
| Фронтенд | Angular 22, TypeScript, RxJS |
|
||||||
| Backend | Java 21, Spring Boot, Spring WebFlux |
|
| Бэкенд | Java 21, Spring Boot, Spring WebFlux |
|
||||||
| System inspection | OSHI |
|
| Сбор метрик | OSHI |
|
||||||
| Build | Gradle, npm |
|
| Сборка | Gradle, npm |
|
||||||
| Deployment | Docker, Docker Compose |
|
| Развёртывание | Docker, Docker Compose |
|
||||||
|
|
||||||
## Architecture
|
## Архитектура
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Browser
|
Браузер
|
||||||
|
|
|
|
||||||
v
|
v
|
||||||
+----------------------+
|
+----------------------+
|
||||||
| htop-web container |
|
| контейнер htop-web |
|
||||||
| |
|
| |
|
||||||
| Spring Boot |
|
| Spring Boot |
|
||||||
| WebFlux |
|
| WebFlux |
|
||||||
| | |
|
| | |
|
||||||
| +-- REST API |
|
| +-- REST API |
|
||||||
| +-- System data |
|
| +-- Метрики |
|
||||||
| +-- Process data |
|
| +-- Процессы |
|
||||||
| |
|
| |
|
||||||
| Angular assets |
|
| Angular (статика) |
|
||||||
+----------------------+
|
+----------------------+
|
||||||
```
|
```
|
||||||
|
|
||||||
The Angular frontend is built for production and packaged into the Spring Boot application's static resources. Both parts are deployed together as one application container.
|
Фронтенд на Angular собирается в production-режиме и упаковывается в статические ресурсы Spring Boot. Обе части развёртываются вместе как один контейнер.
|
||||||
|
|
||||||
## Simple Scenario of using
|
## Пример использования
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
@@ -101,33 +101,32 @@ networks:
|
|||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Быстрый старт
|
||||||
|
|
||||||
## Quick Start
|
### Требования
|
||||||
|
|
||||||
### Requirements
|
- Docker Engine или Docker Desktop.
|
||||||
|
|
||||||
- Docker Engine or Docker Desktop.
|
|
||||||
- Docker Compose.
|
- Docker Compose.
|
||||||
|
|
||||||
No local Java or Node.js is required — the Dockerfile uses multi-stage build to compile everything inside Docker.
|
Локальная установка Java или Node.js не требуется — Dockerfile использует multi-stage сборку, которая компилирует всё внутри Docker.
|
||||||
|
|
||||||
### 1. Build and start the container
|
### 1. Сборка и запуск контейнера
|
||||||
|
|
||||||
From the repository root, run a single command:
|
Из корня репозитория выполните одну команду:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose up -d --build
|
docker compose up -d --build
|
||||||
```
|
```
|
||||||
|
|
||||||
The `--build` flag triggers the multi-stage Docker build that compiles both the Angular frontend and the Spring Boot backend inside Docker.
|
Флаг `--build` запускает multi-stage сборку Docker, которая компилирует фронтенд на Angular и бэкенд на Spring Boot внутри Docker.
|
||||||
|
|
||||||
The default Compose configuration maps host port `8088` to container port `8080`.
|
По умолчанию конфигурация Compose маппит порт `8088` хоста на порт `8080` контейнера.
|
||||||
|
|
||||||
Open [http://localhost:8088](http://localhost:8088).
|
Откройте [http://localhost:8088](http://localhost:8088).
|
||||||
|
|
||||||
### Alternative: Local Gradle build (requires Java 21 and Node.js)
|
### Альтернатива: локальная сборка через Gradle (требуется Java 21 и Node.js)
|
||||||
|
|
||||||
If you need to build locally (for example, to run tests):
|
Если нужно собрать локально (например, для запуска тестов):
|
||||||
|
|
||||||
**Linux:**
|
**Linux:**
|
||||||
|
|
||||||
@@ -145,22 +144,22 @@ cd backend
|
|||||||
cd ..
|
cd ..
|
||||||
```
|
```
|
||||||
|
|
||||||
The configured Gradle build builds the frontend and packages its production assets with the backend.
|
Настроенная сборка Gradle собирает фронтенд и упаковывает его production-активы вместе с бэкендом.
|
||||||
|
|
||||||
### 3. Inspect logs
|
### 3. Просмотр логов
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose ps
|
docker compose ps
|
||||||
docker compose logs -f htop-web
|
docker compose logs -f htop-web
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. Stop the application
|
### 4. Остановка приложения
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose down
|
docker compose down
|
||||||
```
|
```
|
||||||
|
|
||||||
## Project Structure
|
## Структура проекта
|
||||||
|
|
||||||
```text
|
```text
|
||||||
htop-web/
|
htop-web/
|
||||||
@@ -184,24 +183,24 @@ htop-web/
|
|||||||
└── README.md
|
└── README.md
|
||||||
```
|
```
|
||||||
|
|
||||||
## Documentation
|
## Документация
|
||||||
|
|
||||||
- [Installation](docs/INSTALLATION.md)
|
- [Установка](docs/INSTALLATION.md)
|
||||||
- [Configuration](docs/CONFIGURATION.md)
|
- [Конфигурация](docs/CONFIGURATION.md)
|
||||||
- [Architecture](docs/ARCHITECTURE.md)
|
- [Архитектура](docs/ARCHITECTURE.md)
|
||||||
- [Development](docs/DEVELOPMENT.md)
|
- [Разработка](docs/DEVELOPMENT.md)
|
||||||
- [Changelog](CHANGELOG.md)
|
- [Список изменений](CHANGELOG.md)
|
||||||
- [Contributing](CONTRIBUTING.md)
|
- [Участие в проекте](CONTRIBUTING.md)
|
||||||
|
|
||||||
## Security
|
## Безопасность
|
||||||
|
|
||||||
System monitoring data can reveal sensitive information about the environment. Before exposing htop-web beyond a trusted network:
|
Данные мониторинга системы могут раскрыть конфиденциальную информацию об окружении. Перед тем как сделать htop-web доступным за пределами доверенной сети:
|
||||||
|
|
||||||
- Put it behind appropriate authentication and access controls.
|
- Разместите его за аутентификацией и контролем доступа.
|
||||||
- Use HTTPS when accessed over an untrusted network.
|
- Используйте HTTPS при доступе через недоверенную сеть.
|
||||||
- Grant the container only the permissions and host access it actually needs.
|
- Предоставляйте контейнеру только те права и доступ к хосту, которые действительно нужны.
|
||||||
- Avoid publishing credentials, private keys or sensitive environment configuration.
|
- Избегайте публикации учётных данных, приватных ключей или конфиденциальной конфигурации окружения.
|
||||||
|
|
||||||
## License
|
## Лицензия
|
||||||
|
|
||||||
No license has been declared yet. Until a license is added, do not assume that the source code is available for unrestricted reuse or redistribution.
|
Лицензия ещё не указана. Пока лицензия не добавлена, не считайте исходный код доступным для неограниченного повторного использования или распространения.
|
||||||
|
|||||||
Reference in New Issue
Block a user