- VERSION → 1.9.0
- CHANGELOG: запись v1.8.1 (Umbrel как второй источник каталога, адаптер
compose, иконки из галереи, мультиисточниковый синк, фильтр/бейдж источника,
кастомный порт установки, мгновенная чистка инстанса) и v1.9.0 (привязка
IPAM-сетей к серверу/ноде и области с автовыбором в визардах, приём FQDN в
поле хоста ноды)
- README (en/ru): App Store — мультиисточниковый каталог (Runtipi + Umbrel)
- WIKI: источники, env-настройки Umbrel, иконки из галереи, фильтр/бейдж,
параметр source в REST
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Планы разработки не хранятся в репозитории — только пользовательская
документация. Файл сохранён у автора отдельно.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 01:28:36 +05:00
7 changed files with 45 additions and 368 deletions
@@ -4,6 +4,35 @@ All notable changes to PVEmanager will be documented in this file.
---
## [v1.9.0] - 2026-07-09
### 🌐 IPAM
- **Networks bound to server/node and workspace** — an IPAM network can now be tied to a specific Proxmox server/node and to a workspace; each workspace uses one subnet, and the network is auto-selected by the active workspace in the Create Instance and App Store install wizards, so users no longer pick a network manually in the common case
- **Auto-selection in wizards** — the deploy wizards resolve the target network/pool from the current scope and pre-fill it; a missing binding falls back to manual selection
- Migration: IPAM network workspace-binding columns + default flag added via `backend/migrations/migrations.py`
### 🔧 Nodes
- **FQDN/domain accepted in the Proxmox host field** — the Add/Edit Proxmox server form now accepts a domain name or FQDN (not only an IP), resolved when connecting
---
## [v1.8.1] - 2026-07-09
### 🛒 App Store
- **Umbrel as a second catalog source** — the catalog is now multi-source: alongside `runtipi/runtipi-appstore` you can enable `getumbrel/umbrel-apps` (~380 apps). Sources are configured via `APPSTORE_SOURCES` (comma-separated, default `runtipi`); Umbrel app ids are namespaced (`umbrel-<id>`) so catalogs never collide
- **Umbrel compose adapter** — install understands Umbrel manifests: the container port is taken from the `app_proxy` service (`APP_PORT`), the Umbrel runtime services (`app_proxy`, `tor`) are stripped, dangling `depends_on` are cleaned, and the main service port is published on the LXC host so the health-check passes; Runtipi behaviour is unchanged
- **Umbrel icons** — icons are fetched from the separate `getumbrel/umbrel-apps-gallery` repository (`<app-id>/icon.svg`) during sync and cached like Runtipi logos; a gallery fetch failure never fails the catalog sync
- **Multi-source sync** — each source syncs independently (a network failure of one doesn't cancel the others), and the *disappeared → unavailable* pass is scoped per source so a Runtipi sync never touches Umbrel rows
- **Source filter & badge (UI)** — the App Store adds a source filter and a per-card source badge, shown only when more than one source is enabled; catalog metadata now exposes the available `sources`
- **Custom install port** — the install wizard accepts a custom host port (validated 1..65535), overriding the catalog default
- **Instant instance cleanup** — deleting an app soft-deletes the linked VM instance immediately for a snappier UI
- **Data model & settings** — `catalog_apps.source` column (migration 34); new env settings `APPSTORE_SOURCES`, `UMBREL_APPSTORE_REPO`, `UMBREL_APPSTORE_REF`, `UMBREL_APPSTORE_GALLERY_REPO`
@@ -35,7 +35,7 @@ PVEmanager — это самостоятельно размещаемая веб
- **Страница сетей** — унифицированный интерфейс для управления SDN и сетевыми интерфейсами узлов
### App Store
- **Каталог self-hosted приложений** — установка в один клик, каждое приложение — в собственном unprivileged LXC с Docker Compose (1 приложение = 1 LXC); каталог импортируется из`runtipi/runtipi-appstore` (~265 приложений)
- **Каталог self-hosted приложений** — установка в один клик, каждое приложение — в собственном unprivileged LXC с Docker Compose (1 приложение = 1 LXC); мультиисточниковый каталог —`runtipi/runtipi-appstore` (~265 приложений) плюс опциональный `getumbrel/umbrel-apps` (~380 приложений), выбор через `APPSTORE_SOURCES`
- **Мастер установки** — динамические параметры приложения (form_fields), расширенные ресурсы LXC, автогенерация секретов, живой прогресс установки по WebSocket и показ учётных данных один раз
- **Жизненный цикл в «Мои приложения»** — start / stop / restart / логи / удаление, с фоновой реконсиляцией (детект orphaned) и статусом по каждому приложению
- **Обновление и откат** — обновления на основе снапшотов (`docker compose pull`) с health-check и откатом в один клик к pre-update снапшоту
@@ -770,7 +770,7 @@ Containers created from CT templates support reinstall:
## 🛒 App Store
Catalog of self-hosted applications with one-click install. Each app runs in its own **unprivileged LXC** container with **Docker Compose** (1 app = 1 LXC). The catalog is imported from the [`runtipi/runtipi-appstore`](https://github.com/runtipi/runtipi-appstore) repository.
Catalog of self-hosted applications with one-click install. Each app runs in its own **unprivileged LXC** container with **Docker Compose** (1 app = 1 LXC). The catalog is **multi-source**: [`runtipi/runtipi-appstore`](https://github.com/runtipi/runtipi-appstore) (~265 apps) and, optionally, [`getumbrel/umbrel-apps`](https://github.com/getumbrel/umbrel-apps) (~380 apps). Sources are selected via `APPSTORE_SOURCES`; Umbrel app ids are namespaced (`umbrel-<id>`) to avoid collisions.
### Prerequisites
@@ -783,16 +783,21 @@ Catalog of self-hosted applications with one-click install. Each app runs in its
| Variable | Default | Purpose |
|---|---|---|
| `APPSTORE_GOLDEN_TEMPLATE` | — | golden vztmpl volid (required for install) |
- **App Store** screen: card grid with search and category filters; **Refresh catalog** button + last-sync timestamp.
- Automatic sync every 24 h; a broken app entry is skipped without failing the whole sync.
- **App Store** screen: card grid with search and category filters; **Refresh catalog** button + last-sync timestamp. When more than one source is enabled, a **source filter** and a per-card **source badge** (Runtipi / Umbrel) appear.
- Automatic sync every 24 h; a broken app entry is skipped without failing the whole sync. Each source syncs independently and the *disappeared → unavailable* pass is scoped per source.
- Umbrel apps: metadata comes from `umbrel-app.yml`, icons from the gallery repo; on install the Umbrel `app_proxy`/`tor` runtime services are stripped and the container port (`app_proxy → APP_PORT`) is published on the LXC host.
- App page: description, version, source link, install disclaimer, and a compose preview.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.