Home Internet, 2025 edition

Beginnings of Broadband

In June of 2002, I signed up for my first broadband internet plan. I had very little money with which to buy equipment – and broadband internet at home was an extravagance at the time – but I couldn’t be more excited! Only $70 a month for blistering 256 kbit/s DSL with Internode, using a PCI DSL modem with drivers that crashed the computer on a semi-regular basis .. but hey, at least it wasn’t dialup.

Fibre for the Few

Home fibre internet services have been available in certain parts of Australia since 2010, with progressively more areas coming online over the following years. Through a series of questionable government decisions, the Australian national wholesale broadband provider NBNCo expanded the network by using a mix of different technologies – mostly VDSL and HFC.

Compared to these access technologies, fibre is significantly more capable and more resilient. In some ways, it’s a situation of the “haves vs. have-nots” – with the haves getting faster and more reliable home internet connections.

In the late 2010s, NBNCo made it possible to pay for an upgrade to fibre. The quotes were astronomical (into the six figures in some cases), so not many people went through with the upgrade. Reports at the time suggested there had been hundreds of applications, though only tens of actual upgrades.

Waiting for the NBN

When the NBN rollout finally reached me in April of 2020, I was lucky enough to live in an area being activated with the second-best technology type: HFC. I was finally able to get myself a “real” broadband plan – 100 Mbit/s with Aussie Broadband! Not the 1 Gbit/s the government had promised many years earlier, but a significant improvement on the increasingly unreliable 10 Mbit/s DSL I had been stuck using:

I moved home in 2021, to an apartment with a VDSL service – once again limited to no more than 100 Mbit/s. NBNCo wanted just over $8000 for the upgrade to fibre. I genuinely thought about it for more than a few seconds, but ended up politely declining..

Finally on Fibre

In late 2024, NBNCo productised a process to upgrade apartment buildings using certain types of VDSL services to fibre. It was a silly amount of money – though not nearly as silly as the $8000 figure provided to me a few years prior. I talked myself into it in early 2025, and signed on the dotted line to get the process underway.

The whole thing took four months and far too many follow-up emails .. but I ended up with an ugly GPON fibre box on the wall of my apartment, and a much much faster connection speed than the previous VDSL service – 1 Gbit/s:

Shortly after I had fibre installed, NBNCo made good on their promise to release multi-gigabit services. All of a sudden, what I’d just upgraded to was not fast enough! 🤓

Fast forward to today, a lovely tech from NBNCo replaced my fibre box with a brand new, XGS-PON capable fibre box (though the service still uses the GPON standard at the moment) – and the speeds speak for themselves:

2 Gbit/s! Not quite the 10 Gbit/s dream that the new fibre box promises, but getting there. Still, a casual 8000 times faster than that first broadband connection I had all those years ago.

Terms

Just in case some of the acronyms don’t make sense –

  • DSL – Digital Subscriber Line. Used for running slower broadband internet services over phone lines, while permitting phone calls at the same time.
  • VDSL – Very-high-bit-rate Digital Subscriber Line. Still uses phone lines, but much faster than standard DSL. Can be just as unreliable too!
  • HFC – Hybrid Fibre Coaxial. Rather than phone lines, it uses the same cabling as cable TV to more reliably offer high speed broadband internet.
  • GPON – Gigabit Passive Optical Network. A standard for fibre to the home internet services; allows for up to 2.5 Gbit/s.
  • XGS-PON – 10 Gigabit Symmetrical Passive Optical Network. A newer standard that offers up to 10 Gbit/s symmetrical speeds over fibre.
Tux the penguin watching movies on a Linux server

Plex Media Server on Debian Bookworm, Synology NAS

After mistakes were made with a previous installation, I had to completely reinstall the Linux server that I use to run Plex Media Server. For the sake of familiarity, I am using the latest version of Debian (at time of writing: Debian 12.9 “bookworm”). All media is stored on a Synology NAS, shared to the Linux server via a few NFS mounts – this adds a few extra complications that are worth being aware of.

Here are the notes I took during set up – sharing them here in case they are useful to anyone else:

Networking

Make sure that both the Linux server and the Synology NAS have fixed IP addresses and are able to communicate with each other. I’ve got mine set up on the same subnet using fixed DHCP leases, but whatever works for you.

Synology NFS sharing

Make sure the Synology NAS has the folders with your media shared via NFS. There are other options available, but NFS is probably the easiest. First, enable NFS:

Control Panel > File Services > NFS

  • Check Enable NFS service
  • Maximum NFS protocol: NFSv4.1

Then, for each of the folders you want Plex Media Server to have access to:

