For a lot of tech enthusiasts, creating their first public page is a big achievement. A sense of accomplishment that something is now public and can be seen by anyone. You can share it with your friends and have some fun (even brag a bit about it). So as i developed today this blog i think it would be a great opportunity to share how i started this blog. š„
First of all I didnāt want or need anything fancy. A simple page that i would be able to write about my hobbies, my projects and generally my interests. Furthermore I didnāt want to pay for anything or work a lot on it. I frist thought on using my raspberry pi as a server for my blog. It sounded like a good idea to learn a bit more about hosting websites. Truth be told, wheni started reading about port forwarding, some PTSD started kicking in from my attempt to forward a port from my vpn in order to use it for a qbittorent project (more on that later). So I asked ChatGPT what would be an easier solution, and thatās when it suggested using Jekyll with GitHub pages. I had some experience with GitHub pages, but I didnāt know that I could host one page per project, which sounded pretty awesome and easy for me. I started checking on Jekyll and it seemed pretty straight forward. I also searched for some templates and voila! it was time to start working on my blog. So, letās get first things first
Based on the Jekyll documentation, You will need 3 things
For Ubuntu you can check Jekyll documentation. You need to run
sudo apt-get install ruby-full build-essential zlib1g-devThen for RubyGems
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcand finally
gem install jekyll bundlerNote: For me the final command didnāt work (the eror was It is likely that you need to grant write permissions for that path.). You can try to fix permissions inside your projectās folder (will talk about how to create one) by using
sudo chown -R $USER:$USER .
and then bundle install.
But if this doesnāt work you could do
sudo bundle install but it is not recommended.
This is a straight forward step. To make a jekyll project you run
jekyll new <YOUR_BLOG_NAME>
cd <YOUR_BLOG_NAME>
bundle exec jekyll serveThis will run your site on http://localhost:4000
Without some sazzle and dazzle, the blog seems pretty boring. Letās change that! You can check different themes on jekyllthemes.io. Some are free some are paid. I chose this clean blog theme. You can find the installation guide on the themeās page but I name the steps. So, in order to apply it to your jekyll blog you need to:
Gemfile and fing the āgem āminimaā, ā~> 2.5ā ā attribute. Change this.bundle installtheme: jekyll-theme-clean-blogbundle exec jekyll serveNow you need to check if there are certain files on your root folder.
index.htmlabout.htmlcontact.htmlposts/index.htmlI would suggest checking the documentationās demo page on how to populate them. For example on posts/index.html you can put something like
<article class="post-preview">
<a href="/blog/2025/08/13/beaver.html">
<h2 class="post-title">Beaver</h2>
<h3 class="post-subtitle">A textual domain language for machine learning applications on data streams</h3>
</a>
<p class="post-meta">
Posted by Jason Kakandris on August 13, 2025 · <span class="reading-time" title="Estimated read time">
16 mins read </span>
</p>
</article>
<hr />
<article class="post-preview">
<a href="/blog/2025/06/27/thesis-tools-copy.html">
<h2 class="post-title">Thesis tools 101</h2>
<h3 class="post-subtitle">The Tools That Helped Me Survive My Thesis</h3>
</a>
<p class="post-meta">
Posted by Jason Kakandris on June 27, 2025 · <span class="reading-time" title="Estimated read time">
19 mins read </span>
</p>
</article>
<hr />
<article class="post-preview">
<a href="/blog/2025/06/14/media-stack.html">
<h2 class="post-title">Self hosted media stack</h2>
<h3 class="post-subtitle">Start hosting your own Netflix.</h3>
</a>
<p class="post-meta">
Posted by Jason Kakandris on June 14, 2025 · <span class="reading-time" title="Estimated read time">
19 mins read </span>
</p>
</article>
<hr />
<article class="post-preview">
<a href="/blog/2025/06/06/create-blog.html">
<h2 class="post-title">Create a simple blog!</h2>
<h3 class="post-subtitle">A guide to a simple blog page.</h3>
</a>
<p class="post-meta">
Posted by Jason Kakandris on June 06, 2025 · <span class="reading-time" title="Estimated read time">
7 mins read </span>
</p>
</article>
<hr />Note Jekyll supports Liquid template tags so to use the same template for every post you can wrap the previous code around {% for post in site.posts %} {% endfor %}
You also need to configure your baseurl url email author title and description on your _config.yml file. When you do so on your terminal press
Ctr+C and then bundle exec jekyll serve
Note I couldnāt make the contact page work so I am thinking of deleting it in the future since it is not important.
In order to publish your page for free you need to upload your project to github. The easiset way to do so it to use VsCode.
Source Control (3rd icon on the left)initialize repositorymainconfigure on jekyllFinito! Your blog will be published on https://<your-github-name>.github.io/blog
Now you can add new posts, modify your pages and whenever you push to your main branch it will update your blog.
Hope this tutorial helps you create your first blog š
Below I summarize all my sources