Run a GHCR release
The recommended path for production. It starts quickly, requires no local build, and uses a versioned image published by the Presenton team.
Build from GitHub source
The flexible path for development and customization. Clone the repository and let Docker Compose build the application on your server.
Option 1: Run a published GHCR release
This is the most stable and straightforward way to self-host Presenton. The image already contains the frontend, API, export tools, and runtime dependencies, so the host only needs Docker. The examples below pinv0.9.3-beta for predictable deployments. Browse the published image versions to choose another release, or replace the version with latest to follow the newest published image automatically.
- Linux and macOS
- Windows PowerShell
5001:80 is the port on your host and can be changed; container port 80 serves the web app, REST API, and /mcp.
Configure the release image
Pass settings with--env-file to keep the docker run command readable:
--env-file .env before the image name:
Update a GHCR deployment
Pull the new image before replacing the container. Keep the sameapp_data directory and startup options.
docker pull and docker run commands.
Option 2: Build from the GitHub source
Choose this path when you want to change Presenton, review the code before deployment, test unreleased work, or build a specific branch or commit. You need Git, Docker Engine, and the Docker Compose plugin.1
Clone the repository
2
Choose the source revision
A fresh clone uses
main, which contains the newest source. For a repeatable build, check out a Git tag or commit that exists in the repository before continuing.3
Add your configuration
Create
.env beside docker-compose.yml. Compose reads this file and forwards the supported values to Presenton.4
Build and start Presenton
Dockerfile, starts the container, and mounts ./app_data at /app_data.The
main branch can contain changes that have not reached a published container release. For a more predictable source build, check out a release tag or pin a commit before building.Update a source build
If you followmain, pull the newest commits and rebuild:
production-gpu, development, and development-gpu services. Use production for a normal hosted instance. Use production-gpu only after installing the NVIDIA Container Toolkit and confirming that Docker can access the GPU.
Persistence
Both deployment paths store persistent state in/app_data inside the container:
- The GHCR commands mount the local
./app_datadirectory explicitly. - The repository’s Compose service creates the same mount automatically.
Ports and networking
localhost inside a container refers to the container itself. Reach another Compose service by its service name, or reach a service on the host through a supported host gateway such as host.docker.internal.