This guide is continuously being updated, as reality demands updates. If you find any errors in this guide, please let us know.

This will guide you through installing the parentNode web stack on an Ubuntu client. The full stack includes Apache 2.4, PHP 8.2, MariaDB 10.6, Redis, Imagick and optionally FFmpeg for JIT video and audio conversion and wkhtmltopdf for PDF generation.

Since we are a small company and both wanted and needed a relatively advanced crossplatform develment environment, that is easy to install on Mac, Linux and Windows, our installer is fundamentally a set of shell scripts that perform all the necessary steps on your computer. You should know that while this is a achieving our internal goal, then this is also not a very safe way of creating installers. We circumvent most safety measures by installing as we do and this grants us the freedom to create a unique environment setup, that pleases our needs. Don't worry, it is a very well proven concept and you can easily read every bit of the code that is run on GitHub.

The installation will probably also work on other Linux distributions, but has not been tested – so please try at your own expense and report your findings back to us.

The install process will be handled by the install script. You just need to get it started.

Installation of the web stack

Open terminal and run the following command:

bash <(curl -s https://parentnode.dk/installers/install-ubuntu-stack.txt)

The setup script will guide you through the rest of the installation. Make sure you stay online during the setup process, which will take approximately 5-20 minutes, depending on your computer/internet connection.

Note:

Yup, it's that easy.

This will load a small script from this website and execute it. That, in turn, will clone the install tools and initialize the install process. Along the way, you will be asked to make some decisions and provide some relevant information.

Lean back. When the script states that the Setup is completed you are done. Congratulations. Enjoy the parentNode realm.

Read more about janitor and the parentNode stack layout.

When the script has ended successfully, you'll be given a new login command including the specified SSH port, and the server will be ready for site deployment.

And remember you can easily run several websites from the same server, so you don't have to set up a new server for each project.

What is the script doing?

The script is a shell script and essentially just a long list of commands. It will install and configure the server as you decide, by running all necessary commands using your input. Any input you make will only be used while the script is running and not be stored permanently anywhere. If you want to know what the install scripts are doing you can read through the code in the open source repository on GitHub.

Maintenance commands

The install script also includes a set of handy helper shorthand functions/aliases, which will be added to your bash profile for your convenience.<

A shorthand to controlling Apache. comes with stop,start and restart.

apache [stop|start|restart]

Update apache configuration (if using git webserver.conf layout).

update_conf

Go to your sites folder. Just type sites, and you'll go there.

sites

Why Ubuntu 22.04?

I have chosen Ubuntu as the Linux distribution for the parentNode stack, because of the combination of long LTS and large package availability. The LTS (Life-Time-Support) is relevant because it says something about how long into the future the current version is supported, and you don't want to have to reinstall your whole server too frequently just to keep getting updates. The large package availability means you have a very wide variation of software packages which can be added by running a simple command in the terminal.

I never access the GUI on any of my Ubuntu instances so the GUI aspect does not have any impact on my decision. 

I'm also looking into using centOS for my webservers. If anyone out there have experience or recommendations in this area, please drop me a line (martin@think.dk) or leave a comment.