Files
komodo/docs/setup/connect-servers.html
2026-05-11 18:45:07 -07:00

135 lines
47 KiB
HTML
Raw Permalink 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.
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-setup/connect-servers" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.9.2">
<title data-rh="true">Connect More Servers | Komodo</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://komo.do/img/monitor-lizard.png"><meta data-rh="true" name="twitter:image" content="https://komo.do/img/monitor-lizard.png"><meta data-rh="true" property="og:url" content="https://komo.do/docs/setup/connect-servers"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Connect More Servers | Komodo"><meta data-rh="true" name="description" content="Every server you want to manage with Komodo needs the Periphery agent installed."><meta data-rh="true" property="og:description" content="Every server you want to manage with Komodo needs the Periphery agent installed."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://komo.do/docs/setup/connect-servers"><link data-rh="true" rel="alternate" href="https://komo.do/docs/setup/connect-servers" hreflang="en"><link data-rh="true" rel="alternate" href="https://komo.do/docs/setup/connect-servers" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Setup","item":"https://komo.do/docs/setup/"},{"@type":"ListItem","position":2,"name":"Connect More Servers","item":"https://komo.do/docs/setup/connect-servers"}]}</script><link rel="stylesheet" href="/assets/css/styles.1906ceb0.css">
<script src="/assets/js/runtime~main.e25d46da.js" defer="defer"></script>
<script src="/assets/js/main.0eb432bc.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/komodo-512x512.png"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/komodo-512x512.png" alt="monitor lizard" class="themedComponent_mlkZ themedComponent--light_NVdE" width="32px"><img src="/img/komodo-512x512.png" alt="monitor lizard" class="themedComponent_mlkZ themedComponent--dark_xIcU" width="32px"></div><b class="navbar__title text--truncate">KOMODO</b></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/intro">Docs</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://opencollective.com/komodo" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Donate<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><a href="https://docs.rs/komodo_client/latest/komodo_client" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Docs.rs<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><a href="https://github.com/moghtech/komodo" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><div class="navbar__search searchBarContainer_NW3z" dir="ltr"><input placeholder="Search" aria-label="Search" class="navbar__search-input searchInput_YFbd" value=""><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd sidebarWithHideableNavbar_wUlq"><a tabindex="-1" class="sidebarLogo_isFc" href="/"><img src="/img/komodo-512x512.png" alt="monitor lizard" class="themedComponent_mlkZ themedComponent--light_NVdE" width="32px"><img src="/img/komodo-512x512.png" alt="monitor lizard" class="themedComponent_mlkZ themedComponent--dark_xIcU" width="32px"><b>KOMODO</b></a><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/intro"><span title="What is Komodo?" class="linkLabel_WmDU">What is Komodo?</span></a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--active" href="/docs/setup"><span title="Setup" class="categoryLinkLabel_W154">Setup</span></a><button aria-label="Collapse sidebar category &#x27;Setup&#x27;" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/setup/mongo"><span title="MongoDB" class="linkLabel_WmDU">MongoDB</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/setup/ferretdb"><span title="FerretDB" class="linkLabel_WmDU">FerretDB</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/setup/advanced"><span title="Advanced Setup" class="linkLabel_WmDU">Advanced Setup</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/setup/connect-servers"><span title="Connect More Servers" class="linkLabel_WmDU">Connect More Servers</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/setup/backup"><span title="Backup and Restore" class="linkLabel_WmDU">Backup and Restore</span></a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/resources"><span title="Resources" class="linkLabel_WmDU">Resources</span></a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/docs/deploy/compose"><span title="Deploy" class="categoryLinkLabel_W154">Deploy</span></a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/swarm"><span title="Swarm" class="linkLabel_WmDU">Swarm</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/terminals"><span title="Terminals" class="linkLabel_WmDU">Terminals</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/build"><span title="Build" class="linkLabel_WmDU">Build</span></a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/docs/automate/procedures"><span title="Automate" class="categoryLinkLabel_W154">Automate</span></a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/docs/configuration/providers"><span title="Configuration" class="categoryLinkLabel_W154">Configuration</span></a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist" href="/docs/ecosystem"><span title="Ecosystem" class="categoryLinkLabel_W154">Ecosystem</span></a><button aria-label="Expand sidebar category &#x27;Ecosystem&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/docs/releases/v2.0.0"><span title="Releases" class="categoryLinkLabel_W154">Releases</span></a></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><a class="breadcrumbs__link" href="/docs/setup"><span>Setup</span></a></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Connect More Servers</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Connect More Servers</h1></header>
<!-- -->
<p>Every server you want to manage with Komodo needs the <strong>Periphery</strong> agent installed.
Periphery is a small, stateless binary that provides receives commands from Komodo Core
over a bi-directional websocket connection.</p>
<p>Connecting a server has 3 steps:</p>
<ol>
<li class=""><strong>Create an onboarding key</strong> via the Komodo Core API / UI.</li>
<li class=""><strong>Install the Periphery agent</strong> on the server or VM, passing the onboarding key.</li>
<li class="">Confirm the connection status is <strong>OK</strong>.</li>
</ol>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="install-periphery">Install Periphery<a href="#install-periphery" class="hash-link" aria-label="Direct link to Install Periphery" title="Direct link to Install Periphery" translate="no"></a></h2>
<p>You can install Periphery as a systemd managed process, run it as a <a href="https://github.com/moghtech/komodo/pkgs/container/komodo-periphery" target="_blank" rel="noopener noreferrer" class="">docker container</a>, or run the binary directly with another process manager.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="systemd">Systemd<a href="#systemd" class="hash-link" aria-label="Direct link to Systemd" title="Direct link to Systemd" translate="no"></a></h3>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>This is the recommended and simplest method to run Periphery.
It avoids a number of complications which can come up when running Periphery in a container.
<a href="https://github.com/moghtech/komodo/discussions/220" target="_blank" rel="noopener noreferrer" class="">See this discussion</a>.</p></div></div>
<h4 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="root-install">Root install<a href="#root-install" class="hash-link" aria-label="Direct link to Root install" title="Direct link to Root install" translate="no"></a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-sSL</span><span class="token plain"> https://raw.githubusercontent.com/moghtech/komodo/main/scripts/setup-periphery.py </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> python3 - </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> --core-address</span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token string" style="color:hsl(119, 34%, 47%)">&quot;https://&lt;core-address&gt;&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> --connect-as</span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token string" style="color:hsl(119, 34%, 47%)">&quot;</span><span class="token string variable" style="color:hsl(221, 87%, 60%)">$(</span><span class="token string variable function" style="color:hsl(221, 87%, 60%)">hostname</span><span class="token string variable" style="color:hsl(221, 87%, 60%)">)</span><span class="token string" style="color:hsl(119, 34%, 47%)">&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> --onboarding-key</span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token string" style="color:hsl(119, 34%, 47%)">&quot;O-...&quot;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="user-install">User install<a href="#user-install" class="hash-link" aria-label="Direct link to User install" title="Direct link to User install" translate="no"></a></h4>
<p>Periphery can also be installed to run as a <strong>systemd user service</strong> (for the calling user).</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-sSL</span><span class="token plain"> https://raw.githubusercontent.com/moghtech/komodo/main/scripts/setup-periphery.py </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> python3 - </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">--user</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> --core-address</span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token string" style="color:hsl(119, 34%, 47%)">&quot;https://&lt;core-address&gt;&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> --connect-as</span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token string" style="color:hsl(119, 34%, 47%)">&quot;</span><span class="token string variable" style="color:hsl(221, 87%, 60%)">$(</span><span class="token string variable function" style="color:hsl(221, 87%, 60%)">hostname</span><span class="token string variable" style="color:hsl(221, 87%, 60%)">)</span><span class="token string" style="color:hsl(119, 34%, 47%)">&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> --onboarding-key</span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token string" style="color:hsl(119, 34%, 47%)">&quot;O-...&quot;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="enable-the-periphery-service-to-start-automatically-after-a-reboot">Enable the Periphery service to start automatically after a reboot.<a href="#enable-the-periphery-service-to-start-automatically-after-a-reboot" class="hash-link" aria-label="Direct link to Enable the Periphery service to start automatically after a reboot." title="Direct link to Enable the Periphery service to start automatically after a reboot." translate="no"></a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">sudo</span><span class="token plain"> systemctl </span><span class="token builtin class-name" style="color:hsl(35, 99%, 36%)">enable</span><span class="token plain"> periphery</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>Important</div><div class="admonitionContent_BuS1"><p><strong>For systemctl user installs</strong>: To ensure periphery stays running when your user logs out, make sure to enable linger:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">sudo</span><span class="token plain"> loginctl enable-linger </span><span class="token environment constant" style="color:hsl(35, 99%, 36%)">$USER</span><br></span></code></pre></div></div></div></div>
<h4 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="configuration-file">Configuration file<a href="#configuration-file" class="hash-link" aria-label="Direct link to Configuration file" title="Direct link to Configuration file" translate="no"></a></h4>
<p>The configuration file location will depend on root vs system install:</p>
<ul>
<li class="">Root install: <code>/etc/komodo/periphery.config.toml</code></li>
<li class="">User install: <code>$HOME/.config/komodo/periphery.config.toml</code></li>
</ul>
<p>The <a href="#configuration" class="">full example configuration file is here</a>.</p>
<p>You can find more information (and view the script) in the <a href="https://github.com/moghtech/komodo/tree/main/scripts" target="_blank" rel="noopener noreferrer" class="">script readme</a>.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>This script can be run multiple times without issue, and it won&#x27;t change existing config after the first run. Just run it again after a Komodo version release, and it will update the periphery version.</p></div></div>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>For deployment to many servers, a tool like <a href="https://docs.ansible.com/" target="_blank" rel="noopener noreferrer" class="">Ansible</a> should be used.
An example of such a setup can be found here: <a href="https://github.com/bpbradley/ansible-role-komodo" target="_blank" rel="noopener noreferrer" class="">https://github.com/bpbradley/ansible-role-komodo</a></p></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="container">Container<a href="#container" class="hash-link" aria-label="Direct link to Container" title="Direct link to Container" translate="no"></a></h3>
<p>You can use a docker compose file:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockTitle_OeMC">https://github.com/moghtech/komodo/blob/main/compose/periphery.compose.yaml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm" style="counter-reset:line-count 0"><span class="token-line codeLine_lJS_" style="color:hsl(230, 8%, 24%)"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="binary">Binary<a href="#binary" class="hash-link" aria-label="Direct link to Binary" title="Direct link to Binary" translate="no"></a></h3>
<ol>
<li class="">
<p>Download the periphery binary from the latest <a href="https://github.com/moghtech/komodo/releases" target="_blank" rel="noopener noreferrer" class="">release</a>.</p>
</li>
<li class="">
<p>Create and edit your config files, following the <a href="https://github.com/moghtech/komodo/blob/main/config/periphery.config.toml" target="_blank" rel="noopener noreferrer" class="">config example</a>.</p>
</li>
</ol>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_BuS1"><p>See the <a href="https://docs.rs/komodo_client/latest/komodo_client/entities/config/periphery/index.html" target="_blank" rel="noopener noreferrer" class="">periphery config docs</a>
for more information on configuring periphery.</p></div></div>
<ol start="3">
<li class="">
<p>Ensure that connectivity with Komodo Core is possible via the chosen connection method. <strong>So either</strong>:</p>
<ul>
<li class="">Periphery can reach Komodo Core at the configured <code>core_address</code>.</li>
<li class="">Komodo Core can reach Periphery on the specified port (default <code>8120</code>).</li>
</ul>
</li>
<li class="">
<p>Install docker. See the <a href="https://docs.docker.com/engine/install/" target="_blank" rel="noopener noreferrer" class="">docker install docs</a>.</p>
</li>
</ol>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_BuS1"><p>Ensure that the user which periphery is run as has access to the docker group without sudo.</p></div></div>
<ol start="5">
<li class="">Start the periphery binary with your preferred process manager, like systemd.</li>
</ol>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="example-periphery-start-command">Example periphery start command<a href="#example-periphery-start-command" class="hash-link" aria-label="Direct link to Example periphery start command" title="Direct link to Example periphery start command" translate="no"></a></h3>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">periphery --config-path /path/to/periphery.config.toml</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>You can run <code>periphery --help</code> to see the manual.</p></div></div>
<p>When running periphery in docker, use <a href="https://docs.docker.com/reference/compose-file/services/#command" target="_blank" rel="noopener noreferrer" class="">command</a> to pass in additional arguments.</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">command: periphery --config-path /path/in/container/to/periphery.config.base.toml</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="authentication-and-key-rotation">Authentication and Key Rotation<a href="#authentication-and-key-rotation" class="hash-link" aria-label="Direct link to Authentication and Key Rotation" title="Direct link to Authentication and Key Rotation" translate="no"></a></h2>
<p>Core and Periphery authenticate using automatically generated public/private key pairs. No manual key management is required.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="how-it-works">How it works<a href="#how-it-works" class="hash-link" aria-label="Direct link to How it works" title="Direct link to How it works" translate="no"></a></h3>
<ol>
<li class="">When you create an <strong>onboarding key</strong> in the UI or API, Komodo Core generates a key pair, and the private key is returned once to the user as the &quot;onboarding key&quot;.</li>
<li class="">When Periphery first connects using the onboarding key, it generates its own key pair, and sends just the public key to Core.
Core stores this public key for each Server.</li>
<li class="">All subsequent communication is authenticated by performing a
<a href="https://noiseprotocol.org/noise.html#interactive-handshake-patterns-fundamental" target="_blank" rel="noopener noreferrer" class="">cryptographic handshake</a>
and validating the transfered public key matches.</li>
</ol>
<p>The onboarding key is no longer needed after the initial connection, and the Periphery private key never leaves the server.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="default-key-locations">Default key locations<a href="#default-key-locations" class="hash-link" aria-label="Direct link to Default key locations" title="Direct link to Default key locations" translate="no"></a></h3>
<table><thead><tr><th>Component</th><th>Install Method</th><th>Default path</th></tr></thead><tbody><tr><td>Core</td><td>Container</td><td><code>/config/keys/core.key</code></td></tr><tr><td>Periphery</td><td>Container</td><td><code>/config/keys/periphery.key</code></td></tr><tr><td>Periphery</td><td>Systemd</td><td><code>${root_directory}/keys/periphery.key</code></td></tr></tbody></table>
<p>Keys can also be specified inline in config instead of as file paths.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="automatic-key-rotation">Automatic key rotation<a href="#automatic-key-rotation" class="hash-link" aria-label="Direct link to Automatic key rotation" title="Direct link to Automatic key rotation" translate="no"></a></h3>
<p>Komodo supports automatic rotation of the Periphery key pairs.
When triggered, already connected Periphery agents generate a new key pair and send the public key to Komodo Core,
which updates its expected public key for that server.</p>
<p>Each Server has an <code>auto_rotate_keys</code> setting (default: <code>true</code>) that controls whether it participates in the bulk <code>RotateAllServerKeys</code> operation.
You can also rotate keys for individual servers at any time through the API or UI.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="onboarding-key-options">Onboarding key options<a href="#onboarding-key-options" class="hash-link" aria-label="Direct link to Onboarding key options" title="Direct link to Onboarding key options" translate="no"></a></h3>
<p>Onboarding keys are reusable and support several options:</p>
<table><thead><tr><th>Option</th><th>Description</th></tr></thead><tbody><tr><td><code>enabled</code></td><td>Enable or disable the key.</td></tr><tr><td><code>expires</code></td><td>Expiration timestamp (0 = never).</td></tr><tr><td><code>tags</code></td><td>Default tags applied to servers created with this key.</td></tr><tr><td><code>copy_server</code></td><td>Template Server to copy configuration from.</td></tr><tr><td><code>create_builder</code></td><td>Automatically create a Builder resource for the new server.</td></tr><tr><td><code>privileged</code></td><td>Allow the key to update public keys on existing servers.</td></tr></tbody></table>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration" translate="no"></a></h2>
<p>The configuration can also be passed as <strong>YAML</strong> or <strong>JSON</strong>.
You can use it-tools to convert this TOML file to your preferred format:</p>
<ul>
<li class="">YAML: <a href="https://it-tools.tech/toml-to-yaml" target="_blank" rel="noopener noreferrer" class="">it-tools.tech/toml-to-yaml</a></li>
<li class="">JSON: <a href="https://it-tools.tech/toml-to-json" target="_blank" rel="noopener noreferrer" class="">it-tools.tech/toml-to-json</a></li>
</ul>
<p>Quick download to <code>./komodo/periphery.config.toml</code>:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">wget</span><span class="token plain"> </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-P</span><span class="token plain"> komodo https://raw.githubusercontent.com/moghtech/komodo/main/config/periphery.config.toml</span><br></span></code></pre></div></div>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockTitle_OeMC">https://github.com/moghtech/komodo/blob/main/config/periphery.config.toml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm" style="counter-reset:line-count 0"><span class="token-line codeLine_lJS_" style="color:hsl(230, 8%, 24%)"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="passing-config-files">Passing config files<a href="#passing-config-files" class="hash-link" aria-label="Direct link to Passing config files" title="Direct link to Passing config files" translate="no"></a></h3>
<p>Either file paths or directory paths can be passed to <code>--config-path</code> (alias: <code>-c</code>). By default, no paths will be used, meaning the configuration is entirely
loaded via environment variables.</p>
<p>When using directories, the file entries can be filtered by name with the <code>--config-keyword</code> argument, which can be passed multiple times to add more keywords.
These are each wildcard patterns to match file names.
Only config files with file names that contain a keyword will be merged, with files matching later defined keywords having higher priority on field conflicts.
By default, the only keyword is <code>*config*.*</code>. This matches files like <code>config.toml</code>, <code>periphery.config.yaml</code>, etc.</p>
<p>When passing multiple config files, later --config-path given in the command will always override previous ones.
Directory config files are merged in alphabetical order by name, so <code>config_b.toml</code> will override <code>config_a.toml</code>.</p>
<p>There are two ways to merge config files.
The default behavior is to completely replace any base fields with whatever fields are present in the override config.
So if you pass <code>allowed_ips = []</code> in your override config, the final allowed_ips will be an empty list as well.</p>
<p><code>--merge-nested-config true</code> will merge config fields recursively and extend config array fields.</p>
<p>For example, with <code>--merge-nested-config true</code> you can specify an allowed ip in the base config, and another in the override config, they will both be present in the final config.</p>
<p>Similarly, you can specify a base Docker / GitHub account pair, and extend them with additional accounts in the override config.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_WFHX"><a href="https://github.com/moghtech/komodo/tree/main/docsite/docs/setup/connect-servers.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/setup/advanced"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Advanced Setup</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/setup/backup"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Backup and Restore</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#install-periphery" class="table-of-contents__link toc-highlight">Install Periphery</a><ul><li><a href="#systemd" class="table-of-contents__link toc-highlight">Systemd</a></li><li><a href="#container" class="table-of-contents__link toc-highlight">Container</a></li><li><a href="#binary" class="table-of-contents__link toc-highlight">Binary</a></li><li><a href="#example-periphery-start-command" class="table-of-contents__link toc-highlight">Example periphery start command</a></li></ul></li><li><a href="#authentication-and-key-rotation" class="table-of-contents__link toc-highlight">Authentication and Key Rotation</a><ul><li><a href="#how-it-works" class="table-of-contents__link toc-highlight">How it works</a></li><li><a href="#default-key-locations" class="table-of-contents__link toc-highlight">Default key locations</a></li><li><a href="#automatic-key-rotation" class="table-of-contents__link toc-highlight">Automatic key rotation</a></li><li><a href="#onboarding-key-options" class="table-of-contents__link toc-highlight">Onboarding key options</a></li></ul></li><li><a href="#configuration" class="table-of-contents__link toc-highlight">Configuration</a><ul><li><a href="#passing-config-files" class="table-of-contents__link toc-highlight">Passing config files</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/intro">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/setup">Setup</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/resources">Resources</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Ecosystem</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/ecosystem/cli">CLI</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/ecosystem/api">API</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/ecosystem/community">Community</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Project</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/moghtech/komodo" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://opencollective.com/komodo" target="_blank" rel="noopener noreferrer" class="footer__link-item">Donate<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://demo.komo.do" target="_blank" rel="noopener noreferrer" class="footer__link-item">Demo<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">© 2026 Mogh Technologies Inc. Licensed under GPL-3.0</div></div></div></footer></div>
</body>
</html>