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.shThat 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 databaseThe 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.