Skip to main content
Choose the installation that matches where Presenton will run.
The default self-hosted URL is http://localhost:5001. Port 5001 on the host maps to port 80 in the container.

Option 1: Docker Run

Install Docker Desktop or Docker Engine, then start the current v0.9.0-beta image.
The versioned tag keeps this guide reproducible. Replace it with ghcr.io/presenton/presenton:latest when you intentionally want the newest published image.

Publish only the ports you need

To use Sign in with ChatGPT, publish the OAuth callback port and select the Codex provider:
The browser returns authentication to http://localhost:1455/auth/callback. Without 1455:1455, ChatGPT/Codex sign-in cannot complete inside the Docker container. API-key providers do not need this extra port.

Run in the background

Add --detach to the command, then manage the container with:

Use another host port

Change only the value before the colon. This example opens Presenton at http://localhost:8080:

Option 2: Docker Compose

Clone the source repository when you want a repeatable deployment with a .env file and the repository’s production profiles.
Create a .env file beside docker-compose.yml:
Start the production service:
Run it in the background with docker compose up --detach production. To use port 8080 without editing .env:
The repository provides four services:
Compose already publishes 1455:1455 for the Codex OAuth callback. This is what lets users select Sign in with ChatGPT and use an eligible existing ChatGPT/Codex subscription without an OpenAI API key.

Option 3: Desktop app

Use the desktop application when you want a native installation and do not need to expose the REST API or MCP server to other tools.

Install the desktop app

Download the correct package, complete the operating-system prompts, and connect a provider.
The Electron desktop app does not expose the MCP server. Use Docker or another web deployment when you need MCP or a remotely accessible API.

Option 4: NVIDIA GPU

Install the NVIDIA driver and NVIDIA Container Toolkit, confirm docker run --gpus all works, then use either the GPU Compose service or --gpus=all.
Or with Compose:
GPU access helps compatible local workloads; it does not make hosted API providers run locally.

Complete the first-run setup

1

Open Presenton

Visit http://localhost:5001, or the host port you selected. For a remote server, use its HTTPS address.
2

Choose the text model

Select the provider that creates outlines, slide content, and AI edits. You can configure it in Settings or with environment variables.
3

Choose images and search

Connect a stock or generated-image provider. Enable web search only when the presentation needs current public information.
4

Verify persistence

Create a small presentation, restart the container, and confirm the presentation remains available. If it disappears, inspect the /app_data mount.
5

Secure shared deployments

Configure the single admin account, use HTTPS through a reverse proxy, and keep secrets in a protected .env file or secret manager.

Verify the installation

Open the UI and generate a short two-slide test deck. A successful test confirms that the application, selected text provider, image configuration, and persistent storage are working together.
Keep the /app_data mount when replacing or upgrading a container. Starting a new container without it creates an empty instance and makes the existing presentations and settings appear missing.

Configure the instance

Add providers, authentication, search, memory, and storage settings.

Create your first presentation

Generate, edit, and export a complete deck.

Configure by goal

See exactly which ports and variables enable ChatGPT/Codex sign-in, local models, images, web search, API access, MCP, authentication, and external storage.