Files
diyvpn/README.md

82 lines
2.5 KiB
Markdown
Raw 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.
# 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