From eb73c55ac23da64e513abf296f53804fc622023d Mon Sep 17 00:00:00 2001 From: Liosha84 Date: Thu, 29 Oct 2026 00:47:28 +0100 Subject: [PATCH 1/3] fix(drone): use full commit SHA for Docker tag and fix non-interactive adduser - Replace bash substring syntax ${DRONE_COMMIT_SHA:0:7} with ${DRONE_COMMIT_SHA} which is supported by Drone YAML variables - Use 'adduser -D -g ""' in Dockerfile to skip interactive prompts for user information during Docker image build --- .drone.yml | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index f90a491..c03123b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,7 @@ steps: context: . registry: gitea.jambotron.com repo: gitea.jambotron.com/liosha84/htop-web - tags: ${DRONE_COMMIT_SHA:0:7},main-latest + tags: ${DRONE_COMMIT_SHA},main-latest username: from_secret: REGISTRY_USERNAME password: diff --git a/Dockerfile b/Dockerfile index f060f49..afa3f07 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ FROM eclipse-temurin:21-jre WORKDIR /app COPY --from=builder /app/build/libs/backend-0.0.1-SNAPSHOT.jar app.jar -RUN adduser --disabled-password --no-create-home appuser && \ +RUN adduser -D -g "" appuser && \ chown appuser:appuser /app USER appuser -- 2.54.0 From 3f9ecc1113ee5c4489ddd3af9dd4abcb960bd169 Mon Sep 17 00:00:00 2001 From: Liosha84 Date: Thu, 29 Oct 2026 00:48:43 +0100 Subject: [PATCH 2/3] chore: translate README.md to Russian --- README.md | 117 +++++++++++++++++++++++++++--------------------------- 1 file changed, 58 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index 7f18909..b887a3e 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ ![htop-web](htop-web.gif) -**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. -

Java 21 Spring Boot @@ -13,55 +13,55 @@ htop-web packages its Angular frontend and Spring Boot WebFlux backend into a si Docker

