Install the studyserver / studyctl binaries — no Docker required.
One command pulls the prebuilt binaries straight out of a public container image and drops them on the machine. This one URL detects how it was fetched: curl → install.sh PowerShell → install.ps1 browser → this page
curl -fsSL https://study.bat.nz | shirm https://study.bat.nz | iexBoth install studyctl and studyserver by default.
| OS | Location | Notes |
|---|---|---|
| Linux | /usr/local/bin |
System-wide and already on PATH. Needs root — the script uses sudo if you aren't root. |
| Windows | %LOCALAPPDATA%\Microsoft\WindowsApps |
Per-user, no admin. This folder is already on PATH, so studyctl runs by name in any shell.= C:\Users\<you>\AppData\Local\Microsoft\WindowsApps |
Set these as environment variables before running the one-liner.
| Variable | Default | Meaning |
|---|---|---|
STUDYSERVER_VERSION | latest | image tag to pull, e.g. v0.0.5 |
STUDYSERVER_BINDIR | see Where it installs | install directory |
STUDYSERVER_WHAT Windows | both |
studyctl, studyserver, or both. On Linux, pass it as an argument instead: … | sh -s -- studyctl |
# just the client
curl -fsSL https://study.bat.nz | sh -s -- studyctl
# pin a version
curl -fsSL https://study.bat.nz | STUDYSERVER_VERSION=v0.0.5 sh
# install elsewhere
curl -fsSL https://study.bat.nz | STUDYSERVER_BINDIR=$HOME/.local/bin sh# just the client
$env:STUDYSERVER_WHAT='studyctl'; irm https://study.bat.nz | iex
# pin a version
$env:STUDYSERVER_VERSION='v0.0.5'; irm https://study.bat.nz | iex
# install elsewhere
$env:STUDYSERVER_BINDIR='C:\tools'; irm https://study.bat.nz | iexAppend the filename to skip detection: study.bat.nz/install.sh · study.bat.nz/install.ps1
ghcr.io/andrewsav/study-server-dist
(a scratch image holding the four binaries). The scripts pull its single
layer with curl + tar — no Docker, crane, or oras needed.docker run ghcr.io/andrewsav/study-server.study nginx service (in the mailserver-private
deploy). Source of truth: the install/ folder of the study-server repo.git tag v0.0.6 && git push --tagsCI builds the binaries and pushes both GHCR images. A brand-new package is created
private — make study-server-dist (and study-server)
public once in GitHub → your profile → Packages → settings, or anonymous
pulls return 401 UNAUTHORIZED.