Files
Memoh/installation/docker.html
T
2026-03-07 11:26:59 +00:00

35 lines
41 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.COoKA1-f.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.BC6GRvcN.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.Dze9WHF4.js">
<link rel="modulepreload" href="/assets/chunks/framework.ePeAWSvT.js">
<link rel="modulepreload" href="/assets/installation_docker.md.Bk_onHJi.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-fed1f3d6><!--[--><!--]--><!--[--><span tabindex="-1" data-v-a25f5db6></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-a25f5db6>Skip to content</a><!--]--><!----><header class="VPNav" data-v-fed1f3d6 data-v-8f6a06d2><div class="VPNavBar" data-v-8f6a06d2 data-v-e42a4d1c><div class="wrapper" data-v-e42a4d1c><div class="container" data-v-e42a4d1c><div class="title" data-v-e42a4d1c><div class="VPNavBarTitle has-sidebar" data-v-e42a4d1c data-v-d3112b8f><a class="title" href="/" data-v-d3112b8f><!--[--><!--]--><!--[--><img class="VPImage logo" src="/logo.png" alt="Memoh" data-v-4ea68547><!--]--><span data-v-d3112b8f>Memoh</span><!--[--><!--]--></a></div></div><div class="content" data-v-e42a4d1c><div class="content-body" data-v-e42a4d1c><!--[--><!--]--><div class="VPNavBarSearch search" data-v-e42a4d1c><!--[--><!----><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-e42a4d1c data-v-9175dda3><span id="main-nav-aria-label" class="visually-hidden" data-v-9175dda3> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-9175dda3 data-v-6a150605><!--[--><span data-v-6a150605>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/blogs/" tabindex="0" data-v-9175dda3 data-v-6a150605><!--[--><span data-v-6a150605>Blogs</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-e42a4d1c data-v-06507d70 data-v-be779828><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-be779828><span class="text" data-v-be779828><span class="vpi-languages option-icon" data-v-be779828></span><!----><span class="vpi-chevron-down text-icon" data-v-be779828></span></span></button><div class="menu" data-v-be779828><div class="VPMenu" data-v-be779828 data-v-3472f68e><!----><!--[--><!--[--><div class="items" data-v-06507d70><p class="title" data-v-06507d70>English</p><!--[--><div class="VPMenuLink" data-v-06507d70 data-v-058d8208><a class="VPLink link" href="/zh/installation/docker.html" data-v-058d8208><!--[--><span data-v-058d8208>简体中文</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-e42a4d1c data-v-f62f81f9><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f62f81f9 data-v-37f1304f data-v-30be283b><span class="check" data-v-30be283b><span class="icon" data-v-30be283b><!--[--><span class="vpi-sun sun" data-v-37f1304f></span><span class="vpi-moon moon" data-v-37f1304f></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-e42a4d1c data-v-7d10330c data-v-756072eb><!--[--><a class="VPSocialLink no-icon" href="https://github.com/memohai/Memoh" aria-label="github" target="_blank" rel="noopener" data-v-756072eb data-v-57e28dd3><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-e42a4d1c data-v-d3d9fc8f data-v-be779828><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-be779828><span class="vpi-more-horizontal icon" data-v-be779828></span></button><div class="menu" data-v-be779828><div class="VPMenu" data-v-be779828 data-v-3472f68e><!----><!--[--><!--[--><div class="group translations" data-v-d3d9fc8f><p class="trans-title" data-v-d3d9fc8f>English</p><!--[--><div class="VPMenuLink" data-v-d3d9fc8f data-v-058d8208><a class="VPLink link" href="/zh/installation/docker.html" data-v-058d8208><!--[--><span data-v-058d8208>简体中文</span><!--]--></a></div><!--]--></div><div class="group" data-v-d3d9fc8f><div class="item appearance" data-v-d3d9fc8f><p class="label" data-v-d3d9fc8f>Appearance</p><div class="appearance-action" data-v-d3d9fc8f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-d3d9fc8f data-v-37f1304f data-v-30be283b><span class="check" data-v-30be283b><span class="icon" data-v-30be283b><!--[--><span class="vpi-sun sun" data-v-37f1304f></span><span class="vpi-moon moon" data-v-37f1304f></span><!--]--></span></span></button></div></div></div><div class="group" data-v-d3d9fc8f><div class="item social-links" data-v-d3d9fc8f><div class="VPSocialLinks social-links-list" data-v-d3d9fc8f data-v-756072eb><!--[--><a class="VPSocialLink no-icon" href="https://github.com/memohai/Memoh" aria-label="github" target="_blank" rel="noopener" data-v-756072eb data-v-57e28dd3><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-e42a4d1c data-v-2f352f04><span class="container" data-v-2f352f04><span class="top" data-v-2f352f04></span><span class="middle" data-v-2f352f04></span><span class="bottom" data-v-2f352f04></span></span></button></div></div></div></div><div class="divider" data-v-e42a4d1c><div class="divider-line" data-v-e42a4d1c></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-fed1f3d6 data-v-35fedc2e><div class="container" data-v-35fedc2e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-35fedc2e><span class="vpi-align-left menu-icon" data-v-35fedc2e></span><span class="menu-text" data-v-35fedc2e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-35fedc2e data-v-b1705a02><button data-v-b1705a02>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-fed1f3d6 data-v-297c64fb><div class="curtain" data-v-297c64fb></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-297c64fb><span class="visually-hidden" id="sidebar-aria-label" data-v-297c64fb> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c16c12a8><section class="VPSidebarItem level-0" data-v-c16c12a8 data-v-9a07bd0b><!----><div class="items" data-v-9a07bd0b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/index.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/about.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>About Memoh</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c16c12a8><section class="VPSidebarItem level-0 has-active" data-v-c16c12a8 data-v-9a07bd0b><div class="item" role="button" tabindex="0" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><h2 class="text" data-v-9a07bd0b>Installation</h2><!----></div><div class="items" data-v-9a07bd0b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/installation/docker.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Docker</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c16c12a8><section class="VPSidebarItem level-0" data-v-c16c12a8 data-v-9a07bd0b><div class="item" role="button" tabindex="0" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><h2 class="text" data-v-9a07bd0b>Getting Started</h2><!----></div><div class="items" data-v-9a07bd0b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/provider-and-model.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>LLM Provider and Model</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/bot.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Bot Management</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/container.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Container Management</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/files.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Files Management</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/skills.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Bot Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/mcp.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/channels.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Bot Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/browser.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Browser Contexts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/memory.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Memory Management</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/subagents.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/heartbeat.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Heartbeat</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/schedule.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Scheduled Tasks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/search-provider.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Search Providers</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/getting-started/email.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Email Providers</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c16c12a8><section class="VPSidebarItem level-0" data-v-c16c12a8 data-v-9a07bd0b><div class="item" role="button" tabindex="0" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><h2 class="text" data-v-9a07bd0b>Memory Providers</h2><!----></div><div class="items" data-v-9a07bd0b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/memory-providers/index.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/memory-providers/builtin.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Built-in</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c16c12a8><section class="VPSidebarItem level-0" data-v-c16c12a8 data-v-9a07bd0b><div class="item" role="button" tabindex="0" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><h2 class="text" data-v-9a07bd0b>Channels</h2><!----></div><div class="items" data-v-9a07bd0b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/channels/index.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/channels/telegram.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Telegram</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/channels/feishu.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Feishu (Lark)</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9a07bd0b data-v-9a07bd0b><div class="item" data-v-9a07bd0b><div class="indicator" data-v-9a07bd0b></div><a class="VPLink link link" href="/channels/discord.html" data-v-9a07bd0b><!--[--><p class="text" data-v-9a07bd0b>Discord</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-fed1f3d6 data-v-b7673a1a><div class="VPDoc has-sidebar has-aside" data-v-b7673a1a data-v-b4547c88><!--[--><!--]--><div class="container" data-v-b4547c88><div class="aside" data-v-b4547c88><div class="aside-curtain" data-v-b4547c88></div><div class="aside-container" data-v-b4547c88><div class="aside-content" data-v-b4547c88><div class="VPDocAside" data-v-b4547c88 data-v-f5225fdd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-f5225fdd data-v-3d6074c1><div class="content" data-v-3d6074c1><div class="outline-marker" data-v-3d6074c1></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-3d6074c1>On this page</div><ul class="VPDocOutlineItem root" data-v-3d6074c1 data-v-554af1ab><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-f5225fdd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-b4547c88><div class="content-container" data-v-b4547c88><!--[--><!--]--><main class="main" data-v-b4547c88><div style="position:relative;" class="vp-doc _installation_docker" data-v-b4547c88><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, the main server (with embedded Containerd), 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-recommended" tabindex="-1">One-Click Install (Recommended) <a class="header-anchor" href="#one-click-install-recommended" aria-label="Permalink to &quot;One-Click Install (Recommended)&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://memoh.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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>Fetch the latest release tag from GitHub and clone the repository</li><li>Generate <code>config.toml</code> from the Docker template with your settings</li><li>Pin Docker image versions to the release</li><li>Pull images and start all services</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://memoh.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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><p><strong>Install a specific version:</strong></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:#24292E;--shiki-dark:#E1E4E8;">MEMOH_VERSION</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">v1.0.0</span><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://memoh.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> sh</span></span></code></pre></div><p><strong>Use China mainland mirror</strong> (for slow image pulls):</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:#24292E;--shiki-dark:#E1E4E8;">USE_CN_MIRROR</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">true</span><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://memoh.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> sh</span></span></code></pre></div><blockquote><p>Environment variables can be combined, e.g. <code>MEMOH_VERSION=v1.0.0 USE_CN_MIRROR=true curl -fsSL https://memoh.sh | sudo sh</code></p></blockquote><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><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;">cp</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> conf/app.docker.toml</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config.toml</span></span></code></pre></div><p>Edit <code>config.toml</code> — at minimum change:</p><ul><li><code>admin.password</code> — Admin password</li><li><code>auth.jwt_secret</code> — Generate with <code>openssl rand -base64 32</code></li><li><code>postgres.password</code> — Database password (also set <code>POSTGRES_PASSWORD</code> env var to match)</li></ul><p>Then start:</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;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> POSTGRES_PASSWORD=your-db-password</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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><blockquote><p>On macOS or if your user is in the <code>docker</code> group, <code>sudo</code> is not required.</p></blockquote><blockquote><p><strong>Important</strong>: <code>docker-compose.yml</code> mounts <code>./config.toml</code> by default. You must create this file before starting — running without it will fail.</p></blockquote><h3 id="china-mainland-mirror" tabindex="-1">China Mainland Mirror <a class="header-anchor" href="#china-mainland-mirror" aria-label="Permalink to &quot;China Mainland Mirror&quot;"></a></h3><p>For users in mainland China who cannot access Docker Hub directly, uncomment the <code>registry</code> line in <code>config.toml</code>:</p><div class="language-toml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">toml</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;">[</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">mcp</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">registry = </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;memoh.cn&quot;</span></span></code></pre></div><p>And use the China mirror compose overlay:</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;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> docker-compose.yml</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> docker/docker-compose.cn.yml</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>The install script handles this automatically when you set <code>USE_CN_MIRROR=true</code>.</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><tr><td>Browser Gateway</td><td><a href="http://localhost:8083" target="_blank" rel="noreferrer">http://localhost:8083</a></td></tr></tbody></table><p>Default login: <code>admin</code> / <code>admin123</code> (change this in <code>config.toml</code>).</p><p>First startup may take 12 minutes while images are pulled and services initialize.</p><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><blockquote><p>Prefix with <code>sudo</code> on Linux if your user is not in the <code>docker</code> group.</p></blockquote><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;"> pull</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;"> # Update to latest images</span></span></code></pre></div><h2 id="environment-variables" tabindex="-1">Environment Variables <a class="header-anchor" href="#environment-variables" aria-label="Permalink to &quot;Environment Variables&quot;"></a></h2><table tabindex="0"><thead><tr><th>Variable</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td><code>POSTGRES_PASSWORD</code></td><td><code>memoh123</code></td><td>PostgreSQL password (must match <code>postgres.password</code> in <code>config.toml</code>)</td></tr><tr><td><code>MEMOH_CONFIG</code></td><td><code>./config.toml</code></td><td>Path to the configuration file</td></tr><tr><td><code>MEMOH_VERSION</code></td><td><em>(latest release)</em></td><td>Git tag to install (e.g. <code>v1.0.0</code>). Also pins Docker image versions.</td></tr><tr><td><code>USE_CN_MIRROR</code></td><td><code>false</code></td><td>Set to <code>true</code> to use China mainland mirror for Docker images</td></tr></tbody></table><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>Passwords</strong> — Change all default passwords and secrets in <code>config.toml</code></li><li><strong>HTTPS</strong> — Configure SSL (e.g. via <code>docker-compose.override.yml</code> with certs or a reverse proxy)</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;"> 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-b4547c88 data-v-57f47480><!--[--><!--]--><div class="edit-info" data-v-57f47480><div class="edit-link" data-v-57f47480><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-57f47480><!--[--><span class="vpi-square-pen edit-link-icon" data-v-57f47480></span> Edit on GitHub<!--]--></a></div><div class="last-updated" data-v-57f47480><p class="VPLastUpdated" data-v-57f47480 data-v-76b89e12>Last Updated: <time datetime="2026-03-07T11:26:08.000Z" data-v-76b89e12></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-57f47480><span class="visually-hidden" id="doc-footer-aria-label" data-v-57f47480>Pager</span><div class="pager" data-v-57f47480><a class="VPLink link pager-link prev" href="/about.html" data-v-57f47480><!--[--><span class="desc" data-v-57f47480>Previous page</span><span class="title" data-v-57f47480>About Memoh</span><!--]--></a></div><div class="pager" data-v-57f47480><a class="VPLink link pager-link next" href="/getting-started/provider-and-model.html" data-v-57f47480><!--[--><span class="desc" data-v-57f47480>Next page</span><span class="title" data-v-57f47480>LLM Provider and Model</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-fed1f3d6 data-v-eda79520><div class="container" data-v-eda79520><p class="message" data-v-eda79520>Published under AGPLv3</p><p class="copyright" data-v-eda79520>Copyright © 2024 Memoh</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"about.md\":\"gLogz9hP\",\"blogs_2026-02-16.md\":\"CVgn4GCU\",\"blogs_index.md\":\"DyCOc_Zm\",\"channels_discord.md\":\"DBWQl28b\",\"channels_feishu.md\":\"-Rc8F8IG\",\"channels_index.md\":\"Cd1GuQFE\",\"channels_telegram.md\":\"URjBaQHx\",\"getting-started_bot.md\":\"CxYqtI4G\",\"getting-started_browser.md\":\"CHy6pyTr\",\"getting-started_channels.md\":\"DiSUpicV\",\"getting-started_container.md\":\"CiSK-fMx\",\"getting-started_email.md\":\"CKJOqdzG\",\"getting-started_files.md\":\"Cl6keVS-\",\"getting-started_heartbeat.md\":\"CgIS9a7z\",\"getting-started_mcp.md\":\"DyRwe04F\",\"getting-started_memory.md\":\"CVd8M6Eu\",\"getting-started_provider-and-model.md\":\"BGpLYgEh\",\"getting-started_schedule.md\":\"B0pL41RB\",\"getting-started_search-provider.md\":\"CWTVwyy0\",\"getting-started_skills.md\":\"EnvAtRea\",\"getting-started_subagents.md\":\"B79V3Ppa\",\"index.md\":\"7vMrZCVa\",\"installation_docker.md\":\"Bk_onHJi\",\"memory-providers_builtin.md\":\"Cgc3R-Wx\",\"memory-providers_index.md\":\"DLe5Y0PL\",\"zh_concepts_identity-and-binding.md\":\"B6I6pSqI\",\"zh_concepts_index.md\":\"uaZIblvt\",\"zh_index.md\":\"DbGu2QT1\",\"zh_style_terminology.md\":\"C89A7q1C\"}");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\":\"/about.md\"},{\"text\":\"Installation\",\"items\":[{\"text\":\"Docker\",\"link\":\"/installation/docker.md\"}]},{\"text\":\"Getting Started\",\"items\":[{\"text\":\"LLM Provider and Model\",\"link\":\"/getting-started/provider-and-model.md\"},{\"text\":\"Bot Management\",\"link\":\"/getting-started/bot.md\"},{\"text\":\"Container Management\",\"link\":\"/getting-started/container.md\"},{\"text\":\"Files Management\",\"link\":\"/getting-started/files.md\"},{\"text\":\"Bot Skills\",\"link\":\"/getting-started/skills.md\"},{\"text\":\"MCP Connections\",\"link\":\"/getting-started/mcp.md\"},{\"text\":\"Bot Channels\",\"link\":\"/getting-started/channels.md\"},{\"text\":\"Browser Contexts\",\"link\":\"/getting-started/browser.md\"},{\"text\":\"Memory Management\",\"link\":\"/getting-started/memory.md\"},{\"text\":\"Subagents\",\"link\":\"/getting-started/subagents.md\"},{\"text\":\"Heartbeat\",\"link\":\"/getting-started/heartbeat.md\"},{\"text\":\"Scheduled Tasks\",\"link\":\"/getting-started/schedule.md\"},{\"text\":\"Search Providers\",\"link\":\"/getting-started/search-provider.md\"},{\"text\":\"Email Providers\",\"link\":\"/getting-started/email.md\"}]},{\"text\":\"Memory Providers\",\"items\":[{\"text\":\"Overview\",\"link\":\"/memory-providers/index.md\"},{\"text\":\"Built-in\",\"link\":\"/memory-providers/builtin.md\"}]},{\"text\":\"Channels\",\"items\":[{\"text\":\"Overview\",\"link\":\"/channels/index.md\"},{\"text\":\"Telegram\",\"link\":\"/channels/telegram.md\"},{\"text\":\"Feishu (Lark)\",\"link\":\"/channels/feishu.md\"},{\"text\":\"Discord\",\"link\":\"/channels/discord.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>