# vppn: Virtual Potentially Private Network

## TO DO

* Double buffering in IFReader and ConnReader ?

## Hub Server Configuration

```
# Create user.
adduser user

# Enable ssh.
cp -r ~/.ssh /home/user/
chown -R user:user /home/user/.ssh
```

Upload `hub` executable:

```
scp hub user@<remote>:~/
```

Create systemd file in `/etc/systemd/system/hub.service

```
[Service]
AmbientCapabilities=CAP_NET_BIND_SERVICE
Type=simple
User=user
WorkingDirectory=/home/user/
ExecStart=/home/user/hub -listen <addr>:https -root-dir=/home/user
Restart=always
RestartSec=8

[Install]
WantedBy=default.target
```

Add and start the hub server:

```
systemctl daemon-reload
systemctl enable hub
systemctl start hub
```

Get initial password from logs:

```
journalctl -f -u hub -n 100
```

Sign-in and configure.

## Peer Configuration

Install the binary somewhere, for example `~/bin/vppn`.

Create systemd file in `/etc/systemd/system/vppn.service`.

```
[Service]
AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_NET_ADMIN
Type=simple
User=user
WorkingDirectory=/home/user/
ExecStart=/home/user/vppn run my_net_name https://my.hub my_api_key
Restart=always
RestartSec=8
TimeoutStopSec=24

[Install]
WantedBy=multi-user.target
```

Add and start the service:

```
systemctl daemon-reload
systemctl enable vppn
systemctl start vppn
```
