Quickstart (Self-Host)
Get Deckyard running on your machine. The installer takes one line; the manual path takes a handful of commands.
What This Is
Section titled “What This Is”Deckyard is a self-hosted web app for creating and presenting slide decks. It runs as:
- A plain Node.js server
- A vanilla ESM client (no bundler)
- PostgreSQL for all data, with uploaded media on disk
Requirements
Section titled “Requirements”Either of these is enough; the installer uses whichever it finds.
- Docker, or
- Node.js 22 or newer with npm, plus a PostgreSQL database you run yourself
With Docker the database comes along: the compose stack ships its own PostgreSQL. On the Node path Deckyard refuses to start without a database that is both reachable and migrated: it stops with a message naming the connection it tried and what to fix, instead of starting a server that fails on every request (see Database Configuration).
The installer does not install Docker, Node or PostgreSQL for you. If neither Docker nor Node is present it says where to get them and stops.
One-Line Install
Section titled “One-Line Install”curl -fsSL https://deckyard.eu/install.sh | bashThis clones the repository, auto-detects Docker or Node, writes a local .env, installs dependencies, applies the database migrations, starts the app and opens your browser at http://localhost:4177. Nothing leaves your machine.
It is safe to re-run: an existing install is updated in place, and an existing .env is left alone.
Optional knobs, all set as environment variables:
| Variable | Effect |
|---|---|
DECKYARD_DIR | Target directory (default: ./deckyard) |
DECKYARD_BRANCH | Branch to check out (default: main) |
DECKYARD_MODE | Force docker or node instead of auto-detecting |
PORT | App port (default: 4177) |
Piping a script into bash deserves a look first. It is served at deckyard.eu/install.sh, and the same file is scripts/install.sh in the repository.
Manual Install
Section titled “Manual Install”git clone https://github.com/jaapstronks/deckyard.gitcd deckyardnpm installnpm run setup # optional: AI key, auth, port (Enter accepts defaults)# point DATABASE_URL (or the DATABASE_* variables) in .env at your PostgreSQLnpm run db:migrate # create the schema; part of installing, and again after each updatenpm run startnpm run db:migrate is an install step, not something to do after the first start: without it the server refuses to start. It is safe to repeat. Database Configuration has the variables.
Access
Section titled “Access”Open your browser to: http://localhost:4177
Configuration
Section titled “Configuration”npm run setup writes a .env for you. To edit it by hand, copy .env.example to .env and change what you need.
See Environment Variables for the full configuration reference.
Letting an AI Agent Do It
Section titled “Letting an AI Agent Do It”Deckyard is MCP-native, so a shell-capable coding agent can clone it, configure it with your keys, start it and wire itself in over MCP. The setup script takes flags for exactly that:
npm run setup -- --yes --ai=claude --ai-key=… --auth=offNext Steps
Section titled “Next Steps”- Docker Deployment - the production path, with Compose
- Configuration - customize your instance
- Creating Presentations - start making presentations