Empezar
Instalar en tu servidor
SpiderFolio con Docker en un servidor propio: requisitos, configuración mínima, primer arranque y comprobación.
SpiderFolio es open source y se instala en tu propio servidor con Docker Compose. La instalación trae cuatro piezas:
- db: la base de datos PostgreSQL 16 (sin puerto público).
- app: la API, que también sirve la aplicación web. Al arrancar aplica sola las migraciones de la base.
- worker: las tareas en segundo plano (emails, PDF, búsqueda, papelera…). Usa la misma imagen.
- Opcionales: caddy (HTTPS automático, perfil
https) y gotenberg (PDF de los documentos controlados, perfilpdf).
Qué necesitas
- Un servidor Linux con Docker Engine 24 o superior y Docker Compose v2 (
docker compose version). - 2 vCPU y 4 GB de RAM para una empresa de hasta unas 200 personas. Disco según tus archivos.
- Un servidor de email (SMTP): el de tu empresa o un servicio transaccional (Resend, Postmark, Amazon SES…). Sin email no llegan las verificaciones ni las invitaciones.
- Un dominio apuntando al servidor, para entrar con HTTPS desde cualquier equipo. Sin HTTPS solo
funciona desde el propio servidor (
localhost).
El detalle está en Requisitos del servidor.
Paso a paso
-
Descarga el proyecto y copia la configuración de ejemplo:
git clone https://github.com/spiderjad/SpiderFolio.git cd SpiderFolio/deploy cp .env.example .env chmod 600 .env -
Genera los secretos. Cada línea da un valor distinto; usa uno para cada variable:
openssl rand -base64 48 # JWT_ACCESS_SECRET openssl rand -base64 32 # EMAIL_ENCRYPTION_KEY openssl rand -base64 32 # MFA_ENCRYPTION_KEY (distinta de la anterior) -
Completa
.envcomo mínimo con:Variable Qué poner APP_URL,WEB_URLLa URL con la que se entra, por ejemplo https://docs.tu-empresa.comDOMAINCon el perfil https: el dominio, sinhttps://(docs.tu-empresa.com)POSTGRES_PASSWORDUna contraseña larga JWT_ACCESS_SECRET,EMAIL_ENCRYPTION_KEY,MFA_ENCRYPTION_KEYLos secretos del paso 2 SMTP_HOST,SMTP_PORT,SMTP_USER,SMTP_PASS,MAIL_FROMLos datos de tu servidor de email El resto de las variables tiene valores por defecto que sirven. Todas están explicadas en Configuración.
Guarda una copia de
.enven un lugar seguro: sinMFA_ENCRYPTION_KEYnadie puede volver a entrar con su verificación en dos pasos. -
Arranca. Elige una de estas formas:
# Con HTTPS automático (Let's Encrypt): DOMAIN completo y puertos 80 y 443 abiertos docker compose --profile https up -d # Igual, y además con el PDF de los documentos controlados (pon GOTENBERG_URL=http://gotenberg:3000) docker compose --profile https --profile pdf up -d # Sin Caddy: la app queda en HTTP_BIND:HTTP_PORT (por defecto 127.0.0.1:8080), detrás de tu proxy docker compose up -dSi ya tienes un proxy propio (nginx, Traefik…), mira Proxy y HTTPS.
-
Comprueba que arrancó:
docker compose ps docker compose logs -f app # espera la línea «API lista» curl -fsS https://docs.tu-empresa.com/api/health/api/healthresponde{"status":"ok"}cuando la API y la base funcionan. Si la API no arranca, el log dice qué variable falta: mira Solución de problemas. -
Crea tu empresa: entra a tu dominio, pulsa Crear cuenta y quedas como propietario. Sigue con Primer administrador.
Si no hay imagen publicada
compose.yaml usa la imagen ghcr.io/spiderjad/spiderfolio:latest. Si prefieres compilarla tú (por
ejemplo, para incluir plugins), desde la raíz del repositorio:
docker build -t spiderfolio:local .
Y en deploy/.env, SPIDERFOLIO_IMAGE=spiderfolio:local. Después, docker compose up -d.
Después de instalar
- Proxy y HTTPS y Almacenamiento.
- Copias de seguridad: prográmalas antes de cargar datos reales.
- Actualizaciones.
La guía técnica de instalación también está en el repositorio: docs/instalacion.