mirror of
https://github.com/house-of-vanity/house-of-vanity.github.io.git
synced 2025-07-07 00:34:07 +00:00
Added WPM bot
This commit is contained in:
78
content/posts/private-vpn.md
Normal file
78
content/posts/private-vpn.md
Normal file
@ -0,0 +1,78 @@
|
||||
+++
|
||||
title = "Private WireGuard telegram bot"
|
||||
date = "2023-08-25"
|
||||
description = "Your own telegram bot for managing WireGuard peers"
|
||||
|
||||
[taxonomies]
|
||||
tags = ["linux", "torrent", "network", "selfhosting", "wireguard", "vpn"]
|
||||
|
||||
[extra]
|
||||
author = { name = "@ultradesu", social= "https://github.com/house-of-vanity" }
|
||||
+++
|
||||
|
||||
# Wireguard-Peer-Manager
|
||||

|
||||
|
||||
That bot can add Wireguard peers to config, reload it and send client config back via Telegram.
|
||||
|
||||
<mark>**FYI: That tool stores client private keys into server config as comments.**</mark>
|
||||
|
||||
How to use:
|
||||
|
||||
```ini
|
||||
# create initial wg config or use your own.
|
||||
# P.S. Keep in mind that WPM can't manage peers created manually
|
||||
# due to absence of client private key.
|
||||
|
||||
export CONFIG=$(cat <<-END
|
||||
[Interface]
|
||||
Address = 10.150.200.1/24
|
||||
ListenPort = 51820
|
||||
PrivateKey = $(wg genkey)
|
||||
PostUp = iptables -A FORWARD -i %i -o %i -j ACCEPT
|
||||
PostDown = iptables -D FORWARD -i %i -o %i -j ACCEPT
|
||||
SaveConfig = false
|
||||
END
|
||||
)
|
||||
|
||||
sudo -E bash -c 'cat > /etc/wireguard/private.conf << EOF
|
||||
${CONFIG}
|
||||
EOF
|
||||
'
|
||||
|
||||
cd /etc/wiregurad
|
||||
sudo git clone https://github.com/house-of-vanity/Wireguard-Peer-Manager wpm
|
||||
cd wpm
|
||||
|
||||
# install python and system requirements.
|
||||
apt install qrencode python3-pip
|
||||
pip3 install -r requirements.txt
|
||||
|
||||
# Create config
|
||||
cp wpm_example.conf wpm.conf
|
||||
|
||||
# CLI usage. Client configs saved into `clients/peer_name.{conf,-qr.png,-qr.txt}`
|
||||
python3 gen.py --peer my-pc # add a new peer `my-pc`
|
||||
python3 gen.py --delete my-pc # delete peer `my-pc`
|
||||
python3 gen.py --update # just regenerate all configs in `clients/`
|
||||
python3 gen.py --json # show WG status in JSON
|
||||
|
||||
# Telegram bot usage
|
||||
TG_TOKEN=1292121488:AAG... TG_ADMIN=<comma separated list of usernames> python3 bot.py
|
||||
|
||||
```
|
||||
|
||||
## Config
|
||||
Key | Default | Description
|
||||
------------ | ------------- | ------------
|
||||
allowed_ips | 0.0.0.0 | allowed_ips for generated peer configs.
|
||||
dns | 8.8.8.8 | DNS for peer configs
|
||||
hostname | $(hostname -f):51820 | server address for peer configs. May be an IP.
|
||||
config | wg0 | WireGuard config to work with.
|
||||
|
||||
|
||||
## Telegram Interface
|
||||
|
||||
<img src="https://user-images.githubusercontent.com/4666566/117370133-cc31f000-ae7a-11eb-93fd-a390d2616da8.png" alt="drawing" width="450"/> <img src="https://user-images.githubusercontent.com/4666566/117377076-48323500-ae87-11eb-9602-a0cd3072ff53.png" alt="drawing" width="350"/>
|
||||
|
||||
|
@ -49,7 +49,7 @@ ip netns exec torrent sudo -u ${USER} qbittorrent-nox
|
||||
END
|
||||
)
|
||||
|
||||
sudo -E -E bash -c 'cat > /usr/bin/torrent_ns << EOF
|
||||
sudo -E bash -c 'cat > /usr/bin/torrent_ns << EOF
|
||||
${SCRIPT}
|
||||
EOF
|
||||
'
|
||||
|
Reference in New Issue
Block a user