<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[**[Package] WireGuard Easy for pfSense — create and hand out peers from a single page**]]></title><description><![CDATA[<p dir="auto"><strong>[Package] WireGuard Easy for pfSense — create and hand out peers from a single page</strong></p>
<p dir="auto">Hi all,</p>
<p dir="auto">Sharing a package I built because I got tired of generating client keys by hand, pasting the public key into a peer, and then writing the client .conf separately every time I needed to add a device. It's called <strong>wgeasy</strong> and it adds <strong>VPN → WireGuard Easy</strong> to pfSense.</p>
<p dir="auto"><strong>What it does:</strong></p>
<ul>
<li>One form creates the peer and hands you the client file (.zip) with a QR code, a download button, and email delivery.</li>
<li>Auto-fills everything it can: next free IP in the tunnel subnet, your Dynamic DNS/RFC2136 hostnames as endpoint options, the tunnel's listen port, the subnets your DHCP server serves, DNS presets (Google, Cloudflare, Quad9, or the firewall's own).</li>
<li>A dashboard widget that, unlike the native one (which only counts active peers), shows <em>who</em> is connected, from where, and their traffic counters.</li>
<li>An "Easy Peers" list with per-row actions to re-download the client file, the QR code, or resend it by email at any time.</li>
</ul>
<p dir="auto"><strong>Important — how it works under the hood:</strong><br />
It doesn't edit config.xml by hand or touch any file belonging to the native package. It goes through the native pfSense-pkg-WireGuard's own functions (wg_do_peer_post, wg_gen_keypair, wg_tunnel_sync, etc.), so a peer created with this package is a completely normal peer — it can be edited or deleted from VPN → WireGuard → Peers without breaking anything, and it survives upgrades of the native package.</p>
<p dir="auto"><strong>A trade-off I want to be upfront about:</strong> to be able to hand the client file out again later (re-download it, show the QR again, resend the email), the package stores the client's private key and the settings used to build the file inside a &lt;wgeasy&gt; element on the peer itself — which means it ends up in your config.xml backups and in AutoConfigBackup. That's a deliberate design choice (the alternative is that the file exists exactly once, on the screen that created it, and a user who loses it needs a brand new peer). It's documented in the README so everyone can decide for themselves whether that trade-off works for them.</p>
<p dir="auto"><strong>Requires:</strong> pfSense-pkg-WireGuard installed. Tested on pfSense CE 2.8.1 with pfSense-pkg-WireGuard 0.2.9_6.</p>
<p dir="auto"><strong>Install:</strong></p>
<pre><code>scp pfSense-pkg-wgeasy-&lt;version&gt;.pkg root@FIREWALL:/root/
ssh root@FIREWALL
pkg add /root/pfSense-pkg-wgeasy-&lt;version&gt;.pkg
</code></pre>
<p dir="auto">pkg add will warn that the package doesn't come from a repository — that's expected, it isn't in the official repo or any unofficial one yet.</p>
<p dir="auto">Repo with screenshots, releases, and full technical detail: https://github.com/MarceloMayo74/pfsense-wgeasy</p>
<p dir="auto">It's Apache 2.0 licensed. Feedback, issues, and PRs are all welcome. Thanks for reading!</p>
<p dir="auto"><img src="/assets/uploads/files/1785601224282-add-peer.png" alt="add-peer.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/assets/uploads/files/1785601231979-easy-peers.png" alt="easy-peers.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/assets/uploads/files/1785601239515-widget.png" alt="widget.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.netgate.com/topic/201049/package-wireguard-easy-for-pfsense-create-and-hand-out-peers-from-a-single-page</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 14:57:37 GMT</lastBuildDate><atom:link href="https://forum.netgate.com/topic/201049.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 Aug 2026 16:20:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to **[Package] WireGuard Easy for pfSense — create and hand out peers from a single page** on Sun, 20 Sep 2026 13:16:39 GMT]]></title><description><![CDATA[<p dir="auto">I will be testing this for sure.  I have checked back for years.  Literally !</p>
<p dir="auto">Thanks for your time and effort.  How do we get this as an official package?</p>
]]></description><link>https://forum.netgate.com/post/1249168</link><guid isPermaLink="true">https://forum.netgate.com/post/1249168</guid><dc:creator><![CDATA[Cire3]]></dc:creator><pubDate>Sun, 20 Sep 2026 13:16:39 GMT</pubDate></item><item><title><![CDATA[Reply to **[Package] WireGuard Easy for pfSense — create and hand out peers from a single page** on Tue, 11 Aug 2026 17:24:16 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/stephenw10">@<bdi>stephenw10</bdi></a> can you pass this to the right person? This package would be awesome!</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/marcelomayo74">@<bdi>marcelomayo74</bdi></a> thank you very much for working on open source software.</p>
]]></description><link>https://forum.netgate.com/post/1246530</link><guid isPermaLink="true">https://forum.netgate.com/post/1246530</guid><dc:creator><![CDATA[slu]]></dc:creator><pubDate>Tue, 11 Aug 2026 17:24:16 GMT</pubDate></item><item><title><![CDATA[Reply to **[Package] WireGuard Easy for pfSense — create and hand out peers from a single page** on Tue, 11 Aug 2026 16:55:51 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/slu">@<bdi>slu</bdi></a> Thanks for the kind words! Yes, I'd be very much in favor of that. The project is open source and I'd be glad to work with the Netgate team on any changes needed to meet their packaging standards, documentation requirements, or maintenance expectations. Feel free to point me to the right process/contact if there's one, or let me know if I should reach out directly.</p>
]]></description><link>https://forum.netgate.com/post/1246528</link><guid isPermaLink="true">https://forum.netgate.com/post/1246528</guid><dc:creator><![CDATA[marcelomayo74]]></dc:creator><pubDate>Tue, 11 Aug 2026 16:55:51 GMT</pubDate></item><item><title><![CDATA[Reply to **[Package] WireGuard Easy for pfSense — create and hand out peers from a single page** on Mon, 10 Aug 2026 16:08:45 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/marcelomayo74">@<bdi>marcelomayo74</bdi></a> this looks really awesome!</p>
<p dir="auto">Perhaps this could become an official package for pfSense, if you were to agree?</p>
]]></description><link>https://forum.netgate.com/post/1246477</link><guid isPermaLink="true">https://forum.netgate.com/post/1246477</guid><dc:creator><![CDATA[slu]]></dc:creator><pubDate>Mon, 10 Aug 2026 16:08:45 GMT</pubDate></item><item><title><![CDATA[Reply to **[Package] WireGuard Easy for pfSense — create and hand out peers from a single page** on Sat, 08 Aug 2026 18:47:20 GMT]]></title><description><![CDATA[<p dir="auto"><strong>Update: 0.4.2 is out.</strong></p>
<p dir="auto">I went back over the form field by field looking for gaps.</p>
<p dir="auto"><strong>The endpoint port is now mandatory.</strong> <code>wg(8)</code> parses <code>Endpoint</code> as<br />
<code>host:port</code> and refuses a client file that has no port — the phone apps just<br />
say the QR code is invalid. The field is pre-filled from the tunnel's listen<br />
port, but if you cleared it the peer used to save anyway and produced a file<br />
no client would accept. It's now rejected with a message. Peers already saved<br />
without a port fall back to the tunnel listen port when their file is rebuilt,<br />
so nothing that already works stops working.</p>
<p dir="auto"><strong>A new client starts from the last one created on that tunnel.</strong> Endpoint,<br />
port, DNS servers, MTU, keep alive and the routing preset are carried over, so<br />
the second phone in a household doesn't mean typing the same six fields again.<br />
The address and the key pair are always new, and split tunnel is recomputed<br />
rather than replayed — if you changed the tunnel network or added a LAN, you<br />
get the networks as they are now, never a stale list. Each tunnel remembers on<br />
its own, and switching the tunnel dropdown applies that tunnel's settings in<br />
place.</p>
<p dir="auto"><strong>The MTU comes from the tunnel.</strong> If the tunnel doesn't run on the 1420 every<br />
client already assumes — a PPPoE WAN, say — the client file now says so<br />
instead of leaving the client to guess.</p>
<p dir="auto"><strong>Firewall aliases can be used for Tunneled Networks.</strong> Pick a host or network<br />
alias and its addresses are dropped into the field. They're resolved at that<br />
moment, since WireGuard has no idea what an alias is, so editing the alias<br />
later doesn't reach clients you already handed out.</p>
<p dir="auto">Also fixed: opening an existing peer now always shows what that peer was saved<br />
with, blank fields included, so the carry-over above can't leak another<br />
client's MTU or DNS into it.</p>
<p dir="auto">Tested on pfSense CE 2.8.1 with pfSense-pkg-WireGuard 0.2.9_6, and on 2.9.0-BETA<br />
(amd64) with pfSense-pkg-WireGuard 0.2.13_4.</p>
<p dir="auto"><strong>How to install it, step by step</strong></p>
<p dir="auto">You need the <code>.pkg</code> file from the release page:<br />
https://github.com/MarceloMayo74/pfsense-wgeasy/releases/latest</p>
<p dir="auto">Replace <code>192.168.1.1</code> below with your firewall's address, and <code>admin</code> with your<br />
firewall's login user if it's a different one.</p>
<hr />
<p dir="auto"><strong>Option A — from a terminal (three commands)</strong></p>
<p dir="auto">SSH has to be enabled first: <strong>System → Advanced → Admin Access → Secure Shell →<br />
Enable Secure Shell</strong>.</p>
<p dir="auto">Windows 10/11 already ship <code>scp</code> and <code>ssh</code>; open PowerShell. On macOS or Linux,<br />
open Terminal. Run these from the folder where you downloaded the file, or write<br />
the full path to it.</p>
<ol>
<li>
<p dir="auto">Copy the package to the firewall:</p>
<pre><code>scp pfSense-pkg-wgeasy-0.4.2.pkg admin@192.168.1.1:/root/
</code></pre>
</li>
<li>
<p dir="auto">Install it:</p>
<pre><code>ssh admin@192.168.1.1 "pkg add /root/pfSense-pkg-wgeasy-0.4.2.pkg"
</code></pre>
<p dir="auto">If you already have an older version, delete it first — <code>pkg add</code> will not<br />
upgrade in place:</p>
<pre><code>ssh admin@192.168.1.1 "pkg delete -y pfSense-pkg-wgeasy &amp;&amp; pkg add /root/pfSense-pkg-wgeasy-0.4.2.pkg"
</code></pre>
<p dir="auto">Your peers survive that. They live in <code>config.xml</code>, not in the package.</p>
</li>
<li>
<p dir="auto">Delete the copy you uploaded, so it doesn't pile up on the firewall:</p>
<pre><code>ssh admin@192.168.1.1 "rm -f /root/pfSense-pkg-wgeasy-0.4.2.pkg"
</code></pre>
</li>
</ol>
<hr />
<p dir="auto"><strong>Option B — from the web GUI, no terminal at all</strong></p>
<ol>
<li>
<p dir="auto">Go to <strong>Diagnostics → Command Prompt</strong>.</p>
</li>
<li>
<p dir="auto">In the <strong>Upload File</strong> box at the bottom, pick the <code>.pkg</code> and upload it. It<br />
lands in <code>/tmp/</code>.</p>
</li>
<li>
<p dir="auto">In the <strong>Execute Shell Command</strong> box at the top, run:</p>
<pre><code>pkg add /tmp/pfSense-pkg-wgeasy-0.4.2.pkg
</code></pre>
<p dir="auto">Upgrading from an older version instead:</p>
<pre><code>pkg delete -y pfSense-pkg-wgeasy &amp;&amp; pkg add /tmp/pfSense-pkg-wgeasy-0.4.2.pkg
</code></pre>
</li>
<li>
<p dir="auto">Optional cleanup, in the same box:</p>
<pre><code>rm -f /tmp/pfSense-pkg-wgeasy-0.4.2.pkg
</code></pre>
</li>
</ol>
<hr />
<p dir="auto"><strong>What you should see</strong></p>
<p dir="auto"><code>pkg add</code> will warn that the package doesn't come from a repository. That's<br />
expected — it isn't in the official repo or any unofficial one.</p>
<p dir="auto">When it's done, the menu entry is at <strong>VPN → WireGuard Easy</strong>. If the menu<br />
doesn't show up right away, reload the page.</p>
<p dir="auto">To remove it later:</p>
<pre><code>pkg delete -y pfSense-pkg-wgeasy
</code></pre>
<p dir="auto">That leaves your peers alone: they were created through the native WireGuard<br />
package and stay under <strong>VPN → WireGuard → Peers</strong>.</p>
<p dir="auto">Your peers survive that — they live in config.xml, not in the package.</p>
<p dir="auto">Release and changelog: https://github.com/MarceloMayo74/pfsense-wgeasy/releases/tag/v0.4.2</p>
]]></description><link>https://forum.netgate.com/post/1246354</link><guid isPermaLink="true">https://forum.netgate.com/post/1246354</guid><dc:creator><![CDATA[marcelomayo74]]></dc:creator><pubDate>Sat, 08 Aug 2026 18:47:20 GMT</pubDate></item></channel></rss>