Installation

Run BlokeBot on infrastructure you control.

Use Nix for the shortest reproducible route, Docker for an isolated service, or the source tree while developing. Every command below works from the current repository—there are no unreleased package placeholders.

01

Nix

Run the current BlokeBot flake without installing it globally. The first command confirms the CLI; the second starts the dashboard and writes durable state to the supplied directory.

nix run github:alsi-lawr/BlokeBot#blokebot -- help
nix run github:alsi-lawr/BlokeBot#blokebot -- \
  serve --host 127.0.0.1 --port 8080 --data-dir "$HOME/.local/state/blokebot"

For a NixOS service, import github:alsi-lawr/BlokeBot and enable services.blokebot. Put credentials in services.blokebot.environmentFile; ordinary environment values are stored in the world-readable Nix store.

02

Docker

Build the production Dockerfile from a source checkout, then mount /data as durable state. Configuration can be supplied with environment variables or an environment file.

git clone https://github.com/alsi-lawr/BlokeBot.git
cd BlokeBot
docker build --file packaging/docker/blokebot.Dockerfile --tag blokebot:local .
docker run --rm --init \
  --publish 8080:8080 \
  --volume blokebot-data:/data \
  --env-file /etc/blokebot/blokebot.env \
  blokebot:local

Back up the named volume before replacing or removing it. The image already starts blokebot serve on port 8080 and keeps the database, token cache and automatically managed Data Protection keys under /data.

03

Source checkout

Use the repository directly when changing BlokeBot. Install the .NET 10 SDK and Node.js; the Core build restores its pinned npm dependencies and compiles Tailwind automatically.

git clone https://github.com/alsi-lawr/BlokeBot.git
cd BlokeBot
dotnet restore BlokeBot.slnx
dotnet run --project src/BlokeBot -- help
dotnet run --project src/BlokeBot -- \
  serve --host 127.0.0.1 --port 8080 --data-dir ./.local/blokebot

04

Run the separate help site

The site is stateless and does not reference the bot, persistence or Twitch projects. Run it independently on port 8081:

nix run github:alsi-lawr/BlokeBot#blokebot-site -- \
  --urls http://127.0.0.1:8081

When a reverse proxy publishes it below a path such as /blokebot, set the path base as well. The generated base URL, internal links, theme media and static assets then stay under that prefix:

nix run github:alsi-lawr/BlokeBot#blokebot-site -- \
  --urls http://127.0.0.1:8081 \
  --BlokeBotSite:PathBase=/blokebot

The NixOS module exposes the same setting as services.blokebot-site.pathBase = "/blokebot";.

Or build its dedicated container:

docker build --file packaging/docker/blokebot-site.Dockerfile \
  --tag blokebot-site:local .
docker run --rm --init --publish 8081:8081 \
  --env BlokeBotSite__PathBase=/blokebot \
  blokebot-site:local

Omit BlokeBotSite__PathBase when the help site has its own host name or is served at /.

05

Configure Twitch and public HTTPS

A running process is only the first half of server setup. Create the Twitch developer application, register both callback paths, keep the client secret outside source and give the public dashboard a trusted HTTPS address.