#!/usr/bin/env bash set -euo pipefail require_root() { if [ "$(id -u)" -ne 0 ]; then echo "Este script debe ejecutarse como root (o con sudo)." exit 1 fi } require_root step "Instalando Docker, docker compose plugin y certbot" apt-get update -y # Dependencias para repositorio Docker apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release # Clave GPG de Docker if [ ! -f /etc/apt/keyrings/docker.gpg ]; then install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ gpg --dearmor -o /etc/apt/keyrings/docker.gpg fi # Repo Docker estable if [ ! -f /etc/apt/sources.list.d/docker.list ]; then 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" | \ tee /etc/apt/sources.list.d/docker.list > /dev/null fi apt-get update -y apt-get install -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin \ git \ certbot systemctl enable docker systemctl start docker # Abrimos puertos en ufw si está activo if command -v ufw >/dev/null 2>&1; then if ufw status | grep -q "Status: active"; then step "Configurando firewall (ufw) para permitir 80 y 443" ufw allow 80/tcp || true ufw allow 443/tcp || true fi fi # Creamos carpeta del proxy con docker compose. mkdir -p /opt/beyonxcx/traefik cat > /opt/beyondcx/traefik/docker-compose.yaml < /opt/beyondcx/traefik/config/traefik.yml <