Empezando
Instalando Cipi
Cipi instala una pila de producción completa lista para Laravel en Ubuntu 24.04 o 26.04 con un solo
comando. El instalador tarda aproximadamente 10 minutos y configura Nginx, MariaDB, PHP, Valkey
(opcional PostgreSQL vía cipi db install pgsql después de la instalación),
Supervisor, Fail2ban, UFW, Certbot, Deployer y el cipi CLI mismo.
Durante la instalación, el asistente solicita su clave pública SSH (formatos aceptados:
ssh-rsa, ssh-ed25519, ecdsa) antes de que cualquier paquete sea
instalado. Cipi crea un dedicado cipi Usuario de Linux para administrador SSH
acceso
y aplica endurecimiento SSH: el inicio de sesión raíz está deshabilitado, cipi utiliza sólo clave pública (grupo
cipi-ssh), usuarios de aplicaciones (grupo cipi-apps) puede conectarse con contraseña. Iniciar sesión
los intentos están limitados a 3 con un período de gracia de 20 segundos y el reenvío X11 está deshabilitado.
El instalador también genera un contraseña raíz aleatoria de 40 caracteres, lo almacena en
/etc/cipi/server.jsony lo muestra en el resumen de instalación. Las claves SSH pegadas son
desinfectado automáticamente: los comentarios, los retornos de carro y el exceso de espacios en blanco se eliminan antes
validación.
Instalación estándar
$ wget -O - https://cipi.sh/setup.sh | bash
Instalación no interactiva
Para configuraciones automatizadas, pase su clave pública SSH a través del SSH_PUBKEY variable de entorno
para omitir el mensaje interactivo:
$ SSH_PUBKEY="ssh-ed25519 AAAA..." wget -O - https://cipi.sh/setup.sh | bash
ssh-keygen -t rsa -b 4096
AWS (inicio de sesión raíz deshabilitado de forma predeterminada)
$ ssh ubuntu@your-server-ip $ sudo -s $ wget -O - https://cipi.sh/setup.sh | bash
Al final de la instalación verá una pantalla de resumen con los detalles de acceso SSH, el
contraseña de root generada automáticamente y la contraseña de root MariaDB.
Guárdalos inmediatamente — se muestran solo una vez. Las credenciales se almacenan en
/etc/cipi/server.json, que, como todos los archivos de configuración Cipi, es
cifrado en reposo usando AES-256-CBC a través del incorporado Bóveda
sistema. Credenciales, claves SSH, .env archivos y volcados de bases de datos están protegidos tanto en
disco
y durante la transferencia (a través de Sincronizar archivos cifrados). Cipi también aplica
Retención de registros compatible con GDPR con políticas de rotación automática para la aplicación,
seguridad y registros HTTP; consulte Retención de registros para más detalles.
/etc/cipi/server.json.Acceso posterior a la instalación
Después de la instalación, acceso de administrador utiliza la autenticación de clave pública como
cipi usuario (el inicio de sesión raíz está deshabilitado). Usuarios de la aplicación ¿Puede SSH directamente con
ssh myapp@server-ip y la contraseña generada al crear la aplicación. correr
cipi comandos o realizar cualquier tarea administrativa, conéctese como cipi y
luego escalar:
# 1. connect to the server (key-based auth only) $ ssh cipi@your-server-ip # 2. escalate to root to run cipi commands cipi@server:~$ sudo -s # 3. now you can use all cipi commands root@server:~# cipi status root@server:~# cipi app list # 4. to work as an app user, switch with su root@server:~# su - myapp
Requisitos
- Ubuntu 24.04 o 26.04 LTS (solo instalaciones nuevas; no se admiten versiones provisionales)
- Acceso raíz (o
sudo -sen AWS) - Puertos 22, 80 y 443 abiertos
- Un servidor limpio: no instale Cipi en un servidor con una pila web existente
- A servidor público con acceso a Internet con un enrutable IPv4 pública dirección — Sólo NAT VPS, redes domésticas detrás de un enrutador y hosts no accesibles desde internet no es compatible
- KVM completo o virtualización bare-metal: no OpenVZ, contenedores LXC o kernel compartido entornos (incluidos locales Docker, Docker Desktop, OrbStack, Colima, WSL y similares) tiempos de ejecución de contenedores de escritorio)
Cipi está probado y funciona en: DigitalOcean, AWS EC2, Vultr, Linode/Akamai, Hetzner, Google Cloud, OVH, Scaleway y cualquier KVM o host bare-metal que ejecute Ubuntu con una IP pública.
Inicio rápido
1. Crea tu primera aplicación
El asistente interactivo solicita un nombre de usuario, dominio principal, URL del repositorio Git (formato SSH) y
rama
cuando corresponda, y la versión PHP. Las aplicaciones Laravel siempre requieren un repositorio; para
personalizado
aplicaciones, puede dejar el repositorio vacío para alojar el sitio solo a través de SFTP; consulte
aplicaciones personalizadas. desde v5.0, Laravel aplicaciones pueden usar
clásico PHP-FPM o Laravel Octane (FrankenPHP) con
--octane — ver Laravel Octane.
$ cipi app create $ cipi app create --octane # Laravel Octane (FrankenPHP)
O pase todas las banderas directamente para omitir el modo interactivo:
$ cipi app create \
--user=myapp \
--domain=myapp.com \
--repository=git@github.com:you/myapp.git \
--branch=main \
--php=8.5
Al final, Cipi imprime un resumen de credenciales: guárdalo, se muestra solo una vez - incluyendo
la dirección IP pública del servidor (para la configuración DNS), la clave de implementación SSH, las credenciales de la base de datos,
un listo para usar mariadb+ssh:// URL de conexión para GUI clientes (TablePlus, DBeaver,
Sequel Pro), webhook URL y webhook token.
2. Agregue la clave de implementación a su proveedor de Git.
Si ha configurado un token GitHub o GitLab a través de cipi git, este paso es
automático — Cipi agrega la clave de implementación y crea webhook para usted. Ver
configuración automática de git para más detalles.
De lo contrario, copie el ssh-ed25519 ... clave que se muestra después de la creación de la aplicación y agréguela como
Implemente la clave en su repositorio:
- GitHub: Repositorio → Configuración → Implementar claves → Agregar clave de implementación
- GitLab: Repositorio → Configuración → Repositorio → Implementar claves
3. Prepare su proyecto Laravel
Cipi utiliza el controlador de la base de datos para caché, sesiones y colas. Ejecútelos una vez dentro de su Laravel proyectar, confirmar e impulsar las migraciones generadas:
$ php artisan cache:table $ php artisan session:table $ php artisan queue:table $ php artisan migrate
artisan migrate --force en cada despliegue. El caché,
La sesión y las tablas de cola se crearán en la primera implementación si confirma las migraciones.4. Implementar
$ cipi deploy myapp
El implementador clona su repositorio en un nuevo releases/N/ directorio, se ejecuta
composer install --no-dev, enlaces .env y storage/, corre
migraciones, carreras artisan optimize, crea storage:link, intercambia el
current enlace simbólico de forma atómica y reinicia los trabajadores de la cola. Cero tiempo de inactividad.
5. Instale SSL
$ cipi ssl install myapp
Certbot proporciona un certificado Let's Encrypt, configura Nginx para HTTPS y actualiza
APP_URL en .env. Tu aplicación Laravel ya está disponible
https://myapp.com.
Pila de tecnología
Cipi trae una pila completa y lista para producción a su servidor Ubuntu. Aquí está todo lo que obtiene. instalado y configurado:
| Componente | Rol |
|---|---|
| Ubuntu | SO básico (24.04 o 26.04 LTS) |
| Nginx | Servidor web, proxy inverso, terminación SSL. desde v4.5.9, línea principal
nginx de nginx.org
(1.29.8+) con max_headers 1000 para endurecimiento HTTP/2, no el Ubuntu
paquete de archivo |
| PHP-FPM | Tiempo de ejecución predeterminado PHP por aplicación (8.3–8.5; ondrej/php, packages.sury.org o Ubuntu main por liberación) |
| Laravel Octane | Servidor FrankenPHP HTTP opcional por aplicación Laravel (ya que v5.0) —
cipi app create --octane; Las aplicaciones FPM y Octane coexisten en el mismo servidor
|
| MariaDB | Base de datos relacional predeterminada (reemplazo directo MySQL, puerto 3306). Opcional
PostgreSQL vía cipi db install pgsql (puerto 5432) desde v4.8.0 |
| Valkey | Almacenamiento en memoria para caché, sesiones, colas y difusión (bifurcación Redis con licencia BSD) |
| Supervisor | Administrador de procesos para Laravel trabajadores de cola, Octane, Horizon y Reverb |
| Implementador | Herramienta de implementación sin tiempo de inactividad |
| Certbot | Let's Encrypt SSL certificados |
| UFW | Cortafuegos (puertos 22, 80, 443) |
| falla2ban | Protección progresiva por fuerza bruta con cárcel reincidente |
| actualizaciones desatendidas | Parches de seguridad automáticos |
| Composer | PHP administrador de dependencias |
| cipi CLI | Gestión y orquestación de servidores. |
Estructura de la aplicación
cuando corres cipi app create, Cipi crea un entorno completamente aislado para la aplicación.
Aquí está todo lo que se configura:
/home/myapp/ ← usuario aislado de Linux (chmod 750) ├── .ssh/ │ ├── id_ed25519 ← implementar clave (privada) │ └── id_ed25519.pub ← clave de implementación (pública - agregar a Git) ├── .deployer/ │ └── deploy.php ← Configuración del implementador (generada automáticamente) ├── actual -> releases/3/ ← enlace simbólico a la versión activa ├── releases/ │ ├── 1/ │ ├── 2/ │ └── 3/ ← última versión (se conservan las últimas 5) ├── shared/ │ ├── .env ← compilado automáticamente por Cipi │ └── storage/ ← almacenamiento persistente └── logs/ ├── nginx-access.log ├── nginx-error.log ├── php-fpm-error.log ├── worker-default.log └── deploy.log
Además del directorio de inicio, Cipi crea estos archivos de sistema:
PHP-FPM pool: /etc/php/8.5/fpm/pool.d/miaplicación.conf (usuario=miaplicación; omitido para Octane aplicaciones) Octane (v5+): Supervisor miaplicación-octane + Nginx proxy_pass → 127.0.0.1:81xx Nginx vhost: /etc/nginx/sites-available/miaplicación Supervisor: /etc/supervisor/conf.d/miaplicación.conf Crontab: * * * * * php artisan schedule:run MariaDB: database 'miaplicación', user 'miaplicación'@'localhost'
el .env se compila automáticamente con todas las credenciales: nombre de la base de datos, contraseña, token webhook,
y APP_KEY. Nunca tendrás que tocarlo manualmente, pero siempre puedes editarlo con
cipi app env myapp.