Add Ubuntu deployment: scripts, SSL, systemd and setup.sh
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "${ROOT_DIR}"
|
||||
|
||||
if ! command -v docker &>/dev/null; then
|
||||
echo "Docker не найден. Сначала: sudo ./scripts/install-ubuntu.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f .env ]]; then
|
||||
cp .env.example .env
|
||||
SECRET=$(openssl rand -hex 32)
|
||||
DB_PASS=$(openssl rand -hex 16)
|
||||
sed -i "s/your_random_secret_key_here/${SECRET}/" .env
|
||||
sed -i "s/DB_PASSWORD=shop_secret/DB_PASSWORD=${DB_PASS}/" .env
|
||||
sed -i "s/ADMIN_PASSWORD=change_me/ADMIN_PASSWORD=$(openssl rand -base64 18 | tr -d '/+=')/" .env
|
||||
echo "Создан .env с автоматически сгенерированными паролями."
|
||||
echo "Проверьте ADMIN_EMAIL и DOMAIN перед продакшеном."
|
||||
fi
|
||||
|
||||
docker compose pull --ignore-buildable 2>/dev/null || true
|
||||
docker compose up --build -d
|
||||
|
||||
echo ""
|
||||
echo "Сервисы запущены."
|
||||
echo " Магазин: http://$(hostname -I | awk '{print $1}')"
|
||||
echo " Админка: http://$(hostname -I | awk '{print $1}')/admin/login"
|
||||
echo ""
|
||||
echo "Логи: docker compose logs -f"
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
# Переключение Caddy на продакшен-режим с SSL (Ubuntu + домен)
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "${ROOT_DIR}"
|
||||
|
||||
if [[ ! -f .env ]]; then
|
||||
echo "Сначала запустите: ./scripts/deploy.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DOMAIN="${1:-}"
|
||||
EMAIL="${2:-}"
|
||||
|
||||
if [[ -z "${DOMAIN}" || -z "${EMAIL}" ]]; then
|
||||
echo "Использование: ./scripts/enable-ssl.sh <домен> <email>"
|
||||
echo "Пример: ./scripts/enable-ssl.sh shop.example.com admin@example.com"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set_env() {
|
||||
local key="$1" val="$2"
|
||||
if grep -q "^${key}=" .env; then
|
||||
sed -i "s|^${key}=.*|${key}=${val}|" .env
|
||||
else
|
||||
echo "${key}=${val}" >> .env
|
||||
fi
|
||||
}
|
||||
|
||||
set_env DOMAIN "${DOMAIN}"
|
||||
set_env CADDY_EMAIL "${EMAIL}"
|
||||
set_env CADDYFILE "./Caddyfile.prod"
|
||||
|
||||
docker compose up -d --force-recreate caddy
|
||||
|
||||
echo "SSL включён для https://${DOMAIN}"
|
||||
echo "Убедитесь, что DNS A-запись указывает на этот сервер."
|
||||
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Установка Docker и Docker Compose на Ubuntu 22.04 / 24.04
|
||||
|
||||
if [[ "${EUID}" -ne 0 ]]; then
|
||||
echo "Запустите с sudo: sudo ./scripts/install-ubuntu.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep -qi ubuntu /etc/os-release 2>/dev/null; then
|
||||
echo "Скрипт предназначен для Ubuntu."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
apt-get install -y ca-certificates curl gnupg ufw
|
||||
|
||||
# Docker official repo
|
||||
install -m 0755 -d /etc/apt/keyrings
|
||||
if [[ ! -f /etc/apt/keyrings/docker.gpg ]]; then
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
fi
|
||||
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
|
||||
$(. /etc/os-release && echo "${VERSION_CODENAME}") stable" \
|
||||
> /etc/apt/sources.list.d/docker.list
|
||||
|
||||
apt-get update
|
||||
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
systemctl enable --now docker
|
||||
|
||||
# Firewall
|
||||
ufw allow OpenSSH
|
||||
ufw allow 80/tcp
|
||||
ufw allow 443/tcp
|
||||
ufw --force enable
|
||||
|
||||
SUDO_USER_NAME="${SUDO_USER:-$USER}"
|
||||
if id "${SUDO_USER_NAME}" &>/dev/null; then
|
||||
usermod -aG docker "${SUDO_USER_NAME}"
|
||||
echo "Пользователь ${SUDO_USER_NAME} добавлен в группу docker."
|
||||
echo "Перелогиньтесь или выполните: newgrp docker"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Docker установлен: $(docker --version)"
|
||||
echo "Compose: $(docker compose version)"
|
||||
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "${ROOT_DIR}"
|
||||
|
||||
git pull origin main
|
||||
docker compose up --build -d
|
||||
docker image prune -f
|
||||
|
||||
echo "Обновление завершено."
|
||||
Reference in New Issue
Block a user