You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: restructure into a Diataxis tree with a generated CLI reference
The site was ~3,500 words for a project with ~90 CLI flags, and several
of those words were wrong: --peerguardian is not a flag, the egress and
`edgevpn start` features were undocumented entirely, and the architecture
page described a ledger that had been replaced.
Restructures docs/content into tutorials / how-to / reference /
explanation, with a Hugo alias on every moved page so existing inbound
links keep working.
Adds internal/docsgen, which walks the real cli.App via cmd.NewApp and
emits the CLI and environment-variable reference. A CI job regenerates
and diffs it, so a flag cannot be added without the docs following. That
covers 94 flags and 85 environment variables that were previously
undocumented, and makes the --peerguardian class of defect structurally
impossible.
Publishes docs/design/authenticated-ledger.md, which had never shipped,
and adds guides for HTTP egress, ledger ownership, relays, Docker and the
ledger bucket namespace, plus a security model page stating plainly that
EdgeVPN's model is perimeter-only.
Relocates the README's unique content to the site and trims it. The
README's Go library example did not compile; it does now.
Also removes the unused docsy git submodule, adds the missing
CONTRIBUTING.md the docs linked to, reconciles baseURL with what
production actually serves, and fixes a 404 page that redirected
visitors off-site.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+15-93Lines changed: 15 additions & 93 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,7 +32,7 @@ It can:
32
32
-**Create a VPN** : Secure VPN between p2p peers
33
33
- Automatically assign IPs to nodes
34
34
- Embedded tiny DNS server to resolve internal/external IPs
35
-
- Create trusted zones to prevent network access if token is leaked
35
+
- Create trusted zones to restrict which peers may join (experimental: it does not currently stop a token holder from entering the zone — see the [security model](https://mudler.github.io/edgevpn/docs/explanation/security-model/))
36
36
- For example, the [Kairos](https://github.com/kairos-io/kairos) CNCF project uses it as a layer for creating decentralized clusters with Kubernetes
37
37
38
38
-**Act as a reverse Proxy** : Share a tcp service like you would do with `ngrok`. EdgeVPN let expose TCP services to the p2p network nodes without establishing a VPN connection: creates reverse proxy and tunnels traffic into the p2p network.
@@ -75,6 +75,14 @@ Check out [Kairos](https://github.com/kairos-io/kairos) for seeing EdgeVPN in ac
75
75
76
76
Download the precompiled static release in the [releases page](https://github.com/mudler/edgevpn/releases). You can either install it in your system or just run it.
77
77
78
+
Or install the latest release with the one-liner:
79
+
80
+
```bash
81
+
curl -sfL https://raw.githubusercontent.com/mudler/edgevpn/master/install.sh | sh
82
+
```
83
+
84
+
Every installation route — install script, release archives, Homebrew, the container image and building from source — is covered in [Install EdgeVPN](https://mudler.github.io/edgevpn/docs/tutorials/install/).
85
+
78
86
# :computer: Usage
79
87
80
88
EdgeVPN works by generating tokens (or a configuration file) that can be shared between different machines, hosts or peers to access to a decentralized secured network between them.
EdgeVPN makes VPN decentralization a first strong requirement.
133
-
134
-
Its main use is for edge and low-end devices and especially for development.
135
-
136
-
The decentralized approach has few cons:
137
-
138
-
- The underlying network is chatty. It uses a Gossip protocol for synchronizing the routing table and p2p. Every blockchain message is broadcasted to all peers, while the traffic is to the host only.
139
-
- Might be not suited for low latency workload.
140
-
141
-
Keep that in mind before using it for your prod networks!
142
-
143
-
But it has a strong pro: it just works everywhere libp2p works!
140
+
The decentralized approach is chatty and might not suit low-latency workloads, and this software has not been security audited. Read [when not to use EdgeVPN](https://mudler.github.io/edgevpn/docs/explanation/when-not-to-use-edgevpn/) before you rely on it.
144
141
145
142
# :question: Why?
146
143
147
144
First of all it's my first experiment with libp2p. Second, I always wanted a more "open" `ngrok` alternative, but I always prefer to have "less infra" as possible to maintain. That's why building something like this on top of `libp2p` makes sense.
148
145
149
146
# :warning: Warning!
150
147
151
-
I'm not a security expert, and this software didn't went through a full security audit, so don't use and rely on it for sensible traffic and not even for production environment! I did this mostly for fun while I was experimenting with libp2p.
152
-
153
-
## Example use case: network-decentralized [k3s](https://github.com/k3s-io/k3s) test cluster
154
-
155
-
Let's see a practical example, you are developing something for kubernetes and you want to try a multi-node setup, but you have machines available that are only behind NAT (pity!) and you would really like to leverage HW.
156
-
157
-
If you are not really interested in network performance (again, that's for development purposes only!) then you could use `edgevpn` + [k3s](https://github.com/k3s-io/k3s) in this way:
on node A: `sudo IFACE=edgevpn0 ADDRESS=10.1.0.3/24 EDGEVPNCONFIG=vpn.yml edgevpn`
163
-
164
-
on node B: `sudo IFACE=edgevpn0 ADDRESS=10.1.0.4/24 EDGEVPNCONFIG=vpm.yml edgevpn`
165
-
3) Start k3s:
166
-
167
-
on node A: `k3s server --flannel-iface=edgevpn0`
168
-
169
-
on node B: `K3S_URL=https://10.1.0.3:6443 K3S_TOKEN=xx k3s agent --flannel-iface=edgevpn0 --node-ip 10.1.0.4`
170
-
171
-
We have used flannel here, but other CNI should work as well.
172
-
173
-
174
-
# :notebook: As a library
175
-
176
-
EdgeVPN can be used as a library. It is very portable and offers a functional interface.
177
-
178
-
To join a node in a network from a token, without starting the vpn:
179
-
180
-
```golang
148
+
This software has not been through a full security audit — don't rely on it for sensitive traffic or production environments. The full caveats are in [when not to use EdgeVPN](https://mudler.github.io/edgevpn/docs/explanation/when-not-to-use-edgevpn/).
-[A network-decentralized k3s test cluster](https://mudler.github.io/edgevpn/docs/tutorials/decentralized-k3s-cluster/) — a multi-node Kubernetes development cluster across machines behind NAT.
153
+
-[Use EdgeVPN as a library](https://mudler.github.io/edgevpn/docs/how-to/use-as-a-library/) — embed a node in your own Go program.
216
154
217
155
# 🧑💻 Projects using EdgeVPN
218
156
@@ -239,23 +177,7 @@ and any other way if not mentioned here.
edgevpn[9971]: 2021/12/16 20:56:34 failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size for details.
252
-
```
253
-
254
-
or generally experiencing poor network performance, it is recommended to increase the maximum buffer size by running:
255
-
256
-
```
257
-
sysctl -w net.core.rmem_max=2500000
258
-
```
180
+
Bootstrap failures, receive-buffer warnings and poor network performance are covered in [Troubleshooting](https://mudler.github.io/edgevpn/docs/troubleshooting/).
0 commit comments