Commit Graph

27 Commits

Author SHA1 Message Date
andrey271192
546c1127f8 feat: deploy AmneziaWG instances from the panel (no Amnezia app)
Add a "Протоколы / инстансы" section that spins up AmneziaWG server
containers straight from the panel, with port + variant selection —
no need to run the Amnezia desktop app to set up the server.

Core (scripts/awg-instance.sh):
- create <awg2|awg|legacy> <port> [name]: pulls the public image
  (amneziavpn/amneziawg-go:2.0.0 / :0.2.18 / amneziavpn/amnezia-wg),
  generates server keys + psk, writes awg0.conf/wg0.conf with a free
  10.8.<N>.0/24 subnet (scans running containers to avoid clashes),
  random AmneziaWG obfuscation (Jc/Jmin/Jmax/S1..S4/H1..H4 as single
  uint32 values — ranges break awg setconf), and a start.sh that
  brings the iface up via userspace amneziawg-go + NAT MASQUERADE.
  remove <name>, list.

Backend (server.js):
- Profiles are now dynamic: env AWG_PROFILES merged with managed
  instances persisted in /data/instances.json (getProfiles()), so a
  new instance is usable immediately without restarting the panel.
- /api/instances (list with running/peers), /api/instances/create,
  /delete, /stop, /start. create runs the script then registers the
  profile; delete tears down container + data + profile.

Infra:
- Dockerfile: add bash iproute2 coreutils, COPY scripts.
- install.sh: mkdir /opt/amnezia-instances and bind-mount it into the
  panel so docker-in-docker bind paths line up.

UI (index.html/app.js/styles.css):
- Cards per instance (icon, NEW badge, description, РАБОТАЕТ/ОСТАНОВЛЕН,
  port, connections) with Стоп/Старт, Подключения (switches the active
  instance), Удалить; plus a create form (variant + port).

Verified end to end on a live VPS: create awg2/awg/legacy instances,
interfaces come up, a client created on a new instance gets the right
subnet (10.8.20.2) and Endpoint (host:51850).
2026-06-16 21:33:02 +03:00
andrey271192
c49e7eea8d feat: direct client creation + auto-detect AWG container
Add "Новый клиент" (direct) flow alongside cascade:
- server.js: POST /api/clients/create — Endpoint = this server's
  public IP:ListenPort (CLIENT_CONFIG_ENDPOINT or request host),
  reuses the same key/peer/conf pipeline as create-cascade.
- public/index.html: "Новый клиент" panel with #direct-form
  (name + optional tunnel IP).
- public/app.js: downloadDirectConf() handler + form binding.

install.sh hardening so fresh installs work out of the box:
- Auto-detect a single amnezia-awg* container (e.g. amnezia-awg2,
  Amnezia AWG 2.0 default) -> AWG_CONTAINER, instead of the fixed
  "amnezia-awg" default that mismatched and blocked client ops.
- Auto-default CLIENT_CONFIG_ENDPOINT to the host primary IP so
  direct .conf exports get a correct Endpoint without manual env.