-## Demo +## Демо 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. -- **Process information** — inspect available system process details. -- **Linux system information** — collect additional operating-system metrics. -- **Reactive backend** — built with Spring WebFlux. -- **Single-container architecture** — Angular production assets are served by Spring Boot. -- **Docker Compose deployment** — build, start, inspect and stop the application with standard Docker commands. +- **Системный дашборд** — просмотр информации о системе через браузер. +- **Метрики CPU и памяти** — просмотр показателей использования ресурсов. +- **Информация о процессах** — просмотр деталей системных процессов. +- **Информация о Linux-системе** — дополнительные метрики операционной системы. +- **Реактивный бэкенд** — реализован на Spring WebFlux. +- **Архитектура одного контейнера** — статические файлы Angular обслуживаются Spring Boot. +- **Развёртывание через 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 | -| Backend | Java 21, Spring Boot, Spring WebFlux | -| System inspection | OSHI | -| Build | Gradle, npm | -| Deployment | Docker, Docker Compose | +| Фронтенд | Angular 22, TypeScript, RxJS | +| Бэкенд | Java 21, Spring Boot, Spring WebFlux | +| Сбор метрик | OSHI | +| Сборка | Gradle, npm | +| Развёртывание | Docker, Docker Compose | -## Architecture +## Архитектура ```text - Browser + Браузер | v +----------------------+ - | htop-web container | + | контейнер htop-web | | | | Spring Boot | | WebFlux | | | | | +-- 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 services: @@ -101,33 +101,32 @@ networks: docker compose up -d ``` +## Быстрый старт -## Quick Start +### Требования -### Requirements - -- Docker Engine or Docker Desktop. +- Docker Engine или Docker Desktop. - 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 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:** @@ -145,22 +144,22 @@ cd backend cd .. ``` -The configured Gradle build builds the frontend and packages its production assets with the backend. +Настроенная сборка Gradle собирает фронтенд и упаковывает его production-активы вместе с бэкендом. -### 3. Inspect logs +### 3. Просмотр логов ```bash docker compose ps docker compose logs -f htop-web ``` -### 4. Stop the application +### 4. Остановка приложения ```bash docker compose down ``` -## Project Structure +## Структура проекта ```text htop-web/ @@ -184,24 +183,24 @@ htop-web/ └── README.md ``` -## Documentation +## Документация -- [Installation](docs/INSTALLATION.md) -- [Configuration](docs/CONFIGURATION.md) -- [Architecture](docs/ARCHITECTURE.md) -- [Development](docs/DEVELOPMENT.md) -- [Changelog](CHANGELOG.md) -- [Contributing](CONTRIBUTING.md) +- [Установка](docs/INSTALLATION.md) +- [Конфигурация](docs/CONFIGURATION.md) +- [Архитектура](docs/ARCHITECTURE.md) +- [Разработка](docs/DEVELOPMENT.md) +- [Список изменений](CHANGELOG.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. -- Grant the container only the permissions and host access it actually needs. -- Avoid publishing credentials, private keys or sensitive environment configuration. +- Разместите его за аутентификацией и контролем доступа. +- Используйте HTTPS при доступе через недоверенную сеть. +- Предоставляйте контейнеру только те права и доступ к хосту, которые действительно нужны. +- Избегайте публикации учётных данных, приватных ключей или конфиденциальной конфигурации окружения. -## 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. +Лицензия ещё не указана. Пока лицензия не добавлена, не считайте исходный код доступным для неограниченного повторного использования или распространения. -- 2.54.0 From ed48cacfbc2ee7dc7f2d949473252b127b4be958 Mon Sep 17 00:00:00 2001 From: Liosha84 Date: Thu, 29 Oct 2026 00:50:55 +0100 Subject: [PATCH 3/3] Revert "chore: translate README.md to Russian" This reverts commit 3f9ecc1113ee5c4489ddd3af9dd4abcb960bd169. --- README.md | 117 +++++++++++++++++++++++++++--------------------------- 1 file changed, 59 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index b887a3e..7f18909 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ ![htop-web](htop-web.gif) -**Пользовательский веб-дашборд для мониторинга системы на базе Angular и Spring Boot.** - -htop-web объединяет фронтенд на Angular и бэкенд на Spring Boot WebFlux в одном Docker-контейнере, предоставляя веб-интерфейс для просмотра метрик системы и информации о процессах. +**A self-hosted, browser-based system monitoring dashboard powered by Angular and Spring Boot.** +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. +

Java 21 Spring Boot @@ -13,55 +13,55 @@ htop-web объединяет фронтенд на Angular и бэкенд на Docker

