Yozgat is a simple self-hosted deployment platform.
Install (latest release) — root required
curl -fsSL https://raw.githubusercontent.com/GroophyLifefor/yozgat-mrt/main/install.sh | sudo bashUpdate to the latest release (with automatic rollback if fails)
curl -fsSL https://raw.githubusercontent.com/GroophyLifefor/yozgat-mrt/main/update.sh | sudo bashUninstall (removes everything incl. data)
curl -fsSL https://raw.githubusercontent.com/GroophyLifefor/yozgat-mrt/main/uninstall.sh | sudo bashUninstall but keep the data directory
curl -fsSL https://raw.githubusercontent.com/GroophyLifefor/yozgat-mrt/main/uninstall.sh -o uninstall.sh \
&& sudo bash uninstall.sh --keep-dataThe service listens on <your-ip>:6637 by default.
- Crystal >= 1.15
- Shards
- Native libraries (see below)
shards installjust build # Windows: vendor/libata/win-x64, Linux: vendor/libata/linux-x64Or manually (note: use absolute LIBPATHs — the compiler resolves them in the link phase):
# PowerShell
$root = (Get-Location).Path
crystal build src/main.cr -o bin/yozgat.exe --link-flags "/LIBPATH:$root/vendor/libata/win-x64 /LIBPATH:$root/libsqlite"# Linux
crystal build src/main.cr -o bin/yozgat --link-flags "-Lvendor/libata/linux-x64 -Llibsqlite"Run (DLLs must be findable at runtime):
$env:PATH = "$PWD/vendor/libata/win-x64;$PWD/libsqlite;$env:PATH"
.\bin\yozgat.exe # or: just runOpen http://localhost:3000 — the first visit leads to the admin registration page.
API docs are at http://localhost:3000/docs (Scalar UI) and the raw spec at
/openapi.json.
| Env var | Default | Purpose |
|---|---|---|
PORT |
3000 |
HTTP listen port |
YOZGAT_PUBLIC_DIR |
./public |
Where the static pages live |
YOZGAT_DATA_DIR |
./data |
Where the SQLite file lives |
YOZGAT_JWT_SECRET |
random per boot | Token signing secret. Set it in production; otherwise tokens invalidate on every restart |