<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 --> <h2 id="installation" class="position-relative d-flex align-items-center group"> <span>Installation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="installation" aria-haspopup="dialog" aria-label="Share link: Installation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden> <div class="hsm-dialog" role="document"> <div class="hsm-header"> <h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2> <button type="button" class="hsm-close" aria-label="Close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="hsm-body"> <label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label> <div class="input-group mb-4 hsm-url-group"> <input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" /> <button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy"> <i class="fa-duotone fa-clipboard" aria-hidden="true"></i> </button> </div> <div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div> <div class="hsm-share-grid"> <a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-twitter me-2"></i>Twitter </a> <a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-linkedin me-2"></i>LinkedIn </a> <a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-facebook me-2"></i>Facebook </a> </div> </div> </div> </div> <style> .heading-share-modal { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.6); z-index: 1050; padding: 1rem; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .heading-share-modal[hidden] { display: none !important; } .hsm-dialog { max-width: 420px; width: 100%; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); border-radius: 1rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; animation: hsm-fade-in 0.2s ease-out; } @keyframes hsm-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } [data-bs-theme="dark"] .hsm-dialog { background: #1e293b; border-color: rgba(255,255,255,0.1); color: #f8f9fa; } .hsm-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); background: rgba(0,0,0,0.02); } [data-bs-theme="dark"] .hsm-header { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.1); } .hsm-close { background: transparent; border: none; color: inherit; opacity: 0.5; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 1.2rem; line-height: 1; transition: opacity 0.2s; } .hsm-close:hover { opacity: 1; } .hsm-body { padding: 1.5rem; } .hsm-url-group { display: flex !important; align-items: stretch; } .hsm-url-group .form-control { flex: 1; min-width: 0; margin: 0; background: var(--bs-secondary-bg, #f8f9fa); border-color: var(--bs-border-color, #dee2e6); border-top-right-radius: 0; border-bottom-right-radius: 0; height: 42px; } .hsm-url-group .btn { flex: 0 0 auto; margin: 0; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; height: 42px; display: flex; align-items: center; justify-content: center; padding: 0 1.25rem; z-index: 2; } [data-bs-theme="dark"] .hsm-url-group .form-control { background: #0f172a; border-color: #334155; color: #e2e8f0; } .hsm-share-grid { display: flex; flex-direction: column; gap: 0.5rem; } .hsm-share-grid .btn { display: flex; align-items: center; justify-content: center; font-size: 0.9rem; padding: 0.6rem; border-color: var(--bs-border-color); width: 100%; } [data-bs-theme="dark"] .hsm-share-grid .btn { color: #e2e8f0; border-color: #475569; } [data-bs-theme="dark"] .hsm-share-grid .btn:hover { background: #334155; border-color: #cbd5e1; } </style> <script> (function(){ const modal = document.getElementById('headingShareModal'); if(!modal) return; const input = modal.querySelector('#headingShareInput'); const copyBtn = modal.querySelector('.hsm-copy'); const twitter = modal.querySelector('#share-twitter'); const linkedin = modal.querySelector('#share-linkedin'); const facebook = modal.querySelector('#share-facebook'); const closeBtn = modal.querySelector('.hsm-close'); let lastFocus=null; let trapBound=false; function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; } function isOpen(){ return !modal.hasAttribute('hidden'); } function hydrate(id){ const url=buildUrl(id); input.value=url; const enc=encodeURIComponent(url); const text=encodeURIComponent(document.title); if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`; if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`; if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`; } function openModal(id){ lastFocus=document.activeElement; hydrate(id); if(!isOpen()){ modal.removeAttribute('hidden'); } requestAnimationFrame(()=>{ input.focus(); }); trapFocus(); } function closeModal(){ if(!isOpen()) return; modal.setAttribute('hidden',''); if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus(); } function copyCurrent(){ try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); } catch(e){ fallback(); } } function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} } function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); } function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); } function bindShareButtons(){ document.querySelectorAll('.h-share').forEach(btn=>{ if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; } }); } bindShareButtons(); if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', bindShareButtons); } else { requestAnimationFrame(bindShareButtons); } document.addEventListener('click', function(e){ const shareBtn=e.target.closest && e.target.closest('.h-share'); if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); } }, true); document.addEventListener('click', e=>{ if(e.target===modal) closeModal(); if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); } if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); }); function trapFocus(){ if(trapBound) return; trapBound=true; modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } }); } if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); }); })(); </script><p>Get Geode running on your system with step-by-step installation instructions for all supported platforms and installation methods.</p> <h3 id="overview" class="position-relative d-flex align-items-center group"> <span>Overview</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="overview" aria-haspopup="dialog" aria-label="Share link: Overview"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Geode provides multiple installation options to suit different use cases and environments. Whether you&rsquo;re installing OS packages, deploying with Docker for production, or building from source for development, Geode supports your workflow.</p> <p>This section provides comprehensive installation guides for each method, including platform-specific instructions, prerequisites, verification steps, and troubleshooting tips.</p> <h3 id="installation-methods" class="position-relative d-flex align-items-center group"> <span>Installation Methods</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="installation-methods" aria-haspopup="dialog" aria-label="Share link: Installation Methods"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="os-packages-and-binaries" class="position-relative d-flex align-items-center group"> <span>OS Packages and Binaries</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="os-packages-and-binaries" aria-haspopup="dialog" aria-label="Share link: OS Packages and Binaries"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Install Geode from official release artifacts. This method is ideal for:</p> <ul> <li><strong>Quick Start</strong>: Install without build tools</li> <li><strong>Platform Support</strong>: Linux .deb/.rpm packages and macOS binaries</li> <li><strong>Automation</strong>: Easy to roll out via configuration management</li> <li><strong>Stability</strong>: Versioned release artifacts</li> </ul> <p><strong>See</strong>: <a href="https://geodedb.com/docs/installation/#quick-start" >Quick Start</a> or <a href="/docs/get-started/" >Getting Started</a> </p> <h4 id="build-from-source" class="position-relative d-flex align-items-center group"> <span>Build from Source</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="build-from-source" aria-haspopup="dialog" aria-label="Share link: Build from Source"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Build Geode from source code using the Zig compiler. This method gives you the most control and is ideal for:</p> <ul> <li><strong>Development</strong>: Contributing to Geode or customizing the database</li> <li><strong>Latest Features</strong>: Access to unreleased features in the main branch</li> <li><strong>Platform Support</strong>: Build for any platform supported by Zig</li> <li><strong>Optimization</strong>: Custom build flags for specific hardware</li> </ul> <p><strong>Requirements</strong>: Zig 0.1.0+ (<a href="https://ziglang.org/download/" aria-label="download from ziglang.org – opens in new window" target="_blank" rel="noopener noreferrer" >download from ziglang.org <span aria-hidden="true" class="external-icon">↗</span> </a> )</p> <p><strong>See</strong>: <a href="/docs/installation/from-source/" >Build from Source</a> </p> <h4 id="docker-installation" class="position-relative d-flex align-items-center group"> <span>Docker Installation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="docker-installation" aria-haspopup="dialog" aria-label="Share link: Docker Installation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Run Geode in Docker containers for isolated, reproducible deployments. Docker installation is ideal for:</p> <ul> <li><strong>Quick Start</strong>: Get running in minutes without installing dependencies</li> <li><strong>Production</strong>: Container orchestration with Docker Compose or Kubernetes</li> <li><strong>Isolation</strong>: Run multiple Geode instances on the same host</li> <li><strong>CI/CD</strong>: Consistent test environments</li> </ul> <p><strong>Requirements</strong>: Docker 20.10+ or Docker Desktop</p> <p><strong>See</strong>: <a href="/docs/ops/docker-deployment/" >Docker Deployment</a> </p> <h3 id="topics-in-this-section" class="position-relative d-flex align-items-center group"> <span>Topics in This Section</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="topics-in-this-section" aria-haspopup="dialog" aria-label="Share link: Topics in This Section"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><strong><a href="/docs/installation/from-source/" >From Source</a> </strong> - Build Geode from source code with Zig including prerequisites, build commands, and platform-specific instructions</li> </ul> <h3 id="platform-support" class="position-relative d-flex align-items-center group"> <span>Platform Support</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="platform-support" aria-haspopup="dialog" aria-label="Share link: Platform Support"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="linux" class="position-relative d-flex align-items-center group"> <span>Linux</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="linux" aria-haspopup="dialog" aria-label="Share link: Linux"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Distributions</strong>:</p> <ul> <li>Ubuntu 20.04+ (LTS recommended)</li> <li>Debian 11+ (Bullseye or later)</li> <li>RHEL 8+ / CentOS Stream 8+</li> <li>Fedora 35+</li> <li>Arch Linux (rolling release)</li> </ul> <p><strong>Architectures</strong>: x86_64 (amd64), ARM64 (aarch64)</p> <h4 id="macos" class="position-relative d-flex align-items-center group"> <span>macOS</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="macos" aria-haspopup="dialog" aria-label="Share link: macOS"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Versions</strong>: macOS 11+ (Big Sur or later)</p> <p><strong>Architectures</strong>: x86_64 (Intel), ARM64 (Apple Silicon)</p> <h4 id="windows" class="position-relative d-flex align-items-center group"> <span>Windows</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="windows" aria-haspopup="dialog" aria-label="Share link: Windows"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Via WSL2</strong>: Windows 10+ with Windows Subsystem for Linux 2</p> <p><strong>Note</strong>: Native Windows support is planned but not yet available. Use WSL2 for now.</p> <h3 id="system-requirements" class="position-relative d-flex align-items-center group"> <span>System Requirements</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="system-requirements" aria-haspopup="dialog" aria-label="Share link: System Requirements"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="minimum-requirements" class="position-relative d-flex align-items-center group"> <span>Minimum Requirements</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="minimum-requirements" aria-haspopup="dialog" aria-label="Share link: Minimum Requirements"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ul> <li><strong>CPU</strong>: 2 cores</li> <li><strong>RAM</strong>: 4GB</li> <li><strong>Disk</strong>: 2GB free space</li> <li><strong>Network</strong>: For distributed deployments, stable network connectivity</li> </ul> <h4 id="recommended-requirements" class="position-relative d-flex align-items-center group"> <span>Recommended Requirements</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="recommended-requirements" aria-haspopup="dialog" aria-label="Share link: Recommended Requirements"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ul> <li><strong>CPU</strong>: 4+ cores</li> <li><strong>RAM</strong>: 8GB+ (16GB for large datasets)</li> <li><strong>Disk</strong>: 10GB+ free space (SSD highly recommended)</li> <li><strong>Network</strong>: 1Gbps+ for distributed deployments</li> </ul> <h4 id="production-requirements" class="position-relative d-flex align-items-center group"> <span>Production Requirements</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="production-requirements" aria-haspopup="dialog" aria-label="Share link: Production Requirements"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ul> <li><strong>CPU</strong>: 8+ cores (16+ for high-throughput workloads)</li> <li><strong>RAM</strong>: 32GB+ (proportional to dataset size and query complexity)</li> <li><strong>Disk</strong>: 100GB+ NVMe SSD (RAID 10 recommended)</li> <li><strong>Network</strong>: 10Gbps+ for distributed deployments with low latency</li> </ul> <h3 id="quick-start" class="position-relative d-flex align-items-center group"> <span>Quick Start</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="quick-start" aria-haspopup="dialog" aria-label="Share link: Quick Start"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="option-1-install-by-operating-system" class="position-relative d-flex align-items-center group"> <span>Option 1: Install by Operating System</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="option-1-install-by-operating-system" aria-haspopup="dialog" aria-label="Share link: Option 1: Install by Operating System"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="docs-tabs mb-4"> <ul class="nav nav-tabs" id="tabs-1774880880998310410" role="tablist"><li class="nav-item" role="presentation"> <button class="nav-link active" id="tabs-1774880880998310410-tab-0-tab" data-bs-toggle="tab" data-bs-target="#tabs-1774880880998310410-tab-0" type="button" role="tab" aria-controls="tabs-1774880880998310410-tab-0" aria-selected="true" > Linux </button> </li><li class="nav-item" role="presentation"> <button class="nav-link" id="tabs-1774880880998310410-tab-1-tab" data-bs-toggle="tab" data-bs-target="#tabs-1774880880998310410-tab-1" type="button" role="tab" aria-controls="tabs-1774880880998310410-tab-1" aria-selected="false" > macOS </button> </li><li class="nav-item" role="presentation"> <button class="nav-link" id="tabs-1774880880998310410-tab-2-tab" data-bs-toggle="tab" data-bs-target="#tabs-1774880880998310410-tab-2" type="button" role="tab" aria-controls="tabs-1774880880998310410-tab-2" aria-selected="false" > Windows (WSL) </button> </li></ul> <div class="tab-content border border-top-0 rounded-bottom p-3" id="tabs-1774880880998310410-content"><div class="tab-pane fade show active" id="tabs-1774880880998310410-tab-0" role="tabpanel" aria-labelledby="tabs-1774880880998310410-tab-0-tab" > <div class="docs-tabs mb-4"> <ul class="nav nav-tabs" id="tabs-1774880880996437864" role="tablist"><li class="nav-item" role="presentation"> <button class="nav-link active" id="tabs-1774880880996437864-tab-0-tab" data-bs-toggle="tab" data-bs-target="#tabs-1774880880996437864-tab-0" type="button" role="tab" aria-controls="tabs-1774880880996437864-tab-0" aria-selected="true" > Debian/Ubuntu </button> </li><li class="nav-item" role="presentation"> <button class="nav-link" id="tabs-1774880880996437864-tab-1-tab" data-bs-toggle="tab" data-bs-target="#tabs-1774880880996437864-tab-1" type="button" role="tab" aria-controls="tabs-1774880880996437864-tab-1" aria-selected="false" > RHEL/Fedora </button> </li><li class="nav-item" role="presentation"> <button class="nav-link" id="tabs-1774880880996437864-tab-2-tab" data-bs-toggle="tab" data-bs-target="#tabs-1774880880996437864-tab-2" type="button" role="tab" aria-controls="tabs-1774880880996437864-tab-2" aria-selected="false" > Generic </button> </li></ul> <div class="tab-content border border-top-0 rounded-bottom p-3" id="tabs-1774880880996437864-content"><div class="tab-pane fade show active" id="tabs-1774880880996437864-tab-0" role="tabpanel" aria-labelledby="tabs-1774880880996437864-tab-0-tab" > <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Add GPG signing key</span> </span></span><span class="line"><span class="cl">curl -fsSL https://apt.geodedb.com/geode.gpg <span class="p">|</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> sudo gpg --dearmor -o /usr/share/keyrings/geode-archive-keyring.gpg </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Add repository</span> </span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;deb [signed-by=/usr/share/keyrings/geode-archive-keyring.gpg] https://apt.geodedb.com stable main&#34;</span> <span class="p">|</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> sudo tee /etc/apt/sources.list.d/geode.list </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Install</span> </span></span><span class="line"><span class="cl">sudo apt update </span></span><span class="line"><span class="cl">sudo apt install geode </span></span></code></pre></div> </div><div class="tab-pane fade" id="tabs-1774880880996437864-tab-1" role="tabpanel" aria-labelledby="tabs-1774880880996437864-tab-1-tab" > <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -L -o geode.rpm https://gitlab.com/devnw/codepros/geode/geode/-/releases/latest/download/geode-linux-x86_64.rpm </span></span><span class="line"><span class="cl">sudo rpm -i geode.rpm </span></span></code></pre></div> </div><div class="tab-pane fade" id="tabs-1774880880996437864-tab-2" role="tabpanel" aria-labelledby="tabs-1774880880996437864-tab-2-tab" > <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -L -o geode-linux-amd64 https://gitlab.com/devnw/codepros/geode/geode/-/releases/latest/download/geode-linux-amd64 </span></span><span class="line"><span class="cl">chmod +x geode-linux-amd64 </span></span><span class="line"><span class="cl">sudo install -m <span class="m">0755</span> geode-linux-amd64 /usr/local/bin/geode </span></span></code></pre></div> </div></div> </div> </div><div class="tab-pane fade" id="tabs-1774880880998310410-tab-1" role="tabpanel" aria-labelledby="tabs-1774880880998310410-tab-1-tab" > <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Install via Homebrew (recommended)</span> </span></span><span class="line"><span class="cl">brew install geodedb/geode/geode </span></span></code></pre></div> </div><div class="tab-pane fade" id="tabs-1774880880998310410-tab-2" role="tabpanel" aria-labelledby="tabs-1774880880998310410-tab-2-tab" > <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># PowerShell</span> </span></span><span class="line"><span class="cl">wsl --install -d Ubuntu </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Inside Ubuntu (WSL)</span> </span></span><span class="line"><span class="cl"><span class="c1"># Add GPG signing key</span> </span></span><span class="line"><span class="cl">curl -fsSL https://apt.geodedb.com/geode.gpg <span class="p">|</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> sudo gpg --dearmor -o /usr/share/keyrings/geode-archive-keyring.gpg </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Add repository</span> </span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;deb [signed-by=/usr/share/keyrings/geode-archive-keyring.gpg] https://apt.geodedb.com stable main&#34;</span> <span class="p">|</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> sudo tee /etc/apt/sources.list.d/geode.list </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Install</span> </span></span><span class="line"><span class="cl">sudo apt update </span></span><span class="line"><span class="cl">sudo apt install geode </span></span></code></pre></div> </div></div> </div> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Start the server</span> </span></span><span class="line"><span class="cl">geode serve --listen 0.0.0.0:3141 </span></span></code></pre></div> <h4 id="option-2-docker-fastest" class="position-relative d-flex align-items-center group"> <span>Option 2: Docker (Fastest)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="option-2-docker-fastest" aria-haspopup="dialog" aria-label="Share link: Option 2: Docker (Fastest)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Pull and run Geode</span> </span></span><span class="line"><span class="cl">docker run -d <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -p 3141:3141 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -v geode-data:/var/lib/geode <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> geodedb/geode:latest serve --listen 0.0.0.0:3141 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Verify server is running</span> </span></span><span class="line"><span class="cl">docker logs geode </span></span></code></pre></div> <h4 id="option-3-build-from-source" class="position-relative d-flex align-items-center group"> <span>Option 3: Build from Source</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="option-3-build-from-source" aria-haspopup="dialog" aria-label="Share link: Option 3: Build from Source"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Clone repository</span> </span></span><span class="line"><span class="cl">git clone https://github.com/codeprosorg/geode </span></span><span class="line"><span class="cl"><span class="nb">cd</span> geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Build (requires Zig 0.1.0+)</span> </span></span><span class="line"><span class="cl">make build </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Start server</span> </span></span><span class="line"><span class="cl">./zig-out/bin/geode serve </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Verify installation</span> </span></span><span class="line"><span class="cl">./zig-out/bin/geode --version </span></span></code></pre></div> <h3 id="verification" class="position-relative d-flex align-items-center group"> <span>Verification</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="verification" aria-haspopup="dialog" aria-label="Share link: Verification"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>After installation, verify Geode is working correctly:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check version</span> </span></span><span class="line"><span class="cl">geode --version </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Start server</span> </span></span><span class="line"><span class="cl">geode serve </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># In another terminal, connect with shell</span> </span></span><span class="line"><span class="cl">geode shell </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Run test query</span> </span></span><span class="line"><span class="cl">RETURN <span class="m">1</span> AS x<span class="p">;</span> </span></span></code></pre></div><p>Expected output:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">┌───┐ </span></span><span class="line"><span class="cl">│ x │ </span></span><span class="line"><span class="cl">├───┤ </span></span><span class="line"><span class="cl">│ 1 │ </span></span><span class="line"><span class="cl">└───┘ </span></span></code></pre></div> <h3 id="post-installation" class="position-relative d-flex align-items-center group"> <span>Post-Installation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="post-installation" aria-haspopup="dialog" aria-label="Share link: Post-Installation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="configure-tls-certificates" class="position-relative d-flex align-items-center group"> <span>Configure TLS Certificates</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="configure-tls-certificates" aria-haspopup="dialog" aria-label="Share link: Configure TLS Certificates"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>For production deployments, configure TLS certificates instead of using auto-generated self-signed certificates:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Generate certificates (or use existing)</span> </span></span><span class="line"><span class="cl">openssl req -x509 -newkey rsa:4096 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -keyout server-key.pem -out server-cert.pem <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -days <span class="m">365</span> -nodes </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Start server with certificates</span> </span></span><span class="line"><span class="cl">geode serve <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --cert /etc/geode/certs/server-cert.pem <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --key /etc/geode/certs/server-key.pem </span></span></code></pre></div> <h4 id="set-up-data-directory" class="position-relative d-flex align-items-center group"> <span>Set Up Data Directory</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="set-up-data-directory" aria-haspopup="dialog" aria-label="Share link: Set Up Data Directory"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Choose a persistent data directory location:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create data directory</span> </span></span><span class="line"><span class="cl">sudo mkdir -p /var/lib/geode </span></span><span class="line"><span class="cl">sudo chown <span class="k">$(</span>whoami<span class="k">)</span>:<span class="k">$(</span>whoami<span class="k">)</span> /var/lib/geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Start server with custom data directory</span> </span></span><span class="line"><span class="cl">geode serve --data-dir /var/lib/geode </span></span></code></pre></div> <h4 id="configure-system-service" class="position-relative d-flex align-items-center group"> <span>Configure System Service</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="configure-system-service" aria-haspopup="dialog" aria-label="Share link: Configure System Service"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>For production, set up Geode as a system service:</p> <p><strong>systemd</strong> (Linux):</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create service file</span> </span></span><span class="line"><span class="cl">sudo vim /etc/systemd/system/geode.service </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Enable and start service</span> </span></span><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> geode </span></span><span class="line"><span class="cl">sudo systemctl start geode </span></span></code></pre></div><p>See <a href="/docs/ops/deployment/" >Deployment Guide</a> for complete service configuration.</p> <h3 id="troubleshooting" class="position-relative d-flex align-items-center group"> <span>Troubleshooting</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="troubleshooting" aria-haspopup="dialog" aria-label="Share link: Troubleshooting"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="build-errors" class="position-relative d-flex align-items-center group"> <span>Build Errors</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="build-errors" aria-haspopup="dialog" aria-label="Share link: Build Errors"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptom</strong>: Build fails with &ldquo;command not found: zig&rdquo;</p> <p><strong>Solution</strong>: Install Zig 0.1.0+ from <a href="https://ziglang.org/download/" aria-label="ziglang.org – opens in new window" target="_blank" rel="noopener noreferrer" >ziglang.org <span aria-hidden="true" class="external-icon">↗</span> </a> </p> <h4 id="port-binding-errors" class="position-relative d-flex align-items-center group"> <span>Port Binding Errors</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="port-binding-errors" aria-haspopup="dialog" aria-label="Share link: Port Binding Errors"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptom</strong>: &ldquo;address already in use&rdquo; when starting server</p> <p><strong>Solution</strong>: Check if another process is using port 3141:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">lsof -i :3141 </span></span><span class="line"><span class="cl"><span class="nb">kill</span> -9 &lt;PID&gt; </span></span></code></pre></div> <h4 id="permission-errors" class="position-relative d-flex align-items-center group"> <span>Permission Errors</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="permission-errors" aria-haspopup="dialog" aria-label="Share link: Permission Errors"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Symptom</strong>: &ldquo;permission denied&rdquo; when accessing data directory</p> <p><strong>Solution</strong>: Ensure proper ownership and permissions:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo chown -R <span class="k">$(</span>whoami<span class="k">)</span>:<span class="k">$(</span>whoami<span class="k">)</span> /var/lib/geode </span></span><span class="line"><span class="cl">chmod <span class="m">755</span> /var/lib/geode </span></span></code></pre></div> <h3 id="next-steps" class="position-relative d-flex align-items-center group"> <span>Next Steps</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="next-steps" aria-haspopup="dialog" aria-label="Share link: Next Steps"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>After installation:</p> <ul> <li><strong><a href="/docs/get-started/" >Quick Start Guide</a> </strong> - Get started with your first queries</li> <li><strong><a href="/docs/configuration/" >Configuration Reference</a> </strong> - Configure server settings</li> <li><strong><a href="/docs/gql/guide/" >GQL Guide</a> </strong> - Learn the query language</li> <li><strong><a href="/docs/client-libraries/" >Client Libraries</a> </strong> - Connect from your application</li> <li><strong><a href="/docs/ops/deployment/" >Deployment Guide</a> </strong> - Deploy to production</li> </ul> <h3 id="getting-help" class="position-relative d-flex align-items-center group"> <span>Getting Help</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="getting-help" aria-haspopup="dialog" aria-label="Share link: Getting Help"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>For installation issues:</p> <ol> <li>Check the <a href="/docs/guides/troubleshooting/" >Troubleshooting Guide</a> </li> <li>Review platform-specific requirements above</li> <li>Search existing issues on GitLab</li> <li>Report new issues with detailed system information and error logs</li> </ol>

Pages