docs: prepare private subscriber install

This commit is contained in:
Андрей Бобырев
2026-06-06 01:50:35 +03:00
parent a11751b196
commit d37ff8829b
2 changed files with 72 additions and 25 deletions

View File

@@ -1,13 +1,14 @@
# Amnezia Web PRO Deploy
Публичный установщик для **Amnezia Web PRO** на VPS. Репозиторий нужен, чтобы пользователи ставили панель одной командой без доступа к private GHCR image и без ошибки `403 Forbidden`.
Приватный установщик **Amnezia Web PRO** на VPS. Доступ к репозиториям выдаётся подписчикам Boosty.
По умолчанию установка идёт из открытого source repo:
По умолчанию установка идёт из private source repo:
- source: [`andrey271192/amnezia_web-PRO_test`](https://github.com/andrey271192/amnezia_web-PRO_test);
- source: `andrey271192/amnezia_web-PRO_test`;
- текущий релиз: `v1.5.2`;
- old GHCR image больше не используется по умолчанию;
- legacy GHCR mode оставлен только вручную через `USE_GHCR=1`.
- нужен `GITHUB_TOKEN` с доступом к private repo.
## Что делает установщик
@@ -17,21 +18,28 @@
- создаёт `.env`;
- собирает и запускает Docker Compose stack;
- поддерживает явный первый пароль admin через `ADMIN_PASSWORD`;
- не требует GHCR PAT для обычной установки.
- не требует GHCR PAT для обычной установки;
- требует GitHub token для доступа к private source.
## Быстрая установка
На VPS от root:
```bash
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash
export GITHUB_TOKEN='ТОКЕНЗ_BOOSTY'
curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh \
| sudo -E bash
```
То же самое с явным первым паролем admin:
```bash
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh \
| sudo ADMIN_PASSWORD='СЛОЖНЫЙ_ПАРОЛЬ' bash
export GITHUB_TOKEN='ТОКЕНЗ_BOOSTY'
export ADMIN_PASSWORD='СЛОЖНЫЙ_ПАРОЛЬ'
curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh \
| sudo -E bash
```
`quick-install.sh` скачает и запустит рабочий установщик:
@@ -40,6 +48,8 @@ curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy
https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/install.sh
```
Если `GITHUB_TOKEN` не передан, private GitHub вернёт `404` или `403`. Это нормально: repo закрыт.
## Почему больше не GHCR
Старый сценарий тянул private image:
@@ -54,7 +64,7 @@ ghcr.io/andrey271192/amnezia-admin-pro:v1.0.0
unexpected status ... 403 Forbidden
```
Это не ошибка VPS и не ошибка Docker. Это отказ GitHub Container Registry. Чтобы не ловить эту ошибку у подписчиков, обычная установка теперь идёт из GitHub source.
Это не ошибка VPS и не ошибка Docker. Это отказ GitHub Container Registry. Чтобы не ловить эту ошибку у подписчиков, обычная установка теперь идёт из private GitHub source.
Предупреждение Docker:
@@ -69,7 +79,10 @@ WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'
Оставлен только для ручного использования, если у вас реально есть доступ к package:
```bash
USE_GHCR=1 curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo -E bash
export GITHUB_TOKEN='ТОКЕНЗ_BOOSTY'
USE_GHCR=1 curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh \
| sudo -E bash
```
или:
@@ -90,10 +103,13 @@ USE_GHCR=1 sudo -E bash scripts/install.sh
Причина: старый GHCR-сценарий пытается скачать private image, а у token нет доступа к package.
Решение: используйте обычную установку без GHCR:
Решение: используйте обычную private source установку без GHCR:
```bash
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash
export GITHUB_TOKEN='ТОКЕНЗ_BOOSTY'
curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh \
| sudo -E bash
```
### `Login Succeeded`, но pull всё равно падает
@@ -135,7 +151,11 @@ docker compose version
Укажите другой порт при установке основного проекта:
```bash
NGINX_HTTP_PORT=8081 curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/install.sh | sudo -E bash
export GITHUB_TOKEN='ТОКЕНЗ_BOOSTY'
export NGINX_HTTP_PORT=8081
curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/install.sh \
| sudo -E bash
```
### Не входит в панель после переустановки
@@ -143,8 +163,11 @@ NGINX_HTTP_PORT=8081 curl -fsSL https://raw.githubusercontent.com/andrey271192/a
Задайте новый пароль admin явно:
```bash
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/install.sh \
| sudo ADMIN_PASSWORD='НОВЫЙ_ПАРОЛЬ' bash
export GITHUB_TOKEN='ТОКЕНЗ_BOOSTY'
export ADMIN_PASSWORD='НОВЫЙ_ПАРОЛЬ'
curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/install.sh \
| sudo -E bash
```
### Нужна полная переустановка
@@ -152,9 +175,13 @@ curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/m
Удалите панель с данными и поставьте заново:
```bash
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/uninstall.sh \
export GITHUB_TOKEN='ТОКЕНЗ_BOOSTY'
curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/uninstall.sh \
| sudo REMOVE_DATA=1 REMOVE_DIR=1 bash
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash
curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh \
| sudo -E bash
```
## Удаление
@@ -162,13 +189,18 @@ curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy
Обычная остановка панели:
```bash
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/uninstall.sh | sudo bash
export GITHUB_TOKEN='ТОКЕНЗ_BOOSTY'
curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/uninstall.sh \
| sudo -E bash
```
Полная очистка с данными:
```bash
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/uninstall.sh \
export GITHUB_TOKEN='ТОКЕНЗ_BOOSTY'
curl -fsSL -H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/uninstall.sh \
| sudo REMOVE_DATA=1 REMOVE_DIR=1 bash
```

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# One-command installer kept for old links. Default path now installs from the
# open source repo, not the private GHCR image, so subscribers do not hit 403.
# One-command installer kept for subscriber links. Default path installs from
# the private source repo using GITHUB_TOKEN, not the legacy GHCR image.
set -euo pipefail
RAW_BASE="${RAW_BASE:-https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main}"
@@ -8,7 +8,8 @@ SOURCE_INSTALL_URL="${SOURCE_INSTALL_URL:-https://raw.githubusercontent.com/andr
need_root() {
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
echo "Запустите: curl -fsSL ${RAW_BASE}/quick-install.sh | sudo bash"
echo "Запустите с GITHUB_TOKEN:"
echo "curl -fsSL -H \"Authorization: Bearer \${GITHUB_TOKEN}\" ${RAW_BASE}/quick-install.sh | sudo -E bash"
exit 1
fi
}
@@ -20,17 +21,29 @@ need_cmd() {
}
}
curl_auth_args() {
if [[ -n "${GITHUB_TOKEN:-}" ]]; then
printf '%s\n' -H "Authorization: Bearer ${GITHUB_TOKEN}"
fi
}
need_root
need_cmd curl
if [[ "${USE_GHCR:-0}" != "1" ]]; then
echo "→ GHCR-установка отключена: старый private image часто даёт 403 Forbidden."
echo "→ Ставлю Amnezia Web PRO из GitHub: ${SOURCE_INSTALL_URL}"
echo "→ Ставлю Amnezia Web PRO из private GitHub source: ${SOURCE_INSTALL_URL}"
echo "→ Для старого GHCR-сценария запустите: USE_GHCR=1 curl ... | sudo -E bash"
if [[ -z "${GITHUB_TOKEN:-}" ]]; then
echo "Нужен GITHUB_TOKEN с доступом к private repo andrey271192/amnezia_web-PRO_test."
echo "Пример: export GITHUB_TOKEN='ТОКЕНЗ_BOOSTY'"
exit 1
fi
echo ""
tmp="$(mktemp)"
trap 'rm -f "$tmp"' EXIT
curl -fsSL "${SOURCE_INSTALL_URL}" -o "$tmp"
mapfile -t _curl_auth < <(curl_auth_args)
curl -fsSL "${_curl_auth[@]}" "${SOURCE_INSTALL_URL}" -o "$tmp"
exec bash "$tmp"
fi
@@ -57,7 +70,8 @@ trim() {
if ! docker compose version >/dev/null 2>&1; then
_lib="$(mktemp)"
if ! curl -fsSL "${RAW_BASE}/scripts/lib-compose-v2.sh" -o "${_lib}"; then
mapfile -t _curl_auth < <(curl_auth_args)
if ! curl -fsSL "${_curl_auth[@]}" "${RAW_BASE}/scripts/lib-compose-v2.sh" -o "${_lib}"; then
echo "Не удалось скачать вспомогательный файл Compose v2 (${RAW_BASE}/scripts/lib-compose-v2.sh)." >&2
rm -f "${_lib}"
exit 1
@@ -87,7 +101,8 @@ remove_free_amnezia_web_panel() {
remove_free_amnezia_web_panel
echo "→ Получаю актуальный тег образа..."
IMAGE_TAG="$(trim "$(curl -fsSL "${RAW_BASE}/PRO_IMAGE_TAG")")"
mapfile -t _curl_auth < <(curl_auth_args)
IMAGE_TAG="$(trim "$(curl -fsSL "${_curl_auth[@]}" "${RAW_BASE}/PRO_IMAGE_TAG")")"
if [[ -z "${IMAGE_TAG}" ]]; then
echo "Не удалось прочитать PRO_IMAGE_TAG с GitHub."
exit 1