Instalación
Chinaski se instala en un servidor Debian/Ubuntu con un solo comando, o totalmente sin conexión desde un bundle. Esta página recorre la instalación estándar, el camino sin conexión, cómo verificar lo que descargaste y cómo funcionan las actualizaciones en una instancia instalada.
Requisitos
- Un servidor Debian/Ubuntu; ejecutas el instalador como root.
- Otros sistemas también funcionan, pero la instalación automática de paquetes del instalador asume Debian/Ubuntu: en otros lugares debes instalar tú mismo los paquetes prerequisito (documentados en el README del proyecto) antes de ejecutar el instalador.
La instalación de un solo comando
En un servidor fresco:
curl -fsSL https://chinaski.net/install | sudo bash -s -- 1 --repo https://github.com/bigjohncobb/chinaskiEso es todo. El instalador servido es la versión actual del propio script de instalación del proyecto. Reemplaza 1 por el nombre de tu instancia.
Lo que hace el instalador, en orden: todo automático:
- Instala él mismo todos los paquetes del sistema y dependencias de Perl (usando las versiones empaquetadas de Debian donde existen; la pequeña cantidad no empaquetada se descarga de CPAN en el momento de la instalación). Nada necesita compilarse a mano.
- Crea un usuario del sistema dedicado
chinaski. - Clona el repositorio y dispone la aplicación bajo
/var/www/chinaski<instance>con permisos restrictivos. - Crea e inicializa la base de datos SQLite.
- Genera un secreto único: impreso una sola vez al final de la instalación; anótalo en un lugar seguro.
- Registra el servicio de systemd y el temporizador de respaldo diario, ambos habilitados.
Opciones:
--repo URL: instalar desde una URL de git distinta (por defecto es el repositorio oficial).--local/--src DIR: instalar desde un checkout local en lugar de clonar.--dir DIR: instalar en un lugar distinto de/var/www/chinaski<instance>.--port PORT: el puerto de escucha. Los nombres de instancia numéricos obtienen3000 + Nautomáticamente (instancia1→ 3001); los nombres no numéricos usan por defecto 3001 salvo que se indique otro.
Reglas que vale conocer:
- Los nombres de instancia son alfanuméricos (
1,2,prod,staging). - El instalador se niega ante un directorio de instalación existente y no vacío: ejecuta primero el desinstalador para una reinstalación.
- Al final, la salida de finalización imprime tu secreto. Guárdalo.
- Un temporizador de respaldo diario se habilita automáticamente como parte de la instalación: ver Backup Schedule & Retention para ajustarlo.
Primera ejecución
La primera visita al sitio redirige a la pantalla de setup, donde estableces el nombre de usuario y la contraseña del primer administrador (mínimo 12 caracteres más mayúsculas, minúsculas y un dígito). Después de completar el setup, la pantalla de setup desaparece permanentemente. Las instalaciones por script pueden completar el mismo paso desde la línea de comandos (ver la referencia de CLI & Server).
Instalar sin conexión (sin internet, nunca)
En una máquina conectada:
bash install/make-bundle.shproduce un bundle de release más su checksum: código fuente de la aplicación, todos los módulos Perl necesarios, un instalador incluido: todo lo que la máquina de destino necesita. Copia el bundle a la máquina de destino por USB o cualquier medio sin conexión, luego:
cd chinaski-<commit>
sudo bash install.sh Sin DNS, sin certificados, sin descargas: todas las dependencias se resuelven desde el propio bundle. La instalación sin conexión pre-establece el secreto y el modo airgap en el archivo env. Existe una variante en línea del mismo instalador con banderas para la ubicación de instalación (--prefix), omitir el registro del servicio (--no-service) y omitir los paquetes del sistema (--no-apt).
Verificar un artefacto
Las salidas de build pueden ir acompañadas de un manifest firmado: un archivo que lista cada artefacto de release con su hash criptográfico, firmado con la clave Ed25519 del proyecto. Un verificador incluido lo comprueba sin conexión:
--manifest build-manifest.json \
--sig build-manifest.json.sig \
--pubkey keys/chinaski_manifest.pub \
--output output/ Exit 0 significa que la firma es válida y cada archivo listado coincide con su checksum registrado; cualquier otra cosa imprime exactamente qué archivos difieren (con --strict-tree, también señala los archivos presentes en el disco pero ausentes del manifest). Sin red necesaria: usable en hosts air-gapped.
Actualizar un sitio instalado
Las actualizaciones son por instancia y deliberadas:
- Descarga el código nuevo para esa instancia.
- Actualiza las dependencias (el script usa un directorio
vendor/incluido cuando está presente, de modo que los servidores sin conexión se actualizan limpiamente). - Verifica la sintaxis del código nuevo antes de que se toque nada.
- Reconstruye el sitio: si el build falla, la actualización aborta en lugar de reiniciar el servicio sobre una salida rota. (Una bandera de entorno opt-in deja pasar un hotfix solo de código cuando el builder mismo está atascado.)
- Reinicia el servicio y muestra el resultado; la raíz de documentos del servidor web se actualiza automáticamente si cambió tu modo de URL de idioma.
Puedes ejecutar un deploy explícitamente (deploy.sh <instance>), cablearlo detrás de un webhook, o dejar que el Manager lo maneje. Cada intento es seguro: el sitio en ejecución sigue sirviendo hasta que el nuevo se verifica por completo.
Después de instalar
- Completa el setup de primera ejecución (elige el nombre de usuario/contraseña del primer admin).
- Verifica que el temporizador de respaldo automático corrió.
- Las actualizaciones llegan mediante el script de deploy; las instalaciones nuevas siempre empiezan desde la versión que el instalador clona para ti.