Built with Chinaski

Installation

Install Chinaski

One command on Debian or Ubuntu. An offline bundle for air-gapped and non-Debian systems. No repository to add, no toolchain to assemble.

Download install.sh

Two install paths

Online — Debian / Ubuntu

Uses apt to install pre-compiled Perl packages. No C compiler, no CPAN wait. The installer runs in about 30 seconds on a typical VPS.

curl -fsSL https://www.chinaski.net/install.sh \
  | sudo bash -s -- 1

Downloads ~4 MB. Requires internet access during the install.

Offline — any Linux

Downloads a self-contained bundle with all Perl modules as vendored source tarballs. Compiles them on your machine. Works air-gapped once the bundle is on disk.

curl -fsSL https://www.chinaski.net/install.sh \
  | sudo bash -s -- --offline \
    --prefix /srv/chinaski

Downloads ~50 MB. Requires gcc, make, and image dev libraries (libjpeg, libpng, libgif).

Online install — Debian / Ubuntu

Prerequisites

A Debian or Ubuntu host with sudo or root access. The installer handles everything else — Perl, SQLite, all nine production dependencies — via apt. Supported on Debian 11+ and Ubuntu 20.04+.

Run the installer

Pick an instance name — a short alphanumeric label used in the service name and install path. 1 is fine for a single install:

curl -fsSL https://www.chinaski.net/install.sh | sudo bash -s -- 1

To install to a custom directory or port:

curl -fsSL https://www.chinaski.net/install.sh \
  | sudo bash -s -- prod --dir /srv/chinaski --port 3001

The installer prints each step as it runs. On success it prints the install path, service name, and listen address.

What gets installed

  • Code — extracted to /var/www/chinaski1/ (or your --dir)
  • Database — SQLite at /var/www/chinaski1/chinaski.db, initialised from schema.sql
  • Env file/etc/chinaski1/env with a generated secret and listen URL
  • Servicechinaski@1.service enabled and started via systemd
  • Backup timerchinaski-backup@1.timer runs daily at 03:17
  • Output dir/var/www/chinaski1/output/ where the built static site lands

Verify the service

systemctl status chinaski@1
journalctl -u chinaski@1 -n 20

The daemon binds to 127.0.0.1:3001 by default — loopback only by design. Put a reverse proxy in front of it.

Configure your web server

Ready-to-use config examples ship in deploy/:

  • deploy/chinaski.nginx.conf.example — nginx vhosts with /forms/ proxy for form blocks
  • deploy/chinaski.Caddyfile.example — Caddy equivalent

The admin domain proxies all requests to the daemon. Public language vhosts serve static files from output/{lang}/ and only proxy /forms/.

Log in and run the first build

Open your admin domain in a browser and log in. Go to Build → Run build. Chinaski renders all published pages and posts to /var/www/chinaski1/output/. Point your public vhost at output/en/ (or output/ for single-language sites) and your site is live.

Offline install — any Linux

When to use this

Use the offline path when your target machine is air-gapped or has no reliable internet during setup, you're on a non-Debian Linux (Alpine, Arch, RHEL, etc.), or you want to pre-download everything on a fast machine and transfer it to slower hardware.

Prerequisites

The bundle compiles XS modules on the target machine. You need: gcc or clang, make, perl 5.26+, sqlite3, openssl, and image library headers.

# Debian / Ubuntu
apt-get install -y make gcc sqlite3 openssl libjpeg-dev libpng-dev libgif-dev

# Alpine
apk add make gcc sqlite openssl libjpeg-turbo-dev libpng-dev giflib-dev

One-liner

curl -fsSL https://www.chinaski.net/install.sh \
  | sudo bash -s -- --offline --prefix /srv/chinaski

Download, verify, and run manually

# Download the bundle and its checksum
curl -O https://www.chinaski.net/dist/chinaski-latest.tar.gz
curl -O https://www.chinaski.net/dist/chinaski-latest.tar.gz.sha256

# Verify before running
sha256sum -c chinaski-latest.tar.gz.sha256

# Extract and install
tar -xzf chinaski-latest.tar.gz
cd chinaski-latest
sudo bash install.sh --prefix /srv/chinaski

Seed the site URL during install

sudo bash install.sh \
  --prefix /srv/chinaski \
  --site-url https://example.com

This writes the value into the SQLite settings table. It can also be changed later from Admin → Settings.

Verify your download

SHA-256 checksums are published alongside each artifact. Download the .sha256 file and verify before running on sensitive systems.

chinaski-latest-src.tar.gz.sha256

Ready to build your first site?

The Get Started guide walks through writing pages, creating blocks, running your first build, and deploying flat HTML to any host.

Get Started →