Built with Chinaski

Offline Installation

How to get Chinaski running on a machine that cannot (or must not) reach the internet.

On a connected machine: make the bundle

The repository ships a bundle creator:

bash install/make-bundle.sh

That produces a tar.gz containing the application source, every CPAN module tarball, a bundled module installer, and the install script — with a .sha256 checksum file alongside, so the USB transfer can be verified. (Integrity checking is the file's purpose; verify before the transfer.)

On the target machine: install with no internet

Two hard prerequisites and one caveat:

  • The system packages (perl, make, gcc, sqlite3, and the three image dev libraries + openssl and cpanminus for the installer) must exist on the target or be provided from a local mirror / pre-downloaded .deb set.
  • On ARM boards, be sure to install those image libraries explicitly — otherwise the image-processing module will fail to compile.

Then:

tar -xzf chinaski-<commit>.tar.gz
sudo bash install.sh        # standard install: creates the chinaski system user, installs the systemd unit, initializes the database

The installer installs CPAN modules strictly from the bundle — "no outbound connections are made". It writes the environment file for you, with a generated session secret and air-gap mode active, so the installed app is offline-safe from first boot. Two options: --no-service skips systemd (good for single-server quick setups), and --prefix /srv/chinaski picks an install directory.

Running it immediately

Without systemd: source the generated env file, export PERL5LIB=./local/lib/perl5, run the bundled hypnotoad on the application — the admin will be at host:8080. With systemd: enable the chinaski@<instance> unit as on a normal install.

What to remember

  • The bundle also carries your install scripts and per-instance files, so target machines never need to phone the repo for anything at install time.
  • Every deployment is per instance: the same tarball install pattern is what a "second instance" uses on the same offline host.