ѕєχυαℓ ρσℓутσρє

I fuck numbers.

  • 10 Posts
  • 55 Comments
Joined 1 year ago
cake
Cake day: June 21st, 2023

help-circle












  • For media, I host the some of the arr apps, qbittorrent, Jellyfin, gpodder2go, and navidrome. For personal photos, I host PhotoPrism. I host a file sharing service fileshelter, and a link shortening service chhoto-url. I host Wiki.js for mostly recipes, and some notes. I’ve recently started hosting Forgejo for my git repos. I also host SageMath for computation, it’s especially useful when I only have my phone with me and need to use it. I use caddy as a reverse proxy and serve these through a VPS using a Wireguard tunnel.






  • Without anything extra, there are three ways of doing it:

    1. Using Tailscale Funnel
    2. Direct port forwarding in your router, and pointing to the IP using some DDNS provider (e.g. desec.io)
    3. Through Cloudflare tunnel (not recommended due to privacy reasons)

    In each case, you’ll need a reverse proxy (e.g. Caddy) if you want secure https connections.

    If you’re willing to spend money, the better way would be to proxy through a VPS (using something like a Wireguard tunnel). In that way, you won’t have to open ports on your home router. You can get a very cheap one since proxying doesn’t need much CPU power. Just choose one with enough bandwidth. I personally proxy most of my stuff through a $12/yr RackNerd VPS.



  • My setup looks like the following:

    /etc/wireguard/wg-vps.conf on the VPS
    -----------------------------------------------------
    [Interface]
    Address = 10.8.0.2/24
    ListenPort = 51820
    PrivateKey = ********************************************
    
    # packet forwarding
    PreUp = sysctl -w net.ipv4.ip_forward=1
    
    # port forwarding 80 and 443
    PreUp = iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.8.0.1:80
    PreUp = iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 10.8.0.1:443
    PostDown = iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.8.0.1:80
    PostDown = iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 10.8.0.1:443
    
    # packet masquerading
    PreUp = iptables -t nat -A POSTROUTING -o wg-vps -j MASQUERADE
    PostDown = iptables -t nat -D POSTROUTING -o wg-vps -j MASQUERADE
    
    [Peer]
    PublicKey = ********************************************
    AllowedIPs = 10.8.0.1
    
    /etc/wireguard/wg-vps.conf on my home-server
    ---------------------------------------------------------------
    [Interface]
    Address = 10.8.0.1/24
    PrivateKey = ********************************************
    
    [Peer]
    PublicKey = ********************************************
    AllowedIPs = 10.8.0.2
    Endpoint = :51820
    PersistentKeepAlive = 25
    

    Now, just enable the tunnel using sudo systemctl enable --now wg-quick@wg-vps. Make sure that the port 51820, 80, and 443 are open on the VPS. Now, allow 80, 443 through the firewall on the home-server (not on the router, just allow it locally), and it should work.