Como dije en el post de vuzon, el dashboard de Cloudflare tiene muchos botones y opciones que hacen que la navegación sea un poco bastante mojón (sobre todo en móviles).

He creado este proyecto ya que hay días en los que solo quieres subir un proyecto piloto sencillo, o darle al botón de "redesplegar" sin tener que navegar por miles de menús y subpestañas para encontrar el proyecto correcto.

EasyPages es un wrapper visual sobre la API de Cloudflare con solo permisos de Cloudflare Pages que te permite gestionar tus sitios estáticos desde tu propio servidor, con una interfaz limpia y sin distracciones.

¿Qué puedes hacer con EasyPages?

No esperéis una mega configuración ya que ese no es el objetivo del proyecto, sino poder controlar lo mínimo e imprescindible de forma ágil:

  • Visualización de Proyectos: Lista todos tus sitios de Cloudflare Pages en un vistazo.
  • Creación de nuevos proyectos: Opción básica para crear nuevos proyectos de tipo Direct Upload.
  • Eliminar Despliegues: Elimina despliegues antiguos seleccionados o limpia de golpe todo el historial no productivo para liberar espacio.
  • Despliegues rápidos: Dispara implementaciones manualmente desde la interfaz (para proyectos enlazados a GitHub).
  • Dominios personalizados: Ve los dominios asociados y añade o elimina los que quieras de forma instantánea.
  • Configuración de Build: Actualiza el comando de construcción y el directorio de salida del proyecto directamente.

Tenéis como siempre toda la información de instalación y configuración en el nuevo repo oficial: KN990x/EasyPages.

Requisito previo: El Token de Cloudflare

Para que la aplicación pueda comunicarse con tu cuenta, necesitas crear un token de API personalizado. No uses el token global por seguridad.

  1. Ve a Cloudflare Dashboard > Mi Perfil > API Tokens.
  2. Crea un token personalizado con el siguiente permiso único:
    • Account ➜ Cloudflare Pages ➜ Edit

Guarda bien ese token y tu ID de cuenta, los usaremos justo ahora.

Instalación rápida mediante Docker Compose

1) Crear y configurar el archivo .env

# Configuración de tu cuenta de Cloudflare
CF_API_TOKEN=tu_token_de_cloudflare_aqui
CF_ACCOUNT_ID=tu_id_de_cuenta_de_cloudflare_aqui

# Usuario para acceder a tu dashboard de EasyPages
AUTH_USER=admin
# RECOMENDADO: Introduce aquí el hash bcrypt de tu contraseña (ej. coste 10).
# El servidor admite texto plano para homelabs rápidos, pero bcrypt es lo ideal.
AUTH_PASS=$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

# Opcional: Clave para firmar las cookies de sesión (si se vacía se autogenerará en /data)
# SESSION_SECRET=un_secreto_largo_y_seguro

# IMPORTANTE: Ponlo en 'false' si vas a acceder por HTTP normal (sin SSL) en tu red local o entornos caseros.
# Si vas a meter un proxy inverso por delante con HTTPS (Nginx, Caddy, Traefik), cámbialo a 'true'.
SESSION_COOKIE_SECURE=false

(Nota: Si dejas SESSION_COOKIE_SECURE=true y entras por HTTP normal, el navegador descartará la cookie por seguridad y te redirigirá al login continuamente).

2) Crear el archivo docker-compose.yml

En la misma carpeta donde creaste el .env, añade el archivo de Docker Compose:

services:
  easypages:
    container_name: easypages
    image: ghcr.io/kn990x/easypages
    restart: unless-stopped
    ports:
      - "8002:8002"
    environment:
      EASYPAGES_DATA_DIR: /data
    env_file:
      - .env
    volumes:
      - ./easypages-data:/data

⚠️ Nota para usuarios de Linux (Permisos de carpetas): El contenedor se ejecuta de forma segura bajo el usuario interno node (UID 1000). Para evitar que la aplicación falle al arrancar porque no tiene permisos de escritura en el volumen montado, crea la carpeta en tu terminal y cambia su propietario antes de levantar el entorno:

mkdir easypages-data && sudo chown -R 1000:1000 ./easypages-data

3) Desplegar

Una vez configurado todo, levanta el servicio con el siguiente comando:

docker compose up -d --pull always

¡Listo! Ya puedes acceder a la interfaz desde http://localhost:8002 (o la IP local de tu servidor) e iniciar sesión con las credenciales que definiste en el archivo .env.

Solución de Problemas Frecuentes (FAQ)

  • ¿Me echa de la sesión continuamente o no pasa del login?

    Revisa la variable SESSION_COOKIE_SECURE en tu .env. Si accedes sin HTTPS, esta variable debe estar en false.

  • ¿Fallo al subir archivos .ZIP muy pesados?

    EasyPages tiene límites de seguridad internos configurados para proteger el servidor (el ZIP máximo permitido es de 100MB). Si estás usando un proxy inverso (como Nginx), asegúrate de tener configurado el parámetro client_max_body_size 100M; (o superior) en tu proxy para que no corte la subida antes de llegar al contenedor.

  • Tengo problemas con los permisos en Linux, ¿qué hago?

    Asegúrate de que la carpeta ./easypages-data pertenezca al usuario 1000:1000. Si usas un sistema de archivos remoto (como un montaje NFS), verifica que permita el cambio de propiedades de archivos.