Skip to main content

Chibisafe: Compartir imágenes de forma rápida y privada


Introducción

Notas sobre cómo he montado Chibisafe con Docker y Caddy, sin usar la configuración "obligatoria" que proponen en la web. Documentado para no olvidar detalles y poder replicarlo fácil.


Características

  • Subida de imágenes y archivos con links directos.
  • Soporta API y panel web.
  • Configurado con dominio propio y Caddy como reverse proxy.

Requisitos previos

  • Docker y Docker Compose.
  • Dominio configurado (ejemplo: chibi.midominio.eu.org).
  • Caddy funcionando.
  • Carpeta para uploads y base de datos preparada.

Configuración del docker-compose

services:
  chibisafe:
    image: chibisafe/chibisafe:latest
    container_name: Chibisafe
    environment:
      - BASE_API_URL=https://chibi.midominio.eu.org
    ports:
      - 8001:8001
    restart: unless-stopped

  chibisafe_server:
    image: chibisafe/chibisafe-server:latest
    container_name: ChibisafeServer
    volumes:
      - ./database:/app/database:rw
      - /ruta/a/uploads:/app/uploads:rw
      - ./logs:/app/logs:rw
    ports:
      - 8674:8000
    restart: unless-stopped

networks:
  default:
    name: Chibisafe_NET
  • Se usan dos contenedores: chibisafe (frontend) y chibisafe_server (API y gestión de archivos).
  • La ruta /ruta/a/uploads debe apuntar al almacenamiento físico deseado.
  • También se encuentra el docker-compose.yml, el Caddyfile y otros servicios adicionales en el repositorio personal (Gitea).

Caddyfile usado

# Chibisafe
chibi.midominio.eu.org {
	route {
		file_server * {
			root /app/uploads
			pass_thru
		}

		@api path /api/*
		reverse_proxy @api http://localhost:8674 {
			header_up Host {http.reverse_proxy.upstream.hostport}
			header_up X-Real-IP {http.request.header.X-Real-IP}
		}

		@docs path /docs*
		reverse_proxy @docs http://localhost:8674 {
			header_up Host {http.reverse_proxy.upstream.hostport}
			header_up X-Real-IP {http.request.header.X-Real-IP}
		}

		reverse_proxy http://localhost:8001 {
			header_up Host {http.reverse_proxy.upstream.hostport}
			header_up X-Real-IP {http.request.header.X-Real-IP}
		}
	}

	encode gzip

	log {
		output file /var/log/caddy/chibi-access.log
		format transform "{request>headers>X-Forwarded-For>[0]:request>remote_ip} - {user_id} [{ts}] \"{request>method} {request>uri} {request>proto}\" {status} {size}" {
			time_format "02/Jan/2006:15:04:05 -0700"
		}
	}
}
  • Se define file_server para servir directamente los archivos.
  • Se separan rutas para API (/api/*) y docs (/docs*).
  • reverse_proxy principal al frontend para todo lo demás.

Errores comunes o decisiones importantes

  • No es obligatorio usar el Caddyfile que propone Chibisafe; se puede adaptar libremente.
  • Revisar bien la ruta de los volúmenes para evitar perder uploads.

Resumen breve

  • docker-compose.yml con dos contenedores: frontend y backend.
  • Volúmenes bien definidos.
  • Caddyfile adaptado al dominio propio.
  • Revisar siempre la ruta /app/uploads.

Referencias