CasaOS/docker/start-casaos.sh
Kadir Talha AK 02cbb717cf Add Docker support for multi-platform CasaOS deployment
- Add Docker Compose configurations for Ubuntu and Debian
- Include interactive startup script for easy setup
- Support for Windows, macOS, and Linux platforms
- Comprehensive documentation and troubleshooting guide
- Multiple deployment options (simple, custom build, etc.)

This community contribution enables CasaOS to run in containers,
making it accessible to users on non-Linux systems and providing
isolated testing environments.
2025-07-25 20:28:59 +03:00

167 lines
5.1 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.

#!/bin/bash
# CasaOS Docker Container Starter Script
# This script starts CasaOS as a Docker container
set -e
echo "🏠 Starting CasaOS Docker Container..."
echo "📅 Date: $(date)"
echo ""
# Create necessary directories
echo "📁 Creating necessary directories..."
mkdir -p ./data
mkdir -p ./logs
mkdir -p ./config
# Check if Docker is running
echo "🐳 Checking Docker..."
if ! docker info >/dev/null 2>&1; then
echo "❌ Docker is not running or permission denied!"
echo " On macOS, start Docker Desktop: open -a Docker"
echo " Or in terminal: brew services start docker"
exit 1
fi
# Check if Docker Compose is available
if ! command -v docker-compose >/dev/null 2>&1; then
echo "❌ docker-compose not found!"
echo " To install: brew install docker-compose"
exit 1
fi
echo "✅ Docker and Docker Compose ready!"
echo ""
# Ask user which configuration to use
echo "Which CasaOS configuration would you like to use?"
echo ""
echo "1) 📦 Ready Ubuntu Image (docker-compose.yml) - Fast"
echo "2) 🔨 Custom Build (docker-compose.build.yml) - Your own image"
echo "3) 🐧 Debian Alternative (--profile debian) - For Debian lovers"
echo "4) 🧽 Simple Configuration (docker-compose.simple.yml) - Minimal"
echo ""
read -p "Make your choice [1-4]: " choice
case $choice in
1)
COMPOSE_FILE="docker-compose.yml"
SERVICE_NAME="casaos-ubuntu"
echo "🚀 Starting with Ubuntu-based configuration..."
;;
2)
COMPOSE_FILE="docker-compose.build.yml"
SERVICE_NAME="casaos-custom"
echo "🔨 Starting with custom build configuration..."
echo "⏳ First build may take some time..."
;;
3)
COMPOSE_FILE="docker-compose.yml"
SERVICE_NAME="casaos-debian"
PROFILE_ARG="--profile debian"
echo "🐧 Starting with Debian-based configuration..."
;;
4)
COMPOSE_FILE="docker-compose.simple.yml"
SERVICE_NAME="casaos-simple"
echo "🧽 Starting with simple configuration..."
;;
*)
echo "❌ Invalid choice! Using default Ubuntu configuration."
COMPOSE_FILE="docker-compose.yml"
SERVICE_NAME="casaos-ubuntu"
;;
esac
# Start CasaOS
echo ""
echo "📦 Starting CasaOS container..."
echo "📄 File: $COMPOSE_FILE"
echo "🔧 Service: $SERVICE_NAME"
2)
COMPOSE_FILE="docker-compose.build.yml"
SERVICE_NAME="casaos-custom"
echo "🔨 Custom build konfigürasyonu ile başlatılıyor..."
echo "⏳ İlk build işlemi biraz zaman alabilir..."
;;
3)
COMPOSE_FILE="docker-compose.yml"
SERVICE_NAME="casaos-debian"
PROFILE_ARG="--profile debian"
echo "<22> Debian tabanlı konfigürasyon ile başlatılıyor..."
;;
4)
COMPOSE_FILE="docker-compose.simple.yml"
SERVICE_NAME="casaos-simple"
echo "🧽 Basit konfigürasyon ile başlatılıyor..."
;;
*)
echo "❌ Geçersiz seçim! Varsayılan olarak Ubuntu konfigürasyonu kullanılıyor."
COMPOSE_FILE="docker-compose.yml"
SERVICE_NAME="casaos-ubuntu"
;;
esac
# CasaOS'u başlat
echo ""
echo "📦 CasaOS container'ı başlatılıyor..."
echo "📄 Dosya: $COMPOSE_FILE"
echo "🔧 Servis: $SERVICE_NAME"
echo ""
if [ -n "$PROFILE_ARG" ]; then
docker-compose -f "$COMPOSE_FILE" $PROFILE_ARG up -d
else
docker-compose -f "$COMPOSE_FILE" up -d
fi
echo ""
echo "⏳ CasaOS'un başlaması bekleniyor (60 saniye)..."
sleep 10
# Container durumunu kontrol et
echo "🔍 Container durumu kontrol ediliyor..."
if docker ps | grep -q "$SERVICE_NAME"; then
echo "✅ Container başarıyla çalışıyor!"
# CasaOS kurulumunun tamamlanmasını bekle
echo "⏳ CasaOS kurulumunun tamamlanması bekleniyor..."
for i in {1..50}; do
if docker exec "$SERVICE_NAME" systemctl is-active --quiet casaos 2>/dev/null; then
echo "🎉 CasaOS servisi aktif!"
break
fi
echo -n "."
sleep 3
done
echo ""
else
echo "❌ Container başlatılamadı!"
echo "🔍 Hata ayıklama için logları kontrol edin:"
echo " docker-compose -f $COMPOSE_FILE logs"
exit 1
fi
echo ""
echo "🎉 CasaOS başarıyla başlatıldı!"
echo ""
echo "📱 Erişim Bilgileri:"
echo " 🌐 Web Arayüzü: http://localhost"
echo " 🔒 HTTPS: https://localhost"
echo ""
echo "🔧 Yönetim Komutları:"
echo " 📊 Durumu kontrol et: docker-compose -f $COMPOSE_FILE ps"
echo " 📋 Logları göster: docker-compose -f $COMPOSE_FILE logs -f $SERVICE_NAME"
echo " 🔄 Yeniden başlat: docker-compose -f $COMPOSE_FILE restart $SERVICE_NAME"
echo " ⏹️ Durdur: docker-compose -f $COMPOSE_FILE down"
echo " 🖥️ Container'a gir: docker exec -it $SERVICE_NAME bash"
echo ""
echo "🐞 Hata Ayıklama:"
echo " 🔍 CasaOS durumu: docker exec $SERVICE_NAME systemctl status casaos"
echo " 📝 CasaOS logları: docker exec $SERVICE_NAME journalctl -u casaos -f"
echo ""
echo "⚠️ Not: CasaOS'un tamamen yüklenmesi 2-5 dakika sürebilir."
echo " Eğer web arayüzü açılmıyorsa, birkaç dakika bekleyip tekrar deneyin."