mirror of
https://github.com/andrey271192/amnezia-web-pro-deploy.git
synced 2026-09-20 13:50:06 +00:00
fix: read PAT from /dev/tty; quote .env for safe sourcing
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -15,7 +15,14 @@
|
|||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash
|
||||||
```
|
```
|
||||||
|
|
||||||
Скрипт сам возьмёт актуальный тег образа из файла [`PRO_IMAGE_TAG`](PRO_IMAGE_TAG), склонирует этот репозиторий в `/opt/amnezia-web-pro-deploy` и попросит ввести **ключ** (персональный токен для `docker pull` с GHCR). Ввод скрыт.
|
Скрипт сам возьмёт актуальный тег образа из файла [`PRO_IMAGE_TAG`](PRO_IMAGE_TAG), склонирует этот репозиторий в `/opt/amnezia-web-pro-deploy` и попросит ввести **ключ** (персональный токен для `docker pull` с GHCR). Ввод скрыт; запрос идёт через **`/dev/tty`**, чтобы работало при конструкции `curl | sudo bash`.
|
||||||
|
|
||||||
|
Если на сервере интерактив всё равно недоступен — тот же скрипт файлом:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh -o /tmp/amnezia-quick-install.sh
|
||||||
|
sudo bash /tmp/amnezia-quick-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
## Ручной способ (git + .env)
|
## Ручной способ (git + .env)
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,14 @@ sudo apt-get update && sudo apt-get install -y curl git
|
|||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash
|
||||||
```
|
```
|
||||||
|
|
||||||
Скрипт спросит **ключ доступа** (скрытый ввод). Вставьте ключ из блока ниже и нажмите Enter.
|
Скрипт спросит **ключ доступа** (скрытый ввод с клавиатуры). Вставьте ключ из блока ниже и нажмите Enter.
|
||||||
|
|
||||||
|
Если после вставки ключа появляются ошибки — альтернатива (тот же установщик):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh -o /tmp/amnezia-quick-install.sh
|
||||||
|
sudo bash /tmp/amnezia-quick-install.sh
|
||||||
|
```
|
||||||
|
|
||||||
### Ваш ключ (Personal Access Token для GHCR)
|
### Ваш ключ (Personal Access Token для GHCR)
|
||||||
|
|
||||||
|
|||||||
@@ -60,9 +60,19 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Введите ключ доступа к образу (GitHub PAT с правом read:packages)."
|
# При «curl … | sudo bash» stdin — это поток скрипта, а не клавиатура.
|
||||||
echo "Ввод скрыт — символы не отображаются."
|
# Читаем ключ с настоящего терминала; иначе read получает EOF и ломает .env.
|
||||||
read -rs GHCR_KEY
|
if [[ -r /dev/tty ]]; then
|
||||||
|
echo "Введите ключ доступа к образу (GitHub PAT с правом read:packages)."
|
||||||
|
echo "Ввод скрыт — символы не отображаются."
|
||||||
|
IFS= read -rs GHCR_KEY < /dev/tty || true
|
||||||
|
else
|
||||||
|
echo "Нет доступа к /dev/tty (интерактивный ввод недоступен)."
|
||||||
|
echo "Скачайте скрипт и запустите файлом:"
|
||||||
|
echo " curl -fsSL ${RAW_BASE}/quick-install.sh -o /tmp/amnezia-quick-install.sh"
|
||||||
|
echo " sudo bash /tmp/amnezia-quick-install.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
GHCR_KEY="$(trim "${GHCR_KEY}")"
|
GHCR_KEY="$(trim "${GHCR_KEY}")"
|
||||||
@@ -72,15 +82,16 @@ if [[ -z "${GHCR_KEY}" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
umask 077
|
umask 077
|
||||||
cat >"${INSTALL_ROOT}/.env" <<EOF
|
# %q экранирует $ и прочее — безопасно для «source .env» в install.sh
|
||||||
GHCR_IMAGE=${DEFAULT_GHCR_IMAGE}
|
{
|
||||||
IMAGE_TAG=${IMAGE_TAG}
|
printf 'GHCR_IMAGE=%q\n' "${DEFAULT_GHCR_IMAGE}"
|
||||||
GHCR_USERNAME=${DEFAULT_GHCR_USERNAME}
|
printf 'IMAGE_TAG=%q\n' "${IMAGE_TAG}"
|
||||||
GHCR_TOKEN=${GHCR_KEY}
|
printf 'GHCR_USERNAME=%q\n' "${DEFAULT_GHCR_USERNAME}"
|
||||||
HOST_PORT=${HOST_PORT:-8080}
|
printf 'GHCR_TOKEN=%q\n' "${GHCR_KEY}"
|
||||||
CONTAINER_NAME=${CONTAINER_NAME:-amnezia-admin-pro}
|
printf 'HOST_PORT=%q\n' "${HOST_PORT:-8080}"
|
||||||
AWG_CONTAINER=${AWG_CONTAINER:-amnezia-awg2}
|
printf 'CONTAINER_NAME=%q\n' "${CONTAINER_NAME:-amnezia-admin-pro}"
|
||||||
EOF
|
printf 'AWG_CONTAINER=%q\n' "${AWG_CONTAINER:-amnezia-awg2}"
|
||||||
|
} >"${INSTALL_ROOT}/.env"
|
||||||
|
|
||||||
echo "→ Запуск установки из ${INSTALL_ROOT}"
|
echo "→ Запуск установки из ${INSTALL_ROOT}"
|
||||||
exec bash "${INSTALL_ROOT}/scripts/install.sh"
|
exec bash "${INSTALL_ROOT}/scripts/install.sh"
|
||||||
|
|||||||
Reference in New Issue
Block a user