<!-- 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’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">"deb [signed-by=/usr/share/keyrings/geode-archive-keyring.gpg] https://apt.geodedb.com stable main"</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">"deb [signed-by=/usr/share/keyrings/geode-archive-keyring.gpg] https://apt.geodedb.com stable main"</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 “command not found: zig”</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>: “address already in use” 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 <PID>
</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>: “permission denied” 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>
Installation
Install Geode from OS packages, Docker, or source with step-by-step instructions for all supported platforms
1 page