mirror of
https://github.com/MrTheory/os-amneziawg.git
synced 2026-11-05 00:27:28 +00:00
[PR #10] [MERGED] v3.0.0: multi-instance — несколько туннелей одновременно #16
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
MrTheory/os-amneziawg#16
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/MrTheory/os-amneziawg/pull/10
Author: @SergeyLimonov
Created: 6/5/2026
Status: ✅ Merged
Merged: 6/6/2026
Merged by: @MrTheory
Base:
develop← Head:feature/multi-instance📝 Commits (10+)
e6fde4eCLAUDE.md was removed from git indexff23566Test Connection error fix250f8fefeat: multi-instance tunnels — ArrayField model, migration, CRUD API, grid UI9588995fix: flatten ArrayField mount (no double instances nesting), run migrations in install.sh869599cfix: empty Edit dialog (hyphen in grid id), Import add-button selector for Tabulator, orphaned runtime conf sweep8359e3cfeat: per-row Start/Stop tunnel buttons, granular watchdog recovery57d6f12feat: tunnel selector on Diagnostics tab (multi-instance)b2d98c4feat: Test Connection failure hints (BACKLOG #2)fc02506docs: v3.0.0 — multi-instance documentation overhaul638e855fix: normalize multi-layer HTML encoding of I1-I5 during migration (BACKLOG #5)📊 Changes
19 files changed (+1660 additions, -698 deletions)
View changed files
📝
.gitignore(+1 -0)➖
CLAUDE.md(+0 -93)📝
Changelog.md(+66 -2)📝
PREREQUISITES.md(+18 -6)📝
README.md(+145 -47)📝
install.sh(+60 -82)📝
plugin/etc/inc/plugins.inc.d/amneziawg.inc(+35 -8)📝
plugin/mvc/app/controllers/OPNsense/AmneziaWG/Api/InstanceController.php(+282 -111)📝
plugin/mvc/app/controllers/OPNsense/AmneziaWG/Api/ServiceController.php(+71 -5)📝
plugin/mvc/app/controllers/OPNsense/AmneziaWG/IndexController.php(+10 -2)📝
plugin/mvc/app/controllers/OPNsense/AmneziaWG/forms/dialogInstance.xml(+104 -12)📝
plugin/mvc/app/models/OPNsense/AmneziaWG/Instance.xml(+146 -141)➕
plugin/mvc/app/models/OPNsense/AmneziaWG/Migrations/M2_0_0.php(+105 -0)📝
plugin/mvc/app/views/OPNsense/AmneziaWG/general.volt(+212 -73)📝
plugin/scripts/AmneziaWG/amneziawg-ifstats.php(+29 -18)📝
plugin/scripts/AmneziaWG/amneziawg-service-control.php(+207 -57)📝
plugin/scripts/AmneziaWG/amneziawg-testconnect.php(+106 -25)📝
plugin/scripts/AmneziaWG/amneziawg-watchdog.php(+43 -14)📝
plugin/service/conf/actions.d/actions_amneziawg.conf(+20 -2)📄 Description
Что это
Релиз v3.0.0: поддержка нескольких AmneziaWG-туннелей одновременно (
awg0–awg99) — задача BACKLOG #1, плюс BACKLOG #2, #3, #5. Закрывает основной запрос: два и более независимых VPN-провайдера / разные туннели для разных Firewall Rules.Breaking change: миграция конфигурации
Плоская модель
//OPNsense/amneziawg/instanceзаменена на ArrayField//OPNsense/amneziawg/instances/instance(UUID-ключи). При обновлении с 2.x:M2_0_0выполняется автоматически на шаге 4install.sh(черезrun_migrations.php— миграции моделей OPNsense НЕ запускаются при инстанцировании);private.keyпереименовывается в<uuid>.key;Основные изменения
UI (вкладка Tunnels вместо Instance):
dialogInstance.xmlкормит и грид, и диалог);Engine:
start_instance/stop_instance/sentinel_repairconfigd-действия;/var/run/amneziawg_stopped_awgN.flag) — per-row Stop переживает watchdog; сервисные Start/Restart/Apply сбрасывают их;awgN.confпри остановке (SEC-1: удалённый туннель не оставляет ключ на диске);Diagnostics:
awgN;interface_down/handshake_stale/dns_failure/no_route/remote_unresponsive) и показывает подсказку следующего шага (BACKLOG #2).Исправления:
mapDataToFormUIматчит форму поid.split('-')[0]— id гридов теперь без дефисов;button.command-add, fallback для 25.x);Документация: README (multi-instance, Gateway в 26.x, файловая структура), Changelog v3.0.0 + бэкфил v2.7.0.
Тестирование (OPNsense 26.1, FreeBSD 14.3, amnezia-kmod 2.0.11)
🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.