feat: install script
This commit is contained in:
parent
3b464983ce
commit
ef6f58b4e5
1 changed files with 105 additions and 0 deletions
105
systemd/install.sh
Normal file
105
systemd/install.sh
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# --- Kolory do logowania ---
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
log() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
||||
err() { echo -e "${RED}[ERROR]${NC} $1" >&2; exit 1; }
|
||||
|
||||
# --- Sprawdzenie uprawnień roota ---
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
err "Ten skrypt wymaga uprawnień roota. Uruchom z sudo."
|
||||
fi
|
||||
|
||||
# --- 1. Wykrycie menedżera pakietów (apt / dnf) ---
|
||||
if command -v apt-get &>/dev/null; then
|
||||
PKG_MGR="apt-get"
|
||||
PKG_UPDATE="apt-get update -y"
|
||||
PKG_INSTALL="apt-get install -y"
|
||||
elif command -v dnf &>/dev/null; then
|
||||
PKG_MGR="dnf"
|
||||
PKG_UPDATE="dnf check-update || true"
|
||||
PKG_INSTALL="dnf install -y"
|
||||
else
|
||||
err "Nie znaleziono obsługiwanego menedżera pakietów (apt/dnf)."
|
||||
fi
|
||||
|
||||
log "Wykryto menedżer pakietów: $PKG_MGR"
|
||||
$PKG_UPDATE
|
||||
|
||||
# --- 2. Instalacja python3, curl, unzip ---
|
||||
log "Instalacja python3, curl, unzip..."
|
||||
$PKG_INSTALL python3 python3-pip curl unzip
|
||||
$PKG_INSTALL python3-venv || true
|
||||
|
||||
# --- 3. Instalacja Dockera (jeśli nie zainstalowany) ---
|
||||
if command -v docker &>/dev/null; then
|
||||
log "Docker już zainstalowany — pomijam."
|
||||
else
|
||||
log "Instalacja Dockera..."
|
||||
curl -fsSL https://get.docker.com | bash
|
||||
systemctl enable --now docker
|
||||
log "Docker zainstalowany i uruchomiony."
|
||||
fi
|
||||
|
||||
# --- 4. Utworzenie użytkownika 'karl' ---
|
||||
if id "karl" &>/dev/null; then
|
||||
log "Użytkownik 'karl' już istnieje — pomijam."
|
||||
else
|
||||
log "Tworzenie użytkownika 'karl'..."
|
||||
useradd -m -s /bin/bash karl
|
||||
fi
|
||||
|
||||
# --- 5. Dodanie 'karl' do grupy 'docker' ---
|
||||
log "Dodawanie użytkownika 'karl' do grupy 'docker'..."
|
||||
usermod -aG docker karl
|
||||
|
||||
# --- 6. Pobranie i rozpakowanie archiwum ---
|
||||
APP_URL="${1:?Podaj URL archiwum ZIP jako pierwszy argument}"
|
||||
APP_DIR="/opt/karl/app"
|
||||
|
||||
log "Pobieranie archiwum z: $APP_URL"
|
||||
mkdir -p "$APP_DIR"
|
||||
TMPZIP=$(mktemp /tmp/karl-app-XXXXXX.zip)
|
||||
curl -fSL -o "$TMPZIP" "$APP_URL"
|
||||
unzip -o "$TMPZIP" -d "$APP_DIR"
|
||||
rm -f "$TMPZIP"
|
||||
chown -R karl:karl "$APP_DIR"
|
||||
log "Aplikacja rozpakowana do $APP_DIR"
|
||||
|
||||
# --- 7. Sprawdzenie / instalacja uv ---
|
||||
if command -v uv &>/dev/null; then
|
||||
log "uv już zainstalowane."
|
||||
else
|
||||
log "Instalacja uv..."
|
||||
pip3 install uv
|
||||
fi
|
||||
|
||||
# --- 8. Synchronizacja zależności (uv sync) ---
|
||||
log "Uruchamianie 'uv sync' w katalogu aplikacji..."
|
||||
cd "$APP_DIR"
|
||||
sudo -u karl uv sync
|
||||
|
||||
# --- 9. Kopiowanie pliku usługi systemd ---
|
||||
SERVICE_SRC="$(dirname "$(realpath "$0")")/karl.service"
|
||||
SERVICE_DST="/etc/systemd/system/karl.service"
|
||||
|
||||
if [[ ! -f "$SERVICE_SRC" ]]; then
|
||||
err "Nie znaleziono pliku $SERVICE_SRC"
|
||||
fi
|
||||
|
||||
log "Kopiowanie $SERVICE_SRC -> $SERVICE_DST"
|
||||
cp "$SERVICE_SRC" "$SERVICE_DST"
|
||||
chmod 644 "$SERVICE_DST"
|
||||
|
||||
# --- 10. Przeładowanie systemctl i uruchomienie usługi ---
|
||||
log "Przeładowanie systemd i włączanie usługi karl..."
|
||||
systemctl daemon-reload
|
||||
systemctl enable karl.service
|
||||
systemctl start karl.service
|
||||
|
||||
log "Instalacja zakończona pomyślnie! ✅"
|
||||
Loading…
Add table
Add a link
Reference in a new issue