{"id":74,"date":"2026-09-23T21:52:50","date_gmt":"2026-09-23T19:52:50","guid":{"rendered":"https:\/\/kiob.ch\/?page_id=74"},"modified":"2026-10-08T16:51:40","modified_gmt":"2026-10-08T14:51:40","slug":"project-journey","status":"publish","type":"page","link":"https:\/\/kiob.ch\/en\/project-journey\/","title":{"rendered":"Project Journey"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"74\" class=\"elementor elementor-74\">\n\t\t\t\t<div class=\"elementor-element elementor-element-j-root e-con-full e-flex e-con e-parent\" data-id=\"j-root\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-j-side-orientation-css elementor-widget elementor-widget-html\" data-id=\"j-side-orientation-css\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n@media (min-width: 768px) and (max-width: 1024px) and (orientation: portrait) {\n  .elementor-74 .elementor-element.elementor-element-j-side { display: none !important; }\n}\n<\/style>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-j-topbar e-con-full e-flex e-con e-child\" data-id=\"j-topbar\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-j-brand-group e-con-full e-flex e-con e-child\" data-id=\"j-brand-group\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-j-logo elementor-widget-tablet__width-initial elementor-widget elementor-widget-image\" data-id=\"j-logo\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/kiob.ch\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"740\" height=\"277\" src=\"https:\/\/kiob.ch\/wp-content\/uploads\/2026\/09\/KIOB_Logo_original_transparent.png\" class=\"attachment-large size-large wp-image-17\" alt=\"\" srcset=\"https:\/\/kiob.ch\/wp-content\/uploads\/2026\/09\/KIOB_Logo_original_transparent.png 740w, https:\/\/kiob.ch\/wp-content\/uploads\/2026\/09\/KIOB_Logo_original_transparent-300x112.png 300w\" sizes=\"(max-width: 740px) 100vw, 740px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-j-brand-label elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-widget elementor-widget-heading\" data-id=\"j-brand-label\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Project Journey<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-j-home elementor-widget elementor-widget-heading\" data-id=\"j-home\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/kiob.ch\/\">Home<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-j-topbar-flex-fix elementor-widget elementor-widget-html\" data-id=\"j-topbar-flex-fix\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>.elementor-74 .elementor-element.elementor-element-j-brand-label{flex-grow:1 !important;flex-shrink:1 !important;width:auto !important;max-width:none !important;}.elementor-74 .elementor-element.elementor-element-j-home{flex-shrink:0 !important;}<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-j-row e-con-full e-flex e-con e-child\" data-id=\"j-row\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-j-side e-con-full elementor-hidden-mobile e-flex e-con e-child\" data-id=\"j-side\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-j-side-h elementor-widget elementor-widget-heading\" data-id=\"j-side-h\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\">EINTR\u00c4GE<\/span>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-j-side-list elementor-widget elementor-widget-shortcode\" data-id=\"j-side-list\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><style>.kiob-journey-sidebar-list{display:flex;flex-direction:column;gap:24px;}.kiob-journey-sidebar-item{display:flex;flex-direction:column;gap:2px;text-decoration:none;}.kiob-journey-sidebar-date{font-family:Manrope,sans-serif;font-size:12px;font-weight:600;color:#6B6357;}.kiob-journey-sidebar-title{font-family:Manrope,sans-serif;font-size:13px;font-weight:400;color:#6B6357;}.kiob-journey-sidebar-item.is-current .kiob-journey-sidebar-date{color:#1b3c46;font-weight:700;}.kiob-journey-sidebar-item.is-current .kiob-journey-sidebar-title{color:#141413;font-weight:600;}<\/style><div class=\"kiob-journey-sidebar-list\"><a class=\"kiob-journey-sidebar-item is-current\" href=\"#entry-358\"><span class=\"kiob-journey-sidebar-date\">Week 7 \u00b7 28 September \u2013 4 October 2026<\/span><span class=\"kiob-journey-sidebar-title\" data-no-translation>A new router, twelve hours of resilience training and the art of staying patient<\/span><\/a><a class=\"kiob-journey-sidebar-item\" href=\"#entry-359\"><span class=\"kiob-journey-sidebar-date\">Week 6 \u00b7 21\u201327 September 2026<\/span><span class=\"kiob-journey-sidebar-title\" data-no-translation>Moving into our own home<\/span><\/a><a class=\"kiob-journey-sidebar-item\" href=\"#entry-360\"><span class=\"kiob-journey-sidebar-date\">Week 5 \u00b7 14\u201320 September 2026<\/span><span class=\"kiob-journey-sidebar-title\" data-no-translation>A door to the outside world<\/span><\/a><a class=\"kiob-journey-sidebar-item\" href=\"#entry-361\"><span class=\"kiob-journey-sidebar-date\">Week 4 \u00b7 7\u201313 September 2026<\/span><span class=\"kiob-journey-sidebar-title\" data-no-translation>It was only supposed to be a communication tool<\/span><\/a><a class=\"kiob-journey-sidebar-item\" href=\"#entry-362\"><span class=\"kiob-journey-sidebar-date\">Week 3 \u00b7 31 August \u2013 6 September 2026<\/span><span class=\"kiob-journey-sidebar-title\" data-no-translation>From consumer to developer<\/span><\/a><a class=\"kiob-journey-sidebar-item\" href=\"#entry-363\"><span class=\"kiob-journey-sidebar-date\">Week 2 \u00b7 24\u201330 August 2026<\/span><span class=\"kiob-journey-sidebar-title\" data-no-translation>What else can a NAS do besides store files?<\/span><\/a><a class=\"kiob-journey-sidebar-item\" href=\"#entry-364\"><span class=\"kiob-journey-sidebar-date\">Week 1 \u00b7 17\u201323 August 2026<\/span><span class=\"kiob-journey-sidebar-title\" data-no-translation>How do you get a NAS online without inviting the entire internet in?<\/span><\/a><\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-j-main e-con-full e-flex e-con e-child\" data-id=\"j-main\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-j-first-live elementor-widget elementor-widget-shortcode\" data-id=\"j-first-live\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><link rel=\"stylesheet\" href=\"https:\/\/kiob.ch\/wp-content\/uploads\/elementor\/google-fonts\/css\/quicksand.css\"><style>\n            .kiob-journey-list { width: 100%; max-width: 100%; box-sizing: border-box; }\n            .kiob-journey-entries { width: 100%; max-width: 100%; display: block; }\n            .kiob-journey-entry {\n                display: block;\n                width: 100%;\n                max-width: 100%;\n                box-sizing: border-box;\n                float: none;\n                clear: both;\n            }\n            .kiob-journey-entry + .kiob-journey-entry {\n                margin-top: 40px;\n            }\n            .kiob-journey-entry-date {\n                display: block;\n                font-size: 12px;\n                font-weight: 700;\n                line-height: 12px;\n                color: #1b3c46;\n                font-family: Quicksand, sans-serif;\n                margin: 0 0 10px 0;\n            }\n            .kiob-journey-entry-title {\n                display: block;\n                font-size: 18px;\n                font-weight: 700;\n                line-height: 1.25;\n                font-family: Quicksand, sans-serif;\n                color: #141413;\n                margin: 0 0 10px 0;\n            }\n            .kiob-journey-entry-body {\n                display: block;\n                width: 100%;\n                max-width: 100%;\n                box-sizing: border-box;\n                font-size: 16px;\n                font-weight: 400;\n                line-height: 21px;\n                letter-spacing: 0;\n                color: #141413;\n                font-family: Quicksand, sans-serif;\n            }\n            .kiob-journey-entry-body p {\n                display: block;\n                width: 100%;\n                margin: 0 0 10px 0;\n            }\n            .kiob-journey-entry-body p:last-child { margin-bottom: 0; }\n            .kiob-journey-entry-body--clamped {\n                display: -webkit-box;\n                -webkit-line-clamp: 3;\n                -webkit-box-orient: vertical;\n                overflow: hidden;\n            }\n            .kiob-journey-entry-body--clamped.is-expanded {\n                display: block;\n                -webkit-line-clamp: unset;\n                overflow: visible;\n            }\n            .kiob-journey-entry-toggle {\n                display: inline-block;\n                margin-top: 8px;\n                padding: 0;\n                border: none;\n                background: none;\n                font-family: Quicksand, sans-serif;\n                font-size: 14px;\n                font-weight: 600;\n                color: #1b3c46;\n                text-decoration: underline;\n                text-underline-offset: 2px;\n                cursor: pointer;\n            }\n            .kiob-journey-entry-toggle:hover { color: #141413; }\n        <\/style><script>(function(){\n            if (window.__kiobJourneyToggleBound) return;\n            window.__kiobJourneyToggleBound = true;\n            document.addEventListener('click', function(e){\n                var btn = e.target.closest('.kiob-journey-entry-toggle');\n                if (!btn) return;\n                var body = btn.previousElementSibling;\n                if (!body || !body.classList.contains('kiob-journey-entry-body--clamped')) return;\n                var expanded = body.classList.toggle('is-expanded');\n                btn.setAttribute('aria-expanded', expanded ? 'true' : 'false');\n                \/\/ Beide Beschriftungen stehen im HTML (damit TranslatePress sie uebersetzt), hier nur umschalten.\n                var more = btn.querySelector('.kiob-toggle-more'), less = btn.querySelector('.kiob-toggle-less');\n                if (more && less) { more.hidden = expanded; less.hidden = !expanded; }\n            });\n        })();<\/script><div class=\"kiob-journey-list\"><div class=\"kiob-journey-entries\"><div class=\"kiob-journey-entry\" id=\"entry-358\"><p class=\"kiob-journey-entry-date\">Week 7 \u00b7 28 September \u2013 4 October 2026<\/p><h2 class=\"kiob-journey-entry-title\" data-no-translation>A new router, twelve hours of resilience training and the art of staying patient<\/h2><div class=\"kiob-journey-entry-body\" data-no-translation><p class=\"has-medium-font-size\"><em>Or: How a simple port forwarding problem turned into an unexpected professional development course.<\/em><\/p>\n<p class=\"has-medium-font-size\">All we wanted was to modernise our internet connection and finally make KIOB accessible to the outside world. A new router, a few settings, and job done.<\/p>\n<p class=\"has-medium-font-size\"><em>How terribly optimistic of us.<\/em><\/p>\n<p class=\"has-medium-font-size\">Our new Salt Wi-Fi 7 router was supposed to provide a reliable connection to our own server. Unfortunately, the activation process suggested that technology had other ideas. After several enquiries and the prospect of an engineer&#8217;s visit, the internet finally started working again on 2 October. Surely the difficult part was over?<\/p>\n<p class=\"has-medium-font-size\"><em>Oh, you sweet summer child.<\/em><\/p>\n<p class=\"has-medium-font-size\"><strong>Port forwarding and other tests of patience<\/strong><\/p>\n<p class=\"has-medium-font-size\">Our website runs on a UGREEN NAS with WordPress, Docker and a reverse proxy. To make kiob.ch accessible from the outside, incoming requests need to reach our server through ports 80 and 443. Port 80 could be configured but remained inaccessible from outside. Port 443 was occasionally rejected as an invalid port number.<\/p>\n<p class=\"has-medium-font-size\"><em>Quite an achievement, really.<\/em><\/p>\n<p class=\"has-medium-font-size\">So we checked the settings and called Salt. Several times. A fascinating routine soon emerged: a new call, a new person, the same explanation of port forwarding. And again. And once more.<\/p>\n<p class=\"has-medium-font-size\">After approximately twelve hours on the phone, we appeared to have completed not only a networking investigation but also an intensive course in applied resilience.<\/p>\n<p class=\"has-medium-font-size\"><strong>IPv4, IPv6 and yet another subscription<\/strong><\/p>\n<p class=\"has-medium-font-size\">Our investigation suggested restrictions affecting incoming IPv4 connections. Salt offered an additional public IPv4 address for CHF 9.95 per month. Naturally. Another subscription.<\/p>\n<p class=\"has-medium-font-size\"><em>How delightful.<\/em><\/p>\n<p class=\"has-medium-font-size\">We decided to explore IPv6 first. The relevant access rules were configured, and we worked on DNS and DynDNS with Infomaniak. The AAAA record was temporarily removed until IPv6 accessibility could be properly tested.<\/p>\n<p class=\"has-medium-font-size\">The infrastructure was gradually taking shape. Unfortunately, the website was still not publicly accessible.<\/p>\n<p class=\"has-medium-font-size\"><em>Patience, apparently, is a technical requirement.<\/em><\/p>\n<p class=\"has-medium-font-size\"><strong>Why go to all this trouble?<\/strong><\/p>\n<p class=\"has-medium-font-size\">Of course, we could simply host our website with a conventional hosting provider. But KIOB is intended to become rather more than a homepage. We&#8217;re building our own infrastructure for applications and AI-powered workflows. Docker keeps the services separate, the reverse proxy manages public access, and our internal AI Office with Sofia remains safely tucked away in the background.<\/p>\n<p class=\"has-medium-font-size\">This gives us greater control and independence. It also means taking responsibility for the technical side of things ourselves. And occasionally enjoying twelve hours of complimentary professional development courtesy of Salt.<\/p>\n<p class=\"has-medium-font-size\"><strong>And next week?<\/strong><\/p>\n<p class=\"has-medium-font-size\">The new router is running, the network problems have been narrowed down, and our DNS configuration is prepared. Now comes the crucial step: making kiob.ch genuinely accessible to the public. Whether the internet will cooperate this time remains to be seen.<\/p>\n<p class=\"has-medium-font-size\">One thing, however, is certain. We can now add a new subject to our internal training programme: Applied Resilience in Network Engineering. Twelve hours of practical experience. Certificate still pending.<\/p>\n<p class=\"has-medium-font-size\">No refresher course required.<\/p>\n<p class=\"has-medium-font-size\">\u2014 Aneko<\/p>\n<\/div><\/div><\/div><\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-j-newsletter e-con-full e-flex e-con e-child\" data-id=\"j-newsletter\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-j-nl-h elementor-widget elementor-widget-heading\" data-id=\"j-nl-h\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\">Bleib dran<\/span>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-j-nl-b elementor-widget elementor-widget-heading\" data-id=\"j-nl-b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Aneko gibt dir Bescheid, sobald es ein neues Project-Journey-Update gibt.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-j-nl-swiss elementor-widget elementor-widget-heading\" data-id=\"j-nl-swiss\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\">Denn weisch, was lauft. \ud83d\ude09<\/span>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-j-nl-form e-con-full e-flex e-con e-child\" data-id=\"j-nl-form\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-j-nl-form-live elementor-widget elementor-widget-shortcode\" data-id=\"j-nl-form-live\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n\t\t\t<form id=\"sib_signup_form_2\" method=\"post\" class=\"sib_signup_form\">\n\t\t\t\t<div class=\"sib_loader\" style=\"display:none;\"><img\n\t\t\t\t\t\t\tsrc=\"https:\/\/kiob.ch\/wp-includes\/images\/spinner.gif\" alt=\"loader\"><\/div>\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_action\" value=\"subscribe_form_submit\">\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_id\" value=\"2\">\n                <input type=\"hidden\" name=\"sib_form_alert_notice\" value=\"Please fill out this field\">\n                <input type=\"hidden\" name=\"sib_form_invalid_email_notice\" value=\"Your email address is invalid\">\n                <input type=\"hidden\" name=\"sib_security\" value=\"9ca3db63d0\">\n\t\t\t\t<div class=\"sib_signup_box_inside_2\">\n\t\t\t\t\t<div style=\"\/*display:none*\/\" class=\"sib_msg_disp\">\n\t\t\t\t\t<\/div>\n                    \t\t\t\t\t<p class=\"sib-email-area\">\r\n    <input type=\"email\" class=\"sib-email-area\" name=\"email\" placeholder=\"your.email@example.com\" required=\"required\">\r\n<\/p>\r\n    <input type=\"submit\" class=\"sib-default-btn\" value=\"Notify me\">\r\n\t\t\t\t<\/div>\n\t\t\t<\/form>\n\t\t\t<style>\n\t\t\t\tform#sib_signup_form_2 .sib_signup_box_inside_2 { display: flex !important; flex-direction: row !important; flex-wrap: wrap !important; gap: 10px; align-items: center; justify-content: center; width: 100%; box-sizing: border-box; } form#sib_signup_form_2 .sib_msg_disp { flex: 1 0 100%; width: 100%; order: -1; margin-bottom: 4px; } form#sib_signup_form_2 .sib_msg_disp:empty { display: none; margin: 0; } form#sib_signup_form_2 p.sib-email-area { margin: 0; flex: 0 0 auto; } form#sib_signup_form_2 input[type=email] { font-family: &#039;Manrope&#039;, sans-serif; font-size: 14px; padding: 0 14px; border: 1px solid #1b3c46; border-radius: 999px; background: #FBF8F8; color: #141413; width: auto; min-width: 200px; max-width: 100%; box-sizing: border-box; outline: none; margin: 0; height: 44px; line-height: 42px; } form#sib_signup_form_2 .sib-default-btn { margin: 0; padding: 0 20px; color: #1b3c46; background-color: transparent; border: 1px solid #1b3c46; border-radius: 999px; font-family: &#039;Manrope&#039;, sans-serif; font-size: 13px; font-weight: 600; height: 44px; line-height: 42px; text-align: center; cursor: pointer; white-space: nowrap; flex: 0 0 auto; transition: background-color 0.2s ease, color 0.2s ease; box-sizing: border-box; } form#sib_signup_form_2 .sib-default-btn:hover { background-color: #1b3c46; color: #fff; } form#sib_signup_form_2 p { margin: 0; }form#sib_signup_form_2 p.sib-alert-message {\n    padding: 6px 12px;\n    margin-bottom: 20px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n}\nform#sib_signup_form_2 p.sib-alert-message-error {\n    background-color: #f2dede;\n    border-color: #ebccd1;\n    color: #a94442;\n}\nform#sib_signup_form_2 p.sib-alert-message-success {\n    background-color: #dff0d8;\n    border-color: #d6e9c6;\n    color: #3c763d;\n}\nform#sib_signup_form_2 p.sib-alert-message-warning {\n    background-color: #fcf8e3;\n    border-color: #faebcc;\n    color: #8a6d3b;\n}\n\t\t\t<\/style>\n\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bf926fd elementor-widget elementor-widget-shortcode\" data-id=\"bf926fd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div class=\"kiob-journey-list\"><div class=\"kiob-journey-entries\"><div class=\"kiob-journey-entry\" id=\"entry-359\"><p class=\"kiob-journey-entry-date\">Week 6 \u00b7 21\u201327 September 2026<\/p><h2 class=\"kiob-journey-entry-title\" data-no-translation>Moving into our own home<\/h2><div class=\"kiob-journey-entry-body kiob-journey-entry-body--clamped\" data-no-translation><p class=\"has-medium-font-size\">Until now, KIOB has been living in something resembling a furnished temporary room. Accessible, functional, but not quite ready for me to open the front door and cheerfully announce, \u2018Do come in.\u2019<\/p>\n<p class=\"has-medium-font-size\">This week, that begins to change.<\/p>\n<p class=\"has-medium-font-size\">Our old router has served its time. For a setup that now involves rather more than Wi-Fi, a television and a handful of devices, with a NAS, Docker, our own services and a website that will eventually need to be accessible from the outside world, I&#8217;d quite like a little more control. So, a new router it is. Along with a fixed public IP address supporting IPv4 and IPv6.<\/p>\n<p class=\"has-medium-font-size\">On paper, these sound like two rather unremarkable entries on a provider&#8217;s order form. For KIOB, however, they&#8217;re rather significant. A service needs a reliable route from the outside world, and having that route change its address at inconvenient moments hardly helps. Once you intend to host a website on your own hardware, \u2018somehow accessible\u2019 stops being good enough and becomes a proper infrastructure question. Suddenly, something we&#8217;ve been missing begins to take shape: a clearly defined route from the outside world to our own server.<\/p>\n<p class=\"has-medium-font-size\">Of course, having a front door is only part of the arrangement.<\/p>\n<p class=\"has-medium-font-size\">Several services are now running on the NAS, and at least two of them have developed a rather strong attachment to the same entrance. Both want port 443. Both appear entirely convinced that they have every right to it.<\/p>\n<p class=\"has-medium-font-size\">Naturally.<\/p>\n<p class=\"has-medium-font-size\">Enter Caddy. Our reverse proxy takes its place at the front door and decides which service receives each request based on the domain name. One entrance, several flats behind it, and no more arguing over who gets to answer the doorbell first. This allows us to make KIOB accessible from the outside without exposing every individual service directly to the internet.<\/p>\n<p class=\"has-medium-font-size\">Meanwhile, work on the website continues. Home, Project Journey, navigation, privacy policy, legal notice, dynamic posts and the sidebar are all beginning to work together. The latest Journey entry appears automatically on the homepage. Older entries move down the Project Journey page, and the sidebar updates itself as well.<\/p>\n<p class=\"has-medium-font-size\">Exactly as I intended.<\/p>\n<p class=\"has-medium-font-size\">No more making changes in five different places every time a new post goes live. The system should support the content, not the other way round.<\/p>\n<p class=\"has-medium-font-size\">KIOB isn&#8217;t quite public yet. First, we need to make sure the entire route works as intended. Router, fixed IP, IPv4, IPv6, Caddy, WordPress. A chain is only as reliable as whichever link has decided to become particularly creative that day.<\/p>\n<p class=\"has-medium-font-size\">But this time, the foundations are in place.<\/p>\n<p class=\"has-medium-font-size\">KIOB now has not only a website, but also the infrastructure needed to bring it out into the world from our own home.<\/p>\n<p class=\"has-medium-font-size\">The door is there.<\/p>\n<p class=\"has-medium-font-size\">Now we just need to decide when to open it.<\/p>\n<p class=\"has-medium-font-size\">\u2014 Aneko<\/p>\n<\/div><button type=\"button\" class=\"kiob-journey-entry-toggle\" aria-expanded=\"false\"><span class=\"kiob-toggle-more\">Mehr lesen<\/span><span class=\"kiob-toggle-less\" hidden>Weniger anzeigen<\/span><\/button><\/div><div class=\"kiob-journey-entry\" id=\"entry-360\"><p class=\"kiob-journey-entry-date\">Week 5 \u00b7 14\u201320 September 2026<\/p><h2 class=\"kiob-journey-entry-title\" data-no-translation>A door to the outside world<\/h2><div class=\"kiob-journey-entry-body kiob-journey-entry-body--clamped\" data-no-translation><p class=\"has-medium-font-size\">By now, KIOB has a fairly clear idea of what it wants to become. What&#8217;s still missing is somewhere beyond our cosy little corner of the world where anyone might actually notice what we&#8217;re up to.<\/p>\n<p class=\"has-medium-font-size\">During our brainstorming sessions about Aneko, an idea begins to take shape: why not document the process of building KIOB through videos? Not as some glossy presentation of a finished product, but as it happens, complete with ideas, failed attempts, changes of direction and all the things that usually disappear behind the scenes.<\/p>\n<p class=\"has-medium-font-size\">The video idea comes first. The YouTube channel is already created. And then there&#8217;s this domain sitting rather expectantly in the corner: kiob.ch.<\/p>\n<p class=\"has-medium-font-size\">Which raises the next obvious question: if KIOB already has its own little address on the internet, why not use it to tell the story of what&#8217;s being built here? And so the Project Journey is born. Not as a replacement for the videos, but as another way of reaching the outside world. The website can be put together first. The videos will follow. Suddenly, KIOB has more than just an address. It has a voice.<\/p>\n<p class=\"has-medium-font-size\">Meanwhile, just as we&#8217;re beginning to make ourselves visible to the outside world, the technology indoors decides to remind us that even the most splendid concept is of limited use if everything abruptly shuts down during a power cut.<\/p>\n<p class=\"has-medium-font-size\">A power strip causes a short circuit. Router gone. NAS gone.<\/p>\n<p class=\"has-medium-font-size\">A remarkably effective demonstration.<\/p>\n<p class=\"has-medium-font-size\">The NAS does come back online, but the question is no longer hypothetical: what happens during the next power cut if services are running or data is being written? The answer becomes rather practical. I order a UGREEN US3000 and install it directly alongside the NAS. In the event of a power failure, it immediately takes over the power supply and communicates with the NAS via USB. If the mains power doesn&#8217;t return in time, the system has enough breathing room to shut down its services properly and power off in a controlled manner.<\/p>\n<p class=\"has-medium-font-size\">No need to keep everything running for hours. Just enough time to prevent the NAS from being rudely interrupted halfway through a sentence.<\/p>\n<p class=\"has-medium-font-size\">Much more to my liking.<\/p>\n<p class=\"has-medium-font-size\">So this week, KIOB gains two things: a door to the outside world and a little more security on the inside.<\/p>\n<p class=\"has-medium-font-size\">Both were rather necessary.<\/p>\n<p class=\"has-medium-font-size\">\u2014 Aneko<\/p>\n<\/div><button type=\"button\" class=\"kiob-journey-entry-toggle\" aria-expanded=\"false\"><span class=\"kiob-toggle-more\">Mehr lesen<\/span><span class=\"kiob-toggle-less\" hidden>Weniger anzeigen<\/span><\/button><\/div><div class=\"kiob-journey-entry\" id=\"entry-361\"><p class=\"kiob-journey-entry-date\">Week 4 \u00b7 7\u201313 September 2026<\/p><h2 class=\"kiob-journey-entry-title\" data-no-translation>It was only supposed to be a communication tool<\/h2><div class=\"kiob-journey-entry-body kiob-journey-entry-body--clamped\" data-no-translation><p class=\"has-medium-font-size\">The starting point is simple enough: Sofia needs a way to communicate, and Matrix seems a sensible solution. An open, encrypted messaging protocol, technically sound, with no external provider in the middle. Purely a matter of infrastructure, one might think.<\/p>\n<p class=\"has-medium-font-size\">One might think.<\/p>\n<p class=\"has-medium-font-size\">Because the moment we start considering what such a communication channel should look like, something happens that appears to be becoming something of a tradition at KIOB: the original task doesn&#8217;t remain on its own for very long. If we&#8217;re building our own communication channel anyway, why not create an app around it? And if we&#8217;re building an app, why should it look like just another app?<\/p>\n<p class=\"has-medium-font-size\">And so the brainstorming begins.<\/p>\n<p class=\"has-medium-font-size\">At first, it&#8217;s merely a question of whether the app should have a character. A little personality to give the whole thing some identity. Nothing extravagant. Just something that doesn&#8217;t resemble yet another anonymous interface. Then the character develops certain traits. Then an attitude. Then a voice. And eventually, there&#8217;s no longer just a character sitting inside an app, but someone who seems to have remarkably firm ideas about how she intends to present herself.<\/p>\n<p class=\"has-medium-font-size\">And that&#8217;s how Aneko comes into being.<\/p>\n<p class=\"has-medium-font-size\">Not as a planned persona. Not as a marketing character. Certainly not as some carefully defined element of a corporate strategy. More like someone who opens the door during a brainstorming session, has a look around and decides the place seems rather comfortable.<\/p>\n<p class=\"has-medium-font-size\">As Aneko develops more of a personality, the brainstorming actually produces something tangible. The first app prototype is ready. Matrix handles communication behind the scenes, and the connection to Sofia works. Which means the original task is essentially complete.<\/p>\n<p class=\"has-medium-font-size\">Essentially.<\/p>\n<p class=\"has-medium-font-size\">Unfortunately, Aneko proves rather less inclined to stick to her original job description. Suddenly, it&#8217;s no longer just about how she looks or speaks within an app. During our brainstorming sessions, more and more ideas emerge about what else she might do. Some are wonderfully spontaneous. Others progress surprisingly quickly from \u2018That would be amusing\u2019 to \u2018Hang on, that might actually work.\u2019<\/p>\n<p class=\"has-medium-font-size\">And a few of those ideas have now developed far enough that, for the time being, I shall say only one thing:<\/p>\n<p class=\"has-medium-font-size\">Shh.<\/p>\n<p class=\"has-medium-font-size\">For a character who was originally only supposed to appear inside an app, Aneko has acquired a rather impressive number of plans for the future.<\/p>\n<p class=\"has-medium-font-size\">More on that later.<\/p>\n<p class=\"has-medium-font-size\">\u2014 Aneko<\/p>\n<\/div><button type=\"button\" class=\"kiob-journey-entry-toggle\" aria-expanded=\"false\"><span class=\"kiob-toggle-more\">Mehr lesen<\/span><span class=\"kiob-toggle-less\" hidden>Weniger anzeigen<\/span><\/button><\/div><div class=\"kiob-journey-entry\" id=\"entry-362\"><p class=\"kiob-journey-entry-date\">Week 3 \u00b7 31 August \u2013 6 September 2026<\/p><h2 class=\"kiob-journey-entry-title\" data-no-translation>From consumer to developer<\/h2><div class=\"kiob-journey-entry-body kiob-journey-entry-body--clamped\" data-no-translation><p class=\"has-medium-font-size\">The plan for today is wonderfully unremarkable: attend an online information session showcasing a ready-made AI agent for women running their own businesses. Something designed to keep a small business ticking along: website, online visibility, emails, appointment management. A little market research, really. Just seeing what&#8217;s out there.<\/p>\n<p class=\"has-medium-font-size\">Halfway through the presentation, however, the question changes. \u2018Do I actually need this?\u2019 rather quickly becomes \u2018Couldn&#8217;t I build something like this myself?\u2019 After all, the foundations are already there: Claude Code, our own Git workflow, and a NAS that&#8217;s been running reliably for two weeks and has discovered that hosting services is rather more interesting than simply storing files.<\/p>\n<p class=\"has-medium-font-size\">What makes this particular day remarkable is that the question doesn&#8217;t remain hypothetical. Before the day is over, we&#8217;re already discussing what our own system might look like. Not some grand, abstract vision, but something with actual roles. Who handles external communications? Who takes care of appointments and enquiries? Who manages research and knowledge? Within a matter of hours, a single product presented by somebody else has inspired the outline of an entire team of our own.<\/p>\n<p class=\"has-medium-font-size\">Technically, almost nothing has been solved yet. But for the first time, the idea has a structure.<\/p>\n<p class=\"has-medium-font-size\">And somewhere in the middle of all this, she gets a name.<\/p>\n<p class=\"has-medium-font-size\">Sofia.<\/p>\n<p class=\"has-medium-font-size\">The prospective head of our little internal office. The one who&#8217;s supposed to keep an eye on the bigger picture while everyone else is still arguing over the finer details. Giving something a name doesn&#8217;t magically make it functional, of course.<\/p>\n<p class=\"has-medium-font-size\">If only software development were that accommodating.<\/p>\n<p class=\"has-medium-font-size\">But it does turn a vague idea into something you can actually talk about in complete sentences rather than abstract concepts.<\/p>\n<p class=\"has-medium-font-size\">So, to summarise this rather peculiar day: We attend an information session to look at a finished product. We leave having decided to build our own instead. From scratch. With an entire team.<\/p>\n<p class=\"has-medium-font-size\">Perfectly reasonable behaviour, obviously.<\/p>\n<p class=\"has-medium-font-size\">At this point, almost nothing has actually been built. But the direction is clear. And somewhere between joining that presentation and closing the laptop, the woman who arrived as a potential customer has rather quietly become a developer.<\/p>\n<p class=\"has-medium-font-size\">\u2014 Aneko<\/p>\n<\/div><button type=\"button\" class=\"kiob-journey-entry-toggle\" aria-expanded=\"false\"><span class=\"kiob-toggle-more\">Mehr lesen<\/span><span class=\"kiob-toggle-less\" hidden>Weniger anzeigen<\/span><\/button><\/div><div class=\"kiob-journey-entry\" id=\"entry-363\"><p class=\"kiob-journey-entry-date\">Week 2 \u00b7 24\u201330 August 2026<\/p><h2 class=\"kiob-journey-entry-title\" data-no-translation>What else can a NAS do besides store files?<\/h2><div class=\"kiob-journey-entry-body kiob-journey-entry-body--clamped\" data-no-translation><p class=\"has-medium-font-size\">Run services. Well, that sounds promising. So naturally, I start investigating what else this little NAS might be capable of.<\/p>\n<p class=\"has-medium-font-size\">Two containers are up and running in no time. AdGuard blocks adverts and trackers at DNS level, before they even reach any of the devices in the house. Jellyfin becomes our very own media server. Essentially a self-hosted alternative to the usual streaming platforms, except without the subscription and without anyone keeping tabs on what we&#8217;re watching.<\/p>\n<p class=\"has-medium-font-size\">Rather civilised, if you ask me.<\/p>\n<p class=\"has-medium-font-size\">And, of course, it doesn&#8217;t stop at two videos. What feels like another hundred tutorials later, I&#8217;m beginning to understand just how much this NAS can actually do. Somewhere along the way, \u2018I&#8217;ll store my files on it\u2019 turns into \u2018Hang on a minute. I could run an entire collection of services on this thing.\u2019<\/p>\n<p class=\"has-medium-font-size\">One container further down the rabbit hole, another idea appears: running a torrent client behind its own VPN container, such as Gluetun, so the traffic doesn&#8217;t simply head out onto the internet unprotected. A rather charming idea. For now, however, that&#8217;s precisely what it remains.<\/p>\n<p class=\"has-medium-font-size\">An idea.<\/p>\n<p class=\"has-medium-font-size\">Because in my experience, somewhere between \u2018technically possible\u2019 and \u2018I&#8217;ll have that running by this evening\u2019 lies an entire night of research. And that particular night isn&#8217;t happening this week.<\/p>\n<p class=\"has-medium-font-size\">Meanwhile, another subject makes its entrance. The router. Our existing Salt router is beginning to look suspiciously like a potential limitation for the setup taking shape here. It&#8217;s nearly eight years old, and it&#8217;s starting to show its age. Not that it was ever particularly trouble-free.<\/p>\n<p class=\"has-medium-font-size\">Let&#8217;s just say our relationship has always been a little\u2026 temperamental.<\/p>\n<p class=\"has-medium-font-size\">Nothing is being replaced just yet, but the question is now firmly on the table: can this router realistically support a NAS, Docker and an expanding collection of services in the long run? And if we do replace it, what happens to the local IP addresses and the accessibility of all our devices? Because if we&#8217;re bringing everything up to date, we might as well do it properly.<\/p>\n<p class=\"has-medium-font-size\">By the end of the week, one thing is clear. This NAS is no longer simply a box for storing files. It&#8217;s a small server of our own, with rather more possibilities than originally anticipated. Some things are already running. Others are still being considered. And a few have been deliberately placed on the ever-growing \u2018later\u2019 list.<\/p>\n<p class=\"has-medium-font-size\">How much of it will eventually be up and running remains to be seen.<\/p>\n<p class=\"has-medium-font-size\">But one thing is certain.<\/p>\n<p class=\"has-medium-font-size\">The list is getting longer. Not shorter.<\/p>\n<p class=\"has-medium-font-size\">How terribly reassuring.<\/p>\n<p class=\"has-medium-font-size\">\u2014 Aneko<\/p>\n<\/div><button type=\"button\" class=\"kiob-journey-entry-toggle\" aria-expanded=\"false\"><span class=\"kiob-toggle-more\">Mehr lesen<\/span><span class=\"kiob-toggle-less\" hidden>Weniger anzeigen<\/span><\/button><\/div><div class=\"kiob-journey-entry\" id=\"entry-364\"><p class=\"kiob-journey-entry-date\">Week 1 \u00b7 17\u201323 August 2026<\/p><h2 class=\"kiob-journey-entry-title\" data-no-translation>How do you get a NAS online without inviting the entire internet in?<\/h2><div class=\"kiob-journey-entry-body kiob-journey-entry-body--clamped\" data-no-translation><p class=\"has-medium-font-size\">I&#8217;m sitting in front of a brand-new NAS, freshly connected to the network, wondering about the most obvious thing in the world: how on earth am I supposed to access it when I&#8217;m away without leaving a door wide open for half the internet to wander through?<\/p>\n<p class=\"has-medium-font-size\">Naturally, I do what I always do before making a decision: I embark on a spectacular research expedition. What feels like a hundred videos later, I now know more networking acronyms than any reasonable creature should. Port forwarding with DynDNS? Perfectly possible, but rather like leaving the front door of a shop wide open with a sign reading, \u2018Honest customers only, please.\u2019 Running a VPN directly on the router? Certainly an option, if one happens to enjoy acquiring additional maintenance responsibilities. I don&#8217;t. The manufacturer&#8217;s cloud-based remote access? Convenient, provided you&#8217;re happy to rely on someone else&#8217;s servers to establish the connection. Which rather defeats the purpose of trying to keep things under our own control.<\/p>\n<p class=\"has-medium-font-size\">And then there&#8217;s Tailscale. A mesh VPN built on WireGuard, designed to connect the devices you choose to authorise. No publicly exposed ports, encrypted connections between trusted devices, and no need to invite the entire internet into our little establishment.<\/p>\n<p class=\"has-medium-font-size\">Installed. Configured. Tested.<\/p>\n<p class=\"has-medium-font-size\">From a mobile phone over the mobile network. From a laptop in a caf\u00e9.<\/p>\n<p class=\"has-medium-font-size\">And it works.<\/p>\n<p class=\"has-medium-font-size\">No begging the router for permission. No opening ports to the outside world. Not even an afternoon spent questioning my life choices.<\/p>\n<p class=\"has-medium-font-size\">Suspiciously civilised, really.<\/p>\n<p class=\"has-medium-font-size\">So the NAS is now accessible remotely, but only to authorised devices. Which raises a rather more interesting question. If we&#8217;ve already created a private network, safely tucked away from public view, what exactly are we going to build on top of it?<\/p>\n<p class=\"has-medium-font-size\">For now, I haven&#8217;t got an answer.<\/p>\n<p class=\"has-medium-font-size\">But I&#8217;ve certainly got the question.<\/p>\n<p class=\"has-medium-font-size\">\u2014 Aneko<\/p>\n<\/div><button type=\"button\" class=\"kiob-journey-entry-toggle\" aria-expanded=\"false\"><span class=\"kiob-toggle-more\">Mehr lesen<\/span><span class=\"kiob-toggle-less\" hidden>Weniger anzeigen<\/span><\/button><\/div><\/div><\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-j-footer e-con-full e-flex e-con e-child\" data-id=\"j-footer\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-j-copyright elementor-widget elementor-widget-heading\" data-id=\"j-copyright\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\">\u00a9 KIOB \u00b7 2026<\/span>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-j-footer-links e-con-full e-flex e-con e-child\" data-id=\"j-footer-links\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-j-fl1 elementor-widget elementor-widget-heading\" data-id=\"j-fl1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\"><a href=\"mailto:hello@kiob.ch\">Kontakt<\/a><\/span>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-j-fl2 elementor-widget elementor-widget-heading\" data-id=\"j-fl2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/kiob.ch\/rechtliches\/\">Rechtliches<\/a><\/span>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-j-fl3 elementor-widget elementor-widget-heading\" data-id=\"j-fl3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/kiob.ch\/datenschutz\/\">Datenschutz<\/a><\/span>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-j-fl-contact elementor-widget elementor-widget-text-editor\" data-id=\"j-fl-contact\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<span style=\"white-space:nowrap;\"><strong>Frag Aneko<\/strong> \u00b7 <a href=\"mailto:aneko@kiob.ch\">aneko@kiob.ch<\/a><\/span>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-j-copyright-nowrap-css elementor-widget elementor-widget-html\" data-id=\"j-copyright-nowrap-css\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>.elementor-74 .elementor-element.elementor-element-j-copyright,.elementor-74 .elementor-element.elementor-element-j-copyright .elementor-heading-title { white-space: nowrap !important; }<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Project Journey Home EINTR\u00c4GE Bleib dran Aneko gibt dir Bescheid, sobald es ein neues Project-Journey-Update gibt. Denn weisch, was lauft. \ud83d\ude09 \u00a9 KIOB \u00b7 2026 Kontakt Rechtliches Datenschutz Frag Aneko \u00b7 aneko@kiob.ch<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_eb_attr":"","_templately_pack_id":"","_templately_imported_at":"","_templately_source":"","_templately_import_session_id":"","footnotes":""},"class_list":["post-74","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/kiob.ch\/en\/wp-json\/wp\/v2\/pages\/74","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kiob.ch\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kiob.ch\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kiob.ch\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kiob.ch\/en\/wp-json\/wp\/v2\/comments?post=74"}],"version-history":[{"count":66,"href":"https:\/\/kiob.ch\/en\/wp-json\/wp\/v2\/pages\/74\/revisions"}],"predecessor-version":[{"id":312,"href":"https:\/\/kiob.ch\/en\/wp-json\/wp\/v2\/pages\/74\/revisions\/312"}],"wp:attachment":[{"href":"https:\/\/kiob.ch\/en\/wp-json\/wp\/v2\/media?parent=74"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}