diff --git a/README.md b/README.md index 030db4a..7b39f3b 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,81 @@ -## Simple DIY VPN +# Simple DIY VPN ## Features +* Starts automatically on demand and shuts down automatically when not used + (Using systemd socket activation) +* Works on any VPS or home server with just ssh suppport. + Distro/architecture/size does not matter. Only working ssh support required. + No other software setup required on the server +* Easy to setup multiple different VPNs to different server. No need to change + whole system network settings. +* Simple interactive cli utility to setup. No need to create/edit config files +* Simple bash script with no dependencies - (ssh and systemd are usually + preinstalled) +* Once setup with browser extension, easy to use for non-technical users - Just + right-click and choose a container + +## Requirements + +* Linux system with Systemd and ssh client +* Server with ssh support. [ssh keys][3] setup for passwordless login +* Browser or any app with SOCKS proxy support. [Librewolf][2] with [Container + Proxy][1] extension allows to setup different VPN for each container + ## Installation * Archlinux [AUR][0] * Manual install: (run as root) + ``` make install ``` ## Usage +``` +❯ diyvpnctl add +Server name [e.g. vps1] [required] : homets +Listen address [e.g. 127.0.0.1:9090] [required] : 127.0.0.1:8071 +Idle Timeout [e.g. 5min] [5min] : +Remote server Ip [e.g. 1.2.3.4] [required] : 100.64.0.2 +Remote server ssh port [e.g. 2222] [22] : +Remote server username [e.g. dave] [required] : balki +SSH private key [e.g. ~/.ssh/id_ed25519] [required] : ~/.ssh/id_ed25519 +Diyvpn config for homets added. Edit below configs for further changes +==> /home/balki/.config/diyvpn/servers/homets/config.rc <== +LISTEN_ADDRESS=127.0.0.1:8071 +IDLE_TIMEOUT=5min + +==> /home/balki/.config/diyvpn/servers/homets/ssh_config <== +Hostname 100.64.0.2 +Port 22 +User balki +IdentityFile ~/.ssh/id_ed25519 + +# vim: set filetype=sshconfig: + +❯ diyvpnctl list +config path: /home/balki/.config/diyvpn/servers + +Server ListenAddress +can1 127.0.0.1:8072 +homets 127.0.0.1:8071 +us1 127.0.0.1:8070 + +``` + +## Internals + +TODO: Explain + +## Future Ideas + +* Automatically fire up a VPS instance in a cloud provider on demand. Since + most VPS are charged pre hour, for those using rarely, don't have to pay for + entire month. A new VPS every time improves privacy. + [0]: https://aur.archlinux.org/packages/diyvpn-git +[1]: https://github.com/bekh6ex/firefox-container-proxy +[2]: https://librewolf.net/ +[3]: https://wiki.archlinux.org/index.php?title=SSH_keys#Copying_the_public_key_to_the_remote_server