Files
2026-07-26 05:59:32 +00:00

126 lines
38 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.
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 class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-storage/get-started/run-logos-storage-node" data-has-hydrated=false><head><meta charset=UTF-8><meta name=generator content="Docusaurus v3.10.2"><title data-rh=true>Run a Logos storage node | Logos documentation</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"/><meta data-rh=true name=twitter:card content=summary_large_image /><meta data-rh=true property=og:image content=https://docs.logos.co/img/social-card.jpg /><meta data-rh=true name=twitter:image content=https://docs.logos.co/img/social-card.jpg /><meta data-rh=true property=og:url content=https://docs.logos.co/storage/get-started/run-logos-storage-node /><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="Run a Logos storage node | Logos documentation"/><meta data-rh=true name=description content="Get started running a Logos storage node and uploading your first file to the Logos network."/><meta data-rh=true property=og:description content="Get started running a Logos storage node and uploading your first file to the Logos network."/><link data-rh=true rel=icon href=/img/favicon.png /><link data-rh=true rel=canonical href=https://docs.logos.co/storage/get-started/run-logos-storage-node /><link data-rh=true rel=alternate href=https://docs.logos.co/storage/get-started/run-logos-storage-node hreflang=en /><link data-rh=true rel=alternate href=https://docs.logos.co/storage/get-started/run-logos-storage-node hreflang=x-default /><script data-rh=true type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","item":"https://docs.logos.co/storage/get-started/run-logos-storage-node","name":"Run a Logos storage node","position":1}]}</script><link rel=icon href=/img/favicon.png media="(prefers-color-scheme: light)"><link rel=icon href=/img/favicon-dark.png media="(prefers-color-scheme: dark)"><link rel=stylesheet href=/assets/css/styles.e45c7411.css /><script src=/assets/js/runtime~main.ea6c7eaa.js defer></script><script src=/assets/js/main.78385118.js defer></script></head><body><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-597")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())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/logo-light.png /><link rel=preload as=image href=/img/logo-dark.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"><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"/></svg></button><a class=navbar__brand href=/><div class=navbar__logo><img src=/img/logo-light.png alt=Logos class="themedComponent_mlkZ themedComponent--light_NVdE"/><img src=/img/logo-dark.png alt=Logos class="themedComponent_mlkZ themedComponent--dark_xIcU"/></div></a><a class="navbar__item navbar__link" href=/get-started/what-is-logos>Get started</a><div class="navbar__item dropdown dropdown--hoverable"><a href=# aria-haspopup=true aria-expanded=false role=button class=navbar__link>Your path</a><ul class=dropdown__menu><li><a class=dropdown__link href=/run-an-app>Run an app</a><li><a class=dropdown__link href=/run-a-node/get-started/run-logos-node-blockchain-storage-delivery>Run a node</a><li><a class=dropdown__link href=/build-an-app>Build an app</a><li><a class=dropdown__link href=/contribute/welcome>Contribute</a></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href=# aria-haspopup=true aria-expanded=false role=button class=navbar__link>Explore</a><ul class=dropdown__menu><li><a class=dropdown__link href=/basecamp/get-started/install-logos-basecamp>Basecamp</a><li><a class=dropdown__link href=/blockchain/get-started/introduction-to-the-logos-blockchain>Blockchain</a><li><a class=dropdown__link href=/lez/get-started/introduction-to-the-logos-execution-zone>LEZ</a><li><a class=dropdown__link href=/core/build-modules/start-a-logos-module-from-the-cli>Core</a><li><a class=dropdown__link href=/messaging/get-started/introduction-to-logos-messaging>Messaging</a><li><a aria-current=page class="dropdown__link dropdown__link--active" href=/storage/get-started/run-logos-storage-node>Storage</a><li><a class=dropdown__link href=/mixnet/get-started/discover-nodes-and-send-messages-via-the-anoncomms-mixnet-demo-app>Mixnet</a><li><a class=dropdown__link href=/peer-discovery/welcome>Peer discovery</a></ul></div></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href=https://github.com/logos-co/logos-docs 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 /></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"/></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"/></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"/></svg></button></div><div class=navbarSearchContainer_Bca1></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><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-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--sublist-caret menu__link--active" role=button aria-expanded=true href=/storage/get-started/run-logos-storage-node><span class=categoryLinkLabel_W154>Get started</span></a></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 menu__link--active" aria-current=page tabindex=0 href=/storage/get-started/run-logos-storage-node><span class=linkLabel_WmDU>Run a Logos storage node</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/storage/get-started/set-up-and-use-logos-storage-ui><span class=linkLabel_WmDU>Set up and use the Logos Storage UI</span></a></ul></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 /></svg></a><li class=breadcrumbs__item><span class=breadcrumbs__link>Get started</span><li class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link>Run a Logos storage node</span></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>Run a Logos storage node</h1></header>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id=get-started-running-a-logos-storage-node-and-uploading-your-first-file-to-the-logos-network>Get started running a Logos storage node and uploading your first file to the Logos network.<a href=#get-started-running-a-logos-storage-node-and-uploading-your-first-file-to-the-logos-network class=hash-link aria-label="Direct link to Get started running a Logos storage node and uploading your first file to the Logos network." title="Direct link to Get started running a Logos storage node and uploading your first file to the Logos network." translate=no></a></h4>
<p>This procedure covers how to build and run the <a href=https://github.com/logos-co/logos-storage-module/ target=_blank rel="noopener noreferrer" class="">Logos Storage Module</a>, connect it to the testnet bootstrap nodes, publish a file, and verify that the file can be downloaded. It is intended for node operators on testnet v0.2 who want to contribute storage capacity to the Logos network.</p>
<p>Before you start, make sure you have the following:</p>
<ul>
<li class="">
<p>Linux (tested on Ubuntu 22.04)</p>
</li>
<li class="">
<p><strong>Nix</strong> with flakes enabled. Install from <a href=https://nixos.org/download.html target=_blank rel="noopener noreferrer" class="">nixos.org</a>, then enable flakes:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">mkdir -p ~/.config/nix</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">echo 'experimental-features = nix-command flakes' >> ~/.config/nix/nix.conf</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p><a href=https://github.com/logos-co/logos-logoscore-cli/releases/tag/0.2.0 target=_blank rel="noopener noreferrer" class=""><code>logoscore</code></a>, and <a href=https://github.com/logos-co/logos-package-manager/releases/tag/0.2.0 target=_blank rel="noopener noreferrer" class=""><code>lgpm</code></a> installed. To install these tools, use the <code>install-node-tools.sh</code> helper script:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">curl -fsSL https://raw.githubusercontent.com/logos-co/logos-docs/main/resources/scripts/install-node-tools.sh | sh</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">export PATH="$PWD/bin:$PATH"</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p><code>jq</code> on your <code>PATH</code> — used to pull the uploaded <a href=https://docs.logos.co/get-started/glossary#cid target=_blank rel="noopener noreferrer" class="">CID</a> out of the manifests JSON. Verify: <code>jq --version</code></p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=what-to-expect>What to expect<a href=#what-to-expect class=hash-link aria-label="Direct link to What to expect" title="Direct link to What to expect" translate=no></a></h2>
<ul>
<li class="">You can connect a <a href=https://docs.logos.co/get-started/glossary#logos-storage target=_blank rel="noopener noreferrer" class="">Logos Storage</a> node to the testnet and have it listed among the bootstrap peers.</li>
<li class="">You can publish a file to the network and retrieve a content address to share with other nodes.</li>
<li class="">You can download the file back from the network and confirm it lands on disk.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=build-and-install-the-storage-module>Build and install the storage module<a href=#build-and-install-the-storage-module class=hash-link aria-label="Direct link to Build and install the storage module" title="Direct link to Build and install the storage module" translate=no></a></h2>
<ol>
<li class="">
<p>Build the <a href=https://docs.logos.co/get-started/glossary#module target=_blank rel="noopener noreferrer" class="">module</a> package with Nix:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">nix build 'github:logos-co/logos-storage-module/v2.0.1#lgx' -o storage-lgx</span><br/></div></code></pre></div></div>
<ul>
<li class="">This produces a <code>logos-storage_module-module-lib.lgx</code> package in <code>./storage-lgx/</code>.</li>
</ul>
<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"/></svg></span>info</div><div class=admonitionContent_BuS1><p>The initial Nix build takes 1520 minutes on first run. Subsequent builds use the Nix cache and complete in seconds.</div></div>
</li>
<li class="">
<p>Install the package into a local modules directory using <code>lgpm</code>:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">lgpm --modules-dir ./modules install --file storage-lgx/*.lgx</span><br/></div></code></pre></div></div>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=start-the-daemon-and-load-the-storage-module>Start the daemon and load the storage module<a href=#start-the-daemon-and-load-the-storage-module class=hash-link aria-label="Direct link to Start the daemon and load the storage module" title="Direct link to Start the daemon and load the storage module" translate=no></a></h2>
<p>Run <code>logoscore</code> with the modules directory, then load and initialise the <a href=https://docs.logos.co/get-started/glossary#storage-module target=_blank rel="noopener noreferrer" class="">storage module</a> against the testnet config.</p>
<ol>
<li class="">
<p>Start the <code>logoscore</code> daemon in background mode:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logoscore -D -m ./modules</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p>Verify the daemon is running:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logoscore status</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p>Create the storage config:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">mkdir -p storage-data</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">cat > config.json &lt;&lt;EOF</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">{</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "data-dir": "./storage-data",</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "log-level": "INFO",</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "listen-ip": "0.0.0.0",</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "listen-port": 8091,</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "disc-port": 8090,</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "nat": "extip:&lt;public-ip>",</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "network": "logos.test"</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">}</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">EOF</span><br/></div></code></pre></div></div>
<ul>
<li class=""><code>config.json</code> includes the following fields:</li>
</ul>
<table><thead><tr><th>Field<th>Purpose<tbody><tr><td><code>data-dir</code><td>Storage repository path<tr><td><code>log-level</code><td>Log verbosity<tr><td><code>listen-ip</code><td>Local TCP bind address<tr><td><code>listen-port</code><td>Public TCP libp2p port<tr><td><code>disc-port</code><td>Public UDP discovery port<tr><td><code>nat</code><td>Public IP advertisement mode<tr><td><code>network</code><td>Storage network preset</table>
<ul>
<li class="">Use fixed <code>listen-port</code> and <code>disc-port</code>; do not leave public nodes on random ports.</li>
<li class="">The <code>logos.test</code> preset provides the storage bootstrap settings.</li>
<li class="">Fields</li>
</ul>
<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"/></svg></span>info</div><div class=admonitionContent_BuS1><p>To run storage with <a href=https://docs.logos.co/get-started/glossary#mix target=_blank rel="noopener noreferrer" class="">mix</a> support, generate the config from the published mix bootstrap data:<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">cat > make-mix-storage-config.sh &lt;&lt;'EOF'</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">#!/usr/bin/env bash</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">set -e</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">data_dir=${1:-"./logos-storage-data"}</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">udp_spr_json=$(curl -s https://logos-storage-network.fra1.digitaloceanspaces.com/v0.2/udp-sprs.json)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">tcp_spr_json=$(curl -s https://logos-storage-network.fra1.digitaloceanspaces.com/v0.2/tcp-sprs.json)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">wget https://logos-storage-network.fra1.digitaloceanspaces.com/v0.2/mix-pool.json</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">mp_path=$(realpath "./mix-pool.json")</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">cat &lt;&lt;JSON</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">{</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "nat": "any",</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "log-level": "DEBUG",</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "mix-enabled": true,</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "listen-port": 8080,</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "disc-port": 8090,</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "bootstrap-node": $udp_spr_json,</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "dht-mix-proxy": $tcp_spr_json,</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "data-dir": "${data_dir}",</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "mix-pool": "${mp_path}"</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">}</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">JSON</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">EOF</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">chmod 755 make-mix-storage-config.sh</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">./make-mix-storage-config.sh > config.json</span><br/></div></code></pre></div></div></div></div>
</li>
<li class="">
<p>Load the storage module, initialise it with the testnet configuration, and start it:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logoscore load-module storage_module</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">logoscore call storage_module init @config.json</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">logoscore call storage_module start</span><br/></div></code></pre></div></div>
<ul>
<li class="">
<p>If using the mix config, also enable private queries and verify with a test download:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logoscore call storage_module togglePrivateQueries true</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">logoscore call storage_module downloadToUrl zDvZRwzkzrrYB6sS1rRpRLt4gBhc1pWoyTSjkfszfmj1seaYYLCZ ./farewell-to-westphalia.pdf false 65536</span><br/></div></code></pre></div></div>
</li>
</ul>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=publish-and-download-a-file>Publish and download a file<a href=#publish-and-download-a-file class=hash-link aria-label="Direct link to Publish and download a file" title="Direct link to Publish and download a file" translate=no></a></h2>
<p>Once the node is running and connected to the testnet, publish a file and verify the round-trip.</p>
<ol>
<li class="">
<p>Upload a file to the network with <code>uploadUrl</code>:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logoscore call storage_module uploadUrl &lt;file-path-or-url> &lt;chunk-size-in-bytes></span><br/></div></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"/></svg></span>info</div><div class=admonitionContent_BuS1><p>The default chunk size is 65536.</div></div>
</li>
<li class="">
<p>After a second, extract the content ID (CID) from the first <code>manifests</code> entry:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">sleep 1</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">logoscore call storage_module manifests \</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> | jq -er '.result.value[0].cid' > cid.txt</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p>Download the file back from the network with <code>downloadToUrl</code>. You need the CID for this step.</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logoscore call storage_module downloadToUrl "$(cat cid.txt)" &lt;destination-path> false &lt;chunk-size-in-bytes></span><br/></div></code></pre></div></div>
<ul>
<li class=""><code>downloadToUrl</code> takes a <code>local</code> flag which reads only from locally cached data if set to <code>true</code>.</li>
</ul>
</li>
<li class="">
<p>Confirm the downloaded file is present at <code>&lt;output-path></code> and matches the original.</p>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=remove-content-and-destroy-the-storage-node>Remove content and destroy the storage node<a href=#remove-content-and-destroy-the-storage-node class=hash-link aria-label="Direct link to Remove content and destroy the storage node" title="Direct link to Remove content and destroy the storage node" translate=no></a></h2>
<p>To clear your local storage and destroy the storage node, follow the steps below.</p>
<ol>
<li class="">
<p>Remove content from local storage by its CID:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logoscore call storage_module remove "$(cat cid.txt)"</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p>Confirm content is gone:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">sleep 1</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">logoscore call storage_module exists "$(cat cid.txt)"</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># should return false</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p>Stop the storage node:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logoscore call storage_module stop</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p>Wait a bit and destroy the entire storage context:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">sleep 2</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">logoscore call storage_module destroy</span><br/></div></code></pre></div></div>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=troubleshooting-logos-storage>Troubleshooting Logos Storage<a href=#troubleshooting-logos-storage class=hash-link aria-label="Direct link to Troubleshooting Logos Storage" title="Direct link to Troubleshooting Logos Storage" translate=no></a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=why-does-downloadtourl-time-out-when-downloading-from-a-different-machine>Why does <code>downloadToUrl</code> time out when downloading from a different machine?<a href=#why-does-downloadtourl-time-out-when-downloading-from-a-different-machine class=hash-link aria-label="Direct link to why-does-downloadtourl-time-out-when-downloading-from-a-different-machine" title="Direct link to why-does-downloadtourl-time-out-when-downloading-from-a-different-machine" translate=no></a></h3>
<p>NAT is blocking the peer connection. When running multiple nodes across machines, the external IP and port mapping must be configured in <code>config.json</code>. See the NAT section of the <a href=https://logos-co.github.io/logos-storage-module/latest/ target=_blank rel="noopener noreferrer" class="">Logos Storage Module documentation</a> for guidance.</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/logos-co/logos-docs/tree/main/docs/storage/get-started/run-logos-storage-node.md 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"/></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--next" href=/storage/get-started/set-up-and-use-logos-storage-ui><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Set up and use the Logos Storage UI</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=#what-to-expect class="table-of-contents__link toc-highlight">What to expect</a><li><a href=#build-and-install-the-storage-module class="table-of-contents__link toc-highlight">Build and install the storage module</a><li><a href=#start-the-daemon-and-load-the-storage-module class="table-of-contents__link toc-highlight">Start the daemon and load the storage module</a><li><a href=#publish-and-download-a-file class="table-of-contents__link toc-highlight">Publish and download a file</a><li><a href=#remove-content-and-destroy-the-storage-node class="table-of-contents__link toc-highlight">Remove content and destroy the storage node</a><li><a href=#troubleshooting-logos-storage class="table-of-contents__link toc-highlight">Troubleshooting Logos Storage</a><ul><li><a href=#why-does-downloadtourl-time-out-when-downloading-from-a-different-machine class="table-of-contents__link toc-highlight">Why does <code>downloadToUrl</code> time out when downloading from a different machine?</a></ul></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=/get-started/what-is-logos>Get started</a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Community</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://github.com/logos-co/logos-docs 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 /></svg></a></ul></div></div><div class="footer__bottom text--center"><div class=footer__copyright>Copyright © 2026 Logos. Built with Docusaurus.</div></div></div></footer></div></body>