<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tutorials on EdgeVPN</title>
    <link>https://mudler.github.io/edgevpn/docs/tutorials/</link>
    <description>Recent content in Tutorials on EdgeVPN</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://mudler.github.io/edgevpn/docs/tutorials/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Install EdgeVPN</title>
      <link>https://mudler.github.io/edgevpn/docs/tutorials/install/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://mudler.github.io/edgevpn/docs/tutorials/install/</guid>
      <description>&lt;p&gt;EdgeVPN is a single statically compiled binary with no runtime dependencies.&#xA;Pick whichever route suits the machine; if you just want the shortest path to a&#xA;running network, take the &lt;a href=&#34;https://mudler.github.io/edgevpn/docs/tutorials/install/#install-script&#34;&gt;install script&lt;/a&gt; and carry on to&#xA;&lt;a href=&#34;../your-first-network/&#34;&gt;your first network&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;install-script&#34;&gt;Install script&lt;/h2&gt;&#xA;&lt;p&gt;The repository ships an installer at&#xA;&lt;a href=&#34;https://github.com/mudler/edgevpn/blob/master/install.sh&#34;&gt;&lt;code&gt;install.sh&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -sfL https://raw.githubusercontent.com/mudler/edgevpn/master/install.sh &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It is &lt;strong&gt;Linux only&lt;/strong&gt; — it aborts on any other platform. What it does:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Detects the architecture (&lt;code&gt;x86_64&lt;/code&gt;, &lt;code&gt;arm64&lt;/code&gt;, &lt;code&gt;armv6&lt;/code&gt;, &lt;code&gt;i386&lt;/code&gt;) and looks up&#xA;the latest release tag from the GitHub API.&lt;/li&gt;&#xA;&lt;li&gt;Downloads the matching release archive and installs the &lt;code&gt;edgevpn&lt;/code&gt; binary&#xA;into &lt;code&gt;/usr/local/bin&lt;/code&gt;, using &lt;code&gt;sudo&lt;/code&gt; when not running as root. If&#xA;&lt;code&gt;/usr/local/bin&lt;/code&gt; is not writable &lt;strong&gt;and&lt;/strong&gt; &lt;code&gt;/opt/bin&lt;/code&gt; already exists, it uses&#xA;&lt;code&gt;/opt/bin&lt;/code&gt; instead; it will not create that directory.&lt;/li&gt;&#xA;&lt;li&gt;Writes a service unit: a systemd &lt;strong&gt;template&lt;/strong&gt; unit&#xA;&lt;code&gt;/etc/systemd/system/edgevpn@.service&lt;/code&gt; if systemd is present, or&#xA;&lt;code&gt;/etc/init.d/edgevpn&lt;/code&gt; under OpenRC.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The script installs the unit but does not enable or start anything, so nothing&#xA;runs until you ask it to.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Your first network</title>
      <link>https://mudler.github.io/edgevpn/docs/tutorials/your-first-network/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://mudler.github.io/edgevpn/docs/tutorials/your-first-network/</guid>
      <description>&lt;h2 id=&#34;get-edgevpn&#34;&gt;Get EdgeVPN&lt;/h2&gt;&#xA;&lt;p&gt;Prerequisites: No dependencies. EdgeVPN releases are statically compiled.&lt;/p&gt;&#xA;&lt;p&gt;On Linux, the quickest way is the install script:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -sfL https://raw.githubusercontent.com/mudler/edgevpn/master/install.sh &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Release archives, Homebrew, the container image and building from source are&#xA;all covered in &lt;a href=&#34;../install/&#34;&gt;Install EdgeVPN&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;creating-your-first-vpn&#34;&gt;Creating Your First VPN&lt;/h2&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s create our first vpn now and start it:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$&amp;gt; &lt;span style=&#34;color:#000&#34;&gt;EDGEVPNTOKEN&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;edgevpn -b -g&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$&amp;gt; edgevpn --dhcp --api&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it!&lt;/p&gt;&#xA;&lt;p&gt;You can now access the web interface on &lt;a href=&#34;http://localhost:8080&#34;&gt;http://localhost:8080&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;To join new nodes in the network, simply copy the &lt;code&gt;EDGEVPNTOKEN&lt;/code&gt; and use it to start edgevpn in other nodes:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Share a service between two hosts</title>
      <link>https://mudler.github.io/edgevpn/docs/tutorials/share-a-service/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://mudler.github.io/edgevpn/docs/tutorials/share-a-service/</guid>
      <description>&lt;p&gt;In this tutorial you will take a TCP service running on one machine — we will&#xA;use an SSH server, but anything that speaks TCP works — and reach it from a&#xA;second machine somewhere else, over EdgeVPN.&lt;/p&gt;&#xA;&lt;p&gt;Nothing here brings up a VPN interface, so you do not need root on either host.&lt;/p&gt;&#xA;&lt;p&gt;You will need:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Two hosts, &lt;strong&gt;A&lt;/strong&gt; and &lt;strong&gt;B&lt;/strong&gt;, that can both reach the internet. They do not&#xA;need to see each other, and neither needs a public IP.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;edgevpn&lt;/code&gt; installed on both. See&#xA;&lt;a href=&#34;../your-first-network/&#34;&gt;your first network&lt;/a&gt; if you have not installed it yet.&lt;/li&gt;&#xA;&lt;li&gt;Something listening on a TCP port on host A. We assume &lt;code&gt;sshd&lt;/code&gt; on&#xA;&lt;code&gt;127.0.0.1:22&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If you already know the shape of this and just want the commands, read&#xA;&lt;a href=&#34;../../how-to/tunnel-tcp-services/&#34;&gt;Tunnel TCP services&lt;/a&gt; instead.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A network-decentralized k3s test cluster</title>
      <link>https://mudler.github.io/edgevpn/docs/tutorials/decentralized-k3s-cluster/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://mudler.github.io/edgevpn/docs/tutorials/decentralized-k3s-cluster/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s see a practical example, you are developing something for kubernetes and&#xA;you want to try a multi-node setup, but you have machines available that are&#xA;only behind NAT (pity!) and you would really like to leverage HW.&lt;/p&gt;&#xA;&lt;p&gt;If you are not really interested in network performance (again, that&amp;rsquo;s for&#xA;development purposes only!) then you could use &lt;code&gt;edgevpn&lt;/code&gt; +&#xA;&lt;a href=&#34;https://github.com/k3s-io/k3s&#34;&gt;k3s&lt;/a&gt; in this way:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Generate edgevpn config: &lt;code&gt;edgevpn -g &amp;gt; vpn.yaml&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Start the vpn:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
