Skip to content
Documentation

Installing Blysis

One command on a fresh machine. It installs Docker if the machine does not have it, generates every secret, pulls a prebuilt image, starts PostgreSQL and Redis, waits until the site answers, and prints the address and the first admin password.

curl -fsSL https://blysis.com/install.sh | sudo bash

It asks three questions, each with a default. Give it a domain and it obtains and renews an HTTPS certificate on its own.

What the machine needs

  • 64 bit Linux with systemd
  • 2 GB of memory for a small site, 4 GB if you expect traffic
  • A domain pointed at the machine, if you want HTTPS

Nothing else. Docker, PostgreSQL and Redis are installed and configured for you, and every password and secret is generated rather than defaulted.

After it finishes

The machine has a blysis command:

blysis update     # pull the newest image and restart
blysis backup     # dump the database and the uploads
blysis restore    # put a dump back
blysis logs       # follow the application log
blysis status     # what is running, and since when
blysis restart    # restart the application

Open the address it printed, finish the setup wizard, and install what the site needs from Admin > Modules > Marketplace.

Installing a module rebuilds the app

This is the one thing worth knowing before you deploy, because it is the one architectural fact that reaches operations.

A module ships React server components, and those are compiled rather than loaded at runtime. So installing one rebuilds the application and replaces the process, on a short debounce, which means installing thirty modules produces one build rather than thirty.

Two consequences:

  • Run the application under a supervisor. Docker Compose with restart: unless-stopped, systemd with Restart=always, or pm2. The Docker install does this for you. A bare npm start in a terminal does not: the process exits after an install and nothing brings it back.
  • One application process per installation. Two processes sharing the modules volume would both build into the same directory and the loser would serve a half-written build.

Expect a gap of seconds to minutes while a build runs, so install modules during a quiet window on a busy site. A build that fails is loud in the logs but does not stop the boot: the previous build keeps being served, so the admin panel stays reachable and the offending module can be removed.

Running it without Docker

You will need Node.js 24 or newer and PostgreSQL 14 or newer. Redis is optional locally and required in production, where the rate limiter refuses to run without it rather than silently letting every request through.

The repository's own readme covers the development setup in full.