Dev portfolio / infrastructure / systems

Systems-minded developer building calm, reliable infrastructure.

I design and operate Linux-based systems, automation flows, and practical internal platforms with a bias toward clean delivery and clear observability.

$ hostname
mariusserbanica.co.uk

$ role
linux admin / infra / support / builder

$ services
blog, portfolio, projects, homelab, self-hosted

LinkedIn

mariusserbanica

profile
Marius Serbanica LinkedIn profile photo

Professional profile, experience highlights, and recruiter-friendly contact path.

Open LinkedIn profile

Visitors

1160 total
  • 🇬🇧 GB 435
  • 🇺🇸 US 359
  • 🇨🇳 CN 58
  • 🇨🇦 CA 56
  • 🇸🇬 SG 48
  • 🇫🇷 FR 38
  • 🇩🇪 DE 26
  • 🇹🇷 TR 19
  • 🇵🇹 PT 15
  • 🇷🇺 RU 14

35 countries tracked overall.

Recent Blog Posts

View all posts
Zorin OS: Ditch Windows and switch to Linux NOW!

Installing and Tweaking Zorin OS… I tend to be fairly picky when it comes to Linux distributions. I’m not interested in something flashy for the sake of it — I want stability, sane defaults, good hardware support, and the ability to tweak things without the OS fighting back. With that in mind, I decided to…

Bit of tea with GITea!

I Self-Hosted My Own Gitea Instance on a Homelab – And Why You Should Too If you are a developer, tinkerer, or one who values having control of your data, well, you probably have thought about hosting your own version control system. It all started for me when I set up Gitea on my homelab….

How I Got qwebirc Running in Docker

How I Got qwebirc Running in Docker (2025-proof, no Apache, works with Cloudflare Tunnel) qwebirc is awesome, but it’s Python 2 + Twisted era software. On modern hosts that means: Here’s exactly what I did to make it work, end-to-end. 1) Build a Python-2/Twisted image from the Debian archive Create ~/qwebirc-docker/Dockerfile: Build it: 2) First…

PiVPN / WireGuard Complete Setup

This tutorial will show you how to install your own personal Raspberry Pi-based VPN into your network using PiVPN and WireGuard. Why would you want to do this? A number of reasons – remote access to your local servers and files, surfing through your own Internet connection when on the road, and just general good…

Automation – How to Automatically Clean Up Unused Docker Images

Tired of constantly cleaning up unused Docker images that accumulate over time? Here’s a simple and effective solution. Login to your server terminal where you’re hosting docker You can add a prune job on your Docker host that: Runs automatically at regular intervals (e.g., daily/weekly) Prunes all unused images Add the following line to your…

Featured Projects

All projects

PHP / SQLite

Vibe-Coded Portfolio Platform

Custom portfolio platform built through iterative vibe coding. It includes a blog migration from the legacy site, project pages, archive navigation, admin tooling, social/profile…

DNS

Transforming a Mini-PC to a Firewall/Router Appliance

To repurpose a mini-PC into a robust and secure firewall/router appliance using OPNSense, an open-source firewall and routing platform, enhancing network security and management c…

mSL

Turn Based Wrestling Simulation Text Game (written in mSL)

The purpose of this project was to create a text-based, turn-based simulation wrestling game for IRC (Internet Relay Chat) using mSL (mirc scripting). The game was designed to be…

Latest Certifications

View list
Linux Administration Track Add your issuer

Linux Tips

Cheat sheet
ip -br a List interfaces and assigned IP addresses in a compact view.
df -h Display mounted filesystem usage with human readable sizes.
du -sh * Summarize the size of items in the current directory.
systemctl restart nginx Restart a systemd managed service.
journalctl -fu nginx Stream recent and new log entries for a service.
journalctl -u nginx -n 100 --no-pager Print the last 100 log lines for a service without paging.