docs: релизы v1.8.1 (Umbrel в App Store) и v1.9.0 (IPAM-привязка, FQDN нод)
All checks were successful
Deploy to Production / Trigger production update (push) Successful in 8s

- 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>
This commit is contained in:
markmorado
2026-07-09 01:32:44 +05:00
parent 4c164bec72
commit ebc1c8429e
5 changed files with 42 additions and 8 deletions

View File

@@ -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`
---
## [v1.8.0] - 2026-07-07
### 🛒 App Store

View File

@@ -35,7 +35,7 @@ PVEmanager is a self-hosted web panel that provides a unified interface for mana
- **Networks page** — unified UI for SDN and node interface management
### App Store
- **Self-hosted app catalog** — one-click install of self-hosted apps, each into its own unprivileged LXC running Docker Compose (1 app = 1 LXC); catalog imported from `runtipi/runtipi-appstore` (~265 apps)
- **Self-hosted app catalog** — one-click install of self-hosted apps, each into its own unprivileged LXC running Docker Compose (1 app = 1 LXC); multi-source catalog — `runtipi/runtipi-appstore` (~265 apps) plus optional `getumbrel/umbrel-apps` (~380 apps), selectable via `APPSTORE_SOURCES`
- **Install wizard** — dynamic app parameters (form fields), advanced LXC resources, auto-generated secrets, live install progress over WebSocket, and one-time credential display
- **My Apps lifecycle** — start / stop / restart / logs / delete, with background reconciliation (orphan detection) and per-app status
- **Update & Rollback** — snapshot-backed updates (`docker compose pull`) with health-check and one-click rollback to the pre-update snapshot

View File

@@ -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 снапшоту

View File

@@ -1 +1 @@
1.8.0
1.9.0

15
WIKI.md
View File

@@ -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) |
| `RUNTIPI_APPSTORE_REPO` | `runtipi/runtipi-appstore` | catalog source |
| `APPSTORE_SOURCES` | `runtipi` | active catalog sources, comma-separated (`runtipi`, `umbrel`) |
| `RUNTIPI_APPSTORE_REPO` | `runtipi/runtipi-appstore` | Runtipi catalog source |
| `RUNTIPI_APPSTORE_REF` | `master` | branch/tag/commit (pin recommended) |
| `UMBREL_APPSTORE_REPO` | `getumbrel/umbrel-apps` | Umbrel catalog source (used when `umbrel` is enabled) |
| `UMBREL_APPSTORE_REF` | `master` | Umbrel branch/tag/commit |
| `UMBREL_APPSTORE_GALLERY_REPO` | `getumbrel/umbrel-apps-gallery` | Umbrel icons source (`<app-id>/icon.svg`) |
| `APPSTORE_DATA_DIR` | `/app/data/appstore` | logo cache (mounted volume) |
| `CATALOG_SYNC_INTERVAL_HOURS` | `24` | auto catalog sync interval |
| `APPSTORE_HOST_ARCH` | `amd64` | target node arch (marks unsupported apps) |
### Catalog
- **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.
### Install
@@ -823,7 +828,7 @@ Manage installed apps: **Start / Stop / Restart / Logs / Delete**, live status,
### REST API
```
GET /api/appstore/catalog # list (q, category)
GET /api/appstore/catalog # list (q, category, source)
GET /api/appstore/catalog/{app_id} # detail
GET /api/appstore/catalog/{app_id}/logo # logo (public)
POST /api/appstore/catalog/sync # manual sync (admin)