mirror of
https://github.com/house-of-vanity/house-of-vanity.github.io.git
synced 2025-07-07 16:54:06 +00:00
114 lines
2.7 KiB
Markdown
114 lines
2.7 KiB
Markdown
+++
|
|
title = "qBittornt web via VPN"
|
|
date = "2023-08-25"
|
|
description = "Installing qBittornt web and VPN only download"
|
|
|
|
[taxonomies]
|
|
tags = ["linux", "torrent", "network", "selfhosting"]
|
|
|
|
[extra]
|
|
author = { name = "@ultradesu", social= "https://github.com/house-of-vanity" }
|
|
+++
|
|
|
|
## Requirements
|
|
* Ubuntu Linux server (tested on 18.04 and 20.04)
|
|
* NGINX
|
|
* Wireguard VPN config (easy to change to any other vpn)
|
|
---
|
|
|
|
## Installing
|
|
|
|
Install `qbittorrent-nox` for headless qBittorent package:
|
|
```sh
|
|
sudo apt install -y qbittorrent-nox
|
|
```
|
|
|
|
## Configuring VPN Network Namespace
|
|
Create `/usr/bin/torrent_ns` script and make it exucutable. It configures Network Namespace for qBittorent.
|
|
```sh
|
|
VPN_CFG_NAME=torrent
|
|
VPN_COMMAND="wg-quick up ${VPN_CFG_NAME}"
|
|
export SCRIPT=$(cat <<-END
|
|
#!/bin/bash
|
|
ip netns del torrent
|
|
sleep 2
|
|
ip netns add torrent
|
|
ip link add veth0 type veth peer name veth1
|
|
ip link set veth1 netns torrent
|
|
ip address add 10.99.99.1/24 dev veth0
|
|
ip netns exec torrent ip address add 10.99.99.2/24 dev veth1
|
|
ip link set dev veth0 up
|
|
ip netns exec torrent ip link set dev veth1 up
|
|
ip netns exec torrent ip route add default via 10.99.99.1
|
|
mkdir -p /etc/netns/torrent
|
|
echo nameserver 8.8.8.8 > /etc/netns/torrent/resolv.conf
|
|
sleep 3
|
|
ip netns exec torrent ${VPN_COMMAND}
|
|
sleep 3
|
|
ip netns exec torrent sudo -u ${USER} qbittorrent-nox
|
|
END
|
|
)
|
|
|
|
sudo -E bash -c 'cat > /usr/bin/torrent_ns << EOF
|
|
${SCRIPT}
|
|
EOF
|
|
'
|
|
|
|
sudo chmod +x /usr/bin/torrent_ns
|
|
```
|
|
|
|
## Systemd Autostart
|
|
Systemd unit to enable autostart:
|
|
```sh
|
|
export SERVICE=$(cat <<-END
|
|
[Unit]
|
|
Description=qBittorrent via vpn
|
|
After=network.target
|
|
StartLimitIntervalSec=0
|
|
|
|
[Service]
|
|
Type=simple
|
|
Restart=always
|
|
RestartSec=1
|
|
User=root
|
|
ExecStart=/usr/bin/torrent_ns
|
|
ExecStop=/usr/bin/ip netns del torrent
|
|
END
|
|
)
|
|
|
|
sudo -E bash -c 'cat > /etc/systemd/system/qbittorrent.service << EOF
|
|
${SERVICE}
|
|
EOF
|
|
'
|
|
|
|
sudo systemctl enable --now qbittorrent.service
|
|
```
|
|
|
|
## Nginx Reverse Proxy
|
|
|
|
```js
|
|
# /etc/nginx/sites-enabled/tr.hexor.cy.conf
|
|
server {
|
|
listen 443 ssl http2;
|
|
server_name tr.hexor.ru;
|
|
include ssl.conf; # my own ssl config
|
|
location / {
|
|
proxy_pass http://10.99.99.2:8080;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_hide_header Referer;
|
|
proxy_hide_header Origin;
|
|
proxy_set_header Referer '';
|
|
proxy_set_header Origin '';
|
|
}
|
|
}
|
|
server {
|
|
listen 80;
|
|
server_name tr.hexor.cy;
|
|
listen [::]:80;
|
|
return 302 https://$host$request_uri;
|
|
}
|
|
```
|