---
title: "Deploy Presenton | Open Source AI Presentation Generator"
description: "Self-hosted AI presentation & slide generator with persistent storage"
category: "AI/ML"
url: https://railway.com/deploy/presenton
---

# Deploy Presenton | Open Source AI Presentation Generator

Self-hosted AI presentation & slide generator with persistent storage

**[Deploy Presenton | Open Source AI Presentation Generator on Railway](https://railway.com/template/presenton)**

- **Creator:** katsuba.dev
- **Category:** AI/ML
- **Total deploys:** 1

## Template content

### Postgres

- **Image:** postgres:18.4-alpine

### Presenton https://cdn.jsdelivr.net/gh/presenton/presenton@v0.9.4-beta/electron/build/icon-1024.png

- **Image:** ghcr.io/presenton/presenton:v0.9.4-beta
- **Start command:** `bash -c 'for i in $(seq 1 90); do (echo > /dev/tcp/$DB_WAIT_HOST/$DB_WAIT_PORT) 2>/dev/null && break; echo "waiting for postgres ($i/90)"; sleep 2; done; exec node /app/start.js'`
- **Health check:** /
- **Public domain:** Yes

## Documentation

# Deploy and Host Presenton on Railway

Presenton is an open-source, AI-powered presentation generator — a self-hosted
alternative to Gamma, Beautiful.ai, Decktopus and Presentations.ai. Describe a topic,
pick a template, and it writes and designs a full slide deck you can edit in the browser
and export to PPTX or PDF. It also exposes a generation API and an MCP endpoint.

This template runs Presenton with a **PostgreSQL database** and a **persistent volume**, so
your presentations, uploads and exports survive redeploys — bring your own LLM key
(OpenAI, Google Gemini, Anthropic, OpenRouter and others) or configure one from the in-app
settings after you log in.

## About Hosting Presenton

Presenton ships as a single upstream container that runs an internal nginx in front of a
Next.js UI, a FastAPI backend and an MCP server, plus a bundled Chromium for PPTX/PDF export.
This template deploys that image **pinned to a fixed version** (never `latest`, so a redeploy
never swaps the app underneath you) and pairs it with two pieces of durable storage:

- **PostgreSQL** (a dedicated `postgres` service on its own volume) holds your accounts,
  presentations, templates and generation history. Presenton reads a standard `DATABASE_URL`
  and runs its migrations automatically on boot.
- **A mounted volume at `/app_data`** keeps every file asset — generated decks, PPTX/PDF
  exports, uploaded images and fonts. Presenton has no object-storage backend, so this volume
  *is* the persistence for everything that is not in the database.

The app has its own username/password authentication. On first visit you set the primary
administrator account — **do this immediately after deploying**, before sharing the URL.

## Common Use Cases

- **AI-generated decks on your own infrastructure** — draft presentations from a prompt or an
  outline without sending your content to a third-party SaaS.
- **Programmatic slide generation** — call the built-in generation API (or the MCP endpoint)
  to produce decks from other tools and pipelines.
- **A private, brandable Gamma / Beautiful.ai alternative** — keep templates, fonts and
  exported files under your control and your account.

## Dependencies for Presenton Hosting

### Deployment Dependencies

- Upstream image [`ghcr.io/presenton/presenton`](https://github.com/presenton/presenton),
  pinned to a specific release — nothing is custom-built.
- A PostgreSQL 18 service and two volumes, created for you by this template.
- An LLM provider key to actually generate presentations. Set `LLM` and the matching key
  (e.g. `OPENAI_API_KEY`) as variables, or add it from the in-app settings after login. The
  app boots and lets you sign in without a key; generation is enabled once a key is present.

### Implementation Details

- The generated database password is referenced into `DATABASE_URL`, so the two services are
  wired together with no manual step.
- The app waits for PostgreSQL before running its migrations, so a cold start does not race
  the database.
- `PORT` is fixed to the image's internal nginx port and should not be changed.
- Stock-image search (Pexels) is optional; set `PEXELS_API_KEY` to enable it.

## Why Deploy Presenton on Railway?

Railway provisions the PostgreSQL service, both volumes and the public domain as part of the
one-click deploy, and wires the database credentials in automatically — you get a running,
persistent Presenton without hand-editing any configuration.

**Resource use:** the app container is moderately heavy — plan for roughly **0.7–1 GB of RAM**
in normal use, with brief spikes while Chromium renders a PPTX/PDF export; PostgreSQL adds a
small, steady footprint. A light-to-moderate personal instance typically costs on the order of
a few dollars to ~$15 per month depending on how much you generate and export. Your LLM usage
is billed separately by whichever provider key you supply.


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [stella](https://railway.com/deploy/stella) — Self-host stella with web, API, Postgres, Redis, and object storage.
- [Hermes Agent | OpenClaw Alternative with Dashboard](https://railway.com/deploy/hermes-agent-or-openclaw-alternative-wit) — Self-Hosted Hermes AI Agent for Telegram, Discord & Slack

Open this page in a browser: https://railway.com/deploy/presenton