Fixes "cannot create users" on servers whose WG container is
named amnezia-awg2.
2026-06-16 19:30:11 +03:00
Андрей Бобырев
d21419cfdb fix: default awg container name 2026-06-06 14:46:37 +03:00
Андрей Бобырев
05e6d007e2 docs: make pro repo public install source 2026-06-06 14:16:56 +03:00
Андрей Бобырев
0e7a7df636 feat(mtproto): Telegram proxy panel and /api routes
- Docker telegrammessenger/proxy: install/restart/remove from UI
- GET/POST /api/mtproto/*, UI_HIDE_MTPROTO / UI_HIDE_SECTIONS=mtproto
- install.sh vars MTPRO_*; /health returns version; docs

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-15 04:39:19 +03:00
Андрей Бобырев
845683b986 fix(install): auth tarball download with GITHUB_TOKEN
Private repos return 404 on archive/refs/heads/<branch>.tar.gz
without Authorization. Use api.github.com/.../tarball/<ref> when
GITHUB_TOKEN/GH_TOKEN is set; tolerate the SHA-suffixed top dir.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-15 02:46:55 +03:00
Андрей Бобырев
39a74e5f0a fix(install): align with amnezia_web main (curl opts, port, AWG count)
Avoid pipefail exits on stopped container and zero AWG grep matches;
add curl timeouts and tarball override for flaky GitHub.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-15 02:00:50 +03:00
Андрей Бобырев
c454b9e701 feat: split community (read-only) vs PRO panel editions
Add AMNEZIA_EDITION=community with API/UI locks for client mutations,
export, cascade, WARP and host time sync; banner + Boosty CTA.
Install passes edition from AMNEZIA_EDITION env or .amnezia-panel-edition.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 21:51:24 +03:00
Андрей Бобырев
16366b2f74 fix: correct repo slug amnezia_web-PRO (not mnezia)
URLs and default GITHUB_REPO must match github.com/andrey271192/amnezia_web-PRO.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 21:40:23 +03:00
Андрей Бобырев
76c4af30f2 fix: use GitHub slug mnezia_web-PRO in URLs and branding
Amnezia_web-PRO path 404s; canonical repo is andrey271192/mnezia_web-PRO.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 21:38:51 +03:00
Андрей Бобырев
7995afca0e chore: rename project/repo slug to Amnezia_web-PRO
Update default GITHUB_REPO, README install URLs, package repository,
and footer GitHub link.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 21:36:30 +03:00
Андрей Бобырев
61af58a9cf docs: clarify AWG_PROFILES with sudo and snapshot file
Document sudo -E, avoid broken curl | bash -c wrappers, and file-based
profiles. Warn during install when multiple amnezia-awg* containers run
without AWG_PROFILES.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 21:31:02 +03:00
Андрей Бобырев
62f40f92fb feat(warp): host install/uninstall via panel SSH + clarify status
POST /api/warp/host-setup runs warp-amnezia.sh on VPS root SSH.
UI buttons when sshpass available; explain missing warp.conf status.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 20:18:23 +03:00
Андрей Бобырев
8f1d7a7c4a feat(ui): optional UI_HIDE_* panels; doc WARP free vs paid plans
Hide users/warp/cascade blocks via env; block warp/cascade APIs when hidden.
install.sh passes UI_HIDE_* and restores from previous container on upgrade.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 20:01:43 +03:00
Андрей Бобырев
50558aff63 docsfeat(warp): clarify optional install + add uninstall command
README/panel-guide/UI explain WARP is not required; document uninstall.
Add warp-amnezia.sh uninstall to strip warp conf, rules, and start.sh block.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 19:53:14 +03:00
Андрей Бобырев
7c6a65c284 docs(ui): drop Telegram/QR meta from WARP user-facing copy
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 19:49:16 +03:00
Андрей Бобырев
35497aa60e docs: align README, panel-guide, and installer messages
Describe :80 landing vs :HOST_PORT admin; export filename ASCII note.
Fix install.sh echoes that still referred to a support footer on landing.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 19:45:46 +03:00
Андрей Бобырев
227bb94627 fix: preserve AWG_PROFILES on reinstall; GET export URL + token
- install.sh: snapshot /root/amnezia-admin.awg-profiles.json + restore from old container
- GET /api/clients/export-config (+ profileId); optional EXPORT_CONFIG_SECRET
- UI: direct link, copy URL, hint when last_config missing

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 18:32:51 +03:00
Андрей Бобырев
75a3e56354 feat: export client .conf from last_config
Adds POST /api/clients/export-config, UI button when exportAvailable, CLIENT_* env for Endpoint/DNS in install.sh.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 18:27:10 +03:00
Андрей Бобырев
6f6fb5f9b9 feat: Cloudflare WARP routing for AmneziaWG
Web toggles per IPv4 peer; wgcf install script on host (no Telegram/QR).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 18:00:39 +03:00
Андрей Бобырев
40d236c228 fix(ui): separate server vs browser TZ; highlight sync from device
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 17:08:07 +03:00
Андрей Бобырев
dfae0d8256 feat(time): server TZ display; optional SSH host sync via root pw
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 16:44:01 +03:00
Андрей Бобырев
860a56dc5d feat: AWG profile switcher; scheduled tunnel disconnect
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 16:37:27 +03:00
Андрей Бобырев
73b7d104d4 fix(install): preserve HOST_PORT on upgrade; NO_CACHE; bust tarball fetch
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 16:03:28 +03:00
Андрей Бобырев
5a5fc8b240 feat: nginx landing on :80 with Kaskad support footer; sync admin footer text
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 15:51:52 +03:00
Андрей Бобырев
08f9ba7b45 chore: point repo URLs to Amnezia_web on GitHub
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 15:44:10 +03:00
Андрей Бобырев
ede0c66415 docs: publish install/uninstall scripts, README, FUNDING, support footer
Add curl-one-liner install with generated password file; uninstall flags for image/data/src; optional ALLOW_DEFAULT_PASSWORD; footer mirroring GitHub/Boosty/Telegram layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 15:40:55 +03:00