mirror of
https://github.com/andrey271192/amnezia-web-pro-deploy.git
synced 2026-09-20 13:50:06 +00:00
fix: avoid GHCR 403 in default installer
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# Установка Pro с приватного GHCR (без исходников). Публичный репозиторий — только этот скрипт и compose.
|
||||
# Legacy GHCR installer. Default public install now goes through quick-install.sh
|
||||
# -> amnezia_web-PRO_test/install.sh to avoid GHCR 403 for users without package access.
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
@@ -31,6 +32,16 @@ need_docker
|
||||
ensure_compose_v2 || exit 1
|
||||
COMPOSE=(docker compose)
|
||||
|
||||
if [[ "${USE_GHCR:-0}" != "1" ]]; then
|
||||
echo "Этот сценарий использует private GHCR image и может дать 403 Forbidden."
|
||||
echo "Для обычной установки используйте:"
|
||||
echo " curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash"
|
||||
echo ""
|
||||
echo "Если точно нужен старый GHCR-режим, запустите:"
|
||||
echo " USE_GHCR=1 sudo -E bash scripts/install.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "${ENV_FILE}" ]]; then
|
||||
echo "Создайте файл .env из .env.example и вставьте GHCR_* из закрытого поста Boosty:"
|
||||
echo " cp .env.example .env && nano .env"
|
||||
@@ -54,6 +65,7 @@ GHCR_IMAGE="$(trim_crlf "${GHCR_IMAGE:-}")"
|
||||
IMAGE_TAG="$(trim_crlf "${IMAGE_TAG:-}")"
|
||||
GHCR_USERNAME="$(trim_crlf "${GHCR_USERNAME:-}")"
|
||||
GHCR_TOKEN="$(trim_crlf "${GHCR_TOKEN:-}")"
|
||||
ADMIN_PASSWORD="$(trim_crlf "${ADMIN_PASSWORD:-}")"
|
||||
|
||||
: "${GHCR_IMAGE:?Укажите GHCR_IMAGE в .env}"
|
||||
: "${IMAGE_TAG:?Укажите IMAGE_TAG в .env}"
|
||||
@@ -66,8 +78,26 @@ printf '%s\n' "${GHCR_TOKEN}" | docker login ghcr.io -u "${GHCR_USERNAME}" --pas
|
||||
echo "→ pull ${GHCR_IMAGE}:${IMAGE_TAG}"
|
||||
"${COMPOSE[@]}" -f "${COMPOSE_FILE}" --env-file "${ENV_FILE}" pull
|
||||
|
||||
RESET_PANEL_PASSWORD=0
|
||||
if [[ -n "${ADMIN_PASSWORD}" ]]; then
|
||||
echo "→ ADMIN_PASSWORD задан — сбрасываю старый пароль панели в volume."
|
||||
"${COMPOSE[@]}" -f "${COMPOSE_FILE}" --env-file "${ENV_FILE}" run --rm --no-deps --entrypoint sh panel -lc '
|
||||
set -eu
|
||||
if [ -f /data/password.hash ]; then
|
||||
cp -p /data/password.hash "/data/password.hash.bak.$(date -u +%Y%m%dT%H%M%SZ)" 2>/dev/null || true
|
||||
rm -f /data/password.hash
|
||||
rm -f /data/session.secret
|
||||
fi
|
||||
'
|
||||
RESET_PANEL_PASSWORD=1
|
||||
fi
|
||||
|
||||
echo "→ up -d"
|
||||
"${COMPOSE[@]}" -f "${COMPOSE_FILE}" --env-file "${ENV_FILE}" up -d
|
||||
UP_ARGS=(up -d)
|
||||
if [[ "${RESET_PANEL_PASSWORD}" == "1" ]]; then
|
||||
UP_ARGS+=(--force-recreate)
|
||||
fi
|
||||
"${COMPOSE[@]}" -f "${COMPOSE_FILE}" --env-file "${ENV_FILE}" "${UP_ARGS[@]}"
|
||||
|
||||
IP="$(hostname -I 2>/dev/null | awk '{print $1}' || true)"
|
||||
echo ""
|
||||
|
||||
@@ -14,6 +14,19 @@ fi
|
||||
ensure_compose_v2 || exit 1
|
||||
COMPOSE=(docker compose)
|
||||
|
||||
if [[ "${USE_GHCR:-0}" != "1" ]]; then
|
||||
echo "Этот update.sh относится к legacy GHCR-режиму и может дать 403 Forbidden."
|
||||
echo "Для source-установки обновляйтесь из панели или вручную:"
|
||||
echo " cd /opt/amnezia-web-pro"
|
||||
echo " git pull"
|
||||
echo " docker compose build"
|
||||
echo " docker compose up -d"
|
||||
echo ""
|
||||
echo "Если точно нужен старый GHCR-режим, запустите:"
|
||||
echo " USE_GHCR=1 sudo -E bash scripts/update.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -a
|
||||
# shellcheck disable=SC1090
|
||||
source "${ENV_FILE}"
|
||||
@@ -28,9 +41,29 @@ trim_crlf() {
|
||||
}
|
||||
GHCR_USERNAME="$(trim_crlf "${GHCR_USERNAME:-}")"
|
||||
GHCR_TOKEN="$(trim_crlf "${GHCR_TOKEN:-}")"
|
||||
ADMIN_PASSWORD="$(trim_crlf "${ADMIN_PASSWORD:-}")"
|
||||
|
||||
printf '%s\n' "${GHCR_TOKEN}" | docker login ghcr.io -u "${GHCR_USERNAME}" --password-stdin
|
||||
"${COMPOSE[@]}" -f "${COMPOSE_FILE}" --env-file "${ENV_FILE}" pull
|
||||
"${COMPOSE[@]}" -f "${COMPOSE_FILE}" --env-file "${ENV_FILE}" up -d
|
||||
|
||||
RESET_PANEL_PASSWORD=0
|
||||
if [[ -n "${ADMIN_PASSWORD}" ]]; then
|
||||
echo "→ ADMIN_PASSWORD задан — сбрасываю старый пароль панели в volume."
|
||||
"${COMPOSE[@]}" -f "${COMPOSE_FILE}" --env-file "${ENV_FILE}" run --rm --no-deps --entrypoint sh panel -lc '
|
||||
set -eu
|
||||
if [ -f /data/password.hash ]; then
|
||||
cp -p /data/password.hash "/data/password.hash.bak.$(date -u +%Y%m%dT%H%M%SZ)" 2>/dev/null || true
|
||||
rm -f /data/password.hash
|
||||
rm -f /data/session.secret
|
||||
fi
|
||||
'
|
||||
RESET_PANEL_PASSWORD=1
|
||||
fi
|
||||
|
||||
UP_ARGS=(up -d)
|
||||
if [[ "${RESET_PANEL_PASSWORD}" == "1" ]]; then
|
||||
UP_ARGS+=(--force-recreate)
|
||||
fi
|
||||
"${COMPOSE[@]}" -f "${COMPOSE_FILE}" --env-file "${ENV_FILE}" "${UP_ARGS[@]}"
|
||||
|
||||
echo "Обновлено."
|
||||
|
||||
Reference in New Issue
Block a user