-## Демо +## Demo https://htop-web.jambotron.com/ -## Возможности +## Features -- **Системный дашборд** — просмотр информации о системе через браузер. -- **Метрики CPU и памяти** — просмотр показателей использования ресурсов. -- **Информация о процессах** — просмотр деталей системных процессов. -- **Информация о Linux-системе** — дополнительные метрики операционной системы. -- **Реактивный бэкенд** — реализован на Spring WebFlux. -- **Архитектура одного контейнера** — статические файлы Angular обслуживаются Spring Boot. -- **Развёртывание через Docker Compose** — сборка, запуск, просмотр и остановка приложения стандартными командами Docker. +- **System dashboard** — inspect system information through a browser. +- **CPU and memory metrics** — view resource measurements exposed by the backend. +- **Process information** — inspect available system process details. +- **Linux system information** — collect additional operating-system metrics. +- **Reactive backend** — built with Spring WebFlux. +- **Single-container architecture** — Angular production assets are served by Spring Boot. +- **Docker Compose deployment** — build, start, inspect and stop the application with standard Docker commands. -> **Область мониторинга:** метрики зависят от операционной системы, среды контейнера и предоставленных прав. Docker Desktop на Windows запускает Linux-контейнеры в виртуальной среде; метрики из контейнера не обязательно отражают полную картину Windows-хоста. +> **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. -## Технологический стек +## Technology Stack -| Слой | Технология | +| Layer | Technology | |---|---| -| Фронтенд | Angular 22, TypeScript, RxJS | -| Бэкенд | Java 21, Spring Boot, Spring WebFlux | -| Сбор метрик | OSHI | -| Сборка | Gradle, npm | -| Развёртывание | Docker, Docker Compose | +| Frontend | Angular 22, TypeScript, RxJS | +| Backend | Java 21, Spring Boot, Spring WebFlux | +| System inspection | OSHI | +| Build | Gradle, npm | +| Deployment | Docker, Docker Compose | -## Архитектура +## Architecture ```text - Браузер + Browser | v +----------------------+ - | контейнер htop-web | + | htop-web container | | | | Spring Boot | | WebFlux | | | | | +-- REST API | - | +-- Метрики | - | +-- Процессы | + | +-- System data | + | +-- Process data | | | - | Angular (статика) | + | Angular assets | +----------------------+ ``` -Фронтенд на Angular собирается в production-режиме и упаковывается в статические ресурсы Spring Boot. Обе части развёртываются вместе как один контейнер. +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. -## Пример использования +## Simple Scenario of using ```yaml services: @@ -101,32 +101,33 @@ networks: docker compose up -d ``` -## Быстрый старт -### Требования +## Quick Start -- Docker Engine или Docker Desktop. +### Requirements + +- Docker Engine or Docker Desktop. - Docker Compose. -Локальная установка Java или Node.js не требуется — Dockerfile использует multi-stage сборку, которая компилирует всё внутри Docker. +No local Java or Node.js is required — the Dockerfile uses multi-stage build to compile everything inside Docker. -### 1. Сборка и запуск контейнера +### 1. Build and start the container -Из корня репозитория выполните одну команду: +From the repository root, run a single command: ```bash docker compose up -d --build ``` -Флаг `--build` запускает multi-stage сборку Docker, которая компилирует фронтенд на Angular и бэкенд на Spring Boot внутри Docker. +The `--build` flag triggers the multi-stage Docker build that compiles both the Angular frontend and the Spring Boot backend inside Docker. -По умолчанию конфигурация Compose маппит порт `8088` хоста на порт `8080` контейнера. +The default Compose configuration maps host port `8088` to container port `8080`. -Откройте [http://localhost:8088](http://localhost:8088). +Open [http://localhost:8088](http://localhost:8088). -### Альтернатива: локальная сборка через Gradle (требуется Java 21 и Node.js) +### Alternative: Local Gradle build (requires Java 21 and Node.js) -Если нужно собрать локально (например, для запуска тестов): +If you need to build locally (for example, to run tests): **Linux:** @@ -144,22 +145,22 @@ cd backend cd .. ``` -Настроенная сборка Gradle собирает фронтенд и упаковывает его production-активы вместе с бэкендом. +The configured Gradle build builds the frontend and packages its production assets with the backend. -### 3. Просмотр логов +### 3. Inspect logs ```bash docker compose ps docker compose logs -f htop-web ``` -### 4. Остановка приложения +### 4. Stop the application ```bash docker compose down ``` -## Структура проекта +## Project Structure ```text htop-web/ @@ -183,24 +184,24 @@ htop-web/ └── README.md ``` -## Документация +## Documentation -- [Установка](docs/INSTALLATION.md) -- [Конфигурация](docs/CONFIGURATION.md) -- [Архитектура](docs/ARCHITECTURE.md) -- [Разработка](docs/DEVELOPMENT.md) -- [Список изменений](CHANGELOG.md) -- [Участие в проекте](CONTRIBUTING.md) +- [Installation](docs/INSTALLATION.md) +- [Configuration](docs/CONFIGURATION.md) +- [Architecture](docs/ARCHITECTURE.md) +- [Development](docs/DEVELOPMENT.md) +- [Changelog](CHANGELOG.md) +- [Contributing](CONTRIBUTING.md) -## Безопасность +## Security -Данные мониторинга системы могут раскрыть конфиденциальную информацию об окружении. Перед тем как сделать htop-web доступным за пределами доверенной сети: +System monitoring data can reveal sensitive information about the environment. Before exposing htop-web beyond a trusted network: -- Разместите его за аутентификацией и контролем доступа. -- Используйте HTTPS при доступе через недоверенную сеть. -- Предоставляйте контейнеру только те права и доступ к хосту, которые действительно нужны. -- Избегайте публикации учётных данных, приватных ключей или конфиденциальной конфигурации окружения. +- Put it behind appropriate authentication and access controls. +- Use HTTPS when accessed over an untrusted network. +- 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. -- 2.54.0