Files
amnezia-web-pro-deploy/scripts/install.sh
Андрей Бобырев a031e9c579 Initial public deploy bundle (GHCR + Boosty)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 23:18:43 +03:00

74 lines
2.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Установка Pro с приватного GHCR (без исходников). Публичный репозиторий — только этот скрипт и compose.
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
COMPOSE_FILE="${ROOT_DIR}/docker-compose.yml"
ENV_FILE="${ENV_FILE:-${ROOT_DIR}/.env}"
need_root() {
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
echo "Запустите от root: sudo bash scripts/install.sh"
exit 1
fi
}
need_docker() {
command -v docker >/dev/null 2>&1 || {
echo "Нужен Docker."
exit 1
}
docker info >/dev/null 2>&1 || {
echo "Docker daemon недоступен."
exit 1
}
}
need_compose() {
if docker compose version >/dev/null 2>&1; then
COMPOSE=(docker compose)
return
fi
if command -v docker-compose >/dev/null 2>&1; then
COMPOSE=(docker-compose)
return
fi
echo "Нужен Docker Compose v2 (docker compose)."
exit 1
}
need_root
need_docker
need_compose
if [[ ! -f "${ENV_FILE}" ]]; then
echo "Создайте файл .env из .env.example и вставьте GHCR_* из закрытого поста Boosty:"
echo " cp .env.example .env && nano .env"
exit 1
fi
set -a
# shellcheck disable=SC1090
source "${ENV_FILE}"
set +a
: "${GHCR_IMAGE:?Укажите GHCR_IMAGE в .env}"
: "${IMAGE_TAG:?Укажите IMAGE_TAG в .env}"
: "${GHCR_USERNAME:?Укажите GHCR_USERNAME в .env}"
: "${GHCR_TOKEN:?Укажите GHCR_TOKEN в .env}"
echo "→ docker login ghcr.io ..."
printf '%s\n' "${GHCR_TOKEN}" | docker login ghcr.io -u "${GHCR_USERNAME}" --password-stdin
echo "→ pull ${GHCR_IMAGE}:${IMAGE_TAG}"
"${COMPOSE[@]}" -f "${COMPOSE_FILE}" --env-file "${ENV_FILE}" pull
echo "→ up -d"
"${COMPOSE[@]}" -f "${COMPOSE_FILE}" --env-file "${ENV_FILE}" up -d
IP="$(hostname -I 2>/dev/null | awk '{print $1}' || true)"
echo ""
echo "=== Готово ==="
echo "Панель: http://${IP:-YOUR_SERVER_IP}:${HOST_PORT:-8080}"
echo "Обновление: sudo bash ${ROOT_DIR}/scripts/update.sh"