Add Ubuntu deployment: scripts, SSL, systemd and setup.sh

This commit is contained in:
shop
2026-06-25 16:47:01 +03:00
parent ee5688f722
commit 8a7f79a70c
19 changed files with 387 additions and 58 deletions
+31
View File
@@ -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"
+38
View File
@@ -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-запись указывает на этот сервер."
+53
View File
@@ -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)"
+11
View File
@@ -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 "Обновление завершено."