Run Presenton with Docker Run or Docker Compose and keep its data persistent.
Docker is the recommended self-hosted deployment. Use Docker Run for the shortest path to a working instance and Compose when configuration must be repeatable.
Open http://localhost:5001. Container port 80 serves the browser, REST API, and /mcp; the value before the colon is the host port and can be changed.
Keep the /app_data mount whenever you replace the container. It contains presentations, uploads, templates, settings, authentication state, the default database, exports, and local memory.
git clone https://github.com/presenton/presenton.gitcd presentondocker compose up --detach production
Place repeatable settings in .env beside docker-compose.yml. The repository provides production, production-gpu, development, and development-gpu services; use a production service for hosted instances.
localhost inside a container is the container itself. Reach another Compose service by its service name, or a host service through a supported host gateway such as host.docker.internal.
For NVIDIA workloads, install the NVIDIA Container Toolkit, verify Docker GPU access independently, and use docker compose up --detach production-gpu. A GPU benefits compatible local providers only.
Generate a small presentation, restart the container, and confirm the presentation remains. Then test export and any API or MCP integration you intend to expose.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Presenton Documentation","description":"Documentation for Presenton across Cloud and self-hosted deployment modes","colors":{"primary":"#4a2ea6","light":"#5b39cb","dark":"#3a2481"},"logo":{"light":"https://mintcdn.com/presenton-521d9e2f/3kat7EdtHDWkbP-4/logo/light.svg?fit=max\u0026auto=format\u0026n=3kat7EdtHDWkbP-4\u0026q=85\u0026s=4ea621bfc3fa6c8efa7ce5ddf50a6fd6","dark":"https://mintcdn.com/presenton-521d9e2f/3kat7EdtHDWkbP-4/logo/dark.svg?fit=max\u0026auto=format\u0026n=3kat7EdtHDWkbP-4\u0026q=85\u0026s=63b881003915cdd76f285a61d814ad3b"},"favicon":"https://mintcdn.com/presenton-521d9e2f/VhgMvfGY7SybPYID/favicon.png?fit=max\u0026auto=format\u0026n=VhgMvfGY7SybPYID\u0026q=85\u0026s=438b15ebb92b95132630097824aaa57e","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","python","javascript"]}},"navbar":{"links":[{"href":"/archive","label":"Archive"},{"href":"mailto:suraj@presenton.ai","label":"Support"}],"primary":{"type":"button","label":"Open Presenton","href":"https://presenton.ai/dashboard"}},"footer":{"socials":{"github":"https://github.com/presenton/presenton"}},"integrations":{"ga4":{"measurementId":"G-E3P4G8FTE7"},"mixpanel":{"projectToken":"8d18db4af7e30a81de55e2cb055f41e6"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Home","icon":"house","href":"/"},{"anchor":"Version archive","icon":"box-archive","href":"/archive"},{"anchor":"Community","icon":"discord","href":"https://discord.gg/xmJkX8G6"},{"anchor":"Blog","icon":"newspaper","href":"https://presenton.ai/blogs"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"presenton-521d9e2f","hasAudioNarration":false,"actualSubdomain":"presenton-521d9e2f","customDomains":["docs.presenton.ai"],"gitSource":{"type":"github","owner":"presenton","repo":"presenton_docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6abb576fbf1f6d84d6791dd9","collectionId":"bb7290c7-6da2-4575-9168-eb3c3051c7f8","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6abb576fbf1f6d84d6791dd9"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6abb576fbf1f6d84d6791dd9","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Documentation","count":264},{"language":"default","tag":"API reference","count":261},{"language":"default","tag":"Cloud API","count":156},{"language":"default","tag":"Open Source API","count":105},{"language":"default","tag":"Files and Images","count":56},{"language":"default","tag":"Webhook","count":38},{"language":"default","tag":"User Guide","count":30},{"language":"default","tag":"Generate Presentation Async","count":28},{"language":"default","tag":"Generate Presentation using JSON (Without AI)","count":28},{"language":"default","tag":"Manage Presentations","count":21}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"brand/image-generation-kit/tokens.css","content":":root{--presenton-purple: #7a5af8;--presenton-primary-100: #f4ebff;--presenton-blue-light-500: #0ba5ec;--presenton-text-800: #333333;--presenton-text-700: #4c4c4c;--presenton-base-gray-200: #f6f6f9;--presenton-border-gray: #f0f0f1;--presenton-white: #ffffff;--presenton-deep-indigo: #24184f;--presenton-completion-yellow: #f1f36b;--presenton-logo-violet: #7a3be8;--presenton-logo-blue: #5146e5;--presenton-image-font: \"Manrope\", ui-sans-serif, system-ui, sans-serif;--presenton-image-letter-spacing: 0;--presenton-image-surface-radius: 12px;--presenton-image-surface-border: 1px solid var(--presenton-border-gray)}"},{"filePath":"remotion/api-flow-illustrations/src/index.css","content":"*{box-sizing:border-box}html,body{margin:0;background:#faf9ff}"},{"filePath":"style.css","content":"@font-face{font-family:\"Manrope\";font-style:normal;font-weight:400;font-display:swap;src:url(\"https://fonts.gstatic.com/s/manrope/v20/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FO_F.ttf\")\n format(\"truetype\")}@font-face{font-family:\"Manrope\";font-style:normal;font-weight:500;font-display:swap;src:url(\"https://fonts.gstatic.com/s/manrope/v20/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk7PFO_F.ttf\")\n format(\"truetype\")}@font-face{font-family:\"Manrope\";font-style:normal;font-weight:600;font-display:swap;src:url(\"https://fonts.gstatic.com/s/manrope/v20/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk4jE-_F.ttf\")\n format(\"truetype\")}@font-face{font-family:\"Manrope\";font-style:normal;font-weight:700;font-display:swap;src:url(\"https://fonts.gstatic.com/s/manrope/v20/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk4aE-_F.ttf\")\n format(\"truetype\")}@font-face{font-family:\"Manrope\";font-style:normal;font-weight:800;font-display:swap;src:url(\"https://fonts.gstatic.com/s/manrope/v20/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk59E-_F.ttf\")\n format(\"truetype\")}html:not([data-current-path=\"/\"]):not(.dark),html:not([data-current-path=\"/\"]):not(.dark) body{background-color:rgb(var(--background-light))!important}html.dark:not([data-current-path=\"/\"]),html.dark:not([data-current-path=\"/\"]) body{background-color:rgb(var(--background-dark))!important}.home-card-landing{box-sizing:border-box;width:100%;max-width:70rem;margin:0 auto;padding:0}html[data-current-path=\"/\"],html[data-current-path=\"/\"] body{overflow-x:hidden!important}html[data-current-path=\"/\"]:not(.dark),html[data-current-path=\"/\"]:not(.dark) body{background-color:#faf9ff!important}html.dark[data-current-path=\"/\"],html.dark[data-current-path=\"/\"] body{background-color:rgb(var(--background-dark))!important}html[data-current-path=\"/\"] #sidebar{display:none!important}html[data-current-path=\"/\"] #content-container{box-sizing:border-box!important;width:100%!important;max-width:none!important;min-height:0!important;height:auto!important;margin-left:0!important;margin-right:0!important;overflow-x:clip!important}html[data-current-path=\"/\"] #content-container>div{box-sizing:border-box!important;display:block!important;gap:0!important;width:100%!important;max-width:none!important;min-height:0!important;height:auto!important;padding-top:2rem!important;padding-bottom:0!important}html[data-current-path=\"/\"] #content-area{box-sizing:border-box!important;flex:0 0 auto!important;flex-grow:0!important;width:100%!important;max-width:none!important;min-height:0!important;height:auto!important;margin-left:auto!important;margin-right:auto!important;padding-left:1.5rem!important;padding-right:1.5rem!important;padding-bottom:0!important}html[data-current-path=\"/\"] #content-area>#header{display:none}html[data-current-path=\"/\"] #content-area>div.sticky.bottom-0{display:none!important}html[data-current-path=\"/\"] #content{width:100%!important;max-width:100%!important;margin-top:0!important;margin-bottom:0!important;padding-bottom:0!important;overflow-x:clip!important}html[data-current-path=\"/\"] .feedback-toolbar{margin-top:2rem!important}html[data-current-path=\"/\"] #footer{display:none!important}.home-card-hero{max-width:40rem;margin:0 auto 2.25rem;text-align:center}.home-card-headline{margin:0;color:#17131f;font-family:inherit;font-size:2.25rem;font-weight:700;letter-spacing:0;line-height:1.15;text-wrap:nowrap}.home-card-headline span{color:#765cf0}.home-card-hero p{max-width:none;margin:0.85rem auto 0;color:#536075;font-size:1rem;line-height:1.5;white-space:nowrap}.home-card-grid{box-sizing:border-box;display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));grid-auto-rows:17.45rem;justify-content:center;gap:1rem;width:100%;max-width:100%}.home-card{position:relative;box-sizing:border-box;display:flex;min-width:0;min-height:0;flex-direction:column;height:100%;overflow:hidden;border:1px solid #dfe3e8;border-radius:0.9375rem;background:#ffffff;color:inherit!important;text-decoration:none!important;box-shadow:none!important;transform:none!important}.home-card-hitarea,.home-card-hitarea:hover,.home-card-hitarea:active,.home-card-hitarea:visited{position:absolute;inset:0;z-index:3;display:block;margin:0!important;padding:0!important;border:0!important;border-radius:inherit;background:transparent!important;color:transparent!important;text-decoration:none!important;box-shadow:none!important;outline-offset:3px}.home-card:hover{border-color:#dfe3e8;background:#ffffff;box-shadow:none!important;transform:none!important}.home-card:has(.home-card-hitarea:focus-visible){outline:3px solid rgba(118, 92, 240, 0.28);outline-offset:3px}.home-card-media{position:relative;flex:0 0 9.95rem;overflow:hidden;height:9.95rem;border-bottom:1px solid #e7e9ec;background:#f7f8f8}.home-card-art{display:block;width:100%;height:100%;object-fit:cover}.home-card-art-dark{display:none}.home-card img{display:block;width:100%;height:9.95rem;border-bottom:0;background:#15121f;object-fit:cover}.home-card-body{flex:0 0 7.5rem;min-height:0;box-sizing:border-box;padding:0.95rem 1rem 1rem;background:#ffffff}.home-card-title{margin:0;color:#172033!important;font-size:1rem;font-weight:650;letter-spacing:0;line-height:1.3}.home-card-body p{margin:0.45rem 0 0;color:#4e5c70;font-size:0.94rem;line-height:1.32}.asset-placeholder{box-sizing:border-box;display:grid;min-height:9rem;width:100%;align-items:center;margin:1.25rem 0 1.75rem;border:1px dashed #cfc7f3;border-radius:0.65rem;background:#faf9ff;color:#172033}.asset-placeholder-inner{max-width:38rem;padding:1.4rem 1.5rem;text-align:left}.asset-placeholder-kicker{margin:0 0 0.4rem;color:#765cf0;font-size:0.78rem;font-weight:700;letter-spacing:0.08em;text-transform:uppercase}.asset-placeholder-title{margin:0;color:#172033;font-size:1.05rem;font-weight:650;line-height:1.35}.asset-placeholder-description{margin:0.45rem 0 0;color:#536075;font-size:0.92rem;line-height:1.45}.guide-media{width:100%;margin:1.35rem 0 1.75rem}.guide-media-label{display:flex;align-items:center;gap:0.55rem;margin:0 0 0.7rem!important;font-size:0.88rem;font-weight:650;letter-spacing:-0.005em;line-height:1.35}.guide-media-label::before{width:0.25rem;height:1rem;flex:0 0 auto;border-radius:9999px;background:#765cf0;content:\"\"}.guide-media-viewport{overflow:hidden;width:100%;border-radius:0.55rem}.guide-media img,.guide-media video{display:block;width:100%;height:auto;margin:0!important;border:0!important;border-radius:0.55rem;background:transparent!important;box-shadow:none!important}.guide-media--screen .guide-media-viewport{aspect-ratio:1.92 / 1}.guide-media--screen img{height:100%;object-fit:cover}.guide-media--focus .guide-media-viewport{aspect-ratio:2.08 / 1}.guide-media--focus img{height:100%;object-fit:cover;object-position:46% 50%;transform:scale(1.14)}.guide-media--focus-left img{object-position:40% 50%;transform:scale(1.2)}.guide-media--focus-strong img{object-position:50% 50%;transform:scale(1.42)}.guide-media--panel .guide-media-viewport{overflow:hidden;border:1px solid #e5e7eb;background:#ffffff}.guide-media--panel img{width:100%;height:auto;object-fit:contain;object-position:center;transform:none}.guide-media--compact{max-width:38rem;margin-right:auto;margin-left:auto}.guide-media--menu-shot{max-width:30rem}.guide-media--compact .guide-media-label{justify-content:flex-start}.guide-media--workflow .guide-media-viewport{aspect-ratio:1.65 / 1}.guide-media--workflow img{height:100%;object-fit:cover}.guide-media--detail{max-width:48rem;margin-right:auto;margin-left:auto}.guide-media--detail .guide-media-viewport{overflow:hidden;border:1px solid #e5e7eb;border-radius:0.7rem;background:#f8fafc}.guide-media--detail img{width:100%;height:auto;object-fit:contain;object-position:center;transform:none}.guide-media--detail-narrow{max-width:36rem}.guide-media--control-strip{max-width:34rem}.guide-media--control-strip .guide-media-viewport{padding:1rem}@media (max-width: 640px){.guide-media--focus .guide-media-viewport,.guide-media--screen .guide-media-viewport{aspect-ratio:1.55 / 1}.guide-media--focus img{transform:scale(1.3)}.guide-media--focus-strong img{transform:scale(1.55)}}.setup-choice-grid{display:grid;grid-template-columns:minmax(0, 1fr) auto minmax(0, 1fr);align-items:stretch;gap:0.75rem;margin:1.25rem 0}.setup-choice-grid>a{margin:0!important}.setup-choice-or{display:grid;place-items:center;align-self:center;width:2.25rem;height:2.25rem;border:1px solid #ded9f8;border-radius:9999px;background:#f7f5ff;color:#5b39cb;font-size:0.72rem;font-weight:700;letter-spacing:0.04em}@media (max-width: 720px){.setup-choice-grid{grid-template-columns:1fr}.setup-choice-or{justify-self:center}}.doc-video{display:block;width:100%;max-width:100%;border:1px solid #dfe3e8;border-radius:0.5rem;background:#ffffff}.doc-video--compact{max-width:48rem;margin-right:auto;margin-left:auto}.doc-video--detail{max-width:34rem;margin-right:auto;margin-left:auto}@media (min-width: 1025px) and (max-height: 880px){html[data-current-path=\"/\"] #content-container>div{padding-top:1.35rem!important}.home-card-landing{max-width:62rem}.home-card-hero{margin-bottom:1.55rem}.home-card-headline{font-size:2.05rem}.home-card-hero p{margin-top:0.65rem;font-size:0.98rem}.home-card-grid{grid-auto-rows:15.9rem}.home-card-media{flex-basis:8.85rem;height:8.85rem}.home-card img{height:8.85rem}.home-card-body{flex-basis:7.05rem;padding:0.85rem 0.95rem 0.9rem}.home-card-title{font-size:0.96rem}.home-card-body p{font-size:0.91rem;line-height:1.3}}@media (min-width: 1025px) and (max-height: 760px){html[data-current-path=\"/\"] #content-container>div{padding-top:0.9rem!important}.home-card-landing{max-width:60rem}.home-card-hero{margin-bottom:1.25rem}.home-card-headline{font-size:1.95rem}.home-card-hero p{margin-top:0.55rem;font-size:0.94rem}.home-card-grid{grid-auto-rows:15.25rem}.home-card-media{flex-basis:8.4rem;height:8.4rem}.home-card img{height:8.4rem}.home-card-body{flex-basis:6.85rem;padding:0.75rem 0.9rem 0.85rem}}.welcome-video{display:block;width:100%;margin:1.25rem 0 2rem;border-radius:1.25rem;background:#0f0f14;outline:1px solid rgba(91, 57, 203, 0.16);box-shadow:0 18px 40px rgba(26, 18, 51, 0.12)}.welcome-diagram{display:block;width:100%;height:auto;margin:1.25rem 0 2rem;border-radius:1rem}.welcome-workflow-minimal{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:0;margin:1.25rem 0 2rem;border:1px solid #e7e2f2;border-radius:1rem;overflow:hidden;background:#ffffff}.welcome-workflow-minimal div{min-width:0;padding:1rem;border-left:1px solid #eeeaf7}.welcome-workflow-minimal div:first-child{border-left:0}.welcome-workflow-minimal span{display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;margin-bottom:0.55rem;border-radius:999px;background:#f5f1ff;color:#5b39cb;font-size:0.75rem;font-weight:750}.welcome-workflow-minimal p{margin:0;color:#5c5668;font-size:0.92rem;line-height:1.55}.audience-tabs{margin-top:1rem}.audience-tabs [role=\"tablist\"]{display:grid!important;grid-template-columns:repeat(3, minmax(0, 1fr));gap:0.75rem;margin-bottom:0!important;padding:0.625rem!important;border:1px solid #e5e0f2!important;border-radius:1.25rem;background:#faf9fd}.audience-tabs [role=\"tab\"]{display:flex!important;min-width:0;min-height:5.5rem;align-items:center;justify-content:center;gap:0.75rem;margin:0!important;padding:1rem 1.25rem!important;border:1px solid transparent!important;border-radius:0.875rem!important;color:#4b4657;font-size:1.05rem!important;font-weight:650!important;line-height:1.25;transition:transform 160ms ease, background-color 160ms ease,\n border-color 160ms ease, box-shadow 160ms ease, color 160ms ease}.audience-tabs [role=\"tab\"]::before,.audience-tabs [role=\"tab\"]::after{display:none!important;content:none!important}.audience-tabs [role=\"tab\"]>span{border-bottom:0!important;text-decoration:none!important;box-shadow:none!important}.audience-tabs [role=\"tab\"] *,.audience-tabs [role=\"tab\"][aria-selected=\"true\"] *{border-bottom-color:transparent!important;text-decoration:none!important;box-shadow:none!important}.audience-tabs [role=\"tab\"]:hover{border-color:#d7cdfc!important;background:#f3f0ff;color:#4a2ea6;transform:translateY(-1px)}.audience-tabs [role=\"tab\"][aria-selected=\"true\"]{border-color:#b5a4f5!important;background:#ffffff;color:#4a2ea6;box-shadow:0 8px 24px rgba(74, 46, 166, 0.14)}.audience-tabs [role=\"tab\"]:focus-visible{outline:3px solid rgba(91, 57, 203, 0.25);outline-offset:2px}.audience-tabs tab-icon,.audience-tabs tab-icon img,.audience-tabs [role=\"tab\"] img,.audience-tabs [role=\"tab\"] svg{width:2rem!important;height:2rem!important;flex:0 0 2rem}.audience-tabs [role=\"tabpanel\"]{padding:1.75rem 0.25rem 0.25rem!important}html.dark .audience-tabs [role=\"tablist\"]{border-color:#302b3d!important;background:#15131b}html.dark .home-card-headline{color:#f5f1ff}html.dark .home-card-headline span{color:#a78bfa}html.dark .home-card-hero p{color:#b9b1c7}html.dark .home-card{border-color:#2b2b31;background:#17171b}html.dark .home-card:hover{border-color:#2b2b31;background:#17171b;box-shadow:none!important;transform:none!important}html.dark .home-card-media{border-bottom-color:#2b2b31;background:#1b1b20}html.dark .home-card-art-light{display:none}html.dark .home-card-art-dark{display:block}html.dark .home-card-title{color:#f5f1ff!important}html.dark .home-card-body{background:#17171b}html.dark .home-card-body p{color:#b8b1c5}html.dark .asset-placeholder{border-color:#554684;background:#191622;color:#f2eff8}html.dark .asset-placeholder-title{color:#f2eff8}html.dark .asset-placeholder-description{color:#bbb4c9}html.dark .welcome-workflow-minimal{border-color:#302b3d;background:#15131b}html.dark .welcome-workflow-minimal div{border-left-color:#302b3d}html.dark .welcome-workflow-minimal span{background:#241b3b;color:#c7baff}html.dark .welcome-workflow-minimal p{color:#b6afc4}.api-flow-hero,.api-flow-products,.api-flow-visual,.api-flow-finish{font-family:\"Manrope\", ui-sans-serif, system-ui, sans-serif;letter-spacing:0}.api-flow-hero{position:relative;box-sizing:border-box;overflow:hidden;width:100%;margin:0.75rem 0 2.25rem;padding:2.75rem;border:1px solid rgba(209, 196, 255, 0.34);border-radius:16px;background:radial-gradient(circle at 88% 10%, rgba(73, 197, 255, 0.32), transparent 28%),\n radial-gradient(circle at 8% 105%, rgba(186, 104, 255, 0.42), transparent 34%),\n linear-gradient(135deg, #171038 0%, #35207d 52%, #6743e8 100%);color:#ffffff;box-shadow:0 24px 60px rgba(56, 35, 131, 0.22),\n inset 0 1px 0 rgba(255, 255, 255, 0.12)}.api-flow-hero::before{position:absolute;inset:0;background-image:linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),\n linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px);background-size:42px 42px;content:\"\";mask-image:linear-gradient(110deg, rgba(0, 0, 0, 0.78), transparent 76%);pointer-events:none}.api-flow-hero::after{position:absolute;top:-8.75rem;right:-7rem;width:20rem;height:20rem;border:1px solid rgba(255, 255, 255, 0.18);border-radius:50%;box-shadow:0 0 0 2.75rem rgba(255, 255, 255, 0.035),\n 0 0 0 5.5rem rgba(255, 255, 255, 0.025);content:\"\";pointer-events:none}.api-flow-hero>*{position:relative;z-index:1}.api-flow-hero .api-flow-eyebrow{display:inline-flex;align-items:center;gap:0.55rem;margin:0 0 1.25rem;color:#e7e0ff;font-size:0.72rem;font-weight:800;line-height:1.4;letter-spacing:0.11em}.api-flow-hero .api-flow-eyebrow::before{width:0.5rem;height:0.5rem;border-radius:50%;background:#54d6f6;box-shadow:0 0 0 0.28rem rgba(84, 214, 246, 0.14);content:\"\"}.api-flow-hero h2{max-width:40rem;margin:0!important;color:#ffffff!important;font-family:\"Manrope\", ui-sans-serif, system-ui, sans-serif;font-size:clamp(2rem, 4.2vw, 3.25rem);font-weight:750;letter-spacing:-0.035em;line-height:1.08}.api-flow-hero>p:not(.api-flow-eyebrow){max-width:43rem;margin:1.15rem 0 1.75rem!important;color:#ddd5f8!important;font-size:1.03rem;line-height:1.7}.api-flow-products{display:grid;max-width:35rem;grid-template-columns:repeat(2, minmax(0, 1fr));gap:0.7rem}.api-flow-product{display:flex;min-width:0;align-items:flex-start;box-sizing:border-box;flex-direction:column;padding:0.8rem 0.95rem;border:1px solid rgba(255, 255, 255, 0.2);border-radius:10px;background:rgba(18, 12, 51, 0.28);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.06);backdrop-filter:blur(10px)}.api-flow-product>.api-flow-product-name{margin:0!important;color:#ffffff!important;font-size:0.92rem;font-weight:750;line-height:1.35}.api-flow-product>.api-flow-product-meta{margin:0.18rem 0 0!important;color:#cbc2ee!important;font-size:0.72rem;line-height:1.4}.api-flow-visual{width:100%;margin:1.25rem 0 1.6rem}.api-flow-visual img{display:block;width:100%;height:auto;aspect-ratio:auto;margin:0!important;border:0!important;border-radius:0;background:transparent;object-fit:contain;box-shadow:none!important}.api-flow-visual p{margin:0.55rem 0 0!important;color:#667085!important;font-size:0.78rem;line-height:1.45}.api-flow-finish{margin:4.5rem 0 1.5rem;padding:1.35rem 0;border-top:2px solid #7a5af8;border-bottom:1px solid #ded9f8}.api-flow-finish p{margin:0!important;color:#172033!important;font-size:1rem;font-weight:750;line-height:1.4}.api-flow-finish span{display:block;margin-top:0.45rem;color:#667085;font-size:0.84rem;line-height:1.5}html.dark .api-flow-hero{border-color:rgba(197, 181, 255, 0.28)}html.dark .api-flow-visual p{color:#b8b1c5!important}html.dark .api-flow-finish span{color:#b8b1c5!important}html.dark .api-flow-finish p{color:#f5f1ff!important}html.dark .api-flow-finish{border-bottom-color:#3e3558}@media (max-width: 640px){.api-flow-hero{padding:1.65rem;border-radius:12px}.api-flow-hero h2{font-size:2rem}.api-flow-products{grid-template-columns:1fr}}html.dark .audience-tabs [role=\"tab\"]{color:#cbc6d6}html.dark .audience-tabs [role=\"tab\"]:hover{border-color:#554684!important;background:#211b31;color:#c7baff}html.dark .audience-tabs [role=\"tab\"][aria-selected=\"true\"]{border-color:#765cf0!important;background:#241b3b;color:#ddd5ff;box-shadow:0 8px 26px rgba(0, 0, 0, 0.3)}@media (max-width: 1024px){html[data-current-path=\"/\"] #content-container>div{padding-top:1.75rem!important}html[data-current-path=\"/\"] #content-area{padding-left:1.25rem!important;padding-right:1.25rem!important}.home-card-landing{max-width:46rem}.home-card-hero{max-width:36rem;margin-bottom:2rem}.home-card-headline{font-size:2.1rem;text-wrap:balance}.home-card-grid{grid-template-columns:repeat(2, minmax(0, 1fr));grid-auto-rows:auto}.home-card{height:auto}.home-card-media{flex:0 0 auto;height:auto;aspect-ratio:2.3 / 1}.home-card img{height:100%}.home-card-body{flex:0 0 auto;padding:1rem 1rem 1.05rem}.home-card-hero p{max-width:36rem;white-space:normal}}@media (max-width: 820px){html[data-current-path=\"/\"] #content-container>div{padding-top:9.35rem!important;padding-bottom:2.5rem!important}html[data-current-path=\"/\"] #content{padding-bottom:2.5rem!important}}@media (max-width: 720px){html[data-current-path=\"/\"] #content-container>div{padding-top:9rem!important;padding-bottom:2.75rem!important}html[data-current-path=\"/\"] #content-area{padding-left:1rem!important;padding-right:1rem!important}.home-card-landing{max-width:31.5rem}.home-card-hero{max-width:31.5rem;margin-bottom:1.9rem}.home-card-headline{font-size:2rem;line-height:1.18;text-wrap:balance;white-space:normal}.home-card-hero p{max-width:30rem;margin-top:0.75rem;line-height:1.45;white-space:normal}.home-card-grid{grid-template-columns:minmax(0, 1fr);max-width:31.5rem;margin-left:auto;margin-right:auto;gap:1.15rem}.home-card-media{flex-basis:clamp(8.75rem, 28vw, 10rem);height:clamp(8.75rem, 28vw, 10rem);aspect-ratio:auto}.home-card-body{padding:1rem 1rem 1.05rem}}@media (max-width: 640px){.home-card-landing{padding-top:0.15rem;padding-bottom:0.5rem}.home-card-hero{margin-bottom:1.8rem;text-align:center}.home-card-hero p{margin-left:auto;margin-right:auto}.home-card-hero p{white-space:normal}.home-card{min-height:0;height:auto}.welcome-workflow-minimal{grid-template-columns:1fr}.welcome-workflow-minimal div{border-left:0;border-top:1px solid #eeeaf7}.welcome-workflow-minimal div:first-child{border-top:0}.audience-tabs [role=\"tablist\"]{grid-template-columns:1fr;gap:0.5rem}.audience-tabs [role=\"tab\"]{min-height:4.25rem;justify-content:flex-start;padding:0.875rem 1rem!important}}@media (max-width: 480px){html[data-current-path=\"/\"] #content-container>div{padding-top:8.85rem!important;padding-bottom:3.25rem!important}html[data-current-path=\"/\"] #content{padding-bottom:3.25rem!important}html[data-current-path=\"/\"] #content-area{padding-left:0.875rem!important;padding-right:0.875rem!important}.home-card-landing,.home-card-grid{max-width:20.5rem}.home-card-headline{font-size:1.85rem;line-height:1.18}.home-card-hero p{max-width:20rem;font-size:0.95rem;margin-top:0.85rem}.home-card-grid{gap:1rem}.home-card-media{flex-basis:clamp(8.5rem, 37vw, 9.5rem);height:clamp(8.5rem, 37vw, 9.5rem)}.home-card-body{padding:0.9rem 0.95rem 1rem}.home-card-title{font-size:0.98rem}.home-card-body p{font-size:0.93rem;line-height:1.34}}@media (max-width: 360px){.home-card-landing,.home-card-grid{max-width:100%}.home-card-headline{font-size:1.7rem}}figure:has(figcaption){margin:1.5rem 0;padding:0;border:0;background:transparent;box-shadow:none}figcaption,.guide-image-label{display:block;max-width:100%;margin:0.75rem auto 0;padding:0;color:#3f3f46;font-size:0.95rem;font-style:italic;font-weight:600;line-height:1.35;text-align:center}"}],"page":{"pagePath":"archive/v0.9.0-beta/hosting/docker","slug":"/archive/v0.9.0-beta/hosting/docker","pageMetadata":{"noindex":true,"title":"Deploy with Docker","icon":"docker","description":"Run Presenton with Docker Run or Docker Compose and keep its data persistent.","href":"/archive/v0.9.0-beta/hosting/docker"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Run Presenton with Docker Run or Docker Compose and keep its data persistent.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tab,Table,Tabs,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Docker is the recommended self-hosted deployment. Use Docker Run for the shortest path to a working instance and Compose when configuration must be repeatable.`}),`\n`,_jsx(Heading,{level:`2`,id:`docker-run`,children:`Docker Run`}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`Linux and macOS`,id:`linux-and-macos`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`mkdir`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -p`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` app_data`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --detach`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` presenton`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --publish`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 5001:80`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --volume`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"./app_data:/app_data\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ghcr.io/presenton/presenton:v0.9.0-beta`})}),`\n`]})})})}),_jsx(Tab,{title:`Windows PowerShell`,id:`windows-powershell`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`powershell`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`powershell`,children:_jsxs(_components.code,{language:`powershell`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`New-Item`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` -`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ItemType Directory `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Force app_data`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`docker run `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`--`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`detach `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`--`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`name presenton `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:\"`\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` --`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`publish `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5001`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`80`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:\" `\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` --`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`volume `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:\"${PWD}\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\\\\app_data:/app_data\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:\" `\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ghcr.io`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`presenton`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`presenton:v0.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`9.0`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`beta`})]}),`\n`]})})})})]}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.a,{href:`http://localhost:5001`,children:`http://localhost:5001`}),`. Container port `,_jsx(_components.code,{children:`80`}),` serves the browser, REST API, and `,_jsx(_components.code,{children:`/mcp`}),`; the value before the colon is the host port and can be changed.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Keep the `,_jsx(_components.code,{children:`/app_data`}),` mount whenever you replace the container. It contains presentations, uploads, templates, settings, authentication state, the default database, exports, and local memory.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`docker-compose`,children:`Docker Compose`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`git`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` clone`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/presenton/presenton.git`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`cd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` presenton`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` compose`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` up`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --detach`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` production`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Place repeatable settings in `,_jsx(_components.code,{children:`.env`}),` beside `,_jsx(_components.code,{children:`docker-compose.yml`}),`. The repository provides `,_jsx(_components.code,{children:`production`}),`, `,_jsx(_components.code,{children:`production-gpu`}),`, `,_jsx(_components.code,{children:`development`}),`, and `,_jsx(_components.code,{children:`development-gpu`}),` services; use a production service for hosted instances.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`dotenv`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`dotenv`,children:_jsxs(_components.code,{language:`dotenv`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`PRESENTON_HTTP_HOST_PORT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`5001`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`AUTH_USERNAME`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`admin`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`AUTH_PASSWORD`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`replace-with-a-long-password`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`LLM`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`openai`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`OPENAI_API_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`replace-with-your-key`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`OPENAI_MODEL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`gpt-4.1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`CAN_CHANGE_KEYS`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`false`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`ports-and-networking`,children:`Ports and networking`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Mapping`}),_jsx(_components.th,{children:`Use`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`5001:80`})}),_jsx(_components.td,{children:`Browser, REST API, and MCP`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1455:1455`})}),_jsx(_components.td,{children:`ChatGPT/Codex OAuth callback only`})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`localhost`}),` inside a container is the container itself. Reach another Compose service by its service name, or a host service through a supported host gateway such as `,_jsx(_components.code,{children:`host.docker.internal`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`operate-the-container`,children:`Operate the container`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` logs`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --follow`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` presenton`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` stop`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` presenton`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` start`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` presenton`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`docker`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ps`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --filter`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` name=presenton`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`For NVIDIA workloads, install the NVIDIA Container Toolkit, verify Docker GPU access independently, and use `,_jsx(_components.code,{children:`docker compose up --detach production-gpu`}),`. A GPU benefits compatible local providers only.`]}),`\n`,_jsx(Heading,{level:`2`,id:`verify`,children:`Verify`}),`\n`,_jsx(_components.p,{children:`Generate a small presentation, restart the container, and confirm the presentation remains. Then test export and any API or MCP integration you intend to expose.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"noindex":true,"title":"Deploy with Docker","icon":"docker","description":"Run Presenton with Docker Run or Docker Compose and keep its data persistent.","href":"/archive/v0.9.0-beta/hosting/docker"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Docker Run","slug":"docker-run","depth":2,"children":[]},{"title":"Docker Compose","slug":"docker-compose","depth":2,"children":[]},{"title":"Ports and networking","slug":"ports-and-networking","depth":2,"children":[]},{"title":"Operate the container","slug":"operate-the-container","depth":2,"children":[]},{"title":"Verify","slug":"verify","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"presenton-521d9e2f","siteName":"Presenton Documentation","title":"Deploy with Docker - Presenton Documentation","navMaps":{"firstHrefInVersion":{"v0.9.7-beta":{"href":"/hosting/docker","matchLevel":2},"v0.9.6-beta":{"href":"/archive/v0.9.6-beta/hosting/docker","matchLevel":1,"noindex":true},"v0.9.4-beta":{"href":"/archive/v0.9.4-beta/hosting/docker","matchLevel":1,"noindex":true},"v0.9.3-beta":{"href":"/archive/v0.9.3-beta/hosting/docker","matchLevel":1,"noindex":true},"v0.9.2-beta":{"href":"/archive/v0.9.2-beta/hosting/docker","matchLevel":1,"noindex":true},"v0.9.1-beta":{"href":"/archive/v0.9.1-beta/hosting/docker","matchLevel":1,"noindex":true},"v0.9.0-beta":{"href":"/archive/v0.9.0-beta/hosting/docker","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-07-28T06:35:55.977Z","originalFileLocation":"archive/v0.9.0-beta/hosting/docker.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Run Presenton with Docker Run or Docker Compose and keep its data persistent.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Presenton Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"noindex\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/presenton-521d9e2f/u2WRiJLwFNmuulkb/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/presenton-521d9e2f/u2WRiJLwFNmuulkb/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/presenton-521d9e2f/u2WRiJLwFNmuulkb/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/presenton-521d9e2f/u2WRiJLwFNmuulkb/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/presenton-521d9e2f/u2WRiJLwFNmuulkb/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/presenton-521d9e2f/u2WRiJLwFNmuulkb/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/presenton-521d9e2f/u2WRiJLwFNmuulkb/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/presenton-521d9e2f/u2WRiJLwFNmuulkb/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/presenton-521d9e2f/u2WRiJLwFNmuulkb/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Deploy with Docker - Presenton Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Run Presenton with Docker Run or Docker Compose and keep its data persistent.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Presenton Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.presenton.ai/archive/v0.9.0-beta/hosting/docker\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://presenton-521d9e2f.mintlify.app/_mintlify/api/og/v2?division=Deploy\u0026amp;title=Deploy+with+Docker\u0026amp;description=Run+Presenton+with+Docker+Run+or+Docker+Compose+and+keep+its+data+persistent.\u0026amp;theme=3a4fbf817a1c3be95d4063de\u0026amp;signature=107ff791d4600787971fbeb2ac7336665be6b41c29efe6c004b990128f1e7545\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Deploy with Docker - Presenton Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Run Presenton with Docker Run or Docker Compose and keep its data persistent.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://presenton-521d9e2f.mintlify.app/_mintlify/api/og/v2?division=Deploy\u0026amp;title=Deploy+with+Docker\u0026amp;description=Run+Presenton+with+Docker+Run+or+Docker+Compose+and+keep+its+data+persistent.\u0026amp;theme=3a4fbf817a1c3be95d4063de\u0026amp;signature=107ff791d4600787971fbeb2ac7336665be6b41c29efe6c004b990128f1e7545\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/presenton-521d9e2f/u2WRiJLwFNmuulkb/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Presenton Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4a2ea6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.presenton.ai/archive/v0.9.0-beta/hosting/docker\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/archive/v0.9.0-beta/hosting/docker.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Presenton Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Presenton Documentation","nav":{"global":{"anchors":[{"anchor":"Home","icon":"house","href":"/"},{"anchor":"Version archive","icon":"box-archive","href":"/archive"},{"anchor":"Community","icon":"discord","href":"https://discord.gg/xmJkX8G6"},{"anchor":"Blog","icon":"newspaper","href":"https://presenton.ai/blogs"}]},"versions":[{"version":"v0.9.7-beta","default":true,"tag":"Current","pages":[{"title":"v0.9.7-beta","href":"/hosting/docker"}]},{"version":"v0.9.6-beta","tag":"Archived","pages":[{"title":"v0.9.6-beta","href":"/archive/v0.9.6-beta/hosting/docker"}]},{"version":"v0.9.4-beta","tag":"Archived","pages":[{"title":"v0.9.4-beta","href":"/archive/v0.9.4-beta/hosting/docker"}]},{"version":"v0.9.3-beta","tag":"Archived","pages":[{"title":"v0.9.3-beta","href":"/archive/v0.9.3-beta/hosting/docker"}]},{"version":"v0.9.2-beta","tag":"Archived","pages":[{"title":"v0.9.2-beta","href":"/archive/v0.9.2-beta/hosting/docker"}]},{"version":"v0.9.1-beta","tag":"Archived","pages":[{"title":"v0.9.1-beta","href":"/archive/v0.9.1-beta/hosting/docker"}]},{"version":"v0.9.0-beta","tag":"Archived","tabs":[{"tab":"Home","icon":"house","pages":[{"title":"Home","href":""}]},{"tab":"General","icon":"sparkles","pages":[{"title":"General","href":"/archive/v0.9.0-beta/general/overview"}]},{"tab":"User Guide","icon":"book-open","pages":[{"title":"User Guide","href":"/archive/v0.9.0-beta/user-guide/start-with-presenton"}]},{"tab":"Hosting","icon":"server","groups":[{"group":"Getting started","icon":"rocket","pages":[{"title":"Host Presenton","icon":"server","href":"/archive/v0.9.0-beta/hosting/overview"},{"title":"Self-host Presenton in five minutes","icon":"rocket","description":"Start a persistent Presenton instance with the minimum Docker configuration.","href":"/archive/v0.9.0-beta/self-hosted/quickstart"}]},{"group":"Deploy","icon":"cloud-arrow-up","pages":[{"title":"Deploy with Docker","icon":"docker","href":"/archive/v0.9.0-beta/hosting/docker"},{"title":"One-click cloud deployment","icon":"cloud-arrow-up","description":"Deploy Presenton to Railway or DigitalOcean and finish the required production configuration.","href":"/archive/v0.9.0-beta/hosting/one-click-deployments"},{"title":"System requirements","icon":"microchip","href":"/archive/v0.9.0-beta/hosting/system-requirements"}]},{"group":"Configure","icon":"sliders","pages":[{"title":"Environment variables","icon":"rectangle-terminal","href":"/archive/v0.9.0-beta/hosting/environment-variables"},{"group":"AI, images, and search","icon":"sparkles","pages":[{"title":"Choose your AI providers","icon":"microchip","href":"/archive/v0.9.0-beta/self-hosted/core-concepts/providers"},{"title":"Configure by goal","icon":"list-check","href":"/archive/v0.9.0-beta/self-hosted/configuration/recipes"},{"title":"Text providers","icon":"microchip","href":"/archive/v0.9.0-beta/self-hosted/configuration/text-providers"},{"title":"Use a local model with Ollama","icon":"server","href":"/archive/v0.9.0-beta/hosting/providers/ollama"},{"title":"Configure Amazon Bedrock","icon":"cloud","href":"/archive/v0.9.0-beta/hosting/providers/amazon-bedrock"},{"title":"Images and web search","icon":"images","href":"/archive/v0.9.0-beta/self-hosted/configuration/images-and-search"},{"title":"Use ComfyUI for presentation images","icon":"image","href":"/archive/v0.9.0-beta/self-hosted/configuration/comfyui"},{"title":"Get a Pixabay API key","sidebarTitle":"Get Pixabay API key","icon":"key-round","href":"/archive/v0.9.0-beta/hosting/provider-api-keys/get-pixabay-api-key"},{"title":"Get a Pexels API key","sidebarTitle":"Get Pexels API key","icon":"key-round","href":"/archive/v0.9.0-beta/hosting/provider-api-keys/get-pexels-api-key"}]},{"title":"Authentication","icon":"shield-keyhole","href":"/archive/v0.9.0-beta/self-hosted/configuration/authentication"},{"title":"Storage and processing","icon":"database","href":"/archive/v0.9.0-beta/self-hosted/configuration/storage-and-processing"},{"title":"Presentation memory","icon":"brain","href":"/archive/v0.9.0-beta/hosting/memory"},{"group":"MCP","icon":"plug","pages":[{"title":"Connect an MCP client","icon":"plug","href":"/archive/v0.9.0-beta/hosting/mcp"}]}]},{"group":"Production","icon":"gauge-high","pages":[{"title":"Security and access","icon":"shield-halved","href":"/archive/v0.9.0-beta/hosting/security-and-access"},{"title":"Performance and scaling","icon":"gauge-high","href":"/archive/v0.9.0-beta/hosting/performance-and-scaling"},{"title":"Monitoring and health checks","icon":"heart-pulse","href":"/archive/v0.9.0-beta/hosting/monitoring-and-health"},{"title":"Backups and recovery","icon":"database","href":"/archive/v0.9.0-beta/hosting/backups-and-recovery"},{"title":"Upgrades and migrations","icon":"arrow-up-right-dots","href":"/archive/v0.9.0-beta/hosting/upgrades-and-migrations"}]}]},{"tab":"API Documentation","icon":"brackets-curly","pages":[{"title":"API Documentation","href":"/archive/v0.9.0-beta/api-guides/presentation-generation-flows"}]},{"tab":"Troubleshooting","icon":"screwdriver-wrench","pages":[{"title":"Troubleshooting","href":"/archive/v0.9.0-beta/troubleshooting"}]}]}]},"basePath":"","title":"Deploy with Docker - Presenton Documentation","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}