Files
2026-06-25 19:32:06 +02:00

343 lines
28 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
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-us" dir="ltr" itemscope itemtype="http://schema.org/Article" data-r-output-format="html">
<head>
<meta charset="utf-8">
<meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0, minimum-scale=1.0">
<meta name="generator" content="Hugo 0.161.1">
<meta name="generator" content="Relearn 8.2.0+220806ce3ced8264fbdd693f77f28216a8a1b6ae">
<meta name="description" content="Each gokrazy instance comes with a built-in DHCP client (see Instance Config → GokrazyPackages for more details on system packages) to set the IP address after obtaining a DHCPv4 lease from the local networks DHCP server.
Network Interfaces The gokrazy DHCP client by default runs for eth0. If you want to use a different network interface, perhaps a USB ethernet adapter, you can set the -interface command-line flag:">
<meta name="author" content="">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="DHCP Client :: gokrazy">
<meta name="twitter:description" content="Each gokrazy instance comes with a built-in DHCP client (see Instance Config → GokrazyPackages for more details on system packages) to set the IP address after obtaining a DHCPv4 lease from the local networks DHCP server.
Network Interfaces The gokrazy DHCP client by default runs for eth0. If you want to use a different network interface, perhaps a USB ethernet adapter, you can set the -interface command-line flag:">
<meta property="og:url" content="https://gokrazy.org/userguide/dhcp/index.html">
<meta property="og:site_name" content="gokrazy">
<meta property="og:title" content="DHCP Client :: gokrazy">
<meta property="og:description" content="Each gokrazy instance comes with a built-in DHCP client (see Instance Config → GokrazyPackages for more details on system packages) to set the IP address after obtaining a DHCPv4 lease from the local networks DHCP server.
Network Interfaces The gokrazy DHCP client by default runs for eth0. If you want to use a different network interface, perhaps a USB ethernet adapter, you can set the -interface command-line flag:">
<meta property="og:locale" content="en_us">
<meta property="og:type" content="article">
<meta property="article:section" content="Configuration">
<meta itemprop="name" content="DHCP Client :: gokrazy">
<meta itemprop="description" content="Each gokrazy instance comes with a built-in DHCP client (see Instance Config → GokrazyPackages for more details on system packages) to set the IP address after obtaining a DHCPv4 lease from the local networks DHCP server.
Network Interfaces The gokrazy DHCP client by default runs for eth0. If you want to use a different network interface, perhaps a USB ethernet adapter, you can set the -interface command-line flag:">
<meta itemprop="wordCount" content="384">
<title>DHCP Client :: gokrazy</title>
<link href="/images/favicon.png?1782408721" rel="icon" type="image/png">
<link href="/css/auto-complete/auto-complete.min.css?1782408721" rel="stylesheet">
<script src="/js/auto-complete/auto-complete.min.js?1782408721" defer></script>
<script src="/js/search-lunr.min.js?1782408721" defer></script>
<script src="/js/search.min.js?1782408721" defer></script>
<script>
window.relearn = window.relearn || {};
window.relearn.index_js_url="/searchindex.en.js?1782408721";
</script>
<script src="/js/lunr/lunr.min.js?1782408721" defer></script>
<script src="/js/lunr/lunr.stemmer.support.min.js?1782408721" defer></script>
<script src="/js/lunr/lunr.multi.min.js?1782408721" defer></script>
<script src="/js/lunr/lunr.en.min.js?1782408721" defer></script>
<script>
window.relearn = window.relearn || {};
window.relearn.contentLangs=['en'];
</script>
<link href="/fonts/fontawesome/css/fontawesome-all.min.css?1782408721" rel="stylesheet" media="print" onload="this.media='all';this.onload=null;"><noscript><link href="/fonts/fontawesome/css/fontawesome-all.min.css?1782408721" rel="stylesheet"></noscript>
<link href="/css/perfect-scrollbar/perfect-scrollbar.min.css?1782408721" rel="stylesheet">
<link href="/css/theme.min.css?1782408721" rel="stylesheet">
<link href="/css/format-html.min.css?1782408721" rel="stylesheet" id="R-format-style">
<script>
window.relearn = window.relearn || {};
// configuration
window.relearn.min = `.min`;
window.relearn.path='\/userguide\/dhcp\/index.html';
window.relearn.relBasePath='..\/..';
window.relearn.relBaseUri='..\/..';
window.relearn.absBaseUri='https:\/\/gokrazy.org';
window.relearn.disableInlineCopyToClipboard=true;
window.relearn.enableBlockCodeWrap=true;
// legal
window.relearn.getItem = (s,n) => {return s.getItem(n)};
window.relearn.setItem = (s,n,v) => {return s.setItem(n,v)};
window.relearn.removeItem = (s,n) => {return s.removeItem(n)};
// translations
window.T_Copy_to_clipboard = `Copy text to clipboard`;
window.T_Copied_to_clipboard = `Text copied to clipboard!`;
window.T_Link_copied_to_clipboard = `Link copied to clipboard!`;
window.T_Reset_view = `Reset view`;
window.T_View_reset = `View reset!`;
window.T_No_results_found = `No results found for "{0}"`;
window.T_N_results_found = `{1} results found for "{0}"`;
window.T_Browser_unsupported_feature = `This browser doesn't support this feature`;
// variant stuff
window.relearn.themevariants = [ 'auto' ];
window.relearn.customvariantname = "my-custom-variant";
window.relearn.changeVariant = function(variant) {
var oldVariant = document.documentElement.dataset.rThemeVariant;
window.relearn.setItem(window.localStorage, window.relearn.absBaseUri + "/variant", variant);
document.documentElement.dataset.rThemeVariant = variant;
if (oldVariant != variant) {
document.dispatchEvent( new CustomEvent('themeVariantLoaded', { detail: { variant, oldVariant } }) );
window.relearn.markVariant();
}
}
window.relearn.markVariant = function() {
var variant = window.relearn.getItem(window.localStorage, window.relearn.absBaseUri + "/variant");
document.querySelectorAll(".R-variantswitcher select").forEach((select) => {select.value = variant;});
}
window.relearn.initVariant = function() {
var variant = window.relearn.getItem(window.localStorage, window.relearn.absBaseUri + "/variant") ?? "";
if( variant == window.relearn.customvariantname ){
}else if( !variant || !window.relearn.themevariants.includes(variant) ){
variant = window.relearn.themevariants[0];
window.relearn.setItem(window.localStorage, window.relearn.absBaseUri + "/variant", variant);
}
document.documentElement.dataset.rThemeVariant = variant;
}
window.relearn.initVariant();
window.relearn.markVariant();
</script>
</head>
<body class="mobile-support html" data-url="/userguide/dhcp/index.html">
<div id="R-body" class="default-animation">
<div id="R-body-overlay"></div>
<nav id="R-topbar">
<div class="topbar-wrapper">
<div class="topbar-sidebar-divider"></div>
<div class="topbar-area topbar-area-start" data-area="start">
<div class="topbar-button topbar-button-sidebar" data-content-empty="disable" data-width-s="show" data-width-m="hide" data-width-l="hide">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleNav()" type="button" title="Menu (CTRL&#43;ALT&#43;n)"><i class="fa-fw fas fa-bars"></i></button></span>
</div>
<div class="topbar-button topbar-button-toc" data-content-empty="hide" data-width-s="show" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleTopbarFlyout(this)" type="button" title="Table of Contents (CTRL&#43;ALT&#43;t)"><i class="fa-fw fas fa-list-alt"></i></button></span>
<div class="topbar-content">
<div class="topbar-content-wrapper">
<nav class="TableOfContents">
<ul>
<li><a href="#network-interfaces">Network Interfaces</a></li>
<li><a href="#static-network-configuration">Static Network Configuration</a></li>
<li><a href="#interface-priority">Interface priority</a></li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<ol class="topbar-breadcrumbs breadcrumbs highlightable" itemscope itemtype="http://schema.org/BreadcrumbList"><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement" class=""><a itemprop="item" href="/index.html"><span itemprop="name">gokrazy Go appliances</span></a><meta itemprop="position" content="1">&nbsp;>&nbsp;</li><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement" class=""><a itemprop="item" href="/userguide/index.html"><span itemprop="name">Configuration</span></a><meta itemprop="position" content="2">&nbsp;>&nbsp;</li><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement" class=""><span itemprop="name">DHCP Client</span><meta itemprop="position" content="3"></li>
</ol>
<div class="topbar-area topbar-area-end" data-area="end">
<div class="topbar-button topbar-button-edit" data-content-empty="disable" data-width-s="area-more" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><a href="https://github.com/gokrazy/gokrazy/tree/master/website/content/userguide/dhcp.md" rel="external" title="Edit (CTRL+ALT+w)"><i class="fa-fw fas fa-pen"></i></a></span>
</div>
<div class="topbar-button topbar-button-more" data-content-empty="hide" data-width-s="show" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleTopbarFlyout(this)" type="button" title="More"><i class="fa-fw fas fa-ellipsis-v"></i></button></span>
<div class="topbar-content">
<div class="topbar-content-wrapper">
<div class="topbar-area topbar-area-more" data-area="more">
</div>
</div>
</div>
</div>
</div>
</div>
</nav>
<div id="R-main-overlay"></div>
<main id="R-body-inner" class="highlightable userguide" tabindex="-1">
<div class="flex-block-wrapper">
<article class="default">
<header class="headline">
</header>
<h1 id="dhcp-client">DHCP Client</h1>
<p>Each gokrazy instance comes with a built-in DHCP client (see <a href="/userguide/instance-config/index.html#gokrazypackages">Instance Config →
GokrazyPackages</a> for more details
on system packages) to set the IP address after obtaining a
<a href="https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol" rel="external">DHCPv4</a>
lease from the local networks DHCP server.</p>
<h2 id="network-interfaces">Network Interfaces<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>The gokrazy DHCP client by default runs for <code>eth0</code>. If you want to use a
different network interface, perhaps a USB ethernet adapter, you can set the
<code>-interface</code> <a href="/userguide/package-config/index.html">command-line flag</a>:</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;display:grid;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;Hostname&#34;</span>: <span style="color:#e6db74">&#34;dynamic&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;Packages&#34;</span>: [
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/fbstatus&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/hello&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/serial-busybox&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/breakglass&#34;</span>,
</span></span><span style="display:flex;"><span> ],
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;PackageConfig&#34;</span>: {
</span></span><span style="display:flex; background-color:#3c3d38"><span> <span style="color:#f92672">&#34;github.com/gokrazy/gokrazy/cmd/dhcp&#34;</span>: {
</span></span><span style="display:flex; background-color:#3c3d38"><span> <span style="color:#f92672">&#34;CommandLineFlags&#34;</span>: [
</span></span><span style="display:flex; background-color:#3c3d38"><span> <span style="color:#e6db74">&#34;-interface=enp0s58&#34;</span>
</span></span><span style="display:flex; background-color:#3c3d38"><span> ]
</span></span><span style="display:flex; background-color:#3c3d38"><span> }
</span></span><span style="display:flex;"><span> }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>If you configure gokrazy to <a href="/userguide/wifi/index.html">connect to a WiFi network</a>, the
<code>gokrazy/wifi</code> package will <a href="https://github.com/gokrazy/wifi/blob/320785ba3e91dac849e28d888c1cf6e6568320d0/wifi.go#L83" rel="external">run another
instance</a>
of the gokrazy DHCP client with the <code>-interface=wlan0</code> flag set.</p>
<h2 id="static-network-configuration">Static Network Configuration<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>If you want the DHCP client to not actually fetch a lease, but apply a
statically supplied network configuration instead, you can set the
<code>-static_network_config</code> flag to the name of a file which contains a
JSON-encoded <a href="https://github.com/rtr7/dhcp4/blob/18c84d089b4648dc5ea2ffe30efa65dfcb8a31ca/parseopts.go#L167" rel="external">DHCP lease in <code>rtr7/dhcp4.Lease</code>
format</a>, for example:</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;IP&#34;</span>: <span style="color:#e6db74">&#34;192.168.178.2&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;Netmask&#34;</span>: <span style="color:#e6db74">&#34;&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;Router&#34;</span>: <span style="color:#e6db74">&#34;192.168.178.1&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;DNS&#34;</span>: [<span style="color:#e6db74">&#34;192.168.178.1&#34;</span>, <span style="color:#e6db74">&#34;8.8.8.8&#34;</span>]
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>Specifically, the following fields are currently respected:</p>
<ul>
<li>IP+Netmask</li>
<li>Router</li>
<li>DNS</li>
</ul>
<p>You can configure the gokrazy DHCP client to pick up this configuration by
setting <a href="/userguide/package-config/index.html#flags">Package config: Command-line flags</a>
and <a href="/userguide/package-config/index.html#extrafiles">Package config: Extra files</a>:</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;display:grid;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;Hostname&#34;</span>: <span style="color:#e6db74">&#34;dynamic&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;Packages&#34;</span>: [
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/fbstatus&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/hello&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/serial-busybox&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/breakglass&#34;</span>
</span></span><span style="display:flex;"><span> ],
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;PackageConfig&#34;</span>: {
</span></span><span style="display:flex; background-color:#3c3d38"><span> <span style="color:#f92672">&#34;github.com/gokrazy/gokrazy/cmd/dhcp&#34;</span>: {
</span></span><span style="display:flex; background-color:#3c3d38"><span> <span style="color:#f92672">&#34;CommandLineFlags&#34;</span>: [
</span></span><span style="display:flex; background-color:#3c3d38"><span> <span style="color:#e6db74">&#34;-static_network_config=/etc/gokrazy/static-dhcp-lease.json&#34;</span>
</span></span><span style="display:flex; background-color:#3c3d38"><span> ],
</span></span><span style="display:flex; background-color:#3c3d38"><span> <span style="color:#f92672">&#34;ExtraFilePaths&#34;</span>: {
</span></span><span style="display:flex; background-color:#3c3d38"><span> <span style="color:#f92672">&#34;/etc/gokrazy/static-dhcp-lease.json&#34;</span>: <span style="color:#e6db74">&#34;static-dhcp-lease.json&#34;</span>
</span></span><span style="display:flex; background-color:#3c3d38"><span> }
</span></span><span style="display:flex; background-color:#3c3d38"><span> }
</span></span><span style="display:flex;"><span> }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<h2 id="interface-priority">Interface priority<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>The gokrazy DHCP client <a href="https://github.com/gokrazy/gokrazy/commit/4c375187675fd3c3f2fb1381be87b7d046dd1f42" rel="external">automatically configures the route
priority</a>
for default routes of ethernet interfaces (<code>eth*</code>) to 1, whereas on WiFi
interfaces (<code>wlan*</code>), the priority is 5 (Linux prefers lower priorities).</p>
<p>This means you can configure your gokrazy instance to work with both, WiFi and
wired network. Whenever a link is down, the gokrazy DHCP client changes its
priority to 1024, meaning outgoing traffic will quickly switch away when an
interface loses its link. In other words: When you un-plug the network cable,
the device still works via WiFi.</p>
<p>If you need to influence the interfaces route priority, you can use the
<code>-extra_route_priority</code> flag to add to the default priority. For example, to
prefer sending traffic out via the WiFi interface if both WiFi and ethernet are
connected, use:</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;display:grid;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;Hostname&#34;</span>: <span style="color:#e6db74">&#34;dynamic&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;Packages&#34;</span>: [
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/fbstatus&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/hello&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/serial-busybox&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">&#34;github.com/gokrazy/breakglass&#34;</span>,
</span></span><span style="display:flex;"><span> ],
</span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;PackageConfig&#34;</span>: {
</span></span><span style="display:flex; background-color:#3c3d38"><span> <span style="color:#f92672">&#34;github.com/gokrazy/gokrazy/cmd/dhcp&#34;</span>: {
</span></span><span style="display:flex; background-color:#3c3d38"><span> <span style="color:#f92672">&#34;CommandLineFlags&#34;</span>: [
</span></span><span style="display:flex; background-color:#3c3d38"><span> <span style="color:#e6db74">&#34;-extra_route_priority=10&#34;</span>
</span></span><span style="display:flex; background-color:#3c3d38"><span> ]
</span></span><span style="display:flex; background-color:#3c3d38"><span> }
</span></span><span style="display:flex;"><span> }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<footer class="footline">
</footer>
</article>
</div>
</main>
</div>
<aside id="R-sidebar" class="default-animation">
<div id="R-header-topbar" class="default-animation"></div>
<div id="R-header-wrapper" class="default-animation">
<div id="R-header" class="default-animation">
<img src="/logo.svg" width="100%" alt="gokrazy logo" title="gokrazy logo">
</div>
<search><form action="/search/index.html" method="get">
<div class="searchbox default-animation">
<button class="search-detail" type="submit" title="Search (CTRL+ALT+f)"><i class="fas fa-search"></i></button>
<label class="a11y-only" for="R-search-by">Search</label>
<input data-search-input id="R-search-by" name="search-by" class="search-by" type="search" placeholder="Search...">
<button class="search-clear" type="button" data-search-clear="" title="Clear search"><i class="fas fa-times" title="Clear search"></i></button>
</div>
</form></search>
</div>
<div id="R-homelinks" class="default-animation homelinks">
<div class="R-menu-divider default-animation">
<hr class="padding">
</div>
<div class="R-sidebarmenu R-shortcutmenu-homelinks">
<ul class="space collapsible-menu">
<li class="" data-nav-url="/index.html"><a class="padding" href="/index.html"><i class="fa-fw fas fa-home"></i> Home</a></li>
</ul>
</div>
<div class="R-menu-divider default-animation">
<hr class="padding">
</div>
<div class="R-sidebarmenu R-shortcutmenu-headercontrols">
<ul class="">
</ul>
</div>
<div class="R-menu-divider default-animation">
<hr class="padding">
</div>
</div>
<div id="R-content-wrapper" class="highlightable">
<div class="R-sidebarmenu R-shortcutmenu-main">
<ul class="enlarge morespace collapsible-menu">
<li class="" data-nav-url="/quickstart/index.html"><a class="padding" href="/quickstart/index.html"><b>1. </b>Quickstart</a></li>
<li class="" data-nav-url="/platforms/index.html"><a class="padding" href="/platforms/index.html"><b>2. </b>Supported platforms</a></li>
<li class="parent " data-nav-url="/userguide/index.html"><a class="padding" href="/userguide/index.html"><b>3. </b>Configuration</a><ul id="R-subsections-74b4df3a3d9365853f09e9f1dfe7bbba" class="collapsible-menu">
<li class="" data-nav-url="/userguide/instance-config/index.html"><a class="padding" href="/userguide/instance-config/index.html">Instance Config Reference</a></li>
<li class="" data-nav-url="/userguide/migration-guide/index.html"><a class="padding" href="/userguide/migration-guide/index.html">Instance Config Migration Guide</a></li>
<li class="" data-nav-url="/userguide/automation/index.html"><a class="padding" href="/userguide/automation/index.html">Automation</a></li>
<li class="" data-nav-url="/userguide/package-config/index.html"><a class="padding" href="/userguide/package-config/index.html">Package config: flags, environment variables, extra files</a></li>
<li class="active " data-nav-url="/userguide/dhcp/index.html"><a class="padding" href="/userguide/dhcp/index.html">DHCP Client</a></li>
<li class="" data-nav-url="/userguide/remotesyslog/index.html"><a class="padding" href="/userguide/remotesyslog/index.html">Remote Syslog: sending gokrazy logs over the network</a></li>
<li class="" data-nav-url="/userguide/wifi/index.html"><a class="padding" href="/userguide/wifi/index.html">Connecting to WiFi networks</a></li>
<li class="" data-nav-url="/userguide/tls-for-untrusted-networks/index.html"><a class="padding" href="/userguide/tls-for-untrusted-networks/index.html">Using TLS in untrusted networks</a></li>
<li class="" data-nav-url="/userguide/bluetooth/index.html"><a class="padding" href="/userguide/bluetooth/index.html">Using Bluetooth</a></li>
<li class="" data-nav-url="/userguide/permanent-data/index.html"><a class="padding" href="/userguide/permanent-data/index.html">Access permanent data</a></li>
<li class="" data-nav-url="/userguide/nvme-disk/index.html"><a class="padding" href="/userguide/nvme-disk/index.html">NVMe disk (Pi 5)</a></li>
<li class="" data-nav-url="/userguide/qemu/index.html"><a class="padding" href="/userguide/qemu/index.html">QEMU x86-64 virtual machine</a></li>
<li class="" data-nav-url="/userguide/rsync-backups/index.html"><a class="padding" href="/userguide/rsync-backups/index.html">Permanent data backup with the gokrazy rsync</a></li></ul></li>
<li class="" data-nav-url="/packages/index.html"><a class="padding" href="/packages/index.html"><b>4. </b>Available packages</a><ul id="R-subsections-bdf1e8ce92aa8ff6883c617f10480430" class="collapsible-menu"></ul></li>
<li class="" data-nav-url="/development/index.html"><a class="padding" href="/development/index.html"><b>5. </b>Package development</a><ul id="R-subsections-54b0ce3c97b111c8cd4d107325fd580c" class="collapsible-menu"></ul></li>
</ul>
</div>
<div class="R-sidebarmenu R-shortcutmenu-shortcuts">
<div class="nav-title padding">More</div>
<ul class="space collapsible-menu">
<li class="" data-nav-url="https://github.com/gokrazy/gokrazy"><a class="padding" href="https://github.com/gokrazy/gokrazy" rel="external"><i class='fab fa-github'></i> GitHub repo</a></li>
</ul>
</div>
<div id="R-footer-margin"></div>
<div class="R-menu-divider default-animation">
<hr class="padding">
</div>
<div class="R-sidebarmenu R-shortcutmenu-footercontrols">
<ul class="">
</ul>
</div>
<div id="R-footer"><p>Built with <a href="https://github.com/McShelby/hugo-theme-relearn" title="love"><i class="fas fa-heart"></i></a> by <a href="https://gohugo.io/">Hugo</a></p></div>
</div>
</aside>
<script src="/js/perfect-scrollbar/perfect-scrollbar.min.js?1782408721" defer></script>
<script src="/js/theme.min.js?1782408721" defer></script>
<div id="toast-container" role="status" aria-live="polite" aria-atomic="false"></div>
</body>
</html>