mirror of
https://github.com/andrey271192/amnezia-web-pro-deploy.git
synced 2026-09-20 13:50:06 +00:00
docs: prepare private subscriber install
This commit is contained in:
68
README.md
68
README.md
@@ -1,13 +1,14 @@
|
|||||||
# Amnezia Web PRO Deploy
|
# 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`;
|
- текущий релиз: `v1.5.2`;
|
||||||
- old GHCR image больше не используется по умолчанию;
|
- old GHCR image больше не используется по умолчанию;
|
||||||
- legacy GHCR mode оставлен только вручную через `USE_GHCR=1`.
|
- legacy GHCR mode оставлен только вручную через `USE_GHCR=1`.
|
||||||
|
- нужен `GITHUB_TOKEN` с доступом к private repo.
|
||||||
|
|
||||||
## Что делает установщик
|
## Что делает установщик
|
||||||
|
|
||||||
@@ -17,21 +18,28 @@
|
|||||||
- создаёт `.env`;
|
- создаёт `.env`;
|
||||||
- собирает и запускает Docker Compose stack;
|
- собирает и запускает Docker Compose stack;
|
||||||
- поддерживает явный первый пароль admin через `ADMIN_PASSWORD`;
|
- поддерживает явный первый пароль admin через `ADMIN_PASSWORD`;
|
||||||
- не требует GHCR PAT для обычной установки.
|
- не требует GHCR PAT для обычной установки;
|
||||||
|
- требует GitHub token для доступа к private source.
|
||||||
|
|
||||||
## Быстрая установка
|
## Быстрая установка
|
||||||
|
|
||||||
На VPS от root:
|
На VPS от root:
|
||||||
|
|
||||||
```bash
|
```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:
|
То же самое с явным первым паролем admin:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh \
|
export GITHUB_TOKEN='ТОКЕН_ИЗ_BOOSTY'
|
||||||
| sudo ADMIN_PASSWORD='СЛОЖНЫЙ_ПАРОЛЬ' bash
|
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` скачает и запустит рабочий установщик:
|
`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
|
https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Если `GITHUB_TOKEN` не передан, private GitHub вернёт `404` или `403`. Это нормально: repo закрыт.
|
||||||
|
|
||||||
## Почему больше не GHCR
|
## Почему больше не GHCR
|
||||||
|
|
||||||
Старый сценарий тянул private image:
|
Старый сценарий тянул private image:
|
||||||
@@ -54,7 +64,7 @@ ghcr.io/andrey271192/amnezia-admin-pro:v1.0.0
|
|||||||
unexpected status ... 403 Forbidden
|
unexpected status ... 403 Forbidden
|
||||||
```
|
```
|
||||||
|
|
||||||
Это не ошибка VPS и не ошибка Docker. Это отказ GitHub Container Registry. Чтобы не ловить эту ошибку у подписчиков, обычная установка теперь идёт из GitHub source.
|
Это не ошибка VPS и не ошибка Docker. Это отказ GitHub Container Registry. Чтобы не ловить эту ошибку у подписчиков, обычная установка теперь идёт из private GitHub source.
|
||||||
|
|
||||||
Предупреждение Docker:
|
Предупреждение Docker:
|
||||||
|
|
||||||
@@ -69,7 +79,10 @@ WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'
|
|||||||
Оставлен только для ручного использования, если у вас реально есть доступ к package:
|
Оставлен только для ручного использования, если у вас реально есть доступ к package:
|
||||||
|
|
||||||
```bash
|
```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 image, а у token нет доступа к package.
|
||||||
|
|
||||||
Решение: используйте обычную установку без GHCR:
|
Решение: используйте обычную private source установку без GHCR:
|
||||||
|
|
||||||
```bash
|
```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 всё равно падает
|
### `Login Succeeded`, но pull всё равно падает
|
||||||
@@ -135,7 +151,11 @@ docker compose version
|
|||||||
Укажите другой порт при установке основного проекта:
|
Укажите другой порт при установке основного проекта:
|
||||||
|
|
||||||
```bash
|
```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 явно:
|
Задайте новый пароль admin явно:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web-PRO_test/main/install.sh \
|
export GITHUB_TOKEN='ТОКЕН_ИЗ_BOOSTY'
|
||||||
| sudo ADMIN_PASSWORD='НОВЫЙ_ПАРОЛЬ' bash
|
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
|
```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
|
| 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
|
```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
|
```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
|
| sudo REMOVE_DATA=1 REMOVE_DIR=1 bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# One-command installer kept for old links. Default path now installs from the
|
# One-command installer kept for subscriber links. Default path installs from
|
||||||
# open source repo, not the private GHCR image, so subscribers do not hit 403.
|
# the private source repo using GITHUB_TOKEN, not the legacy GHCR image.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
RAW_BASE="${RAW_BASE:-https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main}"
|
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() {
|
need_root() {
|
||||||
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
|
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
|
exit 1
|
||||||
fi
|
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_root
|
||||||
need_cmd curl
|
need_cmd curl
|
||||||
|
|
||||||
if [[ "${USE_GHCR:-0}" != "1" ]]; then
|
if [[ "${USE_GHCR:-0}" != "1" ]]; then
|
||||||
echo "→ GHCR-установка отключена: старый private image часто даёт 403 Forbidden."
|
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"
|
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 ""
|
echo ""
|
||||||
tmp="$(mktemp)"
|
tmp="$(mktemp)"
|
||||||
trap 'rm -f "$tmp"' EXIT
|
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"
|
exec bash "$tmp"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -57,7 +70,8 @@ trim() {
|
|||||||
|
|
||||||
if ! docker compose version >/dev/null 2>&1; then
|
if ! docker compose version >/dev/null 2>&1; then
|
||||||
_lib="$(mktemp)"
|
_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
|
echo "Не удалось скачать вспомогательный файл Compose v2 (${RAW_BASE}/scripts/lib-compose-v2.sh)." >&2
|
||||||
rm -f "${_lib}"
|
rm -f "${_lib}"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -87,7 +101,8 @@ remove_free_amnezia_web_panel() {
|
|||||||
remove_free_amnezia_web_panel
|
remove_free_amnezia_web_panel
|
||||||
|
|
||||||
echo "→ Получаю актуальный тег образа..."
|
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
|
if [[ -z "${IMAGE_TAG}" ]]; then
|
||||||
echo "Не удалось прочитать PRO_IMAGE_TAG с GitHub."
|
echo "Не удалось прочитать PRO_IMAGE_TAG с GitHub."
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
Reference in New Issue
Block a user