User Tools

This is an old revision of the document!


External Server

The external server is used for a few different tasks:

  • To provide access to the home server from outside, using a mix of Wireguard tunnel and NGINX reverse proxy
  • To provide access to public services, like email server of public websites
  • To let you SSH'in to yout home server, using Wireguard and NFT rules

First of all, the scope of the external server is to provide a static and public IP address for you to use. This IP should also not be in a residential IP block, so you need to rent something from an official hoster.

Selecting an external server

The best choice would be a physical hardware with unlimited bandwidth and data cap, and with free network attached console.

Now stop dreaming and get real.

There are different tiers of servers, and i assume they are all hosted on some networking provider premises (= outside your home):

  1. Your own hardware
  2. You rent some real hardware
  3. You rent some virtual machine on shared hardware (VPS)

The first option is probably stupid, as it brings on you the burden of hardware failures and maintenance. It make sense only when you can host it very close to you, where you can phisically go when needed, and if you can do it for free. Renting rack space can quickly cost as much as renting the entire server hardware itself.

The second option is the best for privacy, since you actually are the only user on the hardware itself, but it is slightly more expensive. And you can usually install the OS you like.

The last option is usually the cheapest option, the only drawback is that the underlying hardware is shared between many VPSes. Also often you cannot choose your OS.

Whatever option you choose, depending on budget and whatever preference you have, these are the minimum requirements you want to focus on:

  • public IP address (owuld be meaningless utherwise!)
  • enough bandwidth (10Mbit/s or better)
  • possibly no data-cap, or a reasonable one (100Gbit/months should be fine for light usage)
  • Linux operating system
  • Remote SSH access to the server (or some kind of VDI access)

Things you might want to consider (price for value):

  • Access to network console, for when the server doesn't boot and you need good old keyboard&mouse
  • Freedom to install your own OS (which will be Gentoo of course!)

Things that don't need money spent on:;

  • Storage (no data will be stored locally, only enough to install OS is needed)
  • RAM (8Gb should be more than enough, no services will run on the machine)
  • CPU (the smallest one will be more than capable to route IP packets)

Of course, pump up storage if you plan to use the server also for offsite-backup storage.

External server Setup

I assume you can install your own OS, so let's install Gentoo. Follow the Quick & Dirty Gentoo Installation but on your external server.

You don't need to install anything beside the bare minimum of the basic text-only installation.

Do not create any additional users except one unprivileged user, because you don't want to login as root remotely.

Required packages

PHP, NGINX, wireguard-tools, logrotate, nfs-utils

Filesystem sharing with internal server

emerge -vp nfs-utils

Create /etc/conf.d/nfs:

nfs
OPTS_RPC_NFSD="8 -H 10.70.0.2 -N 3 -N 4.0 -N 4.1 -V 4.2"

to bind NFS to the wireguard interface and disable all legacy NFS versions

Networking

Having an external server, like a VPS (Virtual Private Server) let you bypass CG-NAT (carrier-grade NAT) and give you the access to a real public, static IP address. This is mandatory, in my opinion, for many reasons.

I will detail more on this topic in the future, for the moment refer to the following pages:

This website uses technical cookies only. No information is shared with anybody or used in any way but provide the website in your browser.

More information