The checked-in stack references latest application images. For repeatable production releases, replace them with reviewed immutable tags or digests and record the complete set deployed together.
Compose health checks gate some dependencies, but they do not prove the whole customer flow works. Add external checks for HTTPS, API health, Socket.IO, queue consumption, provider calls, database/storage access, and a synthetic widget message.
Last modified on July 17, 2026
⌘I
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"InteraOne","description":"Documentation for InteraOne, the open-source agentic customer support platform.","colors":{"primary":"#754C5A","light":"#A66F82","dark":"#5B3542"},"logo":{"light":"https://mintcdn.com/voxora/2PCWzKfmo53nDkKR/images/222506196__4_-removebg-preview.png?fit=max\u0026auto=format\u0026n=2PCWzKfmo53nDkKR\u0026q=85\u0026s=fd451159e928f5825f78079cf6eee13b","dark":"https://mintcdn.com/voxora/2PCWzKfmo53nDkKR/images/222506196__4_-removebg-preview.png?fit=max\u0026auto=format\u0026n=2PCWzKfmo53nDkKR\u0026q=85\u0026s=fd451159e928f5825f78079cf6eee13b","href":"/introduction"},"favicon":"https://mintcdn.com/voxora/2PCWzKfmo53nDkKR/images/222506196__4_-removebg-preview.png?fit=max\u0026auto=format\u0026n=2PCWzKfmo53nDkKR\u0026q=85\u0026s=fd451159e928f5825f78079cf6eee13b","api":{"openapi":"openapi.json","params":{"expanded":"closed"},"playground":{"display":"interactive","proxy":true,"credentials":false},"examples":{"defaults":"required","languages":["curl","javascript","python"],"prefill":true,"autogenerate":true}},"appearance":{"default":"system","strict":false},"background":{"decoration":"windows"},"navbar":{"links":[],"primary":{"type":"button","label":"Open dashboard","href":"https://app.interaone.app"}},"footer":{"socials":{"website":"https://interaone.app","github":"https://github.com/InteraOne/InteraOne"},"links":[{"header":"Product","items":[{"label":"Quickstart","href":"/quickstart"},{"label":"API reference","href":"/api-reference/overview"},{"label":"Changelog","href":"/changelog"}]},{"header":"Community","items":[{"label":"GitHub","href":"https://github.com/InteraOne/InteraOne"},{"label":"Report an issue","href":"https://github.com/InteraOne/InteraOne/issues"},{"label":"Contributing","href":"/contributing/overview"}]}]},"search":{"prompt":"Search InteraOne docs..."},"seo":{"metatags":{"og:type":"website","og:site_name":"InteraOne Documentation"},"indexing":"all"},"fonts":{"family":"Open Sans"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","codeblocks":"system","latex":false},"banner":{"content":"InteraOne is open source — star or contribute on [GitHub](https://github.com/InteraOne/InteraOne).","dismissible":true,"type":"info"},"errors":{"404":{"redirect":false,"title":"Page not found","description":"The page may have moved. Use search or return to the InteraOne introduction."}},"contextual":{"options":["copy","view","assistant","chatgpt","claude","mcp","cursor"],"display":"toc"},"thumbnails":{"appearance":"dark","background":"https://mintcdn.com/voxora/2PCWzKfmo53nDkKR/images/ChatGPTImageJul17,2026,05_06_03PM.png?fit=max\u0026auto=format\u0026n=2PCWzKfmo53nDkKR\u0026q=85\u0026s=93fd3855451f8ad47fb06f62a26a4fed"},"interaction":{"drilldown":false},"metadata":{"timestamp":true},"variables":{"repository":"https://github.com/InteraOne/InteraOne","nodeVersion":"20 or later","packageManager":"pnpm 9.15.0","localGateway":"http://localhost:3002/api/v1","localConsole":"http://localhost:3000"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"voxora","hasAudioNarration":false,"actualSubdomain":"voxora","customDomains":["docs.interaone.app"],"gitSource":{"type":"github","owner":"interaone","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae9479bc52e7db43c7f7fc5:success","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API reference","count":132},{"language":"default","tag":"REST endpoints","count":130},{"language":"default","tag":"Guides","count":48},{"language":"default","tag":"Channels","count":19},{"language":"default","tag":"Conversations","count":18},{"language":"default","tag":"Contacts","count":13},{"language":"default","tag":"Knowledge","count":11},{"language":"default","tag":"Widget","count":11},{"language":"default","tag":"Architecture","count":10},{"language":"default","tag":"Authentication","count":10}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"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":"editor-metadata","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},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"self-hosting/docker-compose","slug":"/self-hosting/docker-compose","pageMetadata":{"title":"Docker Compose","description":"Operate InteraOne's development and production Compose stacks, services, volumes, health checks, and common commands.","icon":"container","href":"/self-hosting/docker-compose"},"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: \"Operate InteraOne’s development and production Compose stacks, services, volumes, health checks, and common commands.\"\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={code:`code`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The repository contains two Compose files with different purposes.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`File`}),_jsx(_components.th,{children:`Purpose`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`docker/docker-compose.dev.yml`})}),_jsx(_components.td,{children:`Local infrastructure; application processes run through Turbo`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`docker/docker-compose.yml`})}),_jsx(_components.td,{children:`Production-style full stack using published application images and Caddy`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`production-services`,children:`Production services`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`Lifecycle`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`caddy`})}),_jsx(_components.td,{children:`Long-running reverse proxy and TLS termination`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`console`}),`, `,_jsx(_components.code,{children:`gateway`}),`, `,_jsx(_components.code,{children:`agent`}),`, `,_jsx(_components.code,{children:`worker`})]}),_jsx(_components.td,{children:`Long-running application containers`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`launcher-deploy`})}),_jsx(_components.td,{children:`One-shot widget build/deployment on stack startup`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`mongodb`}),`, `,_jsx(_components.code,{children:`redis`}),`, `,_jsx(_components.code,{children:`minio`}),`, `,_jsx(_components.code,{children:`qdrant`})]}),_jsx(_components.td,{children:`Long-running stateful infrastructure`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`log-viewer`})}),_jsx(_components.td,{children:`Long-running Dozzle UI with Docker socket read access`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`commands`,children:`Commands`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`12`,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:`12`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Render the fully substituted configuration`})}),`\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:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env-file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` docker/.env`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` docker/docker-compose.yml`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Start or reconcile the stack`})}),`\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:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env-file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` docker/.env`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` docker/docker-compose.yml`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` up`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Inspect health and recent logs`})}),`\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:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env-file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` docker/.env`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` docker/docker-compose.yml`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ps`})]}),`\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:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env-file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` docker/.env`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` docker/docker-compose.yml`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` logs`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --tail=200`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` gateway`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` agent`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` worker`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Stop containers without deleting volumes`})}),`\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:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --env-file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` docker/.env`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` docker/docker-compose.yml`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` down`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Do not add `,_jsx(_components.code,{children:`-v`}),` to `,_jsx(_components.code,{children:`docker compose down`}),` in production unless you intentionally want to delete named data volumes and have a verified recovery plan.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`image-policy`,children:`Image policy`}),`\n`,_jsxs(_components.p,{children:[`The checked-in stack references `,_jsx(_components.code,{children:`latest`}),` application images. For repeatable production releases, replace them with reviewed immutable tags or digests and record the complete set deployed together.`]}),`\n`,_jsx(Heading,{level:`2`,id:`health-and-dependency-behavior`,children:`Health and dependency behavior`}),`\n`,_jsx(_components.p,{children:`Compose health checks gate some dependencies, but they do not prove the whole customer flow works. Add external checks for HTTPS, API health, Socket.IO, queue consumption, provider calls, database/storage access, and a synthetic widget message.`})]})}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":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Docker Compose","description":"Operate InteraOne's development and production Compose stacks, services, volumes, health checks, and common commands.","icon":"container","href":"/self-hosting/docker-compose"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Production services","slug":"production-services","depth":2,"children":[]},{"title":"Commands","slug":"commands","depth":2,"children":[]},{"title":"Image policy","slug":"image-policy","depth":2,"children":[]},{"title":"Health and dependency behavior","slug":"health-and-dependency-behavior","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"voxora","siteName":"InteraOne","title":"Docker Compose - InteraOne","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-18T12:29:16.426Z","gitLastModified":"2026-07-17T16:28:39.000Z","originalFileLocation":"self-hosting/docker-compose.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=\"Operate InteraOne\u0026#x27;s development and production Compose stacks, services, volumes, health checks, and common commands.\">\u003cmeta data-mint-head name=\"application-name\" content=\"InteraOne\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/voxora/NMT7CQhNa-QEfe-K/_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/voxora/NMT7CQhNa-QEfe-K/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/voxora/NMT7CQhNa-QEfe-K/_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/voxora/NMT7CQhNa-QEfe-K/_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/voxora/NMT7CQhNa-QEfe-K/_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/voxora/NMT7CQhNa-QEfe-K/_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/voxora/NMT7CQhNa-QEfe-K/_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/voxora/NMT7CQhNa-QEfe-K/_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/voxora/NMT7CQhNa-QEfe-K/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Docker Compose - InteraOne\">\u003cmeta data-mint-head property=\"og:description\" content=\"Operate InteraOne\u0026#x27;s development and production Compose stacks, services, volumes, health checks, and common commands.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"InteraOne Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.interaone.app/self-hosting/docker-compose\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://voxora.mintlify.site/_mintlify/api/og/v2?division=Self-hosting\u0026amp;title=Docker+Compose\u0026amp;description=Operate+InteraOne%27s+development+and+production+Compose+stacks%2C+services%2C+volumes%2C+health+checks%2C+and+common+commands.\u0026amp;theme=8b74778e4edd38004ce79b27\u0026amp;signature=496369c7200d80d4b5c75e78b71ef56092f0dd482ea132580b66906ffb1ba987\">\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=\"Docker Compose - InteraOne\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Operate InteraOne\u0026#x27;s development and production Compose stacks, services, volumes, health checks, and common commands.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://voxora.mintlify.site/_mintlify/api/og/v2?division=Self-hosting\u0026amp;title=Docker+Compose\u0026amp;description=Operate+InteraOne%27s+development+and+production+Compose+stacks%2C+services%2C+volumes%2C+health+checks%2C+and+common+commands.\u0026amp;theme=8b74778e4edd38004ce79b27\u0026amp;signature=496369c7200d80d4b5c75e78b71ef56092f0dd482ea132580b66906ffb1ba987\">\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/voxora/NMT7CQhNa-QEfe-K/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"InteraOne\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#754C5A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.interaone.app/self-hosting/docker-compose\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/self-hosting/docker-compose.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.interaone.app/#organization\",\"name\":\"InteraOne\",\"url\":\"https://docs.interaone.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/voxora/2PCWzKfmo53nDkKR/images/222506196__4_-removebg-preview.png?fit=max\u0026auto=format\u0026n=2PCWzKfmo53nDkKR\u0026q=85\u0026s=fd451159e928f5825f78079cf6eee13b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.interaone.app#website\",\"name\":\"InteraOne\",\"url\":\"https://docs.interaone.app\",\"publisher\":{\"@id\":\"https://docs.interaone.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.interaone.app/self-hosting/docker-compose#webpage\",\"url\":\"https://docs.interaone.app/self-hosting/docker-compose\",\"name\":\"Docker Compose\",\"description\":\"Operate InteraOne's development and production Compose stacks, services, volumes, health checks, and common commands.\",\"dateModified\":\"2026-07-17T16:28:39.000Z\",\"isPartOf\":{\"@id\":\"https://docs.interaone.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.interaone.app/self-hosting/docker-compose#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.interaone.app/self-hosting/docker-compose#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Self-hosting\",\"item\":\"https://docs.interaone.app/self-hosting/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docker Compose\",\"item\":\"https://docs.interaone.app/self-hosting/docker-compose\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.interaone.app/self-hosting/docker-compose#article\",\"headline\":\"Docker Compose\",\"name\":\"Docker Compose\",\"description\":\"Operate InteraOne's development and production Compose stacks, services, volumes, health checks, and common commands.\",\"url\":\"https://docs.interaone.app/self-hosting/docker-compose\",\"mainEntityOfPage\":{\"@id\":\"https://docs.interaone.app/self-hosting/docker-compose#webpage\"},\"dateModified\":\"2026-07-17T16:28:39.000Z\",\"publisher\":{\"@id\":\"https://docs.interaone.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.interaone.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"InteraOne\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"InteraOne\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/self-hosting/docker-compose.md","siteName":"InteraOne","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"book-open","groups":[{"group":"Getting started","icon":"rocket","pages":[{"title":"InteraOne","sidebarTitle":"Introduction","icon":"house","href":"/introduction"},{"title":"Quickstart","icon":"rocket","href":"/quickstart"}]},{"group":"Self-hosting","icon":"server","pages":[{"title":"Self-hosting overview","sidebarTitle":"Overview","icon":"server","href":"/self-hosting/overview"},{"title":"Deployment architecture","sidebarTitle":"Architecture","icon":"network","href":"/self-hosting/architecture"},{"title":"Production installation","sidebarTitle":"Installation","description":"Deploy InteraOne on your own infrastructure using Docker Compose.","icon":"download","href":"/self-hosting/installation"},{"title":"Docker Compose","icon":"container","href":"/self-hosting/docker-compose"},{"title":"Environment variables","description":"Reference InteraOne configuration for the gateway, console, launcher, agent, worker, and production Docker stack.","icon":"list-tree","href":"/self-hosting/environment-variables"},{"title":"Caddy reverse proxy","sidebarTitle":"Caddy \u0026 TLS","icon":"shield-check","href":"/self-hosting/reverse-proxy-caddy"},{"group":"Cloud deployment","icon":"cloud","pages":[{"title":"Deploy to AWS","sidebarTitle":"AWS","icon":"cloud","href":"/self-hosting/deploying-to-aws"}]},{"title":"Update and upgrade","sidebarTitle":"Updates \u0026 upgrades","icon":"refresh-cw","href":"/self-hosting/updating-and-upgrading"}]},{"group":"Architecture","icon":"blocks","pages":[{"title":"Architecture overview","sidebarTitle":"Overview","icon":"blocks","href":"/architecture/overview"},{"title":"Conversation request flow","sidebarTitle":"Request flow","icon":"workflow","href":"/architecture/request-flow"},{"title":"Gateway service","sidebarTitle":"Gateway","icon":"route","href":"/architecture/gateway"},{"title":"Console application","sidebarTitle":"Console","icon":"layout-dashboard","href":"/architecture/console"},{"title":"Launcher and widget","sidebarTitle":"Launcher","icon":"message-circle","href":"/architecture/launcher"},{"title":"AI agent service","sidebarTitle":"Agent","icon":"bot","href":"/architecture/agent"},{"title":"Platform worker","sidebarTitle":"Worker","icon":"cpu","href":"/architecture/worker"},{"title":"MongoDB data model","sidebarTitle":"MongoDB","icon":"database","href":"/architecture/database"},{"title":"Redis messaging and queues","sidebarTitle":"Redis","icon":"database-zap","href":"/architecture/redis"},{"title":"Qdrant vector store","sidebarTitle":"Qdrant","icon":"scan-search","href":"/architecture/qdrant"}]},{"group":"AI system","icon":"bot","pages":[{"title":"Agent pipeline","icon":"workflow","href":"/ai/agent-pipeline"},{"title":"Model providers","icon":"brain-circuit","href":"/ai/model-providers"},{"title":"Conversation memory","icon":"memory-stick","href":"/ai/memory"},{"title":"Tool calling","icon":"wrench","href":"/ai/tool-calling"},{"title":"Ticket intelligence","icon":"ticket-check","href":"/ai/ticket-intelligence"},{"title":"Human handoff","icon":"handshake","href":"/ai/human-handoff"},{"title":"AI observability","icon":"chart-no-axes-combined","href":"/ai/observability"}]},{"group":"Knowledge base","icon":"database-zap","pages":[{"title":"Knowledge base overview","sidebarTitle":"Overview","icon":"database-zap","href":"/knowledge-base/overview"},{"title":"Ingest files","icon":"file-up","href":"/knowledge-base/ingesting-files"},{"title":"Ingest URLs","icon":"globe","href":"/knowledge-base/ingesting-urls"},{"title":"Ingest FAQs","icon":"circle-help","href":"/knowledge-base/ingesting-faqs"},{"title":"Vector search","icon":"scan-search","href":"/knowledge-base/vector-search"}]},{"group":"Channels","icon":"messages-square","pages":[{"title":"Channels overview","sidebarTitle":"Overview","icon":"messages-square","href":"/channels/overview"},{"title":"Web widget","icon":"message-circle","href":"/channels/web-widget"},{"title":"Email channel","sidebarTitle":"Email","icon":"mail","href":"/channels/email"},{"title":"WhatsApp channel","sidebarTitle":"WhatsApp","icon":"message-square","href":"/channels/whatsapp"},{"title":"Telegram channel","sidebarTitle":"Telegram","icon":"send","href":"/channels/telegram"},{"title":"QR codes and direct links","sidebarTitle":"QR \u0026 direct links","icon":"qr-code","href":"/channels/qr-and-direct-links"}]},{"group":"Administration","icon":"settings","pages":[{"title":"Organizations and tenancy","sidebarTitle":"Organizations","icon":"building-2","href":"/administration/organizations"},{"title":"Memberships and roles","sidebarTitle":"Memberships","icon":"users","href":"/administration/memberships"},{"title":"Organization settings","sidebarTitle":"Settings","icon":"settings","href":"/administration/settings"},{"title":"Contact identity verification","sidebarTitle":"Contact verification","icon":"contact-round","href":"/administration/contact-verification"}]},{"group":"Contributing","icon":"git-pull-request","pages":[{"title":"Contributing overview","sidebarTitle":"Overview","icon":"git-pull-request","href":"/contributing/overview"},{"title":"Local development","icon":"laptop","href":"/contributing/local-development"},{"title":"Project structure","icon":"folder-tree","href":"/contributing/project-structure"},{"title":"Coding standards","icon":"code-xml","href":"/contributing/coding-standards"},{"title":"Testing","icon":"test-tube","href":"/contributing/testing"},{"title":"Pull requests","icon":"git-pull-request-arrow","href":"/contributing/pull-requests"}]}]},{"tab":"API reference","icon":"braces","pages":[{"title":"API reference","href":"/api-reference/overview"}]},{"tab":"Changelog","icon":"history","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Docker Compose - InteraOne","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["10e4515597"],"chunks":["BannerMarkdown-DV3Oq1fY.js","dist-C-XZBk9h.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-D3Isdib3.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}