Files
Memoh/installation/docker.html
T
2026-02-18 09:14:06 +00:00

36 lines
38 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Docker Installation | Memoh Documentation</title>
<meta name="description" content="Multi-Member, Structured Long-Memory, Containerized AI Agent System.">
<meta name="generator" content="VitePress v1.6.4">
<link rel="preload stylesheet" href="/assets/style.BZIg-cXr.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.CYut-U_Q.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.BFKBkNR-.js">
<link rel="modulepreload" href="/assets/chunks/framework.DEqXEGcv.js">
<link rel="modulepreload" href="/assets/installation_docker.md.xaCmXfCQ.lean.js">
<link rel="icon" href="/logo.png">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-ecfbf7a9><!--[--><!--]--><!--[--><span tabindex="-1" data-v-639cd3d8></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-639cd3d8>Skip to content</a><!--]--><!----><header class="VPNav" data-v-ecfbf7a9 data-v-39691f49><div class="VPNavBar" data-v-39691f49 data-v-d92360c8><div class="wrapper" data-v-d92360c8><div class="container" data-v-d92360c8><div class="title" data-v-d92360c8><div class="VPNavBarTitle has-sidebar" data-v-d92360c8 data-v-d3560e07><a class="title" href="/" data-v-d3560e07><!--[--><!--]--><!--[--><img class="VPImage logo" src="/logo.png" alt="Memoh" data-v-a9ec2bb1><!--]--><span data-v-d3560e07>Memoh</span><!--[--><!--]--></a></div></div><div class="content" data-v-d92360c8><div class="content-body" data-v-d92360c8><!--[--><!--]--><div class="VPNavBarSearch search" data-v-d92360c8><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-d92360c8 data-v-a8c7b9cb><span id="main-nav-aria-label" class="visually-hidden" data-v-a8c7b9cb> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-a8c7b9cb data-v-df2fe9fb><!--[--><span data-v-df2fe9fb>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/blogs/" tabindex="0" data-v-a8c7b9cb data-v-df2fe9fb><!--[--><span data-v-df2fe9fb>Blogs</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-d92360c8 data-v-f7e0dd34 data-v-500c8661><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-500c8661><span class="text" data-v-500c8661><span class="vpi-languages option-icon" data-v-500c8661></span><!----><span class="vpi-chevron-down text-icon" data-v-500c8661></span></span></button><div class="menu" data-v-500c8661><div class="VPMenu" data-v-500c8661 data-v-78767497><!----><!--[--><!--[--><div class="items" data-v-f7e0dd34><p class="title" data-v-f7e0dd34>English</p><!--[--><div class="VPMenuLink" data-v-f7e0dd34 data-v-adc65559><a class="VPLink link" href="/zh/installation/docker.html" data-v-adc65559><!--[--><span data-v-adc65559>简体中文</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-d92360c8 data-v-7208450f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-7208450f data-v-0c13c3df data-v-be020907><span class="check" data-v-be020907><span class="icon" data-v-be020907><!--[--><span class="vpi-sun sun" data-v-0c13c3df></span><span class="vpi-moon moon" data-v-0c13c3df></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-d92360c8 data-v-1a196069 data-v-a84d2f45><!--[--><a class="VPSocialLink no-icon" href="https://github.com/memohai/Memoh" aria-label="github" target="_blank" rel="noopener" data-v-a84d2f45 data-v-0890861b><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-d92360c8 data-v-c2346f84 data-v-500c8661><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-500c8661><span class="vpi-more-horizontal icon" data-v-500c8661></span></button><div class="menu" data-v-500c8661><div class="VPMenu" data-v-500c8661 data-v-78767497><!----><!--[--><!--[--><div class="group translations" data-v-c2346f84><p class="trans-title" data-v-c2346f84>English</p><!--[--><div class="VPMenuLink" data-v-c2346f84 data-v-adc65559><a class="VPLink link" href="/zh/installation/docker.html" data-v-adc65559><!--[--><span data-v-adc65559>简体中文</span><!--]--></a></div><!--]--></div><div class="group" data-v-c2346f84><div class="item appearance" data-v-c2346f84><p class="label" data-v-c2346f84>Appearance</p><div class="appearance-action" data-v-c2346f84><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-c2346f84 data-v-0c13c3df data-v-be020907><span class="check" data-v-be020907><span class="icon" data-v-be020907><!--[--><span class="vpi-sun sun" data-v-0c13c3df></span><span class="vpi-moon moon" data-v-0c13c3df></span><!--]--></span></span></button></div></div></div><div class="group" data-v-c2346f84><div class="item social-links" data-v-c2346f84><div class="VPSocialLinks social-links-list" data-v-c2346f84 data-v-a84d2f45><!--[--><a class="VPSocialLink no-icon" href="https://github.com/memohai/Memoh" aria-label="github" target="_blank" rel="noopener" data-v-a84d2f45 data-v-0890861b><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-d92360c8 data-v-c0ff09b3><span class="container" data-v-c0ff09b3><span class="top" data-v-c0ff09b3></span><span class="middle" data-v-c0ff09b3></span><span class="bottom" data-v-c0ff09b3></span></span></button></div></div></div></div><div class="divider" data-v-d92360c8><div class="divider-line" data-v-d92360c8></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-ecfbf7a9 data-v-42b4930c><div class="container" data-v-42b4930c><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-42b4930c><span class="vpi-align-left menu-icon" data-v-42b4930c></span><span class="menu-text" data-v-42b4930c>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-42b4930c data-v-65f11ad7><button data-v-65f11ad7>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-ecfbf7a9 data-v-aee49e2a><div class="curtain" data-v-aee49e2a></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-aee49e2a><span class="visually-hidden" id="sidebar-aria-label" data-v-aee49e2a> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-60f157c0><section class="VPSidebarItem level-0" data-v-60f157c0 data-v-df85d8e3><!----><div class="items" data-v-df85d8e3><!--[--><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/index.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/getting-started.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>About Memoh</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-60f157c0><section class="VPSidebarItem level-0 has-active" data-v-60f157c0 data-v-df85d8e3><div class="item" role="button" tabindex="0" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><h2 class="text" data-v-df85d8e3>Installation</h2><!----></div><div class="items" data-v-df85d8e3><!--[--><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/installation/docker.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Docker</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/installation/config-toml.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>config.toml</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-60f157c0><section class="VPSidebarItem level-0" data-v-60f157c0 data-v-df85d8e3><div class="item" role="button" tabindex="0" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><h2 class="text" data-v-df85d8e3>Getting Started</h2><!----></div><div class="items" data-v-df85d8e3><!--[--><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/getting-started/provider-and-model.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Provider and Model</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/getting-started/create-bot.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Create Bot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/getting-started/platform-telegram.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>telegram platform</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-60f157c0><section class="VPSidebarItem level-0" data-v-60f157c0 data-v-df85d8e3><div class="item" role="button" tabindex="0" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><h2 class="text" data-v-df85d8e3>Concepts</h2><!----></div><div class="items" data-v-df85d8e3><!--[--><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/concepts/index.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/concepts/bot.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Bot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/concepts/provider-and-model.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Provider and Model</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/concepts/schedule.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Schedule</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/concepts/memory.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Memory</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/concepts/channel.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Channel</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/concepts/container.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Container</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/concepts/mcp.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>MCP</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/concepts/subagents.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/concepts/skills.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/concepts/conversation-and-history.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Conversation and History</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-60f157c0><section class="VPSidebarItem level-0" data-v-60f157c0 data-v-df85d8e3><div class="item" role="button" tabindex="0" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><h2 class="text" data-v-df85d8e3>CLI</h2><!----></div><div class="items" data-v-df85d8e3><!--[--><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/cli/index.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/cli/auth.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>authentication</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/cli/config.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/cli/provider.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>provider</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/cli/model.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>model</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/cli/bot.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>bot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/cli/channel.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>channel</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/cli/schedule.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>schedule</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-df85d8e3 data-v-df85d8e3><div class="item" data-v-df85d8e3><div class="indicator" data-v-df85d8e3></div><a class="VPLink link link" href="/cli/chat.html" data-v-df85d8e3><!--[--><p class="text" data-v-df85d8e3>chat</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-ecfbf7a9 data-v-df015b7a><div class="VPDoc has-sidebar has-aside" data-v-df015b7a data-v-c0d172cc><!--[--><!--]--><div class="container" data-v-c0d172cc><div class="aside" data-v-c0d172cc><div class="aside-curtain" data-v-c0d172cc></div><div class="aside-container" data-v-c0d172cc><div class="aside-content" data-v-c0d172cc><div class="VPDocAside" data-v-c0d172cc data-v-4e31e231><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-4e31e231 data-v-e382fc21><div class="content" data-v-e382fc21><div class="outline-marker" data-v-e382fc21></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-e382fc21>On this page</div><ul class="VPDocOutlineItem root" data-v-e382fc21 data-v-21fe7f0b><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-4e31e231></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c0d172cc><div class="content-container" data-v-c0d172cc><!--[--><!--]--><main class="main" data-v-c0d172cc><div style="position:relative;" class="vp-doc _installation_docker" data-v-c0d172cc><div><h1 id="docker-installation" tabindex="-1">Docker Installation <a class="header-anchor" href="#docker-installation" aria-label="Permalink to &quot;Docker Installation&quot;"></a></h1><p>Docker is the recommended way to run Memoh. The stack includes PostgreSQL, Qdrant, Containerd, the main server, agent gateway, and web UI — all orchestrated via Docker Compose. You do not need to install containerd, nerdctl, or buildkit on your host; everything runs inside containers.</p><h2 id="prerequisites" tabindex="-1">Prerequisites <a class="header-anchor" href="#prerequisites" aria-label="Permalink to &quot;Prerequisites&quot;"></a></h2><ul><li><a href="https://docs.docker.com/get-docker/" target="_blank" rel="noreferrer">Docker</a></li><li><a href="https://docs.docker.com/compose/install/" target="_blank" rel="noreferrer">Docker Compose v2</a></li><li>Git</li></ul><h2 id="one-click-install" tabindex="-1">One-Click Install <a class="header-anchor" href="#one-click-install" aria-label="Permalink to &quot;One-Click Install&quot;"></a></h2><p>Run the official install script (requires Docker and Docker Compose):</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -fsSL</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://raw.githubusercontent.com/memohai/Memoh/main/scripts/install.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sh</span></span></code></pre></div><p>The script will:</p><ol><li>Check for Docker and Docker Compose</li><li>Prompt for configuration (workspace, data directory, admin credentials, JWT secret, Postgres password)</li><li>Clone the repository</li><li>Generate <code>config.toml</code> from the Docker template</li><li>Start all services with <code>docker compose up -d --build</code></li></ol><p><strong>Silent install</strong> (use all defaults, no prompts):</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -fsSL</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://raw.githubusercontent.com/memohai/Memoh/main/scripts/install.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -s</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -y</span></span></code></pre></div><p>Defaults when running silently:</p><ul><li>Workspace: <code>~/memoh</code></li><li>Data directory: <code>~/memoh/data</code></li><li>Admin: <code>admin</code> / <code>admin123</code></li><li>JWT secret: auto-generated</li><li>Postgres password: <code>memoh123</code></li></ul><h2 id="manual-install" tabindex="-1">Manual Install <a class="header-anchor" href="#manual-install" aria-label="Permalink to &quot;Manual Install&quot;"></a></h2><p>Clone the repository and start with Docker Compose:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> clone</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://github.com/memohai/Memoh.git</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Memoh</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> up</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -d</span></span></code></pre></div><p>By default, Docker Compose uses <code>docker/config/config.docker.toml</code>. No config file in the project root is mounted — only this built-in config is used. See <a href="./config-toml.html">config.toml reference</a> for all configuration fields.</p><h2 id="access-points" tabindex="-1">Access Points <a class="header-anchor" href="#access-points" aria-label="Permalink to &quot;Access Points&quot;"></a></h2><p>After startup:</p><table tabindex="0"><thead><tr><th>Service</th><th>URL</th></tr></thead><tbody><tr><td>Web UI</td><td><a href="http://localhost:8082" target="_blank" rel="noreferrer">http://localhost:8082</a></td></tr><tr><td>API</td><td><a href="http://localhost:8080" target="_blank" rel="noreferrer">http://localhost:8080</a></td></tr><tr><td>Agent Gateway</td><td><a href="http://localhost:8081" target="_blank" rel="noreferrer">http://localhost:8081</a></td></tr></tbody></table><p>Default login: <code>admin</code> / <code>admin123</code></p><p>First startup may take 12 minutes while images build and services initialize.</p><h2 id="custom-configuration" tabindex="-1">Custom Configuration <a class="header-anchor" href="#custom-configuration" aria-label="Permalink to &quot;Custom Configuration&quot;"></a></h2><p>To use your own config file:</p><ol><li>Copy the Docker config template and edit it. See <a href="./config-toml.html">config.toml reference</a> for field descriptions:</li></ol><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cp</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> docker/config/config.docker.toml</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config.toml</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">nano</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config.toml</span></span></code></pre></div><ol start="2"><li>Point <code>MEMOH_CONFIG</code> at your config when starting (path is on the host; run <code>docker compose</code> from the project root):</li></ol><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">MEMOH_CONFIG</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">./config.toml</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> up</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -d</span></span></code></pre></div><p><strong>Recommended changes for production</strong> (see <a href="./config-toml.html">config.toml reference</a> for details):</p><ul><li><code>admin.password</code> — Change the admin password</li><li><code>auth.jwt_secret</code> — Generate with <code>openssl rand -base64 32</code></li><li><code>postgres.password</code> — Change the database password (and set <code>POSTGRES_PASSWORD</code> when running <code>docker compose</code>)</li></ul><h2 id="common-commands" tabindex="-1">Common Commands <a class="header-anchor" href="#common-commands" aria-label="Permalink to &quot;Common Commands&quot;"></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> up</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -d</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Start</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> down</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Stop</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> logs</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # View logs</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ps</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Status</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> up</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -d</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --build</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Rebuild and restart</span></span></code></pre></div><h2 id="production-checklist" tabindex="-1">Production Checklist <a class="header-anchor" href="#production-checklist" aria-label="Permalink to &quot;Production Checklist&quot;"></a></h2><ol><li><strong>HTTPS</strong> — Configure SSL (e.g. via <code>docker-compose.override.yml</code> with certs)</li><li><strong>Passwords</strong> — Change all default passwords and secrets</li><li><strong>Firewall</strong> — Restrict access to necessary ports</li><li><strong>Resource limits</strong> — Set memory/CPU limits for containers</li><li><strong>Backups</strong> — Regular backups of Postgres and Qdrant data</li></ol><h2 id="troubleshooting" tabindex="-1">Troubleshooting <a class="header-anchor" href="#troubleshooting" aria-label="Permalink to &quot;Troubleshooting&quot;"></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> logs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> server</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # View main service logs</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> logs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> containerd</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # View containerd logs</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Validate configuration</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> build</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --no-cache</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;&amp; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> up</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -d</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Full rebuild</span></span></code></pre></div><h2 id="security-warnings" tabindex="-1">Security Warnings <a class="header-anchor" href="#security-warnings" aria-label="Permalink to &quot;Security Warnings&quot;"></a></h2><ul><li>The main service runs with privileged container access — only run in trusted environments</li><li>You must change all default passwords and secrets before production use</li><li>Use HTTPS in production</li></ul></div></div></main><footer class="VPDocFooter" data-v-c0d172cc data-v-d650fb62><!--[--><!--]--><div class="edit-info" data-v-d650fb62><div class="edit-link" data-v-d650fb62><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/memohai/Memoh/edit/main/docs/docs/installation/docker.md" target="_blank" rel="noreferrer" data-v-d650fb62><!--[--><span class="vpi-square-pen edit-link-icon" data-v-d650fb62></span> Edit on GitHub<!--]--></a></div><div class="last-updated" data-v-d650fb62><p class="VPLastUpdated" data-v-d650fb62 data-v-744e3437>Last Updated: <time datetime="2026-02-15T13:20:22.000Z" data-v-744e3437></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-d650fb62><span class="visually-hidden" id="doc-footer-aria-label" data-v-d650fb62>Pager</span><div class="pager" data-v-d650fb62><a class="VPLink link pager-link prev" href="/getting-started.html" data-v-d650fb62><!--[--><span class="desc" data-v-d650fb62>Previous page</span><span class="title" data-v-d650fb62>About Memoh</span><!--]--></a></div><div class="pager" data-v-d650fb62><a class="VPLink link pager-link next" href="/installation/config-toml.html" data-v-d650fb62><!--[--><span class="desc" data-v-d650fb62>Next page</span><span class="title" data-v-d650fb62>config.toml</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-ecfbf7a9 data-v-cea6e03e><div class="container" data-v-cea6e03e><p class="message" data-v-cea6e03e>Published under AGPLv3</p><p class="copyright" data-v-cea6e03e>Copyright © 2024 Memoh</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"blogs_2026-02-16.md\":\"DSFOaZyb\",\"blogs_index.md\":\"liWx4LKT\",\"cli_auth.md\":\"DPl-4zFk\",\"cli_bot.md\":\"B2YOOp9H\",\"cli_channel.md\":\"T-qsPRZ9\",\"cli_chat.md\":\"LOg8zrpn\",\"cli_config.md\":\"C-0Xv0hx\",\"cli_index.md\":\"CTMBSccU\",\"cli_model.md\":\"Bp0XdM9y\",\"cli_provider.md\":\"CEEKGN01\",\"cli_schedule.md\":\"DSG0HQuo\",\"concepts_bot.md\":\"1aZ6YcT_\",\"concepts_channel.md\":\"kmh0thdg\",\"concepts_container.md\":\"CGr24tv7\",\"concepts_conversation-and-history.md\":\"CrsSw6px\",\"concepts_index.md\":\"C-_J0Dnw\",\"concepts_mcp.md\":\"Bi2x7eIb\",\"concepts_memory.md\":\"C_8mQlYI\",\"concepts_provider-and-model.md\":\"D9DoYLAT\",\"concepts_schedule.md\":\"DZlMw6iP\",\"concepts_skills.md\":\"F6zpo0BV\",\"concepts_subagents.md\":\"B1gVZCBU\",\"getting-started.md\":\"B026JaLd\",\"getting-started_create-bot.md\":\"5rz1rkV2\",\"getting-started_platform-telegram.md\":\"DnjlGtcF\",\"getting-started_provider-and-model.md\":\"Ix_AFx48\",\"index.md\":\"BxPQTo9L\",\"installation_config-toml.md\":\"DLEOCXmn\",\"installation_docker.md\":\"xaCmXfCQ\",\"troubleshooting.md\":\"DEVYH0Du\",\"zh_concepts_identity-and-binding.md\":\"BpgZjxhl\",\"zh_concepts_index.md\":\"CFVegv9w\",\"zh_index.md\":\"N8D_wq8q\",\"zh_style_terminology.md\":\"DtBRpWD7\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Memoh Documentation\",\"description\":\"Multi-Member, Structured Long-Memory, Containerized AI Agent System.\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Memoh\",\"sidebar\":{\"/blogs/\":[{\"text\":\"Blogs\",\"link\":\"/blogs/index.md\",\"items\":[{\"text\":\"Introduction (Feb 2026)\",\"link\":\"/blogs/2026-02-16.md\"}]}],\"/\":[{\"text\":\"Overview\",\"link\":\"/index.md\"},{\"text\":\"About Memoh\",\"link\":\"/getting-started.md\"},{\"text\":\"Installation\",\"items\":[{\"text\":\"Docker\",\"link\":\"/installation/docker.md\"},{\"text\":\"config.toml\",\"link\":\"/installation/config-toml.md\"}]},{\"text\":\"Getting Started\",\"items\":[{\"text\":\"Provider and Model\",\"link\":\"/getting-started/provider-and-model.md\"},{\"text\":\"Create Bot\",\"link\":\"/getting-started/create-bot.md\"},{\"text\":\"telegram platform\",\"link\":\"/getting-started/platform-telegram.md\"}]},{\"text\":\"Concepts\",\"items\":[{\"text\":\"Overview\",\"link\":\"/concepts/index.md\"},{\"text\":\"Bot\",\"link\":\"/concepts/bot.md\"},{\"text\":\"Provider and Model\",\"link\":\"/concepts/provider-and-model.md\"},{\"text\":\"Schedule\",\"link\":\"/concepts/schedule.md\"},{\"text\":\"Memory\",\"link\":\"/concepts/memory.md\"},{\"text\":\"Channel\",\"link\":\"/concepts/channel.md\"},{\"text\":\"Container\",\"link\":\"/concepts/container.md\"},{\"text\":\"MCP\",\"link\":\"/concepts/mcp.md\"},{\"text\":\"Subagents\",\"link\":\"/concepts/subagents.md\"},{\"text\":\"Skills\",\"link\":\"/concepts/skills.md\"},{\"text\":\"Conversation and History\",\"link\":\"/concepts/conversation-and-history.md\"}]},{\"text\":\"CLI\",\"items\":[{\"text\":\"Overview\",\"link\":\"/cli/index.md\"},{\"text\":\"authentication\",\"link\":\"/cli/auth.md\"},{\"text\":\"config\",\"link\":\"/cli/config.md\"},{\"text\":\"provider\",\"link\":\"/cli/provider.md\"},{\"text\":\"model\",\"link\":\"/cli/model.md\"},{\"text\":\"bot\",\"link\":\"/cli/bot.md\"},{\"text\":\"channel\",\"link\":\"/cli/channel.md\"},{\"text\":\"schedule\",\"link\":\"/cli/schedule.md\"},{\"text\":\"chat\",\"link\":\"/cli/chat.md\"}]}],\"/zh/\":[{\"text\":\"文档总览\",\"link\":\"/zh/index.md\"}]},\"nav\":[{\"text\":\"Guides\",\"link\":\"/\"},{\"text\":\"Blogs\",\"link\":\"/blogs/\"}],\"logo\":{\"src\":\"/logo.png\",\"alt\":\"Memoh\"},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/memohai/Memoh\"}],\"footer\":{\"message\":\"Published under AGPLv3\",\"copyright\":\"Copyright © 2024 Memoh\"},\"search\":{\"provider\":\"local\"},\"editLink\":{\"pattern\":\"https://github.com/memohai/Memoh/edit/main/docs/docs/:path\",\"text\":\"Edit on GitHub\"},\"lastUpdated\":{\"text\":\"Last Updated\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"medium\"}}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en\"},\"zh\":{\"label\":\"简体中文\",\"lang\":\"zh\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
</body>
</html>