run.sh
Rama main · réplica de lectura del repositorio original.
#!/usr/bin/env bash
# Retlix — one-command launcher.
# Detects the environment, checks Docker, builds the image (downloading Node +
# ffmpeg + deps inside the container), and starts everything. Re-run to update.
set -euo pipefail
cd "$(dirname "$0")"
bold() { printf "\033[1m%s\033[0m\n" "$1"; }
ok() { printf "\033[32m✓\033[0m %s\n" "$1"; }
err() { printf "\033[31m✗\033[0m %s\n" "$1" >&2; }
# ---- 1) detect environment -------------------------------------------------
OS="$(uname -s)"; ARCH="$(uname -m)"
case "$OS" in
Darwin) ENV_NAME="macOS" ;;
Linux) if grep -qiE "(microsoft|wsl)" /proc/version 2>/dev/null; then ENV_NAME="Linux (WSL)"; else ENV_NAME="Linux"; fi ;;
*) ENV_NAME="$OS" ;;
esac
bold "Retlix launcher"
echo " Environment: $ENV_NAME ($ARCH)"
# ---- 2) ensure Docker is available and running -----------------------------
if ! command -v docker >/dev/null 2>&1; then
err "Docker is not installed."
case "$OS" in
Darwin) echo " Install Docker Desktop: https://www.docker.com/products/docker-desktop/ (or: brew install --cask docker)";;
Linux) echo " Install Docker Engine: https://docs.docker.com/engine/install/ (quick: curl -fsSL https://get.docker.com | sh)";;
*) echo " Install Docker: https://docs.docker.com/get-docker/";;
esac
exit 1
fi
if ! docker info >/dev/null 2>&1; then
err "Docker is installed but the daemon isn't running."
[ "$OS" = "Darwin" ] && echo " → Open Docker Desktop and wait until it's ready, then re-run ./run.sh" \
|| echo " → Start it: sudo systemctl start docker (then re-run ./run.sh)"
exit 1
fi
ok "Docker is ready"
# Compose v2 ("docker compose") with a fallback to legacy v1 ("docker-compose")
if docker compose version >/dev/null 2>&1; then COMPOSE="docker compose";
elif command -v docker-compose >/dev/null 2>&1; then COMPOSE="docker-compose";
else err "Docker Compose not found. Install Docker Desktop or the compose plugin."; exit 1; fi
# ---- 3) build + launch -----------------------------------------------------
mkdir -p data
bold "Building and starting Retlix (first run downloads Node + ffmpeg, a few minutes)…"
$COMPOSE up -d --build
# ---- 4) show how to reach it ----------------------------------------------
echo
ok "Retlix is running."
echo " • Local: http://localhost:3000"
# Best-effort LAN IPs (phone / smart TV on the same network)
if command -v ipconfig >/dev/null 2>&1; then IP="$(ipconfig getifaddr en0 2>/dev/null || true)";
else IP="$(hostname -I 2>/dev/null | awk '{print $1}')"; fi
[ -n "${IP:-}" ] && echo " • Network: http://$IP:3000 (open this on your phone / TV)"
echo
echo " Logs: $COMPOSE logs -f"
echo " Stop: $COMPOSE down"
echo
echo " Open the URL, connect your Xtream provider, then run a library sync."