docs Instalación

Instalación

Instala DeployKit en tu servidor en cuestión de minutos.

Instalar con el CLI (recomendado)

DeployKit se instala y se gestiona con el CLI oficial @deploykit/cli. Conéctate por SSH a tu VPS (requiere Node.js 20+), instálalo de forma global y ejecuta el instalador:

bash
npm install -g @deploykit/cli
sudo deploykit install --domain deploy.example.com --email you@example.com

# Or one-shot, without a global install
sudo npx @deploykit/cli install --domain deploy.example.com --email you@example.com

Ejecuta sudo deploykit install sin --domain / --email en una terminal para que te pida el dominio del panel, el email de Let's Encrypt, y opcionalmente un email y una contraseña de administrador. Por defecto se instala la última versión publicada; consulta la Referencia del CLI para --tag, --branch y el resto de flags.

Qué hace el instalador

  • Comprueba que se ejecuta en Linux como root e informa de las especificaciones del sistema
  • Instala Git, Docker y el plugin Docker Compose si faltan
  • Clona DeployKit en /opt/deploykit en la versión seleccionada
  • Genera todos los secretos (contraseña de la base de datos, secretos JWT, clave de cifrado, secreto de webhook) en /opt/deploykit/.env con permisos 600. Si ya existe un .env, se conservan sus secretos y solo se actualizan el dominio y el email
  • Crea la red de Docker deploykit-network y /var/backups/deploykit, construye las imágenes e inicia el stack
  • Espera a la API y, si indicaste un email y una contraseña de administrador, intenta crear la cuenta de administrador

Contraseña de Redis (v0.6.0+): desde v0.6.0 el archivo Compose de producción se niega a arrancar sin REDIS_PASSWORD en .env, y el instalador aún no la genera. Si la instalación se detiene con Set REDIS_PASSWORD in .env, añade una (solo hexadecimal — va dentro de una URL redis://) y vuelve a ejecutar el mismo comando de instalación; tus secretos generados se conservan:

bash
echo "REDIS_PASSWORD=$(openssl rand -hex 32)" | sudo tee -a /opt/deploykit/.env
sudo deploykit install --domain deploy.example.com --email you@example.com

Instalación manual

Si prefieres ejecutar tú mismo el archivo Compose de producción:

bash
# 1. Clone the repository (pick a release tag)
git clone https://github.com/deploykithq/deploykit.git /opt/deploykit
cd /opt/deploykit
git checkout v0.6.0

# 2. Create .env from the production template
cp .env.production .env
# Set DOMAIN and ACME_EMAIL, then replace every CHANGE_ME:
openssl rand -hex 32     # ENCRYPTION_KEY (64 hex chars)
openssl rand -hex 32     # REDIS_PASSWORD (hex only)
openssl rand -hex 24     # DB_PASSWORD (hex: it is embedded in DATABASE_URL)
openssl rand -base64 32  # JWT_SECRET, JWT_REFRESH_SECRET, WEBHOOK_SECRET

# 3. The proxy network is external and must exist first
docker network create deploykit-network

# 4. Build and start everything (migrations run when the API starts)
docker compose -f docker-compose.prod.yml up -d --build

No definas WEB_URL en producción — el archivo Compose la deriva como https://${DOMAIN}. Consulta Configuración para ver todas las variables.

Qué se instala

  • Traefik v3.6 — Reverse proxy en los puertos 80/443 con SSL automático de Let's Encrypt (redirección HTTP → HTTPS)
  • Docker socket proxy — API de Docker de solo lectura para Traefik
  • PostgreSQL 16 — Base de datos principal (volumen pgdata)
  • Redis 7 — Cola de trabajos y caché protegidas con contraseña (volumen redis-data)
  • DeployKit API — Contenedor Node 20 Alpine con acceso al socket de Docker; sirve /api, /trpc y /ws en tu dominio
  • DeployKit Web — El panel, servido en el mismo dominio

Rutas del host utilizadas: /opt/deploykit (instalación), /var/backups/deploykit (backups de bases de datos y servidores de juegos) y /var/lib/deploykit/compose (archivos de los stacks de Compose).

Después de la instalación

Apunta un registro A de tu dominio a la IP pública del servidor — Traefik solicita el certificado en la primera petición. Después abre https://deploy.example.com. Si no se creó ninguna cuenta de administrador durante la instalación, verás un formulario de registro: el primer usuario que se registre se convierte en administrador, y el registro se cierra después. Continúa con el Quickstart.

Actualizar DeployKit

bash
# Latest release
sudo deploykit update

# Pin (or roll back to) a specific release
sudo deploykit update --tag v0.6.0

# Manual installs
cd /opt/deploykit && git pull && docker compose -f docker-compose.prod.yml up -d --build

Las migraciones de la base de datos se ejecutan automáticamente cuando arranca el contenedor de la API, que se niega a iniciar si fallan. Actualizar a v0.6.0 desde una versión anterior requiere añadir primero REDIS_PASSWORD a .env (ver más arriba).

Consejo: si el contenedor de la API no arranca y sus logs muestran relation "users" already exists, la base de datos fue creada por un fallback antiguo que no dejó registro de las migraciones. Repárala una sola vez con sudo scripts/repair-migration-state.sh desde /opt/deploykit.