[{"data":1,"prerenderedAt":227},["ShallowReactive",2],{"navigation":3,"\u002Fsystem-architecture\u002Finfrastructure":36,"\u002Fsystem-architecture\u002Finfrastructure-surround":224},[4,18,27],{"title":5,"path":6,"stem":7,"children":8,"page":17},"System Architecture","\u002Fsystem-architecture","1.system-architecture",[9,13],{"title":10,"path":11,"stem":12},"System Overview","\u002Fsystem-architecture\u002Fsystem-overview","1.system-architecture\u002F1.system-overview",{"title":14,"path":15,"stem":16},"Infrastructure","\u002Fsystem-architecture\u002Finfrastructure","1.system-architecture\u002F2.infrastructure",false,{"title":19,"path":20,"stem":21,"children":22,"page":17},"Aktiv Mit Ms Website","\u002Faktiv-mit-ms-website","2.aktiv-mit-ms-website",[23],{"title":24,"path":25,"stem":26},"Content Structure","\u002Faktiv-mit-ms-website\u002Fcontent-structure","2.aktiv-mit-ms-website\u002F1.content-structure",{"title":28,"path":29,"stem":30,"children":31,"page":17},"Services","\u002Fservices","3.services",[32],{"title":33,"path":34,"stem":35},"URL Shortener","\u002Fservices\u002Furl-shortener","3.services\u002F0.url-shortener",{"id":37,"title":14,"body":38,"description":217,"extension":218,"links":219,"meta":220,"navigation":221,"path":15,"seo":222,"stem":16,"__hash__":223},"docs\u002F1.system-architecture\u002F2.infrastructure.md",{"type":39,"value":40},"minimark",[41,45,50,70,74,87,91,103,107,119,123,127,130,135,147,151,169,173,185,189,202,205],[42,43],"img",{"alt":14,"src":44},"https:\u002F\u002Fplantuml.itplusx.de\u002Fsvg\u002FbLJRQjmm47ttLqnDASs3NT8sK488sUuIij0jIpPf2o4FYZJP5IjBHXhdqdJ_lKYsN7jlf4-spfcBD6TcpXmnIrMX4eNt16J0olc2G4YBdAJHIV96QgugWN2YpDou3yBm9TfCSgDFauGhKmaOQqAhaU0bIG2q4GZf5Jum67sVfS2S_y9B0W30vgW9Bf4RAnpS10n0YfmjIJvaXQIiSBd0XdXyV7mjmwXX7De7oN677pUQKDF_i6raLigyj6RNPONXRWVb5ahgPSwAmkN-BmRidMyJW9Ml8EDaB0oLH4t-xCjtajq8GuJYjY7W69GnowfCLacIr4M_GFgjqSA84OCXUbdIMfGWqJtZ2EdXvo_vnwF3_EXpVdGOv9bMTqhoyJI9oTfSsUa_4cBYh8F2CIo8IkSzIyQNR8wGZgzALRbVC5IL2rTWBlxtsk1SMdnaIdMWgJLFpqa08bldytWtMIVTABGaN1X7TRU5ipyssMBmzEHjjttX9zuvIGZdDiWkWdS3HcnlW5dTQZ1b6bK_J4C5vbMn1jDnS1oKSg_TMA0cIS_m3WQSetCmOPhDiK1TFtyycEmDCAnxFDwmLgV66cYl-_NbDvWjZ2NKZRJNLhL0S5tL0jMQPTbwIRsCnj7xZH6-4VY7qUr1ttjR9ME87RE-5g7_kkYxTTQtNs4yc4IlpLMrPZiePRJTjI_MFBhrQn-sjZ0Erdf-YjP95tJyOLHLeAidkOKRj9q0mOZTCUV7fVchFTfJOtTlb40Ba9vBXUxP4HQrOJWtG5Tb_zuisymSI5-udUIQB3ljUlNPQjLP8Ec4ITNhRGzq6xkjUuU8PI-UFkMI_FPwQdHQTJVRLyQNLTdROUa8XUICK4HsLZAEQNJTLCIlizeqREvsatgytNdjgZj3BQf2_GK0",[46,47,49],"h2",{"id":48},"hetzner-data-center","Hetzner Data Center",[51,52,53,63],"ul",{},[54,55,56],"li",{},[57,58,62],"a",{"href":59,"rel":60},"https:\u002F\u002Fwww.hetzner.com\u002Funternehmen\u002Fzertifizierung",[61],"nofollow","Hetzner is Certified in accordance with DIN ISO\u002FIEC 27001",[54,64,65],{},[57,66,69],{"href":67,"rel":68},"https:\u002F\u002Fcdn.hetzner.de\u002Fcdn\u002Fpublic\u002FUploads\u002FSicherheit-en.pdf",[61],"Brochure on security and data protection",[46,71,73],{"id":72},"firewall","Firewall",[51,75,76,84],{},[54,77,78,79],{},"Software: ",[57,80,83],{"href":81,"rel":82},"https:\u002F\u002Fopnsense.org\u002F",[61],"OPNsense",[54,85,86],{},"Purpose: Firewall, VPN, Routing, Security, Intrusion Detection & Prevention",[46,88,90],{"id":89},"proxy","Proxy",[51,92,93,100],{},[54,94,78,95],{},[57,96,99],{"href":97,"rel":98},"https:\u002F\u002Ftraefik.io\u002Ftraefik\u002F",[61],"Traefik Proxy",[54,101,102],{},"Purpose: Reverse Proxy, Load Balancing, Routing, SSL Offloading",[46,104,106],{"id":105},"mail-service","Mail Service",[51,108,109,116],{},[54,110,78,111],{},[57,112,115],{"href":113,"rel":114},"https:\u002F\u002Fdocs.postalserver.io\u002F",[61],"Postal",[54,117,118],{},"Purpose: Mail Delivery",[46,120,122],{"id":121},"applications","Applications",[124,125,126],"p",{},"Some applications consist of multiple services (e.g. database) each in a separate docker container. Due to separate\nnetworks only the corresponding application is able to access it's services.",[124,128,129],{},"The applications communicate via external secure URLs, process the firewall and proxy and require authenticatication,\nsuch as API-Keys and Auth Tokens, to restricted private endpoints.",[131,132,134],"h3",{"id":133},"identity-access-management","Identity & Access Management",[51,136,137,144],{},[54,138,78,139],{},[57,140,143],{"href":141,"rel":142},"https:\u002F\u002Fwww.keycloak.org\u002F",[61],"Keycloak",[54,145,146],{},"Purpose: Authentication with OpenID Connect, Role Based Authorization, User Management",[131,148,150],{"id":149},"website-frontend-service-panel-frontend","Website Frontend, Service Panel Frontend",[51,152,153,166],{},[54,154,78,155,160,161],{},[57,156,159],{"href":157,"rel":158},"https:\u002F\u002Fnuxt.com\u002F",[61],"Nuxt"," with ",[57,162,165],{"href":163,"rel":164},"https:\u002F\u002Fnuxt.com\u002Fmodules\u002Fsecurity",[61],"Security Module",[54,167,168],{},"Purpose: Server-Side and Client-Side Rendering of Web Application Frontends",[131,170,172],{"id":171},"content-service","Content Service",[51,174,175,182],{},[54,176,78,177],{},[57,178,181],{"href":179,"rel":180},"https:\u002F\u002Ftypo3.org\u002F",[61],"TYPO3",[54,183,184],{},"Purpose: Content Management System",[131,186,188],{"id":187},"api","API",[51,190,191,199],{},[54,192,193,194],{},"Softwares: ",[57,195,198],{"href":196,"rel":197},"https:\u002F\u002Fnestjs.com\u002F",[61],"NestJS",[54,200,201],{},"Purpose: Business Logic, API for Frontends",[131,203,33],{"id":204},"url-shortener",[51,206,207,214],{},[54,208,78,209],{},[57,210,213],{"href":211,"rel":212},"https:\u002F\u002Fshlink.io\u002F",[61],"Shlink",[54,215,216],{},"Purpose: Controll links using short URLs","","md",null,{"toc":17},true,{"title":14,"description":217},"CHmQqMS5Ko1TomI9dspY0Zl1PFkfSyW1B1V-IOXrCvI",[225,226],{"title":10,"path":11,"stem":12,"description":217,"children":-1},{"title":24,"path":25,"stem":26,"description":217,"children":-1},1774978835450]