Arcane: Interfaz web moderna para gestión de Docker

Publicado por


arcane
Gestión de contenedores

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.

Arcane combina una API robusta en Go con una interfaz reactiva en SvelteKit, ofreciendo gestión completa de Docker sin depender de demonios adicionales más allá del propio motor de contenedores.

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.

version: '3.8'

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.

version: '3.8'

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.

environment:
– 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_'.

environment:
– 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.

environment:
– 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).

environment:
– 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 pull
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.

docker run –rm -v arcane-data:/data -v $(pwd)/backup:/backup alpine tar czf /backup/arcane-backup-$(date +%F).tar.gz -C /data .

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.

docker compose down
# 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

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *