Caddy
tcp/80
nginx
tcp/443 tcp/80
Open service 85.235.65.45:443 · keinplan.bettgen.de
2026-01-24 01:07
HTTP/1.1 200 OK
Alt-Svc: h3=":443"; ma=2592000
Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate
Content-Type: text/html; charset=utf-8
Date: Sat, 24 Jan 2026 01:07:09 GMT
Vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding
Via: 1.1 Caddy
X-Powered-By: Next.js
Connection: close
Transfer-Encoding: chunked
Page title: KeinPlan
<!DOCTYPE html><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/59996bdb2e04e5fb.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/e11684c9ab86ce4e.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/9b1e8ac51c2bfd06.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-cb02eb1ba0a62fd7.js"/><script src="/_next/static/chunks/fd9d1056-b408c3098550db4d.js" async=""></script><script src="/_next/static/chunks/117-c5fe896f2b1928db.js" async=""></script><script src="/_next/static/chunks/main-app-6fca1515cee9a03c.js" async=""></script><script src="/_next/static/chunks/870fdd6f-9f4868ba1287a632.js" async=""></script><script src="/_next/static/chunks/69b09407-223b9663e46a1ad8.js" async=""></script><script src="/_next/static/chunks/4-60a6ae3aeb49d421.js" async=""></script><script src="/_next/static/chunks/625-97e3a0f9810acddf.js" async=""></script><script src="/_next/static/chunks/app/page-424368bdbf0bae37.js" async=""></script><script src="/_next/static/chunks/app/layout-915e2180dbfc59d5.js" async=""></script><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="manifest" href="/site.webmanifest"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"/><meta name="msapplication-TileColor" content="#2d89ef"/><meta name="theme-color" content="#ffffff"/><title>KeinPlan</title><meta name="description" content="Erstelle Stundenlisten aus KaPlan, vollautomatisch in nur 1 Minute."/><meta name="keywords" content="KaPlan,Arbeitszeit,Auflistung,Stundenliste,Stundenzettel,Generator,Pfarrbüro"/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"window['__ENV'] = {\"NEXT_PUBLIC_API_BASE_URL\":\"/api/v1\",\"NEXT_PUBLIC_GITHUB_LINK\":\"https://github.com/nbe95/KeinPlan\",\"NEXT_PUBLIC_VERSION_FRONTEND\":\"\",\"NEXT_PUBLIC_VERSION_SHA_FRONTEND\":\"\",\"NEXT_PUBLIC_ADMIN_MAIL\":\"info@bettgen.de\",\"NEXT_PUBLIC_TIME_SHEET_MAIL\":\"stpeter-rheinberg@bistum-muenster.de\",\"NEXT_PUBLIC_KAPLAN_LINK\":\"https://web-muenster.kaplanhosting.de/\"}"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div class="py-1 py-md-2"><div><div class="mx-auto row"><div class="mx-auto px-4 px-md-5 py-3 py-sm-4 col-xl-8"><header class="d-flex align-items-center pb-3 mb-1 border-bottom"><a href="/" class="d-flex align-items-center text-body-emphasis text-decoration-none"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="clipboard-question" class="svg-inline--fa fa-clipboard-question fa-2xl me-3" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"></path></svg><span class="fs-4">Kein<b>Plan</b></span></a></header></div></div></div><main><div><div class="mx-auto row"><div class="mx-auto px-4 px-md-5 py-3 py-sm-4 col-xl-8"><h1>Stundenliste in 1 Minute</h1><p class="fs-5 col-md-10">Erstelle mit nur ein paar Klicks Auflistungen deiner Arbeitszeit auf Basis deiner in<!-- --> <em>KaPlan</em> hinterlegten Termine. Lade sie als PDF herunter und sende sie direkt ans Pfarrbüro.</p><p class="fs-5 col-md-10">Ein Tool für alle, die <q>kein
Open service 2a03:4000:32:7c5:48e:57ff:fec5:eefc:80 · keinplan.bettgen.de
2026-01-24 01:07
HTTP/1.1 308 Permanent Redirect Connection: close Location: https://keinplan.bettgen.de/ Server: Caddy Date: Sat, 24 Jan 2026 01:07:37 GMT Content-Length: 0
Open service 85.235.65.45:80 · keinplan.bettgen.de
2026-01-24 01:07
HTTP/1.1 308 Permanent Redirect Connection: close Location: https://keinplan.bettgen.de/ Server: Caddy Date: Sat, 24 Jan 2026 01:07:37 GMT Content-Length: 0
Open service 2a03:4000:32:7c5:48e:57ff:fec5:eefc:443 · keinplan.bettgen.de
2026-01-24 01:07
HTTP/1.1 200 OK
Alt-Svc: h3=":443"; ma=2592000
Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate
Content-Type: text/html; charset=utf-8
Date: Sat, 24 Jan 2026 01:07:08 GMT
Vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding
Via: 1.1 Caddy
X-Powered-By: Next.js
Connection: close
Transfer-Encoding: chunked
Page title: KeinPlan
<!DOCTYPE html><html lang="de"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/59996bdb2e04e5fb.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/e11684c9ab86ce4e.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/9b1e8ac51c2bfd06.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-cb02eb1ba0a62fd7.js"/><script src="/_next/static/chunks/fd9d1056-b408c3098550db4d.js" async=""></script><script src="/_next/static/chunks/117-c5fe896f2b1928db.js" async=""></script><script src="/_next/static/chunks/main-app-6fca1515cee9a03c.js" async=""></script><script src="/_next/static/chunks/870fdd6f-9f4868ba1287a632.js" async=""></script><script src="/_next/static/chunks/69b09407-223b9663e46a1ad8.js" async=""></script><script src="/_next/static/chunks/4-60a6ae3aeb49d421.js" async=""></script><script src="/_next/static/chunks/625-97e3a0f9810acddf.js" async=""></script><script src="/_next/static/chunks/app/page-424368bdbf0bae37.js" async=""></script><script src="/_next/static/chunks/app/layout-915e2180dbfc59d5.js" async=""></script><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="manifest" href="/site.webmanifest"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"/><meta name="msapplication-TileColor" content="#2d89ef"/><meta name="theme-color" content="#ffffff"/><title>KeinPlan</title><meta name="description" content="Erstelle Stundenlisten aus KaPlan, vollautomatisch in nur 1 Minute."/><meta name="keywords" content="KaPlan,Arbeitszeit,Auflistung,Stundenliste,Stundenzettel,Generator,Pfarrbüro"/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"window['__ENV'] = {\"NEXT_PUBLIC_API_BASE_URL\":\"/api/v1\",\"NEXT_PUBLIC_GITHUB_LINK\":\"https://github.com/nbe95/KeinPlan\",\"NEXT_PUBLIC_VERSION_FRONTEND\":\"\",\"NEXT_PUBLIC_VERSION_SHA_FRONTEND\":\"\",\"NEXT_PUBLIC_ADMIN_MAIL\":\"info@bettgen.de\",\"NEXT_PUBLIC_TIME_SHEET_MAIL\":\"stpeter-rheinberg@bistum-muenster.de\",\"NEXT_PUBLIC_KAPLAN_LINK\":\"https://web-muenster.kaplanhosting.de/\"}"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div class="py-1 py-md-2"><div><div class="mx-auto row"><div class="mx-auto px-4 px-md-5 py-3 py-sm-4 col-xl-8"><header class="d-flex align-items-center pb-3 mb-1 border-bottom"><a href="/" class="d-flex align-items-center text-body-emphasis text-decoration-none"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="clipboard-question" class="svg-inline--fa fa-clipboard-question fa-2xl me-3" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"></path></svg><span class="fs-4">Kein<b>Plan</b></span></a></header></div></div></div><main><div><div class="mx-auto row"><div class="mx-auto px-4 px-md-5 py-3 py-sm-4 col-xl-8"><h1>Stundenliste in 1 Minute</h1><p class="fs-5 col-md-10">Erstelle mit nur ein paar Klicks Auflistungen deiner Arbeitszeit auf Basis deiner in<!-- --> <em>KaPlan</em> hinterlegten Termine. Lade sie als PDF herunter und sende sie direkt ans Pfarrbüro.</p><p class="fs-5 col-md-10">Ein Tool für alle, die <q>kein
Open service 2a00:17d8:200::1f1:443 · www.niklas.bettgen.de
2026-01-22 22:14
HTTP/1.1 200 OK Server: nginx Date: Thu, 22 Jan 2026 22:14:54 GMT Content-Type: text/html Content-Length: 95 Last-Modified: Thu, 22 Jan 2026 22:09:12 GMT Connection: close ETag: "6972a008-5f" Accept-Ranges: bytes Page title: niklas.bettgen.de <!DOCTYPE html><head><title>niklas.bettgen.de</title></head><html><body>It works!</body></html>
Open service 213.160.71.166:443 · www.niklas.bettgen.de
2026-01-22 22:14
HTTP/1.1 200 OK Server: nginx Date: Thu, 22 Jan 2026 22:14:54 GMT Content-Type: text/html Content-Length: 95 Last-Modified: Thu, 22 Jan 2026 22:09:12 GMT Connection: close ETag: "6972a008-5f" Accept-Ranges: bytes Page title: niklas.bettgen.de <!DOCTYPE html><head><title>niklas.bettgen.de</title></head><html><body>It works!</body></html>
Open service 2a00:17d8:200::1f1:80 · www.niklas.bettgen.de
2026-01-22 22:14
HTTP/1.1 301 Moved Permanently Server: nginx Date: Thu, 22 Jan 2026 22:14:54 GMT Content-Type: text/html Content-Length: 162 Connection: close Location: https://www.niklas.bettgen.de/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 2a00:17d8:200::1f1:443 · niklas.bettgen.de
2026-01-22 22:14
HTTP/1.1 200 OK Server: nginx Date: Thu, 22 Jan 2026 22:14:53 GMT Content-Type: text/html Content-Length: 95 Last-Modified: Thu, 22 Jan 2026 22:09:12 GMT Connection: close ETag: "6972a008-5f" Accept-Ranges: bytes Page title: niklas.bettgen.de <!DOCTYPE html><head><title>niklas.bettgen.de</title></head><html><body>It works!</body></html>
Open service 213.160.71.166:80 · www.niklas.bettgen.de
2026-01-22 22:14
HTTP/1.1 301 Moved Permanently Server: nginx Date: Thu, 22 Jan 2026 22:14:54 GMT Content-Type: text/html Content-Length: 162 Connection: close Location: https://www.niklas.bettgen.de/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 213.160.71.166:80 · niklas.bettgen.de
2026-01-22 22:14
HTTP/1.1 301 Moved Permanently Server: nginx Date: Thu, 22 Jan 2026 22:14:53 GMT Content-Type: text/html Content-Length: 162 Connection: close Location: https://niklas.bettgen.de/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 2a00:17d8:200::1f1:80 · niklas.bettgen.de
2026-01-22 22:14
HTTP/1.1 301 Moved Permanently Server: nginx Date: Thu, 22 Jan 2026 22:14:53 GMT Content-Type: text/html Content-Length: 162 Connection: close Location: https://niklas.bettgen.de/ Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
Open service 213.160.71.166:443 · niklas.bettgen.de
2026-01-22 22:14
HTTP/1.1 200 OK Server: nginx Date: Thu, 22 Jan 2026 22:14:53 GMT Content-Type: text/html Content-Length: 95 Last-Modified: Thu, 22 Jan 2026 22:09:12 GMT Connection: close ETag: "6972a008-5f" Accept-Ranges: bytes Page title: niklas.bettgen.de <!DOCTYPE html><head><title>niklas.bettgen.de</title></head><html><body>It works!</body></html>
Open service 2a00:17d8:200::1f1:443 · bettgen.de
2026-01-08 15:58
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 08 Jan 2026 15:58:31 GMT
Content-Type: text/html
Content-Length: 4641
Last-Modified: Fri, 25 Oct 2024 09:56:09 GMT
Connection: close
Vary: Accept-Encoding
ETag: "671b6b39-1221"
Accept-Ranges: bytes
Page title: Niklas Bettgen – Homepage
<!doctype html><html lang=de-de><head><meta name=generator content="Hugo 0.121.0"><title>Niklas Bettgen – Homepage</title>
<meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Hi, I am a Software Engineer and an Organist. This is my private website – check it out to learn more about me and what I do."><style>@import "https://fonts.googleapis.com/css2?family=Inconsolata&display=swap";:root{--cursor-visibility:hidden}html,body{width:100%;height:100%;overflow:auto;font-family:inconsolata,monospace;font-size:4vmin;line-height:4.1vmin;font-weight:400}body{margin:0;display:flex;flex-direction:row;justify-content:center;align-items:center}#content{min-width:82vmin;min-height:82vmin}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{border-radius:10px;box-shadow:inset 0 0 1px white}::-webkit-scrollbar-thumb{border-radius:10px;box-shadow:0 0 0 1px white}.cursor,#cd:after,#whoami:after,#cat:after,#tree:after{visibility:var(--cursor-visibility);content:"|";overflow:hidden;color:#fff;animation:blink 500ms linear infinite alternate}@keyframes blink{0%{opacity:0}100%{opacity:1}}@media only screen and (min-width:768px){body{font-size:2.5vmin;line-height:2.6vmin}#content{min-width:60vmin}}body{background:#282828}body #terminal{color:#eee}body #user{color:#c9d05c}body #dir{color:#b3deef}body .Typewriter__cursor{color:#eee}a{color:#eee}</style></head><style>a[href='#']{text-decoration:none;cursor:default}p:empty{display:none}</style><body><div id=content><span id=ps1_01></span> <span id=cd></span><br><span id=ps1_02></span> <span id=cat></span><br><span id=std_out_01></span><br><span id=ps1_03></span> <span id=tree></span><br><span id=std_out_02></span><br><span id=ps1_04></span>
<script type=text/javascript>async function typewriter(e,t,n){var s=0,o=!1;addText="";const i=document.getElementById(t),a=()=>new Promise(e=>setTimeout(e,n)),r=()=>new Promise(e=>e()),c=()=>i.innerHTML=e.slice(0,s+1)+addText,l=document.createElement("span");for(l.id="blink",i.style.setProperty("--cursor-visibility","visible");s<e.length;){if(e.charAt(s+1)==="<"&&(o=!0),e.charAt(s+1)===">"&&(o=!1),o){s++;continue}requestAnimationFrame(c),n===0?await r():await a(),s++}i.style.setProperty("--cursor-visibility","collapse")}function parseDelay(e){const t=parseInt(e,10);return isNaN(t)?0:t}const ps1Delay=parseDelay("0"),stdoutDelay=parseDelay("1"),commandDelay=parseDelay("50"),typeeffetct=async()=>{await typewriter("<strong><span id='user'>nik@srv</span><span id='terminal'>:</span><span id='dir'>~/</span></strong><span id='terminal'>$</span>","ps1_01",ps1Delay),await typewriter("<span id='terminal'>cd website</span>","cd",commandDelay),await typewriter("<strong><span id='user'>nik@srv</span><span id='terminal'>:</span><span id='dir'>~/website</span></strong><span id='terminal'>$</span>","ps1_02",ps1Delay),await typewriter("<span id=terminal>git log --graph</span>","cat",commandDelay),await typewriter(`<span id='terminal'><code>*</code> Hi, I’m Niklas. Welcome to my website!<br>
|\\ <br>
| * Being a Software Engineer and an Organist,<br>
| * I always try to make my audience feel good.<br>
|\\ \\ <br>
| * | I like cats, any form of hardware related<br>
| * | programming and all kinds of nerdy stuff.<br>
| * | And Vim <3<br>
| |/ <br>
| * Feel free to check out <a href="https://github.com/nbe95">GitHub/nbe95</a> or to<br>
| * contact me at info@$this_domain.de<br>
|/</p>
</span>`,"std_out_01",stdoutDelay),await typewriter("<strong><span id='user'>nik@srv</span><span id='terminal'>:</span><span id='dir'>~/website</span></strong><span id='terminal'>$</span>","ps1_03",ps1Delay),await typewriter("<span id='terminal'>tree ./my-skills/</span>","tree",commandDelay),await typewriter("<span id='terminal'><span id='terminal'><span id='terminal'><span id='terminal'><span id='terminal'><span id='terminal'><span id='terminal'><span id='terminal'><strong><span id='dir'>./my-skills/</span></strong><br>├── <a href='#'>c/c++</a></span><br>├── <a href='#'>TypeScript</a></span><br>├── <a hr