@CyanPrime not sure how that's fixed it as your route inside theme.less doesn't actually point to the vanilla template. For that file to point at vanilla, you'd be looking at ../../../nodebb-theme-vanilla, but if it works then, so be it.
I fixed my own issue. Apparently some install scripts fail when run as root (or with sudo). I'm not sure why this is the case, but I got everything to work by running sudo chown -R ralph:www-data /path/to/nodebb && ./nodebb upgrade as a standard user.