Control Panel > Shared Folder > select folder > Edit > NFS Permissions > Create

  • Enter IP of the Linux server
  • Check Enable asyncronous
  • Check Allow connections from non-privileged ports
  • Take note of the Mount path at the bottom of the window

Debian Install

Assuming you’re working from the base install – you’ll need a few things set up:

  • Install the nfs-common package
  • Install the gpg package (needed for automatically updating Plex)

Linux NFS mounts

Next, you need to be able to have the NFS mounts come up on boot. Keep in mind this is Debian 12 with no GUI – if you have another distribution, or if you have a GUI – there may be a better way to do this.

Create the relevant directories in /media – I used /media/nfs/Movies and /media/nfs/TV Shows

Edit the /etc/fstab file and add in the following (you’ll need to make changes to suit your environment)

# NFS mounts for Plex Media Server
192.168.x.x:/volume1/Movies /media/nfs/Movies nfs defaults 0 0
192.168.x.x:/volume1/TV\040Shows /media/nfs/TV\040Shows nfs defaults 0 0

A few notes:

  • The IP address before the : is the Synology NAS
  • The folder after the : is the mount point you noted earlier
  • If you have spaces in the directory name, use \040 in place of the space character

I had a huge amount of trouble getting the NFS mounts to come up on boot. The mount process was attempting to mount them before the DHCP client had received an IP address – even with all the various incantations to have fstab wait for the network to be available before attempting to mount!

If you also use DHCP to assign an IP address, the simple solution is to have an “exit script” for the DHCP client that runs when the IP address is bound – these scripts live in /etc/dhcp/dhclient-exit-hooks.d. Add a file with the following:

if ([ $reason = "BOUND" ])
then

mount -t nfs /media/nfs/Movies
mount -t nfs '/media/nfs/TV Shows'

fi

Reboot, make sure that you have all of the media mounted and accessible in the relevant folders before continuing.

Find out what all of the unit names for the mounts are called – run the following command:

sudo systemctl list-units -t mount

That should show you something like the following:

  UNIT                            LOAD   ACTIVE SUB     DESCRIPTION                                        
  server-nfs-Movies.mount         loaded active mounted /media/nfs/Movies
  server-nfs-TV\x20Shows.mount    loaded active mounted /media/nfs/TV Shows

You’ll need the unit names in the next step.

Install Plex Media Server

Install as per the Server Installation instructions for Linux / Ubuntu – but don’t go to the URL to complete setup yet! The installation should have created a Plex Media Server service; it needs to be updated before the next reboot – I really recommend doing this part before completing the setup.

Stop the existing server first, if needed:

sudo systemctl stop plexmediaserver.service

Add a custom Unit section to the startup script to ensure Plex Media Server is started after the NFS mounts are available:

sudo systemctl edit plexmediaserver.service

Add the following in the section indicated at the top of the file:

[Unit]
Description=Plex Media Server
After=network.target network-online.target server-nfs-Movies.mount server-nfs-TV\x20Shows.mount

Basically – add the unit names with spaces in between each for the mount points after network.target and network-online.target. Save, then start the Plex Media Server service:

sudo systemctl start plexmediaserver.service

Enable the service on startup:

sudo systemctl enable plexmediaserver.service

Finally, go to the server’s URL to complete setup. Expect this to take a while if you have a lot of media to index and create thumbnails for; the server may also crash and need a reboot a time or two – but it will settle down after the indexing is complete.

Scale inline SVG images inside HTML documents

Let’s say your designer created a beautiful SVG vector image that you want to be able to use inline in your HTML – but it’s the wrong size for where you want to use it on the page. Perhaps you need to scale it down (or up!). Here’s the easiest, fastest way to do so – without using CSS:

First, make sure your SVG uses width, height and viewBox parameters:

<svg xmlns="http://www.w3.org/2000/svg" width="116" height="184" viewBox="0 0 116 184" version="1.2">

If you don’t have a viewBox, you can add one like the example above – set the value as 0 0 width height, with all values in pixels. Similarly, if you don’t have width or height – create it from the viewBox.

Next, work out what the revised width and height of the scaled image are. An easy option for this is the Image resizing and aspect ratio calculator over at Red Route – just remember to round any decimal places in the new width and height values.

Finally – update the width and height parameters, leave the viewBox parameter at the original values, and add a preserveAspectRatio parameter – per the following example:

<svg xmlns="http://www.w3.org/2000/svg" width="25" height="40" viewBox="0 0 116 184" preserveAspectRatio="xMidYMid" version="1.2">

More documentation on the preserveAspectRatio parameter is available at MDN Web Docs.

That’s it!