#!/usr/bin/env bash
# BarbarosTech – Geliştirici VDS kurulum scripti: coolify
# Kaynak: https://barbarostech.com/kurulum/coolify.sh — çalıştırmadan önce inceleyebilirsiniz.
# Ubuntu 20.04+ / Debian 11+ içindir. Altyapı: BarbarosTech, yazılım: ilgili projelerin resmi kaynakları.

set -Eeuo pipefail
G='\033[1;32m'; Y='\033[1;33m'; R='\033[1;31m'; B='\033[1m'; N='\033[0m'
log()  { printf '%b==>%b %s\n' "$G" "$N" "$*"; }
warn() { printf '%bUyarı:%b %s\n' "$Y" "$N" "$*"; }
die()  { printf '%bHata:%b %s\n' "$R" "$N" "$*" >&2; exit 1; }
trap 'die "Kurulum ${LINENO}. satırda durdu. Çıktıyı kontrol edin; yardım için WhatsApp: +90 541 761 60 77"' ERR

[ "$(id -u)" -eq 0 ] || die "Bu script root olarak çalıştırılmalı. Komutun başına sudo ekleyin."
[ -r /etc/os-release ] || die "İşletim sistemi tespit edilemedi."
# shellcheck disable=SC1091
. /etc/os-release
case "${ID:-}" in
  ubuntu|debian) ;;
  *) die "Bu script yalnızca Ubuntu ve Debian'da çalışır (bulunan: ${ID:-bilinmiyor})." ;;
esac
export DEBIAN_FRONTEND=noninteractive

apt_install() { apt-get update -qq; apt-get install -y -qq "$@" >/dev/null; }

install_docker() {
  if command -v docker >/dev/null 2>&1; then
    log "Docker zaten kurulu: $(docker --version)"
  else
    log "Docker kuruluyor (resmi get.docker.com scripti)..."
    curl -fsSL https://get.docker.com | sh >/dev/null
  fi
  systemctl enable --now docker >/dev/null 2>&1 || true
}

port_busy() { ss -ltnH "sport = :$1" 2>/dev/null | grep -q .; }

public_ip() { curl -fsS4 --max-time 5 https://api.ipify.org 2>/dev/null || hostname -I | awk '{print $1}'; }

# Kullanım:
#   curl -fsSL https://barbarostech.com/kurulum/coolify.sh | sudo bash
# Ön kontrolleri yapar ve Coolify'ın resmi kurulum scriptini çalıştırır.

log "Ön kontroller yapılıyor..."
apt_install curl ca-certificates iproute2

MEM_MB=$(awk '/MemTotal/ {print int($2/1024)}' /proc/meminfo)
if [ "$MEM_MB" -lt 1900 ]; then warn "Bellek ${MEM_MB} MB. Coolify en az 2 GB RAM ister."; fi
DISK_GB=$(df -BG --output=avail / | tail -1 | tr -dc '0-9')
if [ "${DISK_GB:-0}" -lt 30 ]; then warn "Boş disk ${DISK_GB} GB. Coolify en az 30 GB boş alan önerir."; fi
for p in 80 443 8000; do
  if port_busy "$p"; then warn "$p portu kullanımda. Coolify bu portları kullanır; çakışan servisi durdurmanız gerekebilir."; fi
done

log "Coolify kuruluyor (resmi cdn.coollabs.io scripti, birkaç dakika sürebilir)..."
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash

IP="$(public_ip)"
printf '\n%bKurulum tamamlandı.%b\n' "$B" "$N"
echo "  Panel : http://$IP:8000  (hemen girip yönetici hesabınızı oluşturun)"
echo "  Öneri : Paneli kendi alan adınıza aldıktan sonra 8000 portunu dışarıya kapatın."
