5 ways to deploy code when you’re a server ignoramus

I don’t mean to be insulting—you clicked on this because you know in your heart of hearts, one way or another, that there’s a little bit of server ignoramus in you.

Hey, I’m no different.

But, using a virtual private server (VPS) to build amazing things online doesn’t have to be difficult. Sure, you can spend a decade become a “good” sysadmin, you can hack something together that’s good enough, or you can use one of the many tools that others have built to make building things on a VPS far easier than it used to be.

Becoming server wise will come in time—for now, let’s look at some of my favorite tools and tips that help those without expert server knowledge to deploy amazing blogs, websites, or apps in a breeze. Wisdom will come with time, and in the meantime, we can embrace our… ignoramusness?

1. Use worry-free flat-file content management systems (CMS)

A flat-file CMSs is different from WordPress, for example, because it doesn’t rely on a database to store your posts or other information. Instead, the CMS compiles all this information together into plain .html files. All you need is a basic web server to host a flat-file blog or website.

I’ve been in love with Hugo lately, namely because it makes developing locally a breeze. A single command will launch a local web server and automatically inject changes into your browser without a reload.

Building as a server ignoramus: The Hugo CMS

Replicating all the features of your standard WordPress blog+theme will take some time, but Hugo cuts out all the headache of having to rely on a database to store your posts and images. When it’s all HTML and standard assets like images and CSS files, there are far fewer moving parts and far fewer points of potential failure.

If Hugo doesn’t fit the bill, there’s plenty of other flat-file CMSs in the sea. Each of these allows for natural development and deployment, all without worrying about connecting databases to web servers and keeping the whole thing running.

2. Check out a beginner’s guide to using your VPS

Sometimes, you need someone to walk you through from the very beginning. I’ve always been a big fan of Servers for Hackers, and there are tons of resources like Phil McKerracher’s extensive tutorial, or My First 5 Minutes On A Server; Or, Essential Security for Linux Servers and My First 10 Minutes On a Server – Primer for Securing Ubuntu.

If those didn’t do the trick, why not check out our very own ultimate beginner’s guide that we put together just a few weeks ago?

3. Abstract complexity away with Docker (Compose)

One of the advantages of using Docker to deploy services on your VPS is that you don’t have to worry about installing all the prerequisites. How does that work?

When you run docker run or an equivalent docker-compose up -d command for the first time, Docker downloads an image, which is basically like a series of commands to install and configure various services. For example, the official WordPress image contains commands to not only download the latest version of WordPress, but also sets up the LAMP stack necessary to run it.

By handing off much of the configuration to the Docker image developer, you get a working installation without much of the hassle.

For example, you can use Docker Compose and an Nginx reverse proxy to self-host a variety of services, from your own Git server to a Dropbox alternative like Nextcloud.

4. Take advantage of auto-installers

If you’re a WordPress kind of person but don’t want to go through the hassle of installing a LAMP/LEMP stack beforehand, give EasyEngine a shot. With EasyEngine, you don’t have to worry about setting up a LAMP/LEMP stack. Instead, EasyEngine installs all the prerequisites, connects them, and even grabs you a Let’s Encrypt SSL certificate automatically.

Or, for a modern WordPress alternative, take a look at Ghost. Ghost’s terminal-based installer is a little more involved than EasyEngine’s, but the blogging experience you get after the fact is one of the best out there.

Building as a server ignoramus: The Ghost CMS

5. Discover a love for Go-based projects

One of the advantages of Go projects is that it’s trivial for developers to package them into a single binary. No more cloning repositories and combing documentation to figure out just the right installation procedure—download and load up with ./.

For example, you can install and run Gitea on your VPS with a few beginner-level commands:

wget -O gitea https://dl.gitea.io/gitea/1.5.0/gitea-1.5.0-linux-amd64
chmod +x gitea
./gitea web

Since you never really “installed” Gitea, in a certain sense, and you can kill the server using Ctrl+C, it’s easy to try it out without consequence. If Gitea (or any other app) isn’t to your liking, delete the binary and move on.

To find more Go apps, check out Awesome Go, a massive repository of frameworks, tools, and libraries built in the language.

Bonus: Don’t install a control panel

I know, I know. We have an entire post dedicated to cPanel alternatives, but I recommend that a genuine server ignoramus not install a control panel. You need to start learning at some point, and a control panel only abstracts away from your sysadmin “journey.”

If you’re running dozens of servers, a control panel may make sense, but so would some solid configuration management like what Ansible provides.

The takeaway: Let others do the work for you

The free and open source (FOSS) community is a generous one—be sure to take advantage of them! Building on a VPS doesn’t have to be hard if you’re willing to “outsource” some of the development costs to others who have willingly handed out their secrets to the internet at large.

By getting your hands dirty—but only to a certain extent—you’ll start to level yourself up with new VPS knowledge without all the headaches. And then, with every new server and every new application, you can push yourself toward a fuller and more proficient understanding of how these miraculous blinking cursors actually work.

Happy (simple) hacking!