The nuts and bolts
Written by Anthony Smith, 21 May 2020
Article was migrated from WordPress to Vanilla in March 2022 (images were lost during migration)
I thought it might be good to let people know what it is that runs this place both server specs-wise and the platform(s).
The quick and very simple overview is that it runs on an Inception Hosting SSD KVM VPS with 2GB Ram, 2 cores (burst) within Clouvider DC, running Runcloud with vanilla for the forum and Grav for the blog.
- SSD based KVM VPS.
- 2 GB Ram
- 20 GB Disk
- UK/London (Clouvider DC - Telehouse Two North)
$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 2 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 94 Model name: Intel(R) Xeon(R) CPU E3-1270 v5 @ 3.60GHz Stepping: 3 CPU MHz: 3600.008 BogoMIPS: 7200.01 Hypervisor vendor: KVM Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 4096K L3 cache: 16384K NUMA node0 CPU(s): 0,1 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat md_clear
$ free -m total used free shared buff/cache available Mem: 1992 532 826 90 634 1215 Swap: 255 127 128
Now I know 2GB Ram is not exactly lowEnd, although recent discussions did suggest that it is the plan of choice for many, on the other hand, it is not exactly a cluster of dedicated servers either, initially the forum alone was running on a 512mb ram VPS with 5GB Disk, during standard operation this was fine however during the backup cycles and busy period there were some noticeable slowdowns, knowing the future plans to also host the main LES site (this one) on the same server as well as some future plans I decided to upgrade the server to cover current and future needs, the plan base rate should I be charging myself would be €5 per month and 50% off sales are not unheard of so certainly a low-end price tag.
I went with Runcloud because I had heard good things about it and really I just wanted to get on with doing instead of messing around getting everything just right, while vanilla is fairly straight forward to set up and install the documentation does not really reflect reality and I assume that is in part because they want you to use their paid version, using Runcloud allowed me to get a good config/base setup within 3 minutes, it has a really good intuitive dash and adding a server is super simple.
Once you sign up at Runcloud you need to add a server, unless the host is specifically mentioned just pick other, in my experience any KVM based server works, I have not tried OpenVZ 7 yet but I am not aware of anything specifically that would prevent it from working.
Once you add a server you have the option of simply providing the IP and root account password or generating a self-install script, the latter is the option I took, you can then actually see the install completion percentage on the Runcloud dashboard as it progresses.
I have on a few occasions noticed on faster servers it gets stuck at 98% and it is due to waiting for redis to start because best guess a service action happens to quick so it is not in an expected state, if you get this simply running:
systemctl restart redis-server and it should spring back to life and complete seconds later.
Then you just need to add a web application:
Unless you actually want Wordpress, select 'Custom Web Application' you will then be given all the general configurable options, the defaults in most cases are going to be fine, you can change and tweak them later, a screenshot of that for illustrative purposes:
Once you have created the Web Application stack you can then create databases as required on the left, that part is ridiculously simple so I will save you the enter username/password here screenshots, then you are ready to go, Runcloud does not have an automated installer for vanilla so that was a manual install, the included vanilla .htaccess was not quite perfect so required some tweaks but nothing major.
If you want to install something else then you can refer to the script instructions or you can choose one of the ready to roll Runcloud scripts, first select your newly created web application then click on the Script Installer:
For this site I added another web application and manually deployed Grav rather than use the script installer because it is so simple and I wanted a specific version, Runcloud has a TON of great features from automatic ssl deployment, hourly backups, snapshots, 1 click restores, Git integration, file management, cron management, Services management and app portability, you can use it to push your entire site to another server in minutes.
If you are like me and you just want to get on with the end product instead of spending a week preparing the groundwork but still want a solid base to work from then Runcloud really is a great option.
Some of the dashboard shots for those that like them:
It is worth mentioning that up to a few days ago I was using the basic version of Runcloud, I recently switched to pro because I wanted the multi-server features for a staging environment for another little project, it also allowed me to do a few things again so I could grab some clean screenshots for this post, I did, however, start LES (the forum) on the free version of Runcloud.
Grav http://getgrav.org runs this site, what I have started referring to as LESB the lowendspirit blog as people are generally referring to the forum now as just LES, I wanted to use Grav because it is super lightweight, I have always found myself deploying WordPress and then regretting it when things grow later down the line and you need plugin after plugin after plugin to achieve what should be a fairly simple goal, some people love WordPress, I don't hate it, I just wanted something much lighter weight.
A better description from Wikipedia:
Grav is a free software, self-hosted content management system (CMS) written in the PHP programming language and based on the Symfony web application framework. It uses a flat-file database for both backend and frontend.
Grav is designed to have a shallow learning curve, and to be easy to set up. The focus of Grav is speed and simplicity, rather than an abundance of built-in features that come at the expense of complexity.
The name Grav is just a shortened version of the word "gravity."
Grav is the most starred PHP CMS on GitHub, with over 11,000 stars
Grav does not use MySQL or similar, it is probably the better free CMS without a full-blown database, it took me under 24 hours to get comfortable with although I have to admit I decided I it was not the right option to achieve my goals halfway through and deleted it and then later decided to give it another chance, it is a shallow learning curve it is just different enough to give you a headache initially if like me you have little patience for developers not having a crystal ball and interpreting your every need before you have them
Because of the way it has been designed it is ridiculously fast, required almost zero resources to run and the caching is super simple to handle.
Despite its lightweight design, Grav has a huge amount of tweakable option and more advanced options like proxy/reverse proxy, HTTP header control and hundreds more build directly into the UI.
One of the big things I like about Grav is that it uses markdown, one of the elements of Wordpress I never liked was the formatting could get messy, what you see in the post creation page often has no resemblance to how it looks when published, I know plugins exist to make that better than the default but plugin, plugin, plugin, with Grav however that is not an issue.
If you want to go very very lightweight you can simply do away with the admin part of Grav and just directly edit and create the pages in a super simple structure using markdown files.
# ls usr/pages/ 01.home about-contact root.md
# ls 01.home/ 01.hello-world blog_list.md extravm-30-off-recurring-sydney-australia-kvm the-nuts-and-bolts
$ ls 01.home/01.hello-world/ blog_item.md helloworld.png
If you don't use the Grav installer on Runcloud, and are testing it on one of your other servers, getting started really is as simple as grabbing the zip and unzipping it in your webroot or where ever you want to run it from then creating your admin user.
Some screenshots the 90 seconds of effort including screenshots Grav site I set up on a little 512mb nexusbytes KVM VPS:
Pick your theme, all integrated into the dash:
Add your plugins as required, although what it comes with is enough for most cases:
Then you can start adding pages, I just put a super simple theme on it but some of them are really nice:
With the base theme it looks more like this:
You can see it live at https://nexusbytes.lowendspirit.com although that link will not work for very long (sorry people of the future)
Depending on your server setup and permissions and security hardening you may not be able to install the plugins or themes directly from the web UI as I found as it requires (exec) which makes me a little bit nervous so I killed that off, the plugins are super simple to install through the command line though and every plugin or theme on the https://getgrav.org website (there are a lot) can be installed with gpm (Grav package manager) from the installation root of your Grav site much like a package distro manager you simple run:
bin/gpm install packagename
That is the overview of the nuts and bolts of this place and the forum, I do plan on doing a more in-depth look at Grav in the future if there is any interest as I think it would be a great platform for the super tiny servers out there, some 64mb VPS plans do exist and it would be very interesting to see what people could produce with Grav
I am not the worlds best writer I am sure there is room for improvement which will come in time.
Thanks for reading, happy to answer any questions.