====== Zipline ====== **Zipline** es una [[..:aplicaciones_web|aplicación web]] para la subida y alojamiento de archivos, especialmente orientado a imágenes. Su objetivo es proporcionar un sistema similar a [[https://imgur.com/|Imgur]], permitiendo obtener enlaces permanentes para compartir archivos públicamente o de forma privada. * [[https://zipline.diced.sh/|Sitio web]] * [[https://github.com/diced/zipline|Repositorio de código]] * [[https://zipline.diced.sh/docs/get-started|Documentación]] {{ https://noted.lol/content/images/2023/02/zipline-self-hosted-dashboard-noted.lol.png |}} ===== Características ===== * **Configuración rápida**: Permite desplegar una instancia de Zipline en pocos minutos, especialmente mediante Docker. Está pensado para que la puesta en marcha sea sencilla. * **Configuración desde el panel**: Gran parte de la configuración puede realizarse desde el panel de administración, sin necesidad de editar archivos manualmente. * **Subida de cualquier tipo de archivo**: No se limita a imágenes: permite almacenar vídeos, documentos, archivos de texto y otros formatos. Los archivos de texto incluso pueden visualizarse con resaltado de sintaxis. * **Carpetas**: Permite organizar los archivos en carpetas para mantener el contenido ordenado y facilitar su gestión. * **Etiquetas** (Tags): Los archivos pueden etiquetarse para facilitar su organización y búsqueda posterior. * **Acortador de URLs**: Incluye un acortador de enlaces integrado con soporte para enlaces personalizados y otras opciones de configuración. * **Embebidos enriquecidos**: Genera automáticamente metadatos (Open Graph) para que los archivos se muestren con vista previa al compartirlos en aplicaciones como Discord. * **Protección mediante contraseña**: Tanto los archivos como las URLs acortadas pueden protegerse con contraseña para restringir su acceso. * **Compresión de imágenes**: Permite comprimir imágenes automáticamente durante la subida para reducir el espacio ocupado. Es configurable tanto el nivel de compresión como el formato de salida. * **Miniaturas de vídeo**: Genera automáticamente una imagen en miniatura para los vídeos, facilitando su identificación desde la interfaz. * **API**: Dispone de una API completa para automatizar subidas, gestionar archivos, crear URLs y realizar otras operaciones desde aplicaciones o scripts. * **Aplicación Web Progresiva** (PWA): Puede instalarse como una aplicación de escritorio o móvil compatible con dispositivos que soporten Progressive Web Apps. * **Subidas por bloques**: Soporta la subida de archivos grandes dividiéndolos en fragmentos (chunking), mejorando la fiabilidad de las transferencias. * **Invitaciones**: Permite generar enlaces de invitación para crear nuevas cuentas de usuario de forma controlada. * **Cuotas de almacenamiento**: Es posible establecer límites de almacenamiento o de uso para cada usuario, evitando que una sola cuenta consuma todos los recursos disponibles. * **Temas personalizados**: La interfaz puede personalizarse mediante temas para adaptarla a la imagen o preferencias del administrador. ===== Instalación ===== ==== Docker ==== Ejemplo de fichero Docker Compose: services: postgresql: image: postgres:16 restart: unless-stopped env_file: - .env environment: POSTGRES_USER: ${POSTGRESQL_USER:-zipline} POSTGRES_PASSWORD: ${POSTGRESQL_PASSWORD:?POSTGRESQL_PASSWORD is required} POSTGRES_DB: ${POSTGRESQL_DB:-zipline} volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ['CMD', 'pg_isready', '-U', 'zipline'] interval: 10s timeout: 5s retries: 5 zipline: image: ghcr.io/diced/zipline:latest restart: unless-stopped ports: - '3000:3000' env_file: - .env environment: - DATABASE_URL=postgres://${POSTGRESQL_USER:-zipline}:${POSTGRESQL_PASSWORD}@postgresql:5432/${POSTGRESQL_DB:-zipline} depends_on: postgresql: condition: service_healthy volumes: - './uploads:/zipline/uploads' - './public:/zipline/public' - './themes:/zipline/themes' healthcheck: test: ['CMD', 'wget', '-q', '--spider', 'http://0.0.0.0:3000/api/healthcheck'] interval: 15s timeout: 2s retries: 2 volumes: pgdata: La primera vez que accedamos, crearemos la cuenta de administrador.