Files
Memoh/installation/docker.html
T
2026-04-02 15:05:13 +00:00

34 lines
51 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.B5ESegsT.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.DTEL0waf.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.DUDVqA1M.js">
<link rel="modulepreload" href="/assets/chunks/framework.CvgP6Fyv.js">
<link rel="modulepreload" href="/assets/installation_docker.md.EGlSgJeL.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-a7fd87cd><!--[--><!--]--><!--[--><span tabindex="-1" data-v-30be8b8e></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-30be8b8e>Skip to content</a><!--]--><!----><header class="VPNav" data-v-a7fd87cd data-v-5deba549><div class="VPNavBar" data-v-5deba549 data-v-c354117b><div class="wrapper" data-v-c354117b><div class="container" data-v-c354117b><div class="title" data-v-c354117b><div class="VPNavBarTitle has-sidebar" data-v-c354117b data-v-18435660><a class="title" href="/" data-v-18435660><!--[--><!--]--><!--[--><img class="VPImage logo" src="/logo.png" alt="Memoh" data-v-352814ec><!--]--><span data-v-18435660>Memoh</span><!--[--><!--]--></a></div></div><div class="content" data-v-c354117b><div class="content-body" data-v-c354117b><!--[--><!--]--><div class="VPNavBarSearch search" data-v-c354117b><!--[--><!----><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-c354117b data-v-dd886324><span id="main-nav-aria-label" class="visually-hidden" data-v-dd886324> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-dd886324 data-v-e7ad9d5b><!--[--><span data-v-e7ad9d5b>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/blogs/" tabindex="0" data-v-dd886324 data-v-e7ad9d5b><!--[--><span data-v-e7ad9d5b>Blogs</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-c354117b data-v-916d5f13 data-v-93f94330><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-93f94330><span class="text" data-v-93f94330><span class="vpi-languages option-icon" data-v-93f94330></span><!----><span class="vpi-chevron-down text-icon" data-v-93f94330></span></span></button><div class="menu" data-v-93f94330><div class="VPMenu" data-v-93f94330 data-v-e75fc4a8><!----><!--[--><!--[--><div class="items" data-v-916d5f13><p class="title" data-v-916d5f13>English</p><!--[--><div class="VPMenuLink" data-v-916d5f13 data-v-f20f02ed><a class="VPLink link" href="/zh/installation/docker.html" data-v-f20f02ed><!--[--><span data-v-f20f02ed>简体中文</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-c354117b data-v-94cd6187><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-94cd6187 data-v-6dee01f2 data-v-6d4c42ba><span class="check" data-v-6d4c42ba><span class="icon" data-v-6d4c42ba><!--[--><span class="vpi-sun sun" data-v-6dee01f2></span><span class="vpi-moon moon" data-v-6dee01f2></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-c354117b data-v-cd484525 data-v-bbf2a784><!--[--><a class="VPSocialLink no-icon" href="https://github.com/memohai/Memoh" aria-label="github" target="_blank" rel="noopener" data-v-bbf2a784 data-v-a094361f><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-c354117b data-v-7a542967 data-v-93f94330><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-93f94330><span class="vpi-more-horizontal icon" data-v-93f94330></span></button><div class="menu" data-v-93f94330><div class="VPMenu" data-v-93f94330 data-v-e75fc4a8><!----><!--[--><!--[--><div class="group translations" data-v-7a542967><p class="trans-title" data-v-7a542967>English</p><!--[--><div class="VPMenuLink" data-v-7a542967 data-v-f20f02ed><a class="VPLink link" href="/zh/installation/docker.html" data-v-f20f02ed><!--[--><span data-v-f20f02ed>简体中文</span><!--]--></a></div><!--]--></div><div class="group" data-v-7a542967><div class="item appearance" data-v-7a542967><p class="label" data-v-7a542967>Appearance</p><div class="appearance-action" data-v-7a542967><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-7a542967 data-v-6dee01f2 data-v-6d4c42ba><span class="check" data-v-6d4c42ba><span class="icon" data-v-6d4c42ba><!--[--><span class="vpi-sun sun" data-v-6dee01f2></span><span class="vpi-moon moon" data-v-6dee01f2></span><!--]--></span></span></button></div></div></div><div class="group" data-v-7a542967><div class="item social-links" data-v-7a542967><div class="VPSocialLinks social-links-list" data-v-7a542967 data-v-bbf2a784><!--[--><a class="VPSocialLink no-icon" href="https://github.com/memohai/Memoh" aria-label="github" target="_blank" rel="noopener" data-v-bbf2a784 data-v-a094361f><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-c354117b data-v-7aa6377b><span class="container" data-v-7aa6377b><span class="top" data-v-7aa6377b></span><span class="middle" data-v-7aa6377b></span><span class="bottom" data-v-7aa6377b></span></span></button></div></div></div></div><div class="divider" data-v-c354117b><div class="divider-line" data-v-c354117b></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-a7fd87cd data-v-20ac656e><div class="container" data-v-20ac656e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-20ac656e><span class="vpi-align-left menu-icon" data-v-20ac656e></span><span class="menu-text" data-v-20ac656e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-20ac656e data-v-d5f98606><button data-v-d5f98606>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-a7fd87cd data-v-feb7a153><div class="curtain" data-v-feb7a153></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-feb7a153><span class="visually-hidden" id="sidebar-aria-label" data-v-feb7a153> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-93f78773><section class="VPSidebarItem level-0" data-v-93f78773 data-v-904fc2f6><!----><div class="items" data-v-904fc2f6><!--[--><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/index.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/about.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>About Memoh</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-93f78773><section class="VPSidebarItem level-0 has-active" data-v-93f78773 data-v-904fc2f6><div class="item" role="button" tabindex="0" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><h2 class="text" data-v-904fc2f6>Installation</h2><!----></div><div class="items" data-v-904fc2f6><!--[--><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/installation/docker.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Docker</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-93f78773><section class="VPSidebarItem level-0" data-v-93f78773 data-v-904fc2f6><div class="item" role="button" tabindex="0" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><h2 class="text" data-v-904fc2f6>Getting Started</h2><!----></div><div class="items" data-v-904fc2f6><!--[--><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/provider-and-model.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>LLM Provider</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/bot.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Bot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/sessions.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Sessions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/access.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Access Control</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/container.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Container</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/files.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Files</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/skills.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/mcp.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>MCP</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/channels.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/browser.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Browser</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/memory.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Memory</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/compaction.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Context Compaction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/heartbeat.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Heartbeat</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/schedule.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Scheduled Tasks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/search-provider.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Web Search</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/email.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Email</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/getting-started/slash-commands.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Slash Commands</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-93f78773><section class="VPSidebarItem level-0" data-v-93f78773 data-v-904fc2f6><div class="item" role="button" tabindex="0" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><h2 class="text" data-v-904fc2f6>Memory Providers</h2><!----></div><div class="items" data-v-904fc2f6><!--[--><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/memory-providers/index.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/memory-providers/builtin.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Built-in</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/memory-providers/mem0.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Mem0</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/memory-providers/openviking.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>OpenViking</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-93f78773><section class="VPSidebarItem level-0" data-v-93f78773 data-v-904fc2f6><div class="item" role="button" tabindex="0" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><h2 class="text" data-v-904fc2f6>TTS Providers</h2><!----></div><div class="items" data-v-904fc2f6><!--[--><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/tts-providers/index.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/tts-providers/edge.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Edge TTS</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-93f78773><section class="VPSidebarItem level-0" data-v-93f78773 data-v-904fc2f6><div class="item" role="button" tabindex="0" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><h2 class="text" data-v-904fc2f6>Channels</h2><!----></div><div class="items" data-v-904fc2f6><!--[--><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/channels/index.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/channels/telegram.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Telegram</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/channels/feishu.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Feishu (Lark)</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/channels/discord.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Discord</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/channels/qq.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>QQ</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/channels/matrix.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>Matrix</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/channels/wecom.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>WeCom (WeWork)</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-904fc2f6 data-v-904fc2f6><div class="item" data-v-904fc2f6><div class="indicator" data-v-904fc2f6></div><a class="VPLink link link" href="/channels/weixin.html" data-v-904fc2f6><!--[--><p class="text" data-v-904fc2f6>WeChat</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-a7fd87cd data-v-6a539cd2><div class="VPDoc has-sidebar has-aside" data-v-6a539cd2 data-v-db8bf443><!--[--><!--]--><div class="container" data-v-db8bf443><div class="aside" data-v-db8bf443><div class="aside-curtain" data-v-db8bf443></div><div class="aside-container" data-v-db8bf443><div class="aside-content" data-v-db8bf443><div class="VPDocAside" data-v-db8bf443 data-v-f268a203><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-f268a203 data-v-b67a6837><div class="content" data-v-b67a6837><div class="outline-marker" data-v-b67a6837></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-b67a6837>On this page</div><ul class="VPDocOutlineItem root" data-v-b67a6837 data-v-b4af7dc9><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-f268a203></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-db8bf443><div class="content-container" data-v-db8bf443><!--[--><!--]--><main class="main" data-v-db8bf443><div style="position:relative;" class="vp-doc _installation_docker" data-v-db8bf443><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, the main server (with embedded Containerd and in-process AI agent), and the 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="service-architecture" tabindex="-1">Service Architecture <a class="header-anchor" href="#service-architecture" aria-label="Permalink to &quot;Service Architecture&quot;"></a></h2><p>The Docker Compose stack consists of multiple services. Some are always started, others are optional and enabled via <code>--profile</code>:</p><table tabindex="0"><thead><tr><th>Service</th><th>Profile</th><th>Description</th></tr></thead><tbody><tr><td><strong>server</strong></td><td><em>(core)</em></td><td>Main Memoh server with embedded Containerd and in-process AI agent</td></tr><tr><td><strong>web</strong></td><td><em>(core)</em></td><td>Web UI (Vue 3)</td></tr><tr><td><strong>postgres</strong></td><td><em>(core)</em></td><td>PostgreSQL database</td></tr><tr><td><strong>qdrant</strong></td><td><code>qdrant</code></td><td>Qdrant vector database for memory search (sparse and dense modes)</td></tr><tr><td><strong>browser</strong></td><td><code>browser</code></td><td>Playwright-based browser gateway for bot web automation</td></tr><tr><td><strong>sparse</strong></td><td><code>sparse</code></td><td>Neural sparse encoding service for memory retrieval (see below)</td></tr></tbody></table><h3 id="sparse-service" tabindex="-1">Sparse Service <a class="header-anchor" href="#sparse-service" aria-label="Permalink to &quot;Sparse Service&quot;"></a></h3><p>The <strong>sparse</strong> container provides neural sparse vector encoding for memory retrieval. It runs a lightweight Python (Flask) service on port 8085 that uses the <a href="https://huggingface.co/opensearch-project/opensearch-neural-sparse-encoding-multilingual-v1" target="_blank" rel="noreferrer"><code>opensearch-neural-sparse-encoding-multilingual-v1</code></a> model from OpenSearch.</p><p><strong>What it does:</strong></p><ul><li>Converts document text into sparse vectors (a compact list of token indices + importance weights) using a masked language model</li><li>Encodes queries using IDF-weighted term lookup for fast, efficient retrieval</li><li>Works with Qdrant to enable semantic memory search without requiring an external embedding API</li></ul><p><strong>Why use it:</strong></p><ul><li><strong>No embedding API costs</strong> — The model runs locally inside the container, so you don&#39;t need an OpenAI/Cohere/etc. embedding API key</li><li><strong>Multilingual</strong> — The underlying model supports multiple languages out of the box</li><li><strong>Good retrieval quality</strong> — Neural sparse encoding provides significantly better results than keyword-only search (BM25), while being lighter than dense embedding models</li></ul><p><strong>When to enable it:</strong></p><p>Enable the sparse profile (<code>--profile sparse</code>) if you plan to use the built-in memory provider in <strong>sparse mode</strong>. The model is pre-downloaded during the Docker image build, so the container starts quickly without needing to fetch weights at runtime.</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;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compose</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> qdrant</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> sparse</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> browser</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>For more details on memory modes, see <a href="/memory-providers/builtin.html">Built-in Memory Provider</a>.</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, sparse service toggle, browser core selection)</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>Build the browser image with selected cores 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:#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;"> --version</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> v0.6.0</span></span></code></pre></div><p>Or using the environment variable:</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;"> MEMOH_VERSION=v0.6.0</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:#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;"> USE_CN_MIRROR=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</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>curl -fsSL https://memoh.sh | sudo MEMOH_VERSION=v0.6.0 USE_CN_MIRROR=true 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 (recommended — with Qdrant, Browser, and Sparse):</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:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> qdrant</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> browser</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> sparse</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>Or start core services only (no vector DB or browser automation):</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;">workspace</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 add 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:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> qdrant</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --profile</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> browser</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>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="configuration-reference" tabindex="-1">Configuration Reference <a class="header-anchor" href="#configuration-reference" aria-label="Permalink to &quot;Configuration Reference&quot;"></a></h2><p>The <code>config.toml</code> file controls all server behavior. Here is a summary of the available sections:</p><table tabindex="0"><thead><tr><th>Section</th><th>Description</th></tr></thead><tbody><tr><td><code>[log]</code></td><td>Logging level and format (<code>info</code>, <code>debug</code>; <code>text</code>, <code>json</code>)</td></tr><tr><td><code>[server]</code></td><td>HTTP listen address (default <code>:8080</code>)</td></tr><tr><td><code>[admin]</code></td><td>Admin account credentials (username, password, email)</td></tr><tr><td><code>[auth]</code></td><td>JWT secret and token expiration</td></tr><tr><td><code>timezone</code></td><td>Server timezone (default <code>UTC</code>)</td></tr><tr><td><code>[containerd]</code></td><td>Containerd socket path and namespace</td></tr><tr><td><code>[workspace]</code></td><td>Container image, snapshotter, data paths, CNI config, optional registry mirror</td></tr><tr><td><code>[postgres]</code></td><td>PostgreSQL connection (host, port, user, password, database, sslmode)</td></tr><tr><td><code>[qdrant]</code></td><td>Qdrant vector database connection (base_url, api_key, timeout)</td></tr><tr><td><code>[sparse]</code></td><td>Sparse encoding service URL</td></tr><tr><td><code>[registry]</code></td><td>Provider definitions directory</td></tr><tr><td><code>[browser_gateway]</code></td><td>Browser Gateway host, port, and server address</td></tr><tr><td><code>[web]</code></td><td>Web frontend host and port</td></tr></tbody></table><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>v0.6.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 image mirrors</td></tr><tr><td><code>BROWSER_CORES</code></td><td><code>chromium,firefox</code></td><td>Browser engines to include in the browser image</td></tr><tr><td><code>BROWSER_TAG</code></td><td><code>latest</code></td><td>Docker tag for the browser image</td></tr></tbody></table></div></div></main><footer class="VPDocFooter" data-v-db8bf443 data-v-d067bba9><!--[--><!--]--><div class="edit-info" data-v-d067bba9><div class="edit-link" data-v-d067bba9><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-d067bba9><!--[--><span class="vpi-square-pen edit-link-icon" data-v-d067bba9></span> Edit on GitHub<!--]--></a></div><div class="last-updated" data-v-d067bba9><p class="VPLastUpdated" data-v-d067bba9 data-v-5d56f43a>Last Updated: <time datetime="2026-03-29T12:30:21.000Z" data-v-5d56f43a></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-d067bba9><span class="visually-hidden" id="doc-footer-aria-label" data-v-d067bba9>Pager</span><div class="pager" data-v-d067bba9><a class="VPLink link pager-link prev" href="/about.html" data-v-d067bba9><!--[--><span class="desc" data-v-d067bba9>Previous page</span><span class="title" data-v-d067bba9>About Memoh</span><!--]--></a></div><div class="pager" data-v-d067bba9><a class="VPLink link pager-link next" href="/getting-started/provider-and-model.html" data-v-d067bba9><!--[--><span class="desc" data-v-d067bba9>Next page</span><span class="title" data-v-d067bba9>LLM Provider</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-a7fd87cd data-v-a4a6e223><div class="container" data-v-a4a6e223><p class="message" data-v-a4a6e223>Published under AGPLv3</p><p class="copyright" data-v-a4a6e223>Copyright © 2024 Memoh</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"about.md\":\"BHHsAOtF\",\"blogs_2026-02-16.md\":\"BRb_uymM\",\"blogs_index.md\":\"CWwgVf03\",\"channels_discord.md\":\"BmZ6CspE\",\"channels_feishu.md\":\"wMudSRYw\",\"channels_index.md\":\"CHGqSCNe\",\"channels_matrix.md\":\"BX6Zz3t1\",\"channels_qq.md\":\"BLP-WgO8\",\"channels_telegram.md\":\"Cr9xyz5r\",\"channels_wecom.md\":\"BeiCLtex\",\"channels_weixin.md\":\"DWY_N0Mw\",\"getting-started_access.md\":\"CLfgJOzW\",\"getting-started_bot.md\":\"28IQBvMi\",\"getting-started_browser.md\":\"DHWZP7Sw\",\"getting-started_channels.md\":\"m6gk9QUJ\",\"getting-started_compaction.md\":\"DpvpBFKV\",\"getting-started_container.md\":\"Cn3JBXGq\",\"getting-started_email.md\":\"C6AeFWWD\",\"getting-started_files.md\":\"BEvIR4S9\",\"getting-started_heartbeat.md\":\"ByhyU7bB\",\"getting-started_mcp.md\":\"Cc4x0Hwa\",\"getting-started_memory.md\":\"DGTYEufG\",\"getting-started_provider-and-model.md\":\"BT7Reh8O\",\"getting-started_schedule.md\":\"tVJ8UgNc\",\"getting-started_search-provider.md\":\"CvBWWZPP\",\"getting-started_sessions.md\":\"DCv4I7U5\",\"getting-started_skills.md\":\"BMbCYp3W\",\"getting-started_slash-commands.md\":\"BsVHX_1A\",\"index.md\":\"DJ2zSR3k\",\"installation_docker.md\":\"EGlSgJeL\",\"memory-providers_builtin.md\":\"BhfdM6jZ\",\"memory-providers_index.md\":\"Cl5wC9-w\",\"memory-providers_mem0.md\":\"C-l_lmek\",\"memory-providers_openviking.md\":\"BVdpnQhh\",\"tts-providers_edge.md\":\"DyIkCTE0\",\"tts-providers_index.md\":\"MiCAla7_\",\"zh_concepts_identity-and-binding.md\":\"CwSe42kA\",\"zh_concepts_index.md\":\"B_keRB_w\",\"zh_index.md\":\"Clg9MYGD\",\"zh_style_terminology.md\":\"BGrDT8pF\"}");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\",\"link\":\"/getting-started/provider-and-model.md\"},{\"text\":\"Bot\",\"link\":\"/getting-started/bot.md\"},{\"text\":\"Sessions\",\"link\":\"/getting-started/sessions.md\"},{\"text\":\"Access Control\",\"link\":\"/getting-started/access.md\"},{\"text\":\"Container\",\"link\":\"/getting-started/container.md\"},{\"text\":\"Files\",\"link\":\"/getting-started/files.md\"},{\"text\":\"Skills\",\"link\":\"/getting-started/skills.md\"},{\"text\":\"MCP\",\"link\":\"/getting-started/mcp.md\"},{\"text\":\"Channels\",\"link\":\"/getting-started/channels.md\"},{\"text\":\"Browser\",\"link\":\"/getting-started/browser.md\"},{\"text\":\"Memory\",\"link\":\"/getting-started/memory.md\"},{\"text\":\"Context Compaction\",\"link\":\"/getting-started/compaction.md\"},{\"text\":\"Heartbeat\",\"link\":\"/getting-started/heartbeat.md\"},{\"text\":\"Scheduled Tasks\",\"link\":\"/getting-started/schedule.md\"},{\"text\":\"Web Search\",\"link\":\"/getting-started/search-provider.md\"},{\"text\":\"Email\",\"link\":\"/getting-started/email.md\"},{\"text\":\"Slash Commands\",\"link\":\"/getting-started/slash-commands.md\"}]},{\"text\":\"Memory Providers\",\"items\":[{\"text\":\"Overview\",\"link\":\"/memory-providers/index.md\"},{\"text\":\"Built-in\",\"link\":\"/memory-providers/builtin.md\"},{\"text\":\"Mem0\",\"link\":\"/memory-providers/mem0.md\"},{\"text\":\"OpenViking\",\"link\":\"/memory-providers/openviking.md\"}]},{\"text\":\"TTS Providers\",\"items\":[{\"text\":\"Overview\",\"link\":\"/tts-providers/index.md\"},{\"text\":\"Edge TTS\",\"link\":\"/tts-providers/edge.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\"},{\"text\":\"QQ\",\"link\":\"/channels/qq.md\"},{\"text\":\"Matrix\",\"link\":\"/channels/matrix.md\"},{\"text\":\"WeCom (WeWork)\",\"link\":\"/channels/wecom.md\"},{\"text\":\"WeChat\",\"link\":\"/channels/weixin.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>