llka-deploy
v1.0.0
Published
One-command installer for the leih.lokal stack
Maintainers
Readme
██╗ ██╗ ██╗ ██╗ █████╗
██║ ██║ ██║ ██╔╝██╔══██╗
██║ ██║ █████╔╝ ███████║
██║ ██║ ██╔═██╗ ██╔══██║
███████╗███████╗██║ ██╗██║ ██║
╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝llka-deploy
One-command installer for leih.lokal — a management system for Libraries of Things (Leihladen).
npx llka-deployThat's it. The interactive installer walks you through everything.
The LLKA Stack
| Component | What it does | Port | |-----------|-------------|------| | LLKA-B | PocketBase backend — API, database, auth, hooks | 8090 | | LLKA-V | Management UI — items, customers, rentals | 3000 | | LLKA-R | Public reservation portal (optional) | 3001 |
Everything is installed to ~/.leihlokal/.
What the Installer Does
- Component selection — choose which parts of the stack to install
- Configuration — name your library, set opening hours, configure your domain
- Prerequisites check — verifies git, curl, Node.js 20+
- LLKA-B — downloads the latest PocketBase binary for your platform
- LLKA-V / LLKA-R — clones, configures
.env.local, and builds the Next.js apps - Admin setup — creates your superuser, seeds settings, configures email templates
- Networking — optionally sets up Caddy (auto-HTTPS) or Cloudflare Tunnel
- Services — registers systemd (Linux) or launchd (macOS) services for auto-start
- CLAUDE.md — generates an agent-readable config file for AI-assisted maintenance
Requirements
- Linux or macOS
- Node.js 20+ (Bun auto-detected and preferred if available)
- git and curl
Updating
npx llka-deploy@latestThe installer detects your existing installation and offers to update, reconfigure, start fresh, or uninstall.
Networking
When you provide a domain name, the installer offers three options:
- Caddy (recommended) — downloads Caddy, generates a Caddyfile, handles HTTPS automatically
- Cloudflare Tunnel — sets up a tunnel with
cloudflaredfor Cloudflare-managed domains - Manual — prints the port map and example reverse proxy configs
Without a domain, everything runs on localhost.
Platform Support
| | Linux | macOS |
|---|---|---|
| Services | systemd (auto-start, auto-restart) | launchd (auto-start, auto-restart) |
| Logs | journalctl --user -u leihbackend | ~/.leihlokal/logs/ |
| Networking | Caddy, Cloudflare Tunnel, manual | Caddy, manual |
| Production | Yes | Testing recommended |
Uninstalling
npx llka-deploy
# Select "Uninstall"Stops all services, deregisters service files, and removes ~/.leihlokal/.
Development
git clone https://github.com/leih-lokal/llka-deploy
cd llka-deploy
npm install
npm run dev # Run directly via tsx
npm run build # Build for distributionTech stack: TypeScript, @clack/prompts (TUI), tsup (bundler), Node.js built-ins for everything else.
Related Repos
- leih-lokal/leihbackend — LLKA-B: PocketBase backend, hooks, migrations
- leih-lokal/llka-verwaltung — LLKA-V: Next.js management UI
- leih-lokal/llka-resomaker — LLKA-R: Next.js reservation portal
License
MIT
