Skip to content

Quickstart (Self-Host)

Get Deckyard running on your machine. The installer takes one line; the manual path takes five.

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

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 the server exits at boot when it cannot reach one (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.

Terminal window
curl -fsSL https://deckyard.eu/install.sh | bash

This clones the repository, auto-detects Docker or Node, writes a local .env, installs dependencies, 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:

VariableEffect
DECKYARD_DIRTarget directory (default: ./deckyard)
DECKYARD_BRANCHBranch to check out (default: main)
DECKYARD_MODEForce docker or node instead of auto-detecting
PORTApp 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.

Terminal window
git clone https://github.com/jaapstronks/deckyard.git
cd deckyard
npm install
npm run setup # optional: AI key, auth, port (Enter accepts defaults)
npm run start

Before npm run start, point the DATABASE_* variables in .env at your PostgreSQL and run npm run db:migrate once (and again after each update). Database Configuration has the variables.

Open your browser to: http://localhost:4177

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.

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:

Terminal window
npm run setup -- --yes --ai=claude --ai-key=… --auth=off