Arcane: Interfaz web moderna para gestión de Docker
Panel de control autohospedado escrito en Go y SvelteKit para administrar contenedores, imágenes, volúmenes y redes con una interfaz diseñada para simplicidad y potencia
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar y usar Arcane: Interfaz web moderna para gestión de Docker en el canal GENBYTE:
¿Qué es Arcane: Interfaz web moderna para gestión de Docker?
Arcane es una aplicación de gestión de Docker autohospedada que proporciona una interfaz web moderna para administrar contenedores, imágenes, volúmenes, redes y proyectos Compose. Desarrollada en Go para el backend y SvelteKit con TypeScript para el frontend, está diseñada para ser accesible tanto para usuarios noveles como para administradores experimentados. El proyecto se distribuye bajo licencia BSD-3-Clause y su código fuente está disponible en GitHub bajo la organización getarcaneapp.
Características principales
Gestión completa de recursos Docker
Permite administrar contenedores (iniciar, detener, reiniciar, eliminar, ver logs), imágenes (pull, build, eliminar, etiquetar), volúmenes, redes y proyectos Docker Compose desde una única interfaz web.
Arquitectura cliente-servidor ligera
Backend en Go que expone una API REST y WebSocket para operaciones en tiempo real, frontend en SvelteKit con TypeScript que consume dicha API. No requiere base de datos externa; usa SQLite embebido con modo WAL para persistencia.
Seguridad y aislamiento
Soporta autenticación JWT con claves configurables, cifrado de datos sensibles, ejecución bajo UID/GID personalizados (PUID/PGID), y opción de conectar al socket de Docker mediante proxy (tcp://docker-socket-proxy:2375) para evitar exponer el socket directamente.
Integración con Trivy
Incluye soporte opcional para escaneo de vulnerabilidades en imágenes mediante Trivy, con opciones de seguridad SELinux y modo privilegiado configurable.
Gestión de proyectos Compose y Git
Permite trabajar con proyectos Docker Compose almacenados en workspace local con integración Git, incluyendo claves SSH y known_hosts configurables para repositorios privados.
Despliegue flexible
Funciona detrás de proxy inverso (Caddy, Nginx, Traefik) con cabecera X-Forwarded-*, soporta TLS nativo opcional (HTTP/2 sobre TLS) y variables de entorno para ajustes de permisos de archivos y directorios.
Requisitos del sistema
- Docker Engine 20.10 o superior
- Acceso al socket de Docker (unix:///var/run/docker.sock) o proxy de socket
- Mínimo 256 MB RAM disponibles para la aplicación
- Espacio en disco para base de datos SQLite, imágenes y volúmenes gestionados
- Navegador moderno con soporte WebSocket para la interfaz
Instalación con Docker Compose
Despliegue con Docker Compose (recomendado)
Crea un archivo docker-compose.yml con el servicio Arcane. El ejemplo siguiente usa la imagen oficial, monta el socket de Docker mediante socket proxy para mayor seguridad, persiste datos en volúmenes y expone el puerto 3552. Ajusta las variables de entorno según tu entorno.
services:
arcane:
image: ghcr.io/getarcaneapp/arcane:latest
container_name: arcane
restart: unless-stopped
environment:
– GIN_MODE=release
– ENVIRONMENT=production
– PORT=3552
– APP_URL=https://arcane.tu-dominio.com
– DATABASE_URL=file:/app/data/arcane.db?_pragma=journal_mode(WAL)&_pragma=busy_timeout(2500)&_txlock=immediate
– ENCRYPTION_KEY=tu-clave-encriptacion-32-chars
– JWT_SECRET=tu-jwt-secret-seguro
– DOCKER_HOST=tcp://docker-socket-proxy:2375
– TRUSTED_PROXIES=127.0.0.0/8,::1/128
– PUID=1000
– PGID=1000
volumes:
– arcane-data:/app/data
ports:
– "3552:3552"
depends_on:
– docker-socket-proxy
docker-socket-proxy:
image: tecnativa/docker-socket-proxy:latest
container_name: docker-socket-proxy
restart: unless-stopped
environment:
– CONTAINERS=1
– IMAGES=1
– VOLUMES=1
– NETWORKS=1
– BUILD=1
– COMPOSE=1
volumes:
– /var/run/docker.sock:/var/run/docker.sock:ro
ports:
– "127.0.0.1:2375:2375"
volumes:
arcane-data:
Despliegue directo con socket de Docker (alternativa)
Si prefieres montar el socket directamente sin proxy, modifica DOCKER_HOST y el volumen. Esta opción es menos segura al exponer el socket completo al contenedor.
services:
arcane:
image: ghcr.io/getarcaneapp/arcane:latest
container_name: arcane
restart: unless-stopped
environment:
– GIN_MODE=release
– ENVIRONMENT=production
– PORT=3552
– APP_URL=https://arcane.tu-dominio.com
– DATABASE_URL=file:/app/data/arcane.db?_pragma=journal_mode(WAL)&_pragma=busy_timeout(2500)&_txlock=immediate
– ENCRYPTION_KEY=tu-clave-encriptacion-32-chars
– JWT_SECRET=tu-jwt-secret-seguro
– DOCKER_HOST=unix:///var/run/docker.sock
– TRUSTED_PROXIES=127.0.0.0/8,::1/128
– PUID=1000
– PGID=1000
volumes:
– arcane-data:/app/data
– /var/run/docker.sock:/var/run/docker.sock:ro
ports:
– "3552:3552"
volumes:
arcane-data:
Acceder al proyecto
Interfaz web
Accede a la interfaz en http://localhost:3552 (o el dominio configurado en APP_URL). Al primer acceso se solicita crear usuario administrador y contraseña. La autenticación usa JWT almacenado en cookie HttpOnly.
API REST
La API está disponible bajo el mismo host en rutas /api/*. Requiere token Bearer obtenido tras login o mediante ADMIN_STATIC_API_KEY configurado para flujos IaC.
Casos de uso
- Administración visual de stacks Docker Compose en servidores autohospedados
- Gestión de imágenes y contenedores sin línea de comandos para equipos mixtos
- Escaneo de vulnerabilidades integrado en flujo de despliegue con Trivy
- Entornos de desarrollo y homogeneización de configuraciones entre máquinas
- Panel único para múltiples hosts Docker mediante proxies de socket
Configuración avanzada
Configuración TLS nativa
Para servir HTTPS directamente desde Arcane sin proxy inverso, habilita TLS_ENABLED y proporciona certificados. Útil en redes internas sin terminación TLS externa.
– TLS_ENABLED=true
– TLS_CERT_FILE=/certs/fullchain.pem
– TLS_KEY_FILE=/certs/privkey.pem
volumes:
– ./certs:/certs:ro
Clave API estática para automatización
Define ADMIN_STATIC_API_KEY para disponer de un token determinista válido para scripts, CI/CD o Terraform. El valor debe tener prefijo 'arc_'.
– ADMIN_STATIC_API_KEY=arc_tu_clave_determinista_larga
Ajuste de límites de workspace
Controla tamaño máximo de archivo, profundidad y entradas permitidas en workspaces de proyectos y volúmenes para evitar abusos.
– PROJECT_WORKSPACE_MAX_FILE_SIZE_MB=20
– PROJECT_WORKSPACE_MAX_DEPTH=30
– PROJECT_WORKSPACE_MAX_ENTRIES=5000
– VOLUME_WORKSPACE_MAX_FILE_SIZE_MB=50
– VOLUME_WORKSPACE_MAX_DEPTH=100
– VOLUME_WORKSPACE_MAX_ENTRIES=20000
Modo agente para gestión remota
Activa AGENT_MODE y AGENT_TOKEN para registrar la instancia como agente gestionado por un controlador central (funcionalidad documentada como opcional).
– AGENT_MODE=true
– AGENT_TOKEN=token-compartido-con-controlador
Gestión y mantenimiento
Actualización de versión
Actualiza la etiqueta de imagen en docker-compose.yml y recrea el contenedor. La base de datos SQLite migra automáticamente al iniciar; los downgrades están bloqueados por defecto (ALLOW_DOWNGRADE=false).
docker compose up -d
Copia de seguridad de datos
Los datos persistentes residen en el volumen arcane-data (montado en /app/data). Incluye base de datos, claves SSH, known_hosts y workspaces Git. Realiza backup del volumen o copia los archivos directamente.
Rotación de secretos
Cambia ENCRYPTION_KEY y JWT_SECRET en .env y reinicia. Los tokens JWT existentes se invalidan; los usuarios deben volver a autenticarse. Si usas ADMIN_STATIC_API_KEY, actualízala simultáneamente en consumidores.
# edita .env con nuevos secretos
docker compose up -d
Limpieza de recursos Docker huérfanos
Desde la interfaz o API puedes eliminar contenedores detenidos, imágenes sin etiqueta, volúmenes no usados y redes no referenciadas. No hay comando CLI integrado; usa la UI o scripts contra la API.
Stack técnico
- Go (backend, API REST, WebSocket)
- SvelteKit + TypeScript (frontend)
- SQLite con WAL (base de datos embebida)
- Docker Engine API (gestión de contenedores)
- Trivy (escaneo de vulnerabilidades opcional)
- Git (workspace de proyectos Compose)
- pnpm (gestor de paquetes frontend)
- Vite (bundler frontend)
Referencias oficiales
- Repositorio oficial en GitHub: https://github.com/getarcaneapp/arcane
- Documentación oficial: https://getarcane.app
- Software Bill of Materials (SBOM): https://getarcane.app/sbom
- Traducciones en Crowdin: https://crowdin.com/project/arcane-docker-management
- Licencia BSD-3-Clause: https://github.com/getarcaneapp/arcane/blob/main/LICENSE
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
