
+ Cyber Defence on the Digital Frontline: A Mission with NATO +
+An inside look into Howest’s participation in NATO’s world-leading cyber defence …
+diff --git a/content/project/project-2.md b/content/project/project-2.md
new file mode 100644
index 0000000..db985f2
--- /dev/null
+++ b/content/project/project-2.md
@@ -0,0 +1,81 @@
+---
+
+title: "Building My Hugo Website on a VPS"
+image: "/images/project/project-1.jpg"
+date: "2025-05-29 00:00:00 +0000 UTC"
+description: "How I built and deployed my personal blog using Hugo and hosted it on a minimal Alpine Linux VPS."
+draft: false
+
+---
+
+I built my personal blog using [Hugo](https://gohugo.io/) and deployed it on a lightweight Alpine Linux VPS. I chose this setup to have full control, keep things simple, and avoid bloated platforms or services. Here’s how the process went from site generation to live deployment.
+
+
+
+### Creating the Hugo Site
+
+On my development machine, I created a new Hugo site:
+
+```
+hugo new site howest-blog
+```
+
+I used the `professors-hugo` theme and copied its `exampleSite` content into my project. I customized the layout, structure, and styling by editing content files, SCSS in `assets/scss/custom.scss`, and partial templates in the theme directory.
+
+All content lives under `content/`, with separate folders for `blog/` and `project/`, each containing `.md` files with front matter and Markdown content.
+
+
+
+### Customization
+
+I edited the `config/_default/hugo.toml` to configure site parameters like the base URL, theme, language, and menus. SCSS and image assets go in `assets/`, and are processed by Hugo's pipeline. Static files like favicons are placed in `static/`.
+
+To preview the site locally:
+
+```
+hugo server
+```
+
+To build the static site:
+
+```
+hugo
+```
+
+This generates everything in the `public/` folder.
+
+
+
+### VPS Deployment
+
+I rented a minimal Alpine Linux VPS and installed only what I needed. After setting up SSH and a basic nginx web server, I copied the `public/` folder over using `scp`:
+
+```
+scp -r public/* user@my-vps:/var/www/html
+```
+
+On the VPS, I installed nginx:
+
+```
+apk add nginx
+```
+
+And configured `/etc/nginx/conf.d/default.conf` to serve files from `/var/www/html`. Then I enabled and started nginx:
+
+```
+rc-service nginx start
+rc-update add nginx
+```
+
+Now my Hugo site is live and served directly as static files—no backend, no database, just HTML, CSS, and JS.
+
+
+
+### Why Alpine + Hugo?
+
+Alpine Linux is minimal and fast, perfect for serving static sites with low resource usage. Combined with Hugo’s speed and flexibility, I get a complete, performant setup that I fully control. It’s secure, lightweight, and easy to update—just rebuild and re-upload the `public/` folder.
+
+
+
+This setup is perfect if you want full control and minimal overhead for a personal blog or portfolio.
+
diff --git a/hugo_stats.json b/hugo_stats.json
index a921b6a..cadc941 100644
--- a/hugo_stats.json
+++ b/hugo_stats.json
@@ -270,6 +270,8 @@
"caption-an image caption",
"code-and-syntax-highlighting",
"contact",
+ "creating-the-hugo-site",
+ "customization",
"cyber-defence-on-the-digital-frontline-a-mission-with-nato",
"drmdtool",
"email",
@@ -318,9 +320,11 @@
"toggler",
"ui-previews",
"unordered-list",
+ "vps-deployment",
"web-ui--cli",
"what-even-is-locked-shields",
"whats-new",
+ "why-alpine--hugo",
"why-it-mattered",
"you-cant-prepare-for-this",
"youtube-video"
diff --git "a/public/categories/\\cybersecurity-event-recap/index.xml" "b/public/categories/\\cybersecurity-event-recap/index.xml"
new file mode 100644
index 0000000..aa131d6
--- /dev/null
+++ "b/public/categories/\\cybersecurity-event-recap/index.xml"
@@ -0,0 +1,11 @@
+
+
Category
+ +An inside look into Howest’s participation in NATO’s world-leading cyber defence …
+A firsthand account of the Howest Locked Shields debrief: chaos, lessons, and …
+Category
+ +A firsthand account of the Howest Locked Shields debrief: chaos, lessons, and …
+Category
+ +An inside look into Howest’s participation in NATO’s world-leading cyber defence …
+Category
+ +A firsthand account of the Howest Locked Shields debrief: chaos, lessons, and …
+How I built and deployed my personal blog using Hugo and hosted it on a minimal Alpine Linux VPS.
+Howest’s ongoing commitment to world-class cybersecurity training took center stage again as six lecturers from the Cyber Security program joined forces with experts from Latvia, Luxembourg and Belgium in one of NATO’s most intensive simulations: the Locked Shields exercise, hosted by the Cooperative Cyber Defence Centre of Excellence (CCDCOE). Now in its fifth year of participation, the Howest team shared their firsthand experiences at a special evening talk at Howest Bruges.
+Locked Shields is no ordinary simulation. It is a full-scale, live-fire cyber defence exercise involving more than 6,000 machines and a narrative scenario so detailed it includes geopolitics, disinformation and even fictional countries. This year, the Blue Team 03 (our team) defended a simulated nation’s critical infrastructure including power plants, satellites, 5G networks and banking systems, all while under constant attack from a coordinated Red Team using automated scripts and over 28,000 attacks across two days.
+And yes, every team (Red, Blue, Yellow, White) uses Ansible. For everything.
+What do you do when a rogue process might be malware, or maybe just a poorly named service? What happens when your teammate refuses to act unless something is “officially malicious”? The team faced cultural clashes, communication breakdowns and stress-testing of both systems and people.
+The exercise required more than technical fixes. It demanded communication with simulated commanders, media and public stakeholders. Reporting became just as important as patching. It taught participants how to translate technical impact into real-world consequences. Not “port 8443 unreachable”, but “our air defence system is degraded, and we cannot fly planes”.
+A new but powerful presence in the simulation was the Black Team, a rapid-response unit deployed when problems became too complex for any single team. Acting like special forces, they jumped in when incidents crossed team boundaries or demanded unconventional solutions. Their mission was to find out what was happening, assess the impact and suggest fast, creative responses. Introduced just last year, this team quickly proved its value again in 2025. They even embraced the role with style — “you can wear sunglasses inside” became their unofficial motto.
+Their presence underlined a critical lesson: not every problem fits neatly within a team’s silo. Real-world defence requires flexibility, speed and lateral thinking.
+There were plenty of mishaps. Misfired scripts, team mix-ups, and one case where a DNS setup from a previous year was reused by mistake. Someone tried renaming cut
to shutdown
, breaking essential operations until it was fixed. Systems rebooted into chaos, a manual was uploaded to public GitHub, and the team had to quickly learn the difference between symbolic links and real binaries.
From detecting malware with Velociraptor and Q9, to encountering teammates who took orders literally, the learning was intense. One participant noted that while Belgian and Luxembourg teams prioritized knowledge sharing, others preferred strict protocol. This highlighted cultural differences and the importance of interpersonal skills.
+The biggest lesson? You are never fully prepared. Every iteration of Locked Shields is different. But each one sharpens not only your skills, but also your ability to function as a team under extreme conditions.
+This experience directly impacts the classroom. Inspired by the exercise, Howest is introducing new hands-on courses like “Glutamine” in semester five. Students will be dropped into realistic broken networks, with misconfigurations, fake firewalls and simulated threats. It is chaos, but controlled. And that is the point.
+As one speaker said: “You don’t win Locked Shields. You just survive it better than the rest.”
+The exercise teaches more than just cybersecurity. It builds trust. It proves that knowing your teammates can be as important as knowing the tools. Whether that comes from a shared flight or a pre-exercise barbecue, it all matters when the pressure hits.
+Want to see how cyber defence works in real life? This is it.
+How I built and deployed my personal blog using Hugo and hosted it on a minimal Alpine Linux VPS.
+ + Discover +Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea -commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+I built my personal blog using Hugo and deployed it on a lightweight Alpine Linux VPS. I chose this setup to have full control, keep things simple, and avoid bloated platforms or services. Here’s how the process went from site generation to live deployment.
Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea -commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+On my development machine, I created a new Hugo site:
+hugo new site howest-blog
+
I used the professors-hugo
theme and copied its exampleSite
content into my project. I customized the layout, structure, and styling by editing content files, SCSS in assets/scss/custom.scss
, and partial templates in the theme directory.
All content lives under content/
, with separate folders for blog/
and project/
, each containing .md
files with front matter and Markdown content.
When referring to Lorem ipsum, different expressions are used, namely fill text , fictitious text , blind text or placeholder text -in short, its meaning can also be zero, but its usefulness is so clear as to go through the centuries and resist the ironic -and modern versions that came with the arrival of the web.
+I edited the config/_default/hugo.toml
to configure site parameters like the base URL, theme, language, and menus. SCSS and image assets go in assets/
, and are processed by Hugo’s pipeline. Static files like favicons are placed in static/
.
To preview the site locally:
+hugo server
+
To build the static site:
+hugo
+
This generates everything in the public/
folder.
I rented a minimal Alpine Linux VPS and installed only what I needed. After setting up SSH and a basic nginx web server, I copied the public/
folder over using scp
:
scp -r public/* user@my-vps:/var/www/html
+
On the VPS, I installed nginx:
+apk add nginx
+
And configured /etc/nginx/conf.d/default.conf
to serve files from /var/www/html
. Then I enabled and started nginx:
rc-service nginx start
+rc-update add nginx
+
Now my Hugo site is live and served directly as static files—no backend, no database, just HTML, CSS, and JS.
Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea -commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+Alpine Linux is minimal and fast, perfect for serving static sites with low resource usage. Combined with Hugo’s speed and flexibility, I get a complete, performant setup that I fully control. It’s secure, lightweight, and easy to update—just rebuild and re-upload the public/
folder.
Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea -commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+This setup is perfect if you want full control and minimal overhead for a personal blog or portfolio.