Installing Grav CMS

Grav CMS

What is a CMS?

CMS stands short for Content Management System and is a term typically used in the website hosting environment.
The best well known CMS might very well be Wordpress, but there are definately alternatives out there.

Why Grav?

I was looking for an easy to use CMS that I could handle easily by writing in the Markdown language without having too much overhead. What Google threw at me was Grav, so I gave it a shot.

What is Markdown?

Markdown is a text markup language that is supposed to make annotated text readable in source but also when rendered. The following source code example

# This is my main header
## This is my subheader
Some text here with bullet points:
- a bullet point
- another bulletpoint
- ...
Some more text followed by a numbered list:
1. a numbered list item
1. another numbered list item

is already quite good to read in source code and does not require as much overhead as for example html with all its tags. Speaking of html – if a function or some formatting should be missing in Markdown, you can integrate html as well, but I guess when concentrating on the text itself you won't neccessarily miss html in most cases.

Markdown was invented by John Gruber and Aaron Swartz in 2004 according to Wikipedia.

The above source code is just a brief introduction to Markdown, for a full overview see here.

Installing Grav

I followed the instructions for installing Grav on my webhosting from the Grav dwonloads website. Those instructions are pretty straight forward:

  • download the zip-file
  • unzip it
  • copy all content to the html root directory of your webhosting via ftp
  • connect to your hosting with a webbrowser

Now, as I chose to install it with the admin plugin right away, navigating to my site would redirect me to -- and would throw a 404 site not found error at me. The redirecting to the admin-site is, as far as I understood, happening, when the admin plugin is installed but there is no user present in the installation.

After some looking into it I realized that when copying the unziped content via ftp to my hosting provider, I left out copying the hidden .htaccess-file, which is neccessary for a functioning Grav installation!
I realized this when after creating a user manually via terminal (of course I had to ssh into my webhosting to do so) as shown here and actually showing my site successfully under, I got the same 404 message when trying to click on the 2nd page in the menu -- the default main page even will give you a hint as to what could be wrong, linking to the troubleshooting below.

So, after making sure that the .htaccess was copied as well (which I got a hint for here), I got it to work.

Preparing the installion for blogging

First of all, understanding the structure of Grav is important. Everything is organized in separate folders with a Markdown file as the content. Depending on the naming of that file it will show for example as a page or a a blog post (a page normally will be just called, a blogpost, to just give an example).

It took me some trying out to understand how it really works. Currently, I have the blog started by having its separate page called Blog withblogpost items beneath it -- so you really want to specify individual posts as being an item under Advanced > Page Template. What helped me understand it better is this YouTube video.

What I am going to do is name the folders of my new posts with a date stamp, e.g. 2018-08-23-my-latest-post, just so that I can have it ordered. Guess this will make it easier when taking a glimpse on my content on disc via ssh or ftp.

Changing the header icon

Changing the header icon took some effort as well. I am planning on doing a separate blogpost on that as it involved fiddling around with an svg file on textlevel. So more on this later.

More to learn

So far I think I only scratched the surface, which is fine because I was looking for a solution that brought me from zero to a working CMS in an instant. This went well and did not take me more than a few hours (including writing this post).

There is an online documention on Grav that can be found here -- so far I found what I had to find, so there is nothing negative I can say at this stage. When looking on how anything works with Grav I guess this is the place to go to...


Research to installation only took a few hours – even though there where some obstacles in the way. So all in all the first steps where not too bad; now let's see how this system works in production.

I am looking forward to be able to do blogposts in a simple way with Markdown, no matter which device I am on (watch out for more on the actual tools I am going to use for that in a later blogpost).

What are your thoughts?

Let me know via Twitter – you can reach me with my handle @appfrosch.

Next Post