set -e
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >&2
}
log "Starting Torrust Tracker Deployer container..."
check_tool() {
if ! command -v "$1" > /dev/null 2>&1; then
log "ERROR: Required tool '$1' is not available"
exit 1
fi
}
log "Verifying installed tools..."
check_tool "tofu"
check_tool "ansible"
check_tool "ssh"
check_tool "git"
log "Tool versions:"
log " - OpenTofu: $(tofu version | head -1)"
log " - Ansible: $(ansible --version | head -1)"
log " - SSH: $(ssh -V 2>&1)"
log " - Git: $(git --version)"
if [ -d "$HOME/.ssh" ]; then
log "SSH directory found, checking permissions..."
chmod 700 "$HOME/.ssh" 2>/dev/null || true
if [ -f "$HOME/.ssh/id_rsa" ]; then
chmod 600 "$HOME/.ssh/id_rsa" 2>/dev/null || true
fi
if [ -f "$HOME/.ssh/id_ed25519" ]; then
chmod 600 "$HOME/.ssh/id_ed25519" 2>/dev/null || true
fi
else
log "WARNING: No SSH directory found at $HOME/.ssh"
log " Mount your SSH keys with: -v ~/.ssh:/home/deployer/.ssh:ro"
fi
mkdir -p "${TORRUST_TD_DATA_DIR:-/var/lib/torrust/deployer/data}" 2>/dev/null || true
mkdir -p "${TORRUST_TD_BUILD_DIR:-/var/lib/torrust/deployer/build}" 2>/dev/null || true
mkdir -p "${TORRUST_TD_ENVS_DIR:-/var/lib/torrust/deployer/envs}" 2>/dev/null || true
case "$1" in
""|-h|--help|help)
cat << 'EOF'
╔════════════════════════════════════════════════════════════════════════════╗
║ TORRUST TRACKER DEPLOYER (CONTAINER) ║
╠════════════════════════════════════════════════════════════════════════════╣
║ ║
║ IMPORTANT LIMITATION ║
║ ║
║ This container only supports CLOUD PROVIDERS (e.g., Hetzner). ║
║ The LXD provider is NOT supported when running from a container. ║
║ ║
║ For LXD deployments, install the deployer directly on the host. ║
║ ║
╠════════════════════════════════════════════════════════════════════════════╣
║ ║
║ VOLUME MOUNTS ║
║ ║
║ Mount these directories for persistent data: ║
║ -v ./data:/var/lib/torrust/deployer/data ║
║ -v ./build:/var/lib/torrust/deployer/build ║
║ -v ./envs:/var/lib/torrust/deployer/envs ║
║ -v ~/.ssh:/home/deployer/.ssh:ro ║
║ ║
╚════════════════════════════════════════════════════════════════════════════╝
EOF
;;
esac
log "Container initialization complete. Executing command..."
exec torrust-tracker-deployer "$@"