Hecho con Chinaski

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/chinaski

Eso 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:

  1. 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.
  2. Crea un usuario del sistema dedicado chinaski.
  3. Clona el repositorio y dispone la aplicación bajo /var/www/chinaski<instance> con permisos restrictivos.
  4. Crea e inicializa la base de datos SQLite.
  5. Genera un secreto único: impreso una sola vez al final de la instalación; anótalo en un lugar seguro.
  6. 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 obtienen 3000 + N automáticamente (instancia 1 → 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.sh

produce 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:

  1. Descarga el código nuevo para esa instancia.
  2. Actualiza las dependencias (el script usa un directorio vendor/ incluido cuando está presente, de modo que los servidores sin conexión se actualizan limpiamente).
  3. Verifica la sintaxis del código nuevo antes de que se toque nada.
  4. 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.)
  5. 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.
Lee este sitio en