[{"data":1,"prerenderedAt":5350},["ShallowReactive",2],{"blog-current-accessibility-legal-statement-template-de":3,"blog-previous-accessibility-legal-statement-template-de":1551,"blog-next-accessibility-legal-statement-template-de":1568,"blog-alt-de-accessibility-legal-statement-template-de":1581,"blog-alt-en-accessibility-legal-statement-template-de":1582,"employee-jens-bornschein":1584,"content-query-6QVNjLYhQR":1673,"content-query-UKDfBsQuK3":4681,"content-query-KtO3wftRle":5230,"related-refs-frontend--de":5312},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"author":10,"image":11,"releaseDate":12,"blogCategories":13,"articleTags":15,"tags":17,"body":19,"_type":1545,"_id":1546,"_source":1547,"_file":1548,"_stem":1549,"_extension":1550},"/blog/accessibility-legal-statement-template","blog",false,"","Erklärung zur Barrierefreiheit (EzB) – Wie Sie das BFSG umsetzen und eine mögliche Abmahnung vermeiden","Barrierefreiheitserklärung nach BFSG: Vorlage und Anleitung zur Erklärung zur Barrierefreiheit. Schützen Sie sich vor Abmahnungen mit unserer Vorlage für eine individuelle Barrierefreiheitsstärkung. Die Bestimmungen des Barrierefreiheitsstärkungsgesetzes müssen umgesetzt werden. Sie können sich vor Prüfverfahren durch die Behörde zusätzlich schützen, indem Sie eine ausführliche Erklärung zur Barrierefreiheit abgeben.","jens-bornschein","/images/Accessibility.png","2025-09-05",[14],"Das bewegt uns",[16],"Accessibility",[18],"frontend",{"type":20,"children":21,"toc":1530},"root",[22,32,40,64,72,131,146,150,154,160,198,214,242,252,267,273,324,340,420,432,441,667,679,688,801,837,859,974,985,1024,1056,1062,1081,1086,1166,1172,1388,1394,1410,1433,1448,1454,1465,1470,1477,1519,1525],{"type":23,"tag":24,"props":25,"children":31},"element","img",{"alt":26,"aspect-ratio":27,"height":28,"object-fit":29,"src":30},"Fiktiver Entwurf eines Abmahnungsschreibens der Marktüberwachungsstelle mit der Beschreibung \"Nichteinhaltung von Vorgaben zur Barrierefreiheit.\"","1.7",300,"fill","/blog/Abmahnung-Barrierefreiheitsstaerkungsgesetz.png",[],{"type":23,"tag":33,"props":34,"children":36},"h2",{"id":35},"barrierefreiheit-wird-pflicht-was-das-barrierefreiheitsstärkungsgesetz-ab-2025-für-digitale-services-bedeutet",[37],{"type":38,"value":39},"text","Barrierefreiheit wird Pflicht: Was das Barrierefreiheitsstärkungsgesetz ab 2025 für digitale Services bedeutet",{"type":23,"tag":41,"props":42,"children":43},"p",{},[44,50,52,62],{"type":23,"tag":45,"props":46,"children":47},"strong",{},[48],{"type":38,"value":49},"Barrierefreiheit ist seit Mitte 2025 für viele digitale Produkte und Dienstleistungen Pflicht.",{"type":38,"value":51},"\nDas haben wir bereits in unserem Artikel „Accessibility wird zur Empfehlung – und zur Pflicht“ erklärt.\nWichtig neben der technischen Umsetzung ist, dass eine\n",{"type":23,"tag":53,"props":54,"children":56},"a",{"href":55},"https://helmundwalter.de/blog/accessibility-will-be-recommended?utm_source=chatgpt.com",[57],{"type":23,"tag":45,"props":58,"children":59},{},[60],{"type":38,"value":61},"Erklärung zur Barrierefreiheit (EzB)",{"type":38,"value":63},"\ngesetzlich vorgeschrieben ist und dass bei falscher Formulierung Abmahnungen oder regulatorischer Druck drohen.",{"type":23,"tag":41,"props":65,"children":66},{},[67],{"type":23,"tag":45,"props":68,"children":69},{},[70],{"type":38,"value":71},"Inhalt dieses Blogposts:",{"type":23,"tag":73,"props":74,"children":75},"ul",{},[76,89,94,104,116,126],{"type":23,"tag":77,"props":78,"children":79},"li",{},[80,82,87],{"type":38,"value":81},"Warum eine ",{"type":23,"tag":45,"props":83,"children":84},{},[85],{"type":38,"value":86},"Erklärung zur Barrierefreiheit laut BFSG",{"type":38,"value":88}," gesetzlich vorgeschrieben ist",{"type":23,"tag":77,"props":90,"children":91},{},[92],{"type":38,"value":93},"Was diese Erklärung beinhalten muss",{"type":23,"tag":77,"props":95,"children":96},{},[97,102],{"type":23,"tag":45,"props":98,"children":99},{},[100],{"type":38,"value":101},"Ein Vorschlag für eine mögliche Barrierefreiheitserklärung",{"type":38,"value":103}," / EzB",{"type":23,"tag":77,"props":105,"children":106},{},[107,109,114],{"type":38,"value":108},"Kurze Erklärung, an welchen Stellen Sie die Erklärung ",{"type":23,"tag":45,"props":110,"children":111},{},[112],{"type":38,"value":113},"individuell und wahrheitsgemäß auf Ihre Dienstleistung zuschneiden",{"type":38,"value":115}," sollten",{"type":23,"tag":77,"props":117,"children":118},{},[119,124],{"type":23,"tag":45,"props":120,"children":121},{},[122],{"type":38,"value":123},"Unsere Erfahrung mit juristischer Beratung",{"type":38,"value":125}," zur Formulierung",{"type":23,"tag":77,"props":127,"children":128},{},[129],{"type":38,"value":130},"Was bei Nichteinhaltung drohen kann",{"type":23,"tag":132,"props":133,"children":136},"span",{"className":134},[135],"text-right",[137],{"type":23,"tag":41,"props":138,"children":139},{},[140],{"type":23,"tag":141,"props":142,"children":143},"em",{},[144],{"type":38,"value":145},"Lesedauer: ca. 15 Minuten",{"type":23,"tag":147,"props":148,"children":149},"br",{},[],{"type":23,"tag":151,"props":152,"children":153},"hr",{},[],{"type":23,"tag":33,"props":155,"children":157},{"id":156},"worum-geht-es-beim-bfsg-und-der-barrierefreiheitserklärung-ezb",[158],{"type":38,"value":159},"Worum geht es beim BFSG und der Barrierefreiheitserklärung / EzB?",{"type":23,"tag":41,"props":161,"children":162},{},[163,165,171,173,182,184,189,191,196],{"type":38,"value":164},"Das ",{"type":23,"tag":53,"props":166,"children":168},{"href":167},"https://bfsg-gesetz.de",[169],{"type":38,"value":170},"Barrierefreiheitsstärkungsgesetz (BFSG)",{"type":38,"value":172}," verpflichtet digitale Angebote wie Online-Shops, Banking-Apps oder Buchungsportale, seit dem 28. Juni 2025 barrierefrei zugänglich zu sein.\nDas folgt dem EU-weiten ",{"type":23,"tag":53,"props":174,"children":176},{"href":175},"https://commission.europa.eu/strategy-and-policy/policies/justice-and-fundamental-rights/disability/union-equality-strategy-rights-persons-disabilities-2021-2030/european-accessibility-act_en",[177],{"type":23,"tag":45,"props":178,"children":179},{},[180],{"type":38,"value":181},"European Accessibility Act (EAA)",{"type":38,"value":183}," und der ",{"type":23,"tag":45,"props":185,"children":186},{},[187],{"type":38,"value":188},"Norm EN 301 549",{"type":38,"value":190},", die meist die ",{"type":23,"tag":45,"props":192,"children":193},{},[194],{"type":38,"value":195},"WCAG 2.1 AA",{"type":38,"value":197}," als technisches Ziel definiert. Ausgenommen sind Kleinstunternehmen mit unter 10 Mitarbeitenden und weniger als\n2 Mio. € Jahresumsatz.",{"type":23,"tag":41,"props":199,"children":200},{},[201,203,212],{"type":38,"value":202},"Gemäß ",{"type":23,"tag":53,"props":204,"children":206},{"href":205},"https://bfsg-gesetz.de/anlage-3/",[207],{"type":23,"tag":45,"props":208,"children":209},{},[210],{"type":38,"value":211},"§ 14 BFSG und Anlage 3",{"type":38,"value":213}," müssen Anbieter eine Barrierefreiheitserklärung veröffentlichen, die folgende Punkte enthält:",{"type":23,"tag":73,"props":215,"children":216},{},[217,222,227,232,237],{"type":23,"tag":77,"props":218,"children":219},{},[220],{"type":38,"value":221},"Allgemeine Beschreibung der digitalen Dienstleistung",{"type":23,"tag":77,"props":223,"children":224},{},[225],{"type":38,"value":226},"Erfüllungsstatus der Barrierefreiheitsanforderungen (z.B. WCAG, EN 301 549)",{"type":23,"tag":77,"props":228,"children":229},{},[230],{"type":38,"value":231},"Kontaktmöglichkeiten des Dienstleisters für Rückmeldungen bei Barrieren",{"type":23,"tag":77,"props":233,"children":234},{},[235],{"type":38,"value":236},"Marktüberwachungsbehörde als zuständige Kontrollstelle",{"type":23,"tag":77,"props":238,"children":239},{},[240],{"type":38,"value":241},"Optionale Angaben: Datum der letzten Prüfung, Prüfmethodik, Feedbackmechanismus",{"type":23,"tag":41,"props":243,"children":244},{},[245,250],{"type":23,"tag":45,"props":246,"children":247},{},[248],{"type":38,"value":249},"Es gibt keine offizielle Vorlage für die Barrierefreiheitserklärung.",{"type":38,"value":251},"\nNach unserem derzeitigen Wissensstand ist diese auch nicht geplant.",{"type":23,"tag":41,"props":253,"children":254},{},[255],{"type":23,"tag":45,"props":256,"children":257},{},[258,260,265],{"type":38,"value":259},"Deshalb gehen wir im Folgenden darauf ein, wie eine solche\n",{"type":23,"tag":141,"props":261,"children":262},{},[263],{"type":38,"value":264},"Erklärung zur Barrierefreiheit",{"type":38,"value":266}," aussehen kann.",{"type":23,"tag":33,"props":268,"children":270},{"id":269},"unsere-vorlage-für-ihre-ezb",[271],{"type":38,"value":272},"Unsere Vorlage für Ihre EzB",{"type":23,"tag":274,"props":275,"children":279},"div",{"className":276},[277,278],"doc-sheet","doc-sheet__border-top",[280],{"type":23,"tag":274,"props":281,"children":284},{"className":282},[283],"doc-sheet__section",[285,292,318],{"type":23,"tag":286,"props":287,"children":289},"h1",{"id":288},"informationen-zur-barrierefreiheit",[290],{"type":38,"value":291},"Informationen zur Barrierefreiheit",{"type":23,"tag":41,"props":293,"children":294},{},[295,297,302,304,309,311,316],{"type":38,"value":296},"Wir verpflichten uns zur Umsetzung der Anforderungen des ",{"type":23,"tag":45,"props":298,"children":299},{},[300],{"type":38,"value":301},"Barrierefreiheitsstärkungsgesetzes (BFSG)",{"type":38,"value":303}," sowie der zugrunde liegenden ",{"type":23,"tag":45,"props":305,"children":306},{},[307],{"type":38,"value":308},"EU-Richtlinie (EU) 2019/882 über die Barrierefreiheitsanforderungen für Produkte und Dienstleistungen",{"type":38,"value":310},". Unser Ziel ist es, unsere digitalen Angebote – insbesondere Webanwendungen und Online-Dienste – so zu gestalten, dass sie für alle Menschen ",{"type":23,"tag":45,"props":312,"children":313},{},[314],{"type":38,"value":315},"barrierefrei zugänglich",{"type":38,"value":317}," sind, unabhängig von individuellen Fähigkeiten oder technischen Hilfsmitteln.",{"type":23,"tag":33,"props":319,"children":321},{"id":320},"beschreibung-der-dienstleistung",[322],{"type":38,"value":323},"Beschreibung der Dienstleistung",{"type":23,"tag":274,"props":325,"children":334},{"className":326},[327,328,329,330,331,332,333],"mt-8","mb-5","pl-0","pr-0","pt-5","pb-5","pa-sm-5",[335],{"type":23,"tag":41,"props":336,"children":337},{},[338],{"type":38,"value":339},"Diesen Teil müssen Sie individuell an Ihre digitale Dienstleistung anpassen.\nWir haben an dieser Stelle ein Beispiel für einen klassischen Online-Shop angegeben.",{"type":23,"tag":274,"props":341,"children":344},{"className":342},[277,343],"doc-sheet__border-sides",[345],{"type":23,"tag":274,"props":346,"children":348},{"className":347},[283],[349,361,401],{"type":23,"tag":41,"props":350,"children":351},{},[352,354,359],{"type":38,"value":353},"Unser Online-Shop ermöglicht es,\n",{"type":23,"tag":45,"props":355,"children":356},{},[357],{"type":38,"value":358},"Informationen zu Produkten zu beziehen, Produkte digital auszuwählen und zu kaufen",{"type":38,"value":360},".\nDie Waren werden jeweils auf einer eigenen Produktseite mit Beschreibung, Preis und\neventuell verfügbaren Varianten wie Größe oder Farbe angeboten.",{"type":23,"tag":41,"props":362,"children":363},{},[364,366,371,373,378,380,385,387,392,394,399],{"type":38,"value":365},"Die gewünschten Produkte können in einen ",{"type":23,"tag":45,"props":367,"children":368},{},[369],{"type":38,"value":370},"virtuellen Warenkorb",{"type":38,"value":372}," gelegt werden.\nNach Auswahl aller Artikel führt der Bestellprozess über den ",{"type":23,"tag":45,"props":374,"children":375},{},[376],{"type":38,"value":377},"Checkout-Bereich",{"type":38,"value":379},",\nin dem eine ",{"type":23,"tag":45,"props":381,"children":382},{},[383],{"type":38,"value":384},"Lieferadresse",{"type":38,"value":386}," und eine eventuell abweichende ",{"type":23,"tag":45,"props":388,"children":389},{},[390],{"type":38,"value":391},"Rechnungsadresse",{"type":38,"value":393},"\neingegeben, sowie eine ",{"type":23,"tag":45,"props":395,"children":396},{},[397],{"type":38,"value":398},"Zahlungsart",{"type":38,"value":400}," ausgewählt werden muss.",{"type":23,"tag":41,"props":402,"children":403},{},[404,406,411,413,418],{"type":38,"value":405},"Nach erfolgreicher Bestellung werden\n",{"type":23,"tag":45,"props":407,"children":408},{},[409],{"type":38,"value":410},"Eingangsbestätigung und Versandbestätigungen per E-Mail",{"type":38,"value":412}," an die bei der Bestellung\nangegebene E-Mail-Adresse versendet.\nEs ist möglich, dass eine ",{"type":23,"tag":45,"props":414,"children":415},{},[416],{"type":38,"value":417},"Weiterleitung zu Drittdiensten",{"type":38,"value":419}," für die Abwicklung von\nBezahlvorgängen erfolgt. Wir haben nur bedingt Einfluss auf die Gestaltung und\ntechnische Ausführung dieser Dienste.",{"type":23,"tag":132,"props":421,"children":423},{"className":422},[135],[424],{"type":23,"tag":41,"props":425,"children":426},{},[427],{"type":23,"tag":141,"props":428,"children":429},{},[430],{"type":38,"value":431},"Anpassen an die individuelle Dienstleistung",{"type":23,"tag":274,"props":433,"children":435},{"className":434},[327,328,329,330,331,332,333],[436],{"type":23,"tag":41,"props":437,"children":438},{},[439],{"type":38,"value":440},"Den folgenden Teil müssen Sie nicht unbedingt angeben.\nEr stellt aber Ihre bisherigen Bemühungen und Maßnahmen, sowie Ihr Engagement im\nBereich Barrierefreiheit klar und bietet eine Anlaufstelle jenseits der\nMarktüberwachungsbehörde.",{"type":23,"tag":274,"props":442,"children":444},{"className":443},[277,343],[445],{"type":23,"tag":274,"props":446,"children":448},{"className":447},[283],[449,455,467,479,518,530,537,575,581,593,601,641],{"type":23,"tag":33,"props":450,"children":452},{"id":451},"stand-der-barrierefreiheit",[453],{"type":38,"value":454},"Stand der Barrierefreiheit",{"type":23,"tag":41,"props":456,"children":457},{},[458,460,465],{"type":38,"value":459},"Unsere Website und digitalen Dienste werden fortlaufend an geltende\n",{"type":23,"tag":45,"props":461,"children":462},{},[463],{"type":38,"value":464},"Barrierefreiheitsstandards (z.B. WCAG 2.1 AA und EN 301 549)",{"type":38,"value":466}," angepasst.\nWir verfolgen aktiv das Ziel, bestehende Barrieren zu erkennen, zu reduzieren und\nlangfristig vollständig zu beseitigen.",{"type":23,"tag":41,"props":468,"children":469},{},[470,472,477],{"type":38,"value":471},"Trotz aller Sorgfalt kann es in Einzelfällen zu ",{"type":23,"tag":45,"props":473,"children":474},{},[475],{"type":38,"value":476},"temporären oder partiellen Barrieren",{"type":38,"value":478}," kommen.\nDies kann insbesondere auftreten:",{"type":23,"tag":73,"props":480,"children":481},{},[482,494,506],{"type":23,"tag":77,"props":483,"children":484},{},[485,487,492],{"type":38,"value":486},"durch laufende ",{"type":23,"tag":45,"props":488,"children":489},{},[490],{"type":38,"value":491},"redaktionelle oder technische Überarbeitungen",{"type":38,"value":493}," einzelner Inhalte und Seiten,",{"type":23,"tag":77,"props":495,"children":496},{},[497,499,504],{"type":38,"value":498},"aufgrund von ",{"type":23,"tag":45,"props":500,"children":501},{},[502],{"type":38,"value":503},"unterschiedlichen Interpretationen",{"type":38,"value":505}," der technischen Anforderungen an Barrierefreiheit,",{"type":23,"tag":77,"props":507,"children":508},{},[509,511,516],{"type":38,"value":510},"oder bei ",{"type":23,"tag":45,"props":512,"children":513},{},[514],{"type":38,"value":515},"komplexen Funktionalitäten",{"type":38,"value":517},", für die bisher noch keine vollständig barrierefreie Lösung verfügbar ist.",{"type":23,"tag":41,"props":519,"children":520},{},[521,523,528],{"type":38,"value":522},"Wir arbeiten kontinuierlich daran, auch solche Abweichungen zu identifizieren und\nLösungen zu entwickeln, um allen Nutzenden einen möglichst\n",{"type":23,"tag":45,"props":524,"children":525},{},[526],{"type":38,"value":527},"niederschwelligen und gleichwertigen Zugang",{"type":38,"value":529}," zu ermöglichen.",{"type":23,"tag":531,"props":532,"children":534},"h3",{"id":533},"letzte-überprüfung",[535],{"type":38,"value":536},"Letzte Überprüfung",{"type":23,"tag":41,"props":538,"children":539},{},[540,542,547,549,554,556,561,563,567,568,573],{"type":38,"value":541},"Die letzte exemplarische Prüfung der Barrierefreiheit erfolgte am ",{"type":23,"tag":141,"props":543,"children":544},{},[545],{"type":38,"value":546},"[Datum der letzten Überprüfung]",{"type":38,"value":548},"\ndurch ",{"type":23,"tag":141,"props":550,"children":551},{},[552],{"type":38,"value":553},"[Firma eintragen – eine ext. Firma ist hier besser]",{"type":38,"value":555},".\nDabei wurde eine ",{"type":23,"tag":45,"props":557,"children":558},{},[559],{"type":38,"value":560},"Auswahl repräsentativer Seiten und Funktionen",{"type":38,"value":562}," auf Konformität\nmit den Anforderungen der ",{"type":23,"tag":45,"props":564,"children":565},{},[566],{"type":38,"value":195},{"type":38,"value":183},{"type":23,"tag":45,"props":569,"children":570},{},[571],{"type":38,"value":572},"EN 301 549",{"type":38,"value":574}," untersucht.\nNicht alle Inhalte oder Seiten wurden dabei individuell getestet.\nDie Auswahl erfolgte auf Basis der Nutzungshäufigkeit und zentralen Funktionalitäten\nunseres Online-Angebots.",{"type":23,"tag":33,"props":576,"children":578},{"id":577},"rückmeldung-und-kontakt",[579],{"type":38,"value":580},"Rückmeldung und Kontakt",{"type":23,"tag":41,"props":582,"children":583},{},[584,586,591],{"type":38,"value":585},"Sollten Ihnen beim Besuch unserer digitalen Angebote ",{"type":23,"tag":45,"props":587,"children":588},{},[589],{"type":38,"value":590},"Barrieren auffallen",{"type":38,"value":592},",\nbitten wir Sie, uns zu informieren.\nJeder Hinweis hilft uns, bestehende Schwachstellen besser zu verstehen und gezielt\nzu verbessern.",{"type":23,"tag":41,"props":594,"children":595},{},[596],{"type":23,"tag":45,"props":597,"children":598},{},[599],{"type":38,"value":600},"Kontakt für Hinweise zur Barrierefreiheit:",{"type":23,"tag":41,"props":602,"children":603},{},[604,609,612,617,620,625,628,633,636],{"type":23,"tag":141,"props":605,"children":606},{},[607],{"type":38,"value":608},"[Name oder Abteilung]",{"type":23,"tag":147,"props":610,"children":611},{},[],{"type":23,"tag":141,"props":613,"children":614},{},[615],{"type":38,"value":616},"[Unternehmen]",{"type":23,"tag":147,"props":618,"children":619},{},[],{"type":23,"tag":141,"props":621,"children":622},{},[623],{"type":38,"value":624},"[Adresse, optional]",{"type":23,"tag":147,"props":626,"children":627},{},[],{"type":23,"tag":141,"props":629,"children":630},{},[631],{"type":38,"value":632},"[E-Mail-Adresse]",{"type":23,"tag":147,"props":634,"children":635},{},[],{"type":23,"tag":141,"props":637,"children":638},{},[639],{"type":38,"value":640},"[Telefonnummer, optional]",{"type":23,"tag":41,"props":642,"children":643},{},[644,646,651,653,658,660,665],{"type":38,"value":645},"Wir sichern zu, dass wir eingehende Rückmeldungen schnellstmöglich\n",{"type":23,"tag":45,"props":647,"children":648},{},[649],{"type":38,"value":650},"redaktionell und technisch prüfen",{"type":38,"value":652}," und, sofern möglich, in angemessener Frist ",{"type":23,"tag":45,"props":654,"children":655},{},[656],{"type":38,"value":657},"beheben",{"type":38,"value":659},".\nSollte eine kurzfristige technische Lösung nicht möglich sein, suchen wir gemeinsam\nmit Ihnen nach ",{"type":23,"tag":45,"props":661,"children":662},{},[663],{"type":38,"value":664},"alternativen Zugangswegen oder unterstützenden Maßnahmen",{"type":38,"value":666},",\num Ihnen die Nutzung dennoch zu ermöglichen.",{"type":23,"tag":132,"props":668,"children":670},{"className":669},[135],[671],{"type":23,"tag":41,"props":672,"children":673},{},[674],{"type":23,"tag":141,"props":675,"children":676},{},[677],{"type":38,"value":678},"optional",{"type":23,"tag":274,"props":680,"children":682},{"className":681},[327,328,329,330,331,332,333],[683],{"type":23,"tag":41,"props":684,"children":685},{},[686],{"type":38,"value":687},"Der folgende Teil ist wieder wichtig, da hier die Marktüberwachungsbehörde benannt werden\nmuss und man auf die aktuell geltenden AGBs verweisen sollte, die mögliche Lücken in der\nBeschreibung der Dienstleistung oder des Produktes schließen.",{"type":23,"tag":274,"props":689,"children":691},{"className":690},[277,343],[692],{"type":23,"tag":274,"props":693,"children":695},{"className":694},[283],[696,702,719,738,743,754,760,765],{"type":23,"tag":33,"props":697,"children":699},{"id":698},"weiterführende-hinweise",[700],{"type":38,"value":701},"Weiterführende Hinweise",{"type":23,"tag":41,"props":703,"children":704},{},[705,707,712,714],{"type":38,"value":706},"Es ist zu beachten, dass die Nutzung unserer digitalen Dienste und aller dazugehörigen\nFunktionen zusätzlich unseren ",{"type":23,"tag":45,"props":708,"children":709},{},[710],{"type":38,"value":711},"Allgemeinen Geschäftsbedingungen (AGB)",{"type":38,"value":713}," unterliegt.\nDiese AGB regeln unter anderem den Vertragsschluss, die Zahlungsabwicklung und die\nLieferung. Im Falle von Widersprüchen oder Abweichungen gelten die AGB in ihrer\njeweils aktuellen Fassung, soweit diese nicht die Anforderungen an Barrierefreiheit\neinschränken oder aufheben.\nEine barrierefreie Version hier unserer AGBs gibt es hier: ",{"type":23,"tag":141,"props":715,"children":716},{},[717],{"type":38,"value":718},"[Link zu den AGB]",{"type":23,"tag":41,"props":720,"children":721},{},[722,724,729,731,736],{"type":38,"value":723},"Wir verstehen Barrierefreiheit nicht als einmalige Maßnahme, sondern als\n",{"type":23,"tag":45,"props":725,"children":726},{},[727],{"type":38,"value":728},"laufenden Prozess",{"type":38,"value":730},". Daher werden unsere Inhalte und Systeme regelmäßig überprüft\nund überarbeitet. Dabei kann es in einzelnen Fällen vorübergehend zu\n",{"type":23,"tag":45,"props":732,"children":733},{},[734],{"type":38,"value":735},"Einschränkungen in der Zugänglichkeit",{"type":38,"value":737}," kommen. Wir bitten hierfür um Ihr Verständnis.",{"type":23,"tag":41,"props":739,"children":740},{},[741],{"type":38,"value":742},"Für weiterführende Informationen zum Barrierefreiheitsstärkungsgesetz verweisen wir auf\ndie zuständige nationale Durchsetzungsstelle:",{"type":23,"tag":41,"props":744,"children":745},{},[746,752],{"type":23,"tag":53,"props":747,"children":749},{"href":748},"https://www.bundesfachstelle-barrierefreiheit.de",[750],{"type":38,"value":751},"Bundesfachstelle Barrierefreiheit",{"type":38,"value":753}," (Träger: Knappschaft-Bahn-See)",{"type":23,"tag":531,"props":755,"children":757},{"id":756},"zuständige-marktüberwachungsbehörde",[758],{"type":38,"value":759},"Zuständige Marktüberwachungsbehörde",{"type":23,"tag":41,"props":761,"children":762},{},[763],{"type":38,"value":764},"Marktüberwachungsstelle der Länder für die Barrierefreiheit von Produkten und\nDienstleistungen (MLBF) in Magdeburg, Sachsen-Anhalt.",{"type":23,"tag":41,"props":766,"children":767},{},[768,773,776,778,781,783,786,788,791,794,796,799],{"type":23,"tag":45,"props":769,"children":770},{},[771],{"type":38,"value":772},"MLBF (in Errichtung)",{"type":23,"tag":147,"props":774,"children":775},{},[],{"type":38,"value":777},"\nc/o Ministerium für Arbeit, Soziales, Gesundheit und Gleichstellung Sachsen-Anhalt",{"type":23,"tag":147,"props":779,"children":780},{},[],{"type":38,"value":782},"\nPostfach 39 11 55",{"type":23,"tag":147,"props":784,"children":785},{},[],{"type":38,"value":787},"\n39135 Magdeburg",{"type":23,"tag":147,"props":789,"children":790},{},[],{"type":23,"tag":147,"props":792,"children":793},{},[],{"type":38,"value":795},"\nTelefon: 0391 567 6970",{"type":23,"tag":147,"props":797,"children":798},{},[],{"type":38,"value":800},"\nE-Mail: MLBF(at)ms.sachsen-anhalt.de.",{"type":23,"tag":274,"props":802,"children":807},{"className":803},[804,805,806],"hint","hint--warning","mt-5",[808],{"type":23,"tag":41,"props":809,"children":810},{},[811,816,819,821,828,830,835],{"type":23,"tag":45,"props":812,"children":813},{},[814],{"type":38,"value":815},"Hinweis:",{"type":23,"tag":147,"props":817,"children":818},{},[],{"type":38,"value":820},"\nNach ",{"type":23,"tag":141,"props":822,"children":823},{},[824],{"type":23,"tag":53,"props":825,"children":826},{"href":205},[827],{"type":38,"value":205},{"type":38,"value":829}," §1 c müsste\n“",{"type":23,"tag":141,"props":831,"children":832},{},[833],{"type":38,"value":834},"eine Beschreibung, wie die Dienstleistung die einschlägigen in der nach §3 Absatz 2\nzu erlassenden Rechtsverordnung aufgeführten Barrierefreiheitsanforderungen erfüllt;",{"type":38,"value":836},"”\neingebracht werden – also eine genaue Beschreibung, wie die Dienstleistung barrierefrei\ngestaltet wurde.",{"type":23,"tag":274,"props":838,"children":842},{"className":839},[840,328,329,330,331,332,333,841],"mt-0","pt-0",[843,849,854],{"type":23,"tag":531,"props":844,"children":846},{"id":845},"beispiel-für-eine-beschreibung-der-konkreten-maßnahmen",[847],{"type":38,"value":848},"Beispiel für eine Beschreibung der konkreten Maßnahmen",{"type":23,"tag":41,"props":850,"children":851},{},[852],{"type":38,"value":853},"Im Folgenden ein Beispiel für konkrete Maßnahmen, wie wir sie als Agentur für unsere Kunden\nstandardmäßig in Projekten vorsehen und umsetzen.",{"type":23,"tag":41,"props":855,"children":856},{},[857],{"type":38,"value":858},"Diese Maßnahmen müssten wahrheitsgemäß und individuell an Ihre Maßnahmen angepasst werden.",{"type":23,"tag":274,"props":860,"children":863},{"className":861},[277,862],"doc-sheet__border-bottom",[864],{"type":23,"tag":274,"props":865,"children":867},{"className":866},[283],[868,874,879,885,890,896,901,907,912,918,923,929,934,940,945,951,969],{"type":23,"tag":33,"props":869,"children":871},{"id":870},"konkrete-umsetzung-der-barrierefreiheitsanforderungen",[872],{"type":38,"value":873},"Konkrete Umsetzung der Barrierefreiheitsanforderungen",{"type":23,"tag":41,"props":875,"children":876},{},[877],{"type":38,"value":878},"Zur Erfüllung der gesetzlichen Barrierefreiheitsanforderungen wurden folgende technische\nund gestalterische Maßnahmen implementiert:",{"type":23,"tag":531,"props":880,"children":882},{"id":881},"technische-strukturierung-und-semantik",[883],{"type":38,"value":884},"Technische Strukturierung und Semantik",{"type":23,"tag":41,"props":886,"children":887},{},[888],{"type":38,"value":889},"Die HTML-Strukturen unserer Website entsprechen dem semantischen Zweck der jeweiligen\nInhalte und Interaktionselemente. Ergänzend wurden ARIA-Markups eingesetzt, um komplexe\nFunktionalitäten und deren Status für assistive Technologien zugänglich zu machen.",{"type":23,"tag":531,"props":891,"children":893},{"id":892},"inhaltsgestaltung-und-redaktionelle-maßnahmen",[894],{"type":38,"value":895},"Inhaltsgestaltung und redaktionelle Maßnahmen",{"type":23,"tag":41,"props":897,"children":898},{},[899],{"type":38,"value":900},"Redaktionell verantwortliche Personen wurden zur korrekten Verwendung von Textstrukturen\nund hierarchischen Überschriftenebenen geschult. Bei der Erstellung von Inhalten wird\nauf eine klare, verständliche Sprache geachtet. Komplexe Sachverhalte werden strukturiert\ndargestellt und durch Zwischenüberschriften gegliedert. Link-Texte sind aussagekräftig\nformuliert und beschreiben das Ziel der Verlinkung eindeutig. Listen und andere\nstrukturierende HTML-Elemente werden gezielt eingesetzt, um die Inhaltsstruktur zu\nverdeutlichen. Tabellen werden mit entsprechenden Überschriften und Beschreibungen\nversehen, um deren Inhalt und Aufbau verständlich zu machen.",{"type":23,"tag":531,"props":902,"children":904},{"id":903},"visuelle-gestaltung-und-responsive-design",[905],{"type":38,"value":906},"Visuelle Gestaltung und Responsive Design",{"type":23,"tag":41,"props":908,"children":909},{},[910],{"type":38,"value":911},"Bei der Farbgestaltung wurde auf eine kontrastreiche Darstellung entsprechend dem\nWCAG-Level AA geachtet. Informationen werden nicht ausschließlich über visuelle\nEigenschaften wie Farbe, Form oder Position vermittelt, sondern durch zusätzliche\ntextliche oder strukturelle Hinweise ergänzt. Die Website ist responsiv gestaltet\nund auf verschiedenen Ausgabegeräten nutzbar. Die Textgröße kann mittels Browserzoom\nauf mindestens 200 % ohne Funktionsverlust angepasst werden. Navigation und\nBedienelemente sind konsistent gestaltet und an vergleichbaren Stellen positioniert.",{"type":23,"tag":531,"props":913,"children":915},{"id":914},"textalternativen-medien-und-zeitgesteuerte-inhalte",[916],{"type":38,"value":917},"Textalternativen, Medien und zeitgesteuerte Inhalte",{"type":23,"tag":41,"props":919,"children":920},{},[921],{"type":38,"value":922},"Für alle Bilder und Grafiken wurden Vorkehrungen getroffen, damit Nutzende beim\nErstellen von Inhalten aussagekräftige Alternativtexte hinterlegen oder reine\nSchmuckgrafiken durch leere Alternativtexte kennzeichnen können.\nVideo-Inhalte, soweit sie unserer Kontrolle unterliegen, sind mit Untertiteln versehen.\nZeitgesteuerte Anzeigen oder automatische Hinweise wurden vermieden.\nFalls solche Elemente aus funktionalen Gründen erforderlich sind, können diese von\nNutzenden pausiert und gesteuert werden.\nInhalte, die Aufmerksamkeit erfordern könnten, blinken oder flackern nicht.",{"type":23,"tag":531,"props":924,"children":926},{"id":925},"navigation-und-bedienung",[927],{"type":38,"value":928},"Navigation und Bedienung",{"type":23,"tag":41,"props":930,"children":931},{},[932],{"type":38,"value":933},"Die Website ist vollständig per Tastatur bedienbar. Der Tastaturfokus ist stets klar\nsichtbar und folgt einer logischen Reihenfolge entsprechend dem Seitenaufbau.\nEin unnötiges Versetzen des Fokus innerhalb einer Seite sowie ein unbeabsichtigtes\nZurücksetzen beim Neuladen von Seiten werden vermieden, um Kontext- und\nOrientierungsverluste zu verhindern.",{"type":23,"tag":531,"props":935,"children":937},{"id":936},"formulare-und-eingaben",[938],{"type":38,"value":939},"Formulare und Eingaben",{"type":23,"tag":41,"props":941,"children":942},{},[943],{"type":38,"value":944},"In allen Formularen sind eindeutige Label-Zuordnungen zu den entsprechenden Formular-\nund Bedienelementen hinterlegt.\nFehler- und Statusmeldungen werden klar verständlich und zugänglich dargestellt,\num die Bedienung und das Verständnis von Eingaben zu erleichtern.",{"type":23,"tag":531,"props":946,"children":948},{"id":947},"zusätzliche-maßnahmen",[949],{"type":38,"value":950},"Zusätzliche Maßnahmen",{"type":23,"tag":73,"props":952,"children":953},{},[954,959,964],{"type":23,"tag":77,"props":955,"children":956},{},[957],{"type":38,"value":958},"Automatische Seitenumleitungen ohne Nutzerinteraktion wurden vermieden.",{"type":23,"tag":77,"props":960,"children":961},{},[962],{"type":38,"value":963},"Klick- und Touch-Ziele haben eine ausreichende Mindestgröße für eine einfache Bedienung.",{"type":23,"tag":77,"props":965,"children":966},{},[967],{"type":38,"value":968},"Bei linearer Navigation durch assistive Technologien folgen die Inhalte einer sinnvollen und verständlichen Reihenfolge.",{"type":23,"tag":41,"props":970,"children":971},{},[972],{"type":38,"value":973},"Diese Maßnahmen gewährleisten ein hohes Maß an Kompatibilität mit gängigen assistiven\nTechnologien und ermöglichen eine gleichwertige Nutzung unserer digitalen Dienste für\nMenschen mit unterschiedlichen Fähigkeiten.",{"type":23,"tag":132,"props":975,"children":977},{"className":976},[135],[978],{"type":23,"tag":41,"props":979,"children":980},{},[981],{"type":23,"tag":141,"props":982,"children":983},{},[984],{"type":38,"value":431},{"type":23,"tag":274,"props":986,"children":989},{"className":987},[804,988],"hint--info",[990,996,1007],{"type":23,"tag":33,"props":991,"children":993},{"id":992},"mögliche-kurzversion",[994],{"type":38,"value":995},"Mögliche Kurzversion:",{"type":23,"tag":41,"props":997,"children":998},{},[999,1001,1005],{"type":38,"value":1000},"Wir gestalten unsere digitalen Angebote gemäß dem\n",{"type":23,"tag":45,"props":1002,"children":1003},{},[1004],{"type":38,"value":170},{"type":38,"value":1006}," und den geltenden Standards\n(z.B. WCAG 2.1 AA) barrierefrei und bauen diese Zugänglichkeit laufend weiter aus.",{"type":23,"tag":41,"props":1008,"children":1009},{},[1010,1012,1017,1019],{"type":38,"value":1011},"Trotz aller Sorgfalt kann es vereinzelt zu\n",{"type":23,"tag":45,"props":1013,"children":1014},{},[1015],{"type":38,"value":1016},"temporären oder technischen Einschränkungen",{"type":38,"value":1018}," kommen.\nHinweise zu Barrieren nehmen wir gerne entgegen und bemühen uns um schnelle\nLösungen. ",{"type":23,"tag":141,"props":1020,"children":1021},{},[1022],{"type":38,"value":1023},"[Hier geht’s zu den vollständigen Informationen zur Barrierefreiheit](LINK)",{"type":23,"tag":274,"props":1025,"children":1027},{"className":1026},[804,805],[1028,1040],{"type":23,"tag":41,"props":1029,"children":1030},{},[1031,1035,1038],{"type":23,"tag":45,"props":1032,"children":1033},{},[1034],{"type":38,"value":815},{"type":23,"tag":147,"props":1036,"children":1037},{},[],{"type":38,"value":1039},"\nDie EzB/IBE nicht in die AGB einbringen, da dies evtl. Einfluss auf andere\n“Rechtsgeschäfte” haben könnte.\nStattdessen einen individuellen Link „Barrierefreiheit“ im Footer platzieren,\nder auf die „Informationen zur Barrierefreiheit“ verweist als eigenständige Seite.",{"type":23,"tag":1041,"props":1042,"children":1043},"blockquote",{},[1044],{"type":23,"tag":41,"props":1045,"children":1046},{},[1047,1049,1054],{"type":38,"value":1048},"“",{"type":23,"tag":141,"props":1050,"children":1051},{},[1052],{"type":38,"value":1053},"Der Dienstleistungserbringer gibt zu seiner Dienstleistung im Sinne des\n§ 1 Absatz 3 in seinen Allgemeinen Geschäftsbedingungen oder auf andere\ndeutlich wahrnehmbare Weise an, wie sie die Barrierefreiheitsanforderungen der\nnach § 3 Absatz 2 zu erlassenden Rechtsverordnung erfüllt.",{"type":38,"value":1055},"”",{"type":23,"tag":33,"props":1057,"children":1059},{"id":1058},"welche-erfahrungen-haben-wir-mit-juristischer-beratung-zu-diesem-thema-gemacht",[1060],{"type":38,"value":1061},"Welche Erfahrungen haben wir mit juristischer Beratung zu diesem Thema gemacht",{"type":23,"tag":41,"props":1063,"children":1064},{},[1065,1067,1072,1074,1079],{"type":38,"value":1066},"Es gilt zu beachten, dass es auch unter den juristischen Beratern, mit denen wir im Laufe\nder Zeit zu diesem Thema Kontakt hatten, einen gewissen Diskurs zur Umsetzung der im\nGesetz beschriebenen Maßnahmen gegeben hat. Dabei ist in erster Line die Unterscheidung\nzwischen einer ",{"type":23,"tag":141,"props":1068,"children":1069},{},[1070],{"type":38,"value":1071},"engen",{"type":38,"value":1073}," und ",{"type":23,"tag":141,"props":1075,"children":1076},{},[1077],{"type":38,"value":1078},"weiten",{"type":38,"value":1080}," Auslegung der Barrierefreiheitsanforderungen\nAusgangspunkt für den eingeforderten Detailgrad und Tiefe der beschriebenen Maßnahmen.",{"type":23,"tag":41,"props":1082,"children":1083},{},[1084],{"type":38,"value":1085},"Viele Kanzleien, die sich mit digitaler Barrierefreiheit befassen, empfehlen aber:",{"type":23,"tag":73,"props":1087,"children":1088},{},[1089,1108,1120,1144,1156],{"type":23,"tag":77,"props":1090,"children":1091},{},[1092,1094,1099,1101,1106],{"type":38,"value":1093},"die EzB ",{"type":23,"tag":45,"props":1095,"children":1096},{},[1097],{"type":38,"value":1098},"nicht in die AGB zu integrieren",{"type":38,"value":1100},", sondern als ",{"type":23,"tag":45,"props":1102,"children":1103},{},[1104],{"type":38,"value":1105},"eigenständige, gut auffindbare Seite zu führen",{"type":38,"value":1107}," – etwa unter /barrierefreiheit und diese dann im Footer der Webseite zu verlinken.",{"type":23,"tag":77,"props":1109,"children":1110},{},[1111,1113,1118],{"type":38,"value":1112},"In der ",{"type":23,"tag":45,"props":1114,"children":1115},{},[1116],{"type":38,"value":1117},"EzB muss ausdrücklich auf die AGBs verwiesen werden",{"type":38,"value":1119}," (z.B. um Erklärungslücken in der Geschäftstätigkeit etc. zu schließen)",{"type":23,"tag":77,"props":1121,"children":1122},{},[1123,1128,1130,1135,1137,1142],{"type":23,"tag":45,"props":1124,"children":1125},{},[1126],{"type":38,"value":1127},"Keine rechtlich verbindlichen Zusicherungen",{"type":38,"value":1129}," (",{"type":23,"tag":141,"props":1131,"children":1132},{},[1133],{"type":38,"value":1134},"„vollständige Barrierefreiheit“",{"type":38,"value":1136},", ",{"type":23,"tag":141,"props":1138,"children":1139},{},[1140],{"type":38,"value":1141},"„garantierte Konformität“",{"type":38,"value":1143},") abzugeben, wenn diese nicht zu 100 % erfüllt sind",{"type":23,"tag":77,"props":1145,"children":1146},{},[1147,1149,1154],{"type":38,"value":1148},"Einen ",{"type":23,"tag":45,"props":1150,"children":1151},{},[1152],{"type":38,"value":1153},"Ansprechperson für Rückmeldungen benennen",{"type":38,"value":1155}," – am besten mit E-Mail-Adresse und optional Telefonnummer",{"type":23,"tag":77,"props":1157,"children":1158},{},[1159,1164],{"type":23,"tag":45,"props":1160,"children":1161},{},[1162],{"type":38,"value":1163},"Im Speziellen:",{"type":38,"value":1165}," Um nicht in das Schussfeld von Abmahnwellen zu geraten, sollte der entsprechende Gesetzestext fast 1:1 aufgegriffen werden. Das senkt das Risiko einer bei einer (Semi-)Automatischen Prüfung in den Fokus für ein Versäumnis in der Erklärung zu geraten (BFSG Anlage 3 kopieren oder zitieren)",{"type":23,"tag":531,"props":1167,"children":1169},{"id":1168},"eine-mögliche-zusätzliche-formulierung-zur-verbesserten-abwehr-vor-abmahnungen",[1170],{"type":38,"value":1171},"Eine mögliche zusätzliche Formulierung zur verbesserten Abwehr vor Abmahnungen",{"type":23,"tag":274,"props":1173,"children":1176},{"className":1174},[277,1175],"doc-sheet__border-all",[1177],{"type":23,"tag":274,"props":1178,"children":1180},{"className":1179},[283],[1181,1187,1192,1235,1241,1246,1284,1322,1328,1333,1339,1344,1377],{"type":23,"tag":33,"props":1182,"children":1184},{"id":1183},"konzeption-der-dienstleistung-für-einen-barrierefreien-zugang",[1185],{"type":38,"value":1186},"Konzeption der Dienstleistung für einen barrierefreien Zugang",{"type":23,"tag":41,"props":1188,"children":1189},{},[1190],{"type":38,"value":1191},"Unsere digitale Dienstleistung wurde so konzipiert, dass sie Menschen mit\nverschiedenen Einschränkungen eine gleichwertige Nutzung ermöglicht.\nDabei setzen wir auf folgende Prinzipien:",{"type":23,"tag":73,"props":1193,"children":1194},{},[1195,1200,1205,1210,1215,1220,1225,1230],{"type":23,"tag":77,"props":1196,"children":1197},{},[1198],{"type":38,"value":1199},"Kontraststarke Gestaltung der Benutzeroberfläche",{"type":23,"tag":77,"props":1201,"children":1202},{},[1203],{"type":38,"value":1204},"Bereitstellung von Informationen auf mehreren Wahrnehmungsebenen (textbasiert, auditiv, visuell)",{"type":23,"tag":77,"props":1206,"children":1207},{},[1208],{"type":38,"value":1209},"Alternative Inhalte für visuelle oder auditive Medien",{"type":23,"tag":77,"props":1211,"children":1212},{},[1213],{"type":38,"value":1214},"Bedienung sämtlicher Funktionen mittels Tastatur",{"type":23,"tag":77,"props":1216,"children":1217},{},[1218],{"type":38,"value":1219},"Unterstützung für Screenreader und vergleichbare assistive Technologien",{"type":23,"tag":77,"props":1221,"children":1222},{},[1223],{"type":38,"value":1224},"Vermeidung zeitkritischer Interaktionen ohne barrierefreie Alternativen",{"type":23,"tag":77,"props":1226,"children":1227},{},[1228],{"type":38,"value":1229},"Einsatz einfacher Sprache verständlicher Inhalte",{"type":23,"tag":77,"props":1231,"children":1232},{},[1233],{"type":38,"value":1234},"intuitive Navigation und logisch gegliederte Inhalte",{"type":23,"tag":531,"props":1236,"children":1238},{"id":1237},"allgemeine-barrierefreie-informationsbereitstellung",[1239],{"type":38,"value":1240},"Allgemeine barrierefreie Informationsbereitstellung",{"type":23,"tag":41,"props":1242,"children":1243},{},[1244],{"type":38,"value":1245},"Die Informationen über unsere Dienstleistungen werden so an Nutzende vermittelt,\ndass sie:",{"type":23,"tag":73,"props":1247,"children":1248},{},[1249,1254,1259,1264,1269,1274,1279],{"type":23,"tag":77,"props":1250,"children":1251},{},[1252],{"type":38,"value":1253},"über mehrere Sinne des Nutzers (z.B. visuell und/oder auditiv) erfassbar sind,",{"type":23,"tag":77,"props":1255,"children":1256},{},[1257],{"type":38,"value":1258},"leicht auffindbar für Nutzer bereitgestellt werden,",{"type":23,"tag":77,"props":1260,"children":1261},{},[1262],{"type":38,"value":1263},"in verständlicher Art verfasst sind,",{"type":23,"tag":77,"props":1265,"children":1266},{},[1267],{"type":38,"value":1268},"in einem universellen Textformat (Schriftart, Größe, Kontraste, Abstände) vorliegen, um Konvertierungen in assistive Ausgabeformen zu ermöglichen,",{"type":23,"tag":77,"props":1270,"children":1271},{},[1272],{"type":38,"value":1273},"in gut lesbarer Schriftgröße, angemessener Typografie und mit ausreichendem Kontrast sowie Abstand gestaltet sind,",{"type":23,"tag":77,"props":1275,"children":1276},{},[1277],{"type":38,"value":1278},"bei nicht-textbasierten Inhalten alternative textuelle Beschreibungen bereitstellen,",{"type":23,"tag":77,"props":1280,"children":1281},{},[1282],{"type":38,"value":1283},"digital so konzipiert sind, dass sie konsistent, zugänglich, intuitiv und stabil funktionieren.",{"type":23,"tag":41,"props":1285,"children":1286},{},[1287,1289,1294,1295,1300,1301,1306,1307,1312,1314,1320],{"type":38,"value":1288},"Sowohl unsere Webangebote, digitale Dienstleistungen als auch mobile Applikationen\nfolgen diesen Prinzipien.\nDie Gestaltung richtet sich dabei durchgängig an den Grundsätzen der\n",{"type":23,"tag":45,"props":1290,"children":1291},{},[1292],{"type":38,"value":1293},"Wahrnehmbarkeit",{"type":38,"value":1136},{"type":23,"tag":45,"props":1296,"children":1297},{},[1298],{"type":38,"value":1299},"Bedienbarkeit",{"type":38,"value":1136},{"type":23,"tag":45,"props":1302,"children":1303},{},[1304],{"type":38,"value":1305},"Verständlichkeit",{"type":38,"value":1073},{"type":23,"tag":45,"props":1308,"children":1309},{},[1310],{"type":38,"value":1311},"Robustheit",{"type":38,"value":1313},"\n(nach ",{"type":23,"tag":53,"props":1315,"children":1317},{"href":1316},"https://www.barrierefreiheit-dienstekonsolidierung.bund.de/Webs/PB/DE/gesetze-und-richtlinien/wcag/wcag-artikel.html",[1318],{"type":38,"value":1319},"WCAG-Kriterien",{"type":38,"value":1321},") aus.",{"type":23,"tag":531,"props":1323,"children":1325},{"id":1324},"zugänglichkeit-unterstützender-dienste",[1326],{"type":38,"value":1327},"Zugänglichkeit unterstützender Dienste",{"type":23,"tag":41,"props":1329,"children":1330},{},[1331],{"type":38,"value":1332},"Wenn zusätzliche Hilfsangebote wie Support-Hotlines, Schulungsangebote oder\ntechnische Beratung angeboten werden, stellen wir sicher, dass auch diese Dienste\nInformationen zur Barrierefreiheit und Kompatibilität auf barrierefreiem Weg\nzugänglich machen.",{"type":23,"tag":531,"props":1334,"children":1336},{"id":1335},"funktionale-anforderungen-für-spezielle-einschränkungen",[1337],{"type":38,"value":1338},"Funktionale Anforderungen für spezielle Einschränkungen",{"type":23,"tag":41,"props":1340,"children":1341},{},[1342],{"type":38,"value":1343},"Unsere Dienstleistungen berücksichtigen folgende barrierefreie Interaktionsformen\nfür die Nutzenden:",{"type":23,"tag":73,"props":1345,"children":1346},{},[1347,1352,1357,1362,1367,1372],{"type":23,"tag":77,"props":1348,"children":1349},{},[1350],{"type":38,"value":1351},"Für visuelle Einschränkungen: mindestens eine Option ohne visuelle Elemente und eine, die unabhängig von Farbunterscheidung funktioniert.",{"type":23,"tag":77,"props":1353,"children":1354},{},[1355],{"type":38,"value":1356},"Für Personen mit Einschränkungen des Hörens: mindestens eine Nutzungsmöglichkeit ohne Ton und eine mit anpassbaren Audiofunktionen.",{"type":23,"tag":77,"props":1358,"children":1359},{},[1360],{"type":38,"value":1361},"Für stimmlich eingeschränkte Nutzer: mindestens eine Bedienvariante ohne sprachliche Eingabe.",{"type":23,"tag":77,"props":1363,"children":1364},{},[1365],{"type":38,"value":1366},"Für motorisch eingeschränkte Nutzer: mindestens eine Bedienform ohne komplexe Bewegungsabfolgen oder Muskelkraft, sowie eine Option bei eingeschränkter Reichweite.",{"type":23,"tag":77,"props":1368,"children":1369},{},[1370],{"type":38,"value":1371},"Für Menschen mit kognitiven Einschränkungen: bedienerfreundliche Strukturen, soweit möglich reduzierte Komplexität und unterstützende Hinweise.",{"type":23,"tag":77,"props":1373,"children":1374},{},[1375],{"type":38,"value":1376},"Für alle Barrierefreiheitsfunktionen gilt: Die Privatsphäre der Nutzenden wird gewahrt.",{"type":23,"tag":41,"props":1378,"children":1379},{},[1380,1382,1386],{"type":38,"value":1381},"Diese Maßnahmen orientieren sich an den Vorgaben des\n",{"type":23,"tag":45,"props":1383,"children":1384},{},[1385],{"type":38,"value":301},{"type":38,"value":1387}," und wurden in unsere technischen und\ngestalterischen Prozesse integriert, um eine möglichst umfassende Zugänglichkeit\nsicherzustellen.",{"type":23,"tag":33,"props":1389,"children":1391},{"id":1390},"was-droht-ohne-ezb",[1392],{"type":38,"value":1393},"Was droht ohne EzB?",{"type":23,"tag":41,"props":1395,"children":1396},{},[1397,1399,1408],{"type":38,"value":1398},"Ohne gültige und überprüfbare Erklärung kann laut ",{"type":23,"tag":53,"props":1400,"children":1402},{"href":1401},"https://bfsg-gesetz.de/37-bfsg/",[1403],{"type":23,"tag":45,"props":1404,"children":1405},{},[1406],{"type":38,"value":1407},"§ 37 BFSG",{"type":38,"value":1409}," Folgendes passieren:",{"type":23,"tag":73,"props":1411,"children":1412},{},[1413,1418,1423,1428],{"type":23,"tag":77,"props":1414,"children":1415},{},[1416],{"type":38,"value":1417},"Betriebs- oder Vertriebsverbot (der entsprechenden Dienstleistungen oder Produkte)",{"type":23,"tag":77,"props":1419,"children":1420},{},[1421],{"type":38,"value":1422},"Bußgelder von bis zu 100.000 Euro (je nach Verstoß)",{"type":23,"tag":77,"props":1424,"children":1425},{},[1426],{"type":38,"value":1427},"Förmliche Beanstandung durch die Marktüberwachung",{"type":23,"tag":77,"props":1429,"children":1430},{},[1431],{"type":38,"value":1432},"Abmahnungen durch Wettbewerber oder Verbraucherorganisationen",{"type":23,"tag":41,"props":1434,"children":1435},{},[1436,1438,1446],{"type":38,"value":1437},"Dies ist insbesondere deshalb relevant,\n",{"type":23,"tag":45,"props":1439,"children":1440},{},[1441],{"type":23,"tag":141,"props":1442,"children":1443},{},[1444],{"type":38,"value":1445},"da jede Institution, Firma oder natürliche Person die Prüfstellen auf einen Verstoß\ngegen das BFSG hinweisen kann",{"type":38,"value":1447},". So ist anzunehmen,\ndass mindestens Ihre Konkurrenz ein starkes Augenmerk darauf legen wird!",{"type":23,"tag":33,"props":1449,"children":1451},{"id":1450},"fazit-klarheit-schützt-vor-abmahnung",[1452],{"type":38,"value":1453},"Fazit - Klarheit schützt vor Abmahnung",{"type":23,"tag":41,"props":1455,"children":1456},{},[1457,1459,1463],{"type":38,"value":1458},"Die ",{"type":23,"tag":45,"props":1460,"children":1461},{},[1462],{"type":38,"value":264},{"type":38,"value":1464}," ist nur ein kleiner Teil Ihrer digitalen Dienstleistung aber mit großer Wirkung.\nWer sie ernst nimmt und individuell auf die eigene Dienstleistung zuschneidet, zeigt nicht nur Gesetzestreue,\nsondern auch Respekt gegenüber allen Nutzenden. Zudem schützt sie vor rechtlichen Stolperfallen und wirtschaftlichen Schäden.",{"type":23,"tag":41,"props":1466,"children":1467},{},[1468],{"type":38,"value":1469},"Wenn Sie Unterstützung bei der Erstellung oder Formulierung brauchen, sprechen Sie uns gern an.\nWir helfen beim Erstellen barrierefreier Webanwendungen und zeigen, wie Sie die gesetzlichen Anforderungen sinnvoll\numsetzen können.",{"type":23,"tag":1471,"props":1472,"children":1474},"h4",{"id":1473},"rechtlicher-hinweis",[1475],{"type":38,"value":1476},"Rechtlicher Hinweis",{"type":23,"tag":41,"props":1478,"children":1479},{},[1480,1482,1490,1491,1496,1498,1503,1505,1510,1512,1517],{"type":38,"value":1481},"Dieser Blogpost ",{"type":23,"tag":45,"props":1483,"children":1484},{},[1485],{"type":23,"tag":141,"props":1486,"children":1487},{},[1488],{"type":38,"value":1489},"stellt keine Rechtsberatung dar",{"type":38,"value":1073},{"type":23,"tag":45,"props":1492,"children":1493},{},[1494],{"type":38,"value":1495},"ersetzt auch keine rechtliche Prüfung Ihrer Erklärung zur Barrierefreiheit",{"type":38,"value":1497},". Die enthaltenen Formulierungen und Hinweise wurden sorgfältig recherchiert, erheben jedoch ",{"type":23,"tag":45,"props":1499,"children":1500},{},[1501],{"type":38,"value":1502},"keinen Anspruch auf Vollständigkeit",{"type":38,"value":1504}," oder ",{"type":23,"tag":45,"props":1506,"children":1507},{},[1508],{"type":38,"value":1509},"rechtliche Verbindlichkeit",{"type":38,"value":1511},". Für die tatsächliche Umsetzung gemäß ",{"type":23,"tag":45,"props":1513,"children":1514},{},[1515],{"type":38,"value":1516},"BFSG",{"type":38,"value":1518}," und geltender Verordnungen ist eine juristische Prüfung im Einzelfall empfohlen.",{"type":23,"tag":1471,"props":1520,"children":1522},{"id":1521},"hinweis-zur-erstellung-dieses-beitrags",[1523],{"type":38,"value":1524},"Hinweis zur Erstellung dieses Beitrags",{"type":23,"tag":41,"props":1526,"children":1527},{},[1528],{"type":38,"value":1529},"Dieser Beitrag wurde auch mit Hilfe der KI OpenAI GPT-4 (2024-06, Modell: GPT-4o) erstellt. Grundlage waren redaktionelle Recherchen, persönliche Erfahrungen, rechtliche Quellen und eine firmeneigene Mustervorlage. Das abschließende Lektorat und die fachliche Freigabe erfolgten durch den Autor des Artikels und Zuständigen für Barrierefreiheit Dr.-Ing. Jens Bornschein.",{"title":7,"searchDepth":1531,"depth":1531,"links":1532},2,[1533,1534,1535,1539,1540,1543,1544],{"id":35,"depth":1531,"text":39},{"id":156,"depth":1531,"text":159},{"id":269,"depth":1531,"text":272,"children":1536},[1537],{"id":845,"depth":1538,"text":848},3,{"id":992,"depth":1531,"text":995},{"id":1058,"depth":1531,"text":1061,"children":1541},[1542],{"id":1168,"depth":1538,"text":1171},{"id":1390,"depth":1531,"text":1393},{"id":1450,"depth":1531,"text":1453},"markdown","common:blog:15.accessibility-legal-statement-template.md","common","blog/15.accessibility-legal-statement-template.md","blog/15.accessibility-legal-statement-template","md",{"_path":1552,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1553,"description":1554,"author":1555,"image":1556,"releaseDate":1557,"blogCategories":1558,"articleTags":1561,"tags":1563,"_type":1545,"_id":1565,"_source":1547,"_file":1566,"_stem":1567,"_extension":1550},"/blog/gitlab-behind-traefik","Installation von Gitlab hinter Traefik","Es ist super einfach, GitLab mit Docker auf einem dedizierten Server zu installieren. Aber was, wenn Sie es neben Ihren anderen Deployments bereitstellen müssen?","robert-juzak","/images/dev-ops-dark.svg","2025-07-16",[1559,1560],"Was uns bewegt","Infrastruktur",[1562],"DevOps",[1564],"devops","common:blog:14.gitlab-behind-traefik.md","blog/14.gitlab-behind-traefik.md","blog/14.gitlab-behind-traefik",{"_path":1569,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1570,"description":1571,"author":1555,"image":1556,"releaseDate":1572,"blogCategories":1573,"articleTags":1574,"tags":1576,"_type":1545,"_id":1578,"_source":1547,"_file":1579,"_stem":1580,"_extension":1550},"/blog/shopware-renovate-bot","Konfiguration von Renovate für die ordnungsgemäße Behandlung von Shopware-Paketen","Shopware verwendet ein benutzerdefiniertes Versionierungsschema. Um Renovate die automatische Erstellung von PR's zu ermöglichen, müssen wir die Renovate-Konfiguration anpassen","2025-09-08",[14,1562],[1562,1575],"Open Source",[1577,1564],"shopware","common:blog:16.shopware-renovate-bot.md","blog/16.shopware-renovate-bot.md","blog/16.shopware-renovate-bot",{"_path":4},{"_path":1583},"/en/blog/accessibility-legal-statement-template",{"_path":1585,"_dir":1586,"_draft":6,"_partial":6,"_locale":7,"slug":10,"teams":1587,"primaryTeam":1588,"firstName":1589,"lastName":1590,"prefixTitle":1591,"suffixTitle":7,"executiveRole":1592,"education":1593,"role":1601,"workingSince":1600,"inTheCompanySince":1597,"techSkills":1608,"skills":1638,"projects":1651,"contactDetails":1657,"certifications":1661,"image":1667,"_id":1668,"_type":1669,"title":1670,"_source":1586,"_file":1671,"_stem":1672,"_extension":1669},"/employees/jens-bornschein","employees",[1588],"appDev","Jens","Bornschein","Dr. Ing.","Projektmanager | Consultant",[1594,1598],[1595,1596,1597],"Doktor-Ingenieur der Informatik","TU Dresden","2020",[1599,1596,1600],"Diplom-Medieninformatiker (TU)","2010",[1602,1603,1604,1605,1606,1607],"projectManager","softwareDeveloper","fullstackDeveloper","UI/UX","accessibility","consultant",[1609,1612,1615,1619,1622,1625,1627,1630,1633,1636],{"name":1610,"level":1611},"PHP","expert",{"name":1613,"level":1611,"icon":1614},"C#","/images/csharp.svg",{"name":1616,"level":1617,"icon":1618},"CSS","advanced","/images/css.svg",{"name":1620,"level":1617,"icon":1621},"HTML","/images/html.svg",{"name":1623,"level":1617,"icon":1624},"Vue.js","/images/vuejs.svg",{"name":1626,"level":1617},"Java",{"name":1628,"level":1611,"icon":1629},"Adobe Photoshop","/images/adobeps-logo.svg",{"name":1631,"level":1611,"icon":1632},"Adobe Illustrator","/images/adobeai-logo.svg",{"name":1634,"level":1617,"icon":1635},"Adobe XD","/images/adobexd-logo.svg",{"name":1637,"level":1617},"Gitlab",[1639,1641,1642,1643,1645,1647,1649],{"name":1640,"level":1611},"projectManagement",{"name":1606,"level":1611},{"name":1605,"level":1611},{"name":1644,"level":1617},"consulting",{"name":1646,"level":1617},"scrum",{"name":1648,"level":1617},"softwareArchitect",{"name":1650,"level":1617},"training",[1652,1655],{"project":1653,"position":1654},"Montagespezis","project manager",{"project":1656,"position":1654},"Vipr",{"eMail":1658,"phone":1659,"visibility":1660},"jens.bornschein@helmundwalter.de","+49 351 799 035 24","1",[1662],{"image":1663,"link":1664,"title":1665,"pdf":1666},"/images/certifications/KHZG_Badge.svg","https://www.bundesamtsozialesicherung.de/de/themen/innovationsfonds-und-krankenhausstrukturfonds/krankenhausstrukturfonds/","Berechtigung nach § 21 Absatz 5 Satz 1 KHSFV - Management für KHZG geförderte Vorhaben","/certificates/jb_KHSFV_Zertifikat.pdf","images/employees/Portraits/JensBornschein_MS.webp","employees:employees:5.jens-bornschein.json","json","Jens Bornschein","employees/5.jens-bornschein.json","employees/5.jens-bornschein",{"_path":1552,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1553,"description":1554,"author":1555,"image":1556,"releaseDate":1557,"blogCategories":1674,"articleTags":1675,"tags":1676,"body":1677,"_type":1545,"_id":1565,"_source":1547,"_file":1566,"_stem":1567,"_extension":1550},[1559,1560],[1562],[1564],{"type":20,"children":1678,"toc":4673},[1679,1684,1690,1701,1988,1993,1999,2004,2009,2014,2121,2127,2132,2372,2378,2383,2401,2407,2423,2780,2785,2848,2854,2869,2893,3272,3276,3312,3315,3325,3328,3331,3337,3350,3360,3373,3376,3383,3782,3786,3811,3814,3817,3827,3833,4189,4193,4206,4209,4214,4647,4651,4667],{"type":23,"tag":24,"props":1680,"children":1683},{"alt":7,"aspect-ratio":1681,"height":28,"object-fit":29,"src":1682},"1.78","/blog/gitlab-traefik.png",[],{"type":23,"tag":33,"props":1685,"children":1687},{"id":1686},"der-einfachste-weg-gitlab-zu-installieren",[1688],{"type":38,"value":1689},"Der einfachste Weg, GitLab zu installieren",{"type":23,"tag":41,"props":1691,"children":1692},{},[1693,1695],{"type":38,"value":1694},"GitLab bietet offizielle Anweisungen zur Installation mit Docker und Docker Compose. Sie finden diese in der ",{"type":23,"tag":53,"props":1696,"children":1698},{"href":1697},"https://docs.gitlab.com/install/docker/installation/#install-gitlab-by-using-docker-compose",[1699],{"type":38,"value":1700},"offiziellen Dokumentation",{"type":23,"tag":1702,"props":1703,"children":1708},"pre",{"className":1704,"code":1705,"filename":1706,"language":1707,"meta":7,"style":7},"language-yaml shiki shiki-themes github-dark github-dark monokai","services:\n  gitlab:\n    image: gitlab/gitlab-ee:\u003Cversion>-ce.0\n    container_name: gitlab\n    restart: always\n    hostname: '\u003Cgitlab.example.com>'\n    environment:\n      GITLAB_OMNIBUS_CONFIG: |\n        # Add any other gitlab.rb configuration here, each on its own line\n        external_url 'https://\u003Cgitlab.example.com>'\n    ports:\n      - '80:80'\n      - '443:443'\n      - '22:22'\n    volumes:\n      - '$GITLAB_HOME/config:/etc/gitlab'\n      - '$GITLAB_HOME/logs:/var/log/gitlab'\n      - '$GITLAB_HOME/data:/var/opt/gitlab'\n    shm_size: '256m'\n","gitlab/docker-compose.yaml","yaml",[1709],{"type":23,"tag":1710,"props":1711,"children":1712},"code",{"__ignoreMap":7},[1713,1730,1742,1761,1779,1797,1815,1828,1847,1856,1865,1878,1892,1905,1918,1931,1944,1957,1970],{"type":23,"tag":132,"props":1714,"children":1717},{"class":1715,"line":1716},"line",1,[1718,1724],{"type":23,"tag":132,"props":1719,"children":1721},{"style":1720},"--shiki-default:#85E89D;--shiki-dark:#85E89D;--shiki-sepia:#F92672",[1722],{"type":38,"value":1723},"services",{"type":23,"tag":132,"props":1725,"children":1727},{"style":1726},"--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2",[1728],{"type":38,"value":1729},":\n",{"type":23,"tag":132,"props":1731,"children":1732},{"class":1715,"line":1531},[1733,1738],{"type":23,"tag":132,"props":1734,"children":1735},{"style":1720},[1736],{"type":38,"value":1737},"  gitlab",{"type":23,"tag":132,"props":1739,"children":1740},{"style":1726},[1741],{"type":38,"value":1729},{"type":23,"tag":132,"props":1743,"children":1744},{"class":1715,"line":1538},[1745,1750,1755],{"type":23,"tag":132,"props":1746,"children":1747},{"style":1720},[1748],{"type":38,"value":1749},"    image",{"type":23,"tag":132,"props":1751,"children":1752},{"style":1726},[1753],{"type":38,"value":1754},": ",{"type":23,"tag":132,"props":1756,"children":1758},{"style":1757},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74",[1759],{"type":38,"value":1760},"gitlab/gitlab-ee:\u003Cversion>-ce.0\n",{"type":23,"tag":132,"props":1762,"children":1764},{"class":1715,"line":1763},4,[1765,1770,1774],{"type":23,"tag":132,"props":1766,"children":1767},{"style":1720},[1768],{"type":38,"value":1769},"    container_name",{"type":23,"tag":132,"props":1771,"children":1772},{"style":1726},[1773],{"type":38,"value":1754},{"type":23,"tag":132,"props":1775,"children":1776},{"style":1757},[1777],{"type":38,"value":1778},"gitlab\n",{"type":23,"tag":132,"props":1780,"children":1782},{"class":1715,"line":1781},5,[1783,1788,1792],{"type":23,"tag":132,"props":1784,"children":1785},{"style":1720},[1786],{"type":38,"value":1787},"    restart",{"type":23,"tag":132,"props":1789,"children":1790},{"style":1726},[1791],{"type":38,"value":1754},{"type":23,"tag":132,"props":1793,"children":1794},{"style":1757},[1795],{"type":38,"value":1796},"always\n",{"type":23,"tag":132,"props":1798,"children":1800},{"class":1715,"line":1799},6,[1801,1806,1810],{"type":23,"tag":132,"props":1802,"children":1803},{"style":1720},[1804],{"type":38,"value":1805},"    hostname",{"type":23,"tag":132,"props":1807,"children":1808},{"style":1726},[1809],{"type":38,"value":1754},{"type":23,"tag":132,"props":1811,"children":1812},{"style":1757},[1813],{"type":38,"value":1814},"'\u003Cgitlab.example.com>'\n",{"type":23,"tag":132,"props":1816,"children":1818},{"class":1715,"line":1817},7,[1819,1824],{"type":23,"tag":132,"props":1820,"children":1821},{"style":1720},[1822],{"type":38,"value":1823},"    environment",{"type":23,"tag":132,"props":1825,"children":1826},{"style":1726},[1827],{"type":38,"value":1729},{"type":23,"tag":132,"props":1829,"children":1831},{"class":1715,"line":1830},8,[1832,1837,1841],{"type":23,"tag":132,"props":1833,"children":1834},{"style":1720},[1835],{"type":38,"value":1836},"      GITLAB_OMNIBUS_CONFIG",{"type":23,"tag":132,"props":1838,"children":1839},{"style":1726},[1840],{"type":38,"value":1754},{"type":23,"tag":132,"props":1842,"children":1844},{"style":1843},"--shiki-default:#F97583;--shiki-dark:#F97583;--shiki-sepia:#F92672",[1845],{"type":38,"value":1846},"|\n",{"type":23,"tag":132,"props":1848,"children":1850},{"class":1715,"line":1849},9,[1851],{"type":23,"tag":132,"props":1852,"children":1853},{"style":1757},[1854],{"type":38,"value":1855},"        # Add any other gitlab.rb configuration here, each on its own line\n",{"type":23,"tag":132,"props":1857,"children":1859},{"class":1715,"line":1858},10,[1860],{"type":23,"tag":132,"props":1861,"children":1862},{"style":1757},[1863],{"type":38,"value":1864},"        external_url 'https://\u003Cgitlab.example.com>'\n",{"type":23,"tag":132,"props":1866,"children":1868},{"class":1715,"line":1867},11,[1869,1874],{"type":23,"tag":132,"props":1870,"children":1871},{"style":1720},[1872],{"type":38,"value":1873},"    ports",{"type":23,"tag":132,"props":1875,"children":1876},{"style":1726},[1877],{"type":38,"value":1729},{"type":23,"tag":132,"props":1879,"children":1881},{"class":1715,"line":1880},12,[1882,1887],{"type":23,"tag":132,"props":1883,"children":1884},{"style":1726},[1885],{"type":38,"value":1886},"      - ",{"type":23,"tag":132,"props":1888,"children":1889},{"style":1757},[1890],{"type":38,"value":1891},"'80:80'\n",{"type":23,"tag":132,"props":1893,"children":1895},{"class":1715,"line":1894},13,[1896,1900],{"type":23,"tag":132,"props":1897,"children":1898},{"style":1726},[1899],{"type":38,"value":1886},{"type":23,"tag":132,"props":1901,"children":1902},{"style":1757},[1903],{"type":38,"value":1904},"'443:443'\n",{"type":23,"tag":132,"props":1906,"children":1908},{"class":1715,"line":1907},14,[1909,1913],{"type":23,"tag":132,"props":1910,"children":1911},{"style":1726},[1912],{"type":38,"value":1886},{"type":23,"tag":132,"props":1914,"children":1915},{"style":1757},[1916],{"type":38,"value":1917},"'22:22'\n",{"type":23,"tag":132,"props":1919,"children":1921},{"class":1715,"line":1920},15,[1922,1927],{"type":23,"tag":132,"props":1923,"children":1924},{"style":1720},[1925],{"type":38,"value":1926},"    volumes",{"type":23,"tag":132,"props":1928,"children":1929},{"style":1726},[1930],{"type":38,"value":1729},{"type":23,"tag":132,"props":1932,"children":1934},{"class":1715,"line":1933},16,[1935,1939],{"type":23,"tag":132,"props":1936,"children":1937},{"style":1726},[1938],{"type":38,"value":1886},{"type":23,"tag":132,"props":1940,"children":1941},{"style":1757},[1942],{"type":38,"value":1943},"'$GITLAB_HOME/config:/etc/gitlab'\n",{"type":23,"tag":132,"props":1945,"children":1947},{"class":1715,"line":1946},17,[1948,1952],{"type":23,"tag":132,"props":1949,"children":1950},{"style":1726},[1951],{"type":38,"value":1886},{"type":23,"tag":132,"props":1953,"children":1954},{"style":1757},[1955],{"type":38,"value":1956},"'$GITLAB_HOME/logs:/var/log/gitlab'\n",{"type":23,"tag":132,"props":1958,"children":1960},{"class":1715,"line":1959},18,[1961,1965],{"type":23,"tag":132,"props":1962,"children":1963},{"style":1726},[1964],{"type":38,"value":1886},{"type":23,"tag":132,"props":1966,"children":1967},{"style":1757},[1968],{"type":38,"value":1969},"'$GITLAB_HOME/data:/var/opt/gitlab'\n",{"type":23,"tag":132,"props":1971,"children":1973},{"class":1715,"line":1972},19,[1974,1979,1983],{"type":23,"tag":132,"props":1975,"children":1976},{"style":1720},[1977],{"type":38,"value":1978},"    shm_size",{"type":23,"tag":132,"props":1980,"children":1981},{"style":1726},[1982],{"type":38,"value":1754},{"type":23,"tag":132,"props":1984,"children":1985},{"style":1757},[1986],{"type":38,"value":1987},"'256m'\n",{"type":23,"tag":41,"props":1989,"children":1990},{},[1991],{"type":38,"value":1992},"Dies setzt voraus, dass Sie einen Server haben, der ausschließlich für GitLab bestimmt ist und alle erforderlichen Ports (http, https, ssh) frei sind.\nGitLab kümmert sich um alles, einschließlich der TLS-Konfiguration mit Lets Encrypt.",{"type":23,"tag":33,"props":1994,"children":1996},{"id":1995},"integration-von-gitlab-neben-anderen-deployments",[1997],{"type":38,"value":1998},"Integration von GitLab neben anderen Deployments",{"type":23,"tag":41,"props":2000,"children":2001},{},[2002],{"type":38,"value":2003},"Was ist, wenn Sie GitLab nicht auf einem dedizierten Server installieren können oder wollen?",{"type":23,"tag":41,"props":2005,"children":2006},{},[2007],{"type":38,"value":2008},"Vielleicht möchten Sie einfach einen einzigen Server für alle Ihre Dienste?",{"type":23,"tag":41,"props":2010,"children":2011},{},[2012],{"type":38,"value":2013},"Dies ist eine Beispielstruktur, wie Sie Ihre Deployments organisieren könnten:",{"type":23,"tag":1702,"props":2015,"children":2019},{"className":2016,"code":2017,"language":2018,"meta":7,"style":7},"language-shell shiki shiki-themes github-dark github-dark monokai",".\n├── gitlab/                # GitLab Service-Stack\n├── gitlab-runner/         # GitLab Runner für CI/CD\n├── mattermost/            # Mattermost Team-Kollaboration\n├── nextcloud/             # Nextcloud Dateihosting und Zusammenarbeit\n└── traefik/               # Traefik Reverse-Proxy-Konfiguration\n","shell",[2020],{"type":23,"tag":1710,"props":2021,"children":2022},{"__ignoreMap":7},[2023,2032,2052,2069,2086,2103],{"type":23,"tag":132,"props":2024,"children":2025},{"class":1715,"line":1716},[2026],{"type":23,"tag":132,"props":2027,"children":2029},{"style":2028},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-sepia:#66D9EF",[2030],{"type":38,"value":2031},".\n",{"type":23,"tag":132,"props":2033,"children":2034},{"class":1715,"line":1531},[2035,2041,2046],{"type":23,"tag":132,"props":2036,"children":2038},{"style":2037},"--shiki-default:#B392F0;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E",[2039],{"type":38,"value":2040},"├──",{"type":23,"tag":132,"props":2042,"children":2043},{"style":1757},[2044],{"type":38,"value":2045}," gitlab/",{"type":23,"tag":132,"props":2047,"children":2049},{"style":2048},"--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F",[2050],{"type":38,"value":2051},"                # GitLab Service-Stack\n",{"type":23,"tag":132,"props":2053,"children":2054},{"class":1715,"line":1538},[2055,2059,2064],{"type":23,"tag":132,"props":2056,"children":2057},{"style":2037},[2058],{"type":38,"value":2040},{"type":23,"tag":132,"props":2060,"children":2061},{"style":1757},[2062],{"type":38,"value":2063}," gitlab-runner/",{"type":23,"tag":132,"props":2065,"children":2066},{"style":2048},[2067],{"type":38,"value":2068},"         # GitLab Runner für CI/CD\n",{"type":23,"tag":132,"props":2070,"children":2071},{"class":1715,"line":1763},[2072,2076,2081],{"type":23,"tag":132,"props":2073,"children":2074},{"style":2037},[2075],{"type":38,"value":2040},{"type":23,"tag":132,"props":2077,"children":2078},{"style":1757},[2079],{"type":38,"value":2080}," mattermost/",{"type":23,"tag":132,"props":2082,"children":2083},{"style":2048},[2084],{"type":38,"value":2085},"            # Mattermost Team-Kollaboration\n",{"type":23,"tag":132,"props":2087,"children":2088},{"class":1715,"line":1781},[2089,2093,2098],{"type":23,"tag":132,"props":2090,"children":2091},{"style":2037},[2092],{"type":38,"value":2040},{"type":23,"tag":132,"props":2094,"children":2095},{"style":1757},[2096],{"type":38,"value":2097}," nextcloud/",{"type":23,"tag":132,"props":2099,"children":2100},{"style":2048},[2101],{"type":38,"value":2102},"             # Nextcloud Dateihosting und Zusammenarbeit\n",{"type":23,"tag":132,"props":2104,"children":2105},{"class":1715,"line":1799},[2106,2111,2116],{"type":23,"tag":132,"props":2107,"children":2108},{"style":2037},[2109],{"type":38,"value":2110},"└──",{"type":23,"tag":132,"props":2112,"children":2113},{"style":1757},[2114],{"type":38,"value":2115}," traefik/",{"type":23,"tag":132,"props":2117,"children":2118},{"style":2048},[2119],{"type":38,"value":2120},"               # Traefik Reverse-Proxy-Konfiguration\n",{"type":23,"tag":531,"props":2122,"children":2124},{"id":2123},"verwendung-einer-dedizierten-ip",[2125],{"type":38,"value":2126},"Verwendung einer dedizierten IP",{"type":23,"tag":41,"props":2128,"children":2129},{},[2130],{"type":38,"value":2131},"Falls Sie die Möglichkeit haben, Ihrem Server eine zusätzliche IP zuzuweisen (wie eine Floating IP bei Hetzner),\nkönnen Sie die Ports einfach an diese IP binden.",{"type":23,"tag":1702,"props":2133,"children":2136},{"className":1704,"code":2134,"filename":1706,"highlights":2135,"language":1707,"meta":7,"style":7},"services:\n  gitlab:\n    image: gitlab/gitlab-ee:\u003Cversion>-ce.0\n    container_name: gitlab\n    restart: always\n    hostname: '\u003Cgitlab.example.com>'\n    environment:\n      GITLAB_OMNIBUS_CONFIG: |\n        # Add any other gitlab.rb configuration here, each on its own line\n        external_url 'https://\u003Cgitlab.example.com>'\n    ports:\n      - '192.168.0.1:80:80'\n      - '192.168.0.1:443:443'\n      - '192.168.0.1:22:22'\n    volumes:\n      - '$GITLAB_HOME/config:/etc/gitlab'\n      - '$GITLAB_HOME/logs:/var/log/gitlab'\n      - '$GITLAB_HOME/data:/var/opt/gitlab'\n    shm_size: '256m'\n",[1880,1894,1907],[2137],{"type":23,"tag":1710,"props":2138,"children":2139},{"__ignoreMap":7},[2140,2151,2162,2177,2192,2207,2222,2233,2248,2255,2262,2273,2287,2300,2313,2324,2335,2346,2357],{"type":23,"tag":132,"props":2141,"children":2142},{"class":1715,"line":1716},[2143,2147],{"type":23,"tag":132,"props":2144,"children":2145},{"style":1720},[2146],{"type":38,"value":1723},{"type":23,"tag":132,"props":2148,"children":2149},{"style":1726},[2150],{"type":38,"value":1729},{"type":23,"tag":132,"props":2152,"children":2153},{"class":1715,"line":1531},[2154,2158],{"type":23,"tag":132,"props":2155,"children":2156},{"style":1720},[2157],{"type":38,"value":1737},{"type":23,"tag":132,"props":2159,"children":2160},{"style":1726},[2161],{"type":38,"value":1729},{"type":23,"tag":132,"props":2163,"children":2164},{"class":1715,"line":1538},[2165,2169,2173],{"type":23,"tag":132,"props":2166,"children":2167},{"style":1720},[2168],{"type":38,"value":1749},{"type":23,"tag":132,"props":2170,"children":2171},{"style":1726},[2172],{"type":38,"value":1754},{"type":23,"tag":132,"props":2174,"children":2175},{"style":1757},[2176],{"type":38,"value":1760},{"type":23,"tag":132,"props":2178,"children":2179},{"class":1715,"line":1763},[2180,2184,2188],{"type":23,"tag":132,"props":2181,"children":2182},{"style":1720},[2183],{"type":38,"value":1769},{"type":23,"tag":132,"props":2185,"children":2186},{"style":1726},[2187],{"type":38,"value":1754},{"type":23,"tag":132,"props":2189,"children":2190},{"style":1757},[2191],{"type":38,"value":1778},{"type":23,"tag":132,"props":2193,"children":2194},{"class":1715,"line":1781},[2195,2199,2203],{"type":23,"tag":132,"props":2196,"children":2197},{"style":1720},[2198],{"type":38,"value":1787},{"type":23,"tag":132,"props":2200,"children":2201},{"style":1726},[2202],{"type":38,"value":1754},{"type":23,"tag":132,"props":2204,"children":2205},{"style":1757},[2206],{"type":38,"value":1796},{"type":23,"tag":132,"props":2208,"children":2209},{"class":1715,"line":1799},[2210,2214,2218],{"type":23,"tag":132,"props":2211,"children":2212},{"style":1720},[2213],{"type":38,"value":1805},{"type":23,"tag":132,"props":2215,"children":2216},{"style":1726},[2217],{"type":38,"value":1754},{"type":23,"tag":132,"props":2219,"children":2220},{"style":1757},[2221],{"type":38,"value":1814},{"type":23,"tag":132,"props":2223,"children":2224},{"class":1715,"line":1817},[2225,2229],{"type":23,"tag":132,"props":2226,"children":2227},{"style":1720},[2228],{"type":38,"value":1823},{"type":23,"tag":132,"props":2230,"children":2231},{"style":1726},[2232],{"type":38,"value":1729},{"type":23,"tag":132,"props":2234,"children":2235},{"class":1715,"line":1830},[2236,2240,2244],{"type":23,"tag":132,"props":2237,"children":2238},{"style":1720},[2239],{"type":38,"value":1836},{"type":23,"tag":132,"props":2241,"children":2242},{"style":1726},[2243],{"type":38,"value":1754},{"type":23,"tag":132,"props":2245,"children":2246},{"style":1843},[2247],{"type":38,"value":1846},{"type":23,"tag":132,"props":2249,"children":2250},{"class":1715,"line":1849},[2251],{"type":23,"tag":132,"props":2252,"children":2253},{"style":1757},[2254],{"type":38,"value":1855},{"type":23,"tag":132,"props":2256,"children":2257},{"class":1715,"line":1858},[2258],{"type":23,"tag":132,"props":2259,"children":2260},{"style":1757},[2261],{"type":38,"value":1864},{"type":23,"tag":132,"props":2263,"children":2264},{"class":1715,"line":1867},[2265,2269],{"type":23,"tag":132,"props":2266,"children":2267},{"style":1720},[2268],{"type":38,"value":1873},{"type":23,"tag":132,"props":2270,"children":2271},{"style":1726},[2272],{"type":38,"value":1729},{"type":23,"tag":132,"props":2274,"children":2277},{"class":2275,"line":1880},[1715,2276],"highlight",[2278,2282],{"type":23,"tag":132,"props":2279,"children":2280},{"style":1726},[2281],{"type":38,"value":1886},{"type":23,"tag":132,"props":2283,"children":2284},{"style":1757},[2285],{"type":38,"value":2286},"'192.168.0.1:80:80'\n",{"type":23,"tag":132,"props":2288,"children":2290},{"class":2289,"line":1894},[1715,2276],[2291,2295],{"type":23,"tag":132,"props":2292,"children":2293},{"style":1726},[2294],{"type":38,"value":1886},{"type":23,"tag":132,"props":2296,"children":2297},{"style":1757},[2298],{"type":38,"value":2299},"'192.168.0.1:443:443'\n",{"type":23,"tag":132,"props":2301,"children":2303},{"class":2302,"line":1907},[1715,2276],[2304,2308],{"type":23,"tag":132,"props":2305,"children":2306},{"style":1726},[2307],{"type":38,"value":1886},{"type":23,"tag":132,"props":2309,"children":2310},{"style":1757},[2311],{"type":38,"value":2312},"'192.168.0.1:22:22'\n",{"type":23,"tag":132,"props":2314,"children":2315},{"class":1715,"line":1920},[2316,2320],{"type":23,"tag":132,"props":2317,"children":2318},{"style":1720},[2319],{"type":38,"value":1926},{"type":23,"tag":132,"props":2321,"children":2322},{"style":1726},[2323],{"type":38,"value":1729},{"type":23,"tag":132,"props":2325,"children":2326},{"class":1715,"line":1933},[2327,2331],{"type":23,"tag":132,"props":2328,"children":2329},{"style":1726},[2330],{"type":38,"value":1886},{"type":23,"tag":132,"props":2332,"children":2333},{"style":1757},[2334],{"type":38,"value":1943},{"type":23,"tag":132,"props":2336,"children":2337},{"class":1715,"line":1946},[2338,2342],{"type":23,"tag":132,"props":2339,"children":2340},{"style":1726},[2341],{"type":38,"value":1886},{"type":23,"tag":132,"props":2343,"children":2344},{"style":1757},[2345],{"type":38,"value":1956},{"type":23,"tag":132,"props":2347,"children":2348},{"class":1715,"line":1959},[2349,2353],{"type":23,"tag":132,"props":2350,"children":2351},{"style":1726},[2352],{"type":38,"value":1886},{"type":23,"tag":132,"props":2354,"children":2355},{"style":1757},[2356],{"type":38,"value":1969},{"type":23,"tag":132,"props":2358,"children":2359},{"class":1715,"line":1972},[2360,2364,2368],{"type":23,"tag":132,"props":2361,"children":2362},{"style":1720},[2363],{"type":38,"value":1978},{"type":23,"tag":132,"props":2365,"children":2366},{"style":1726},[2367],{"type":38,"value":1754},{"type":23,"tag":132,"props":2369,"children":2370},{"style":1757},[2371],{"type":38,"value":1987},{"type":23,"tag":531,"props":2373,"children":2375},{"id":2374},"verwendung-von-traefik-als-reverse-proxy",[2376],{"type":38,"value":2377},"Verwendung von Traefik als Reverse-Proxy",{"type":23,"tag":41,"props":2379,"children":2380},{},[2381],{"type":38,"value":2382},"In diesem Fall gehe ich davon aus, dass Sie:",{"type":23,"tag":73,"props":2384,"children":2385},{},[2386,2391,2396],{"type":23,"tag":77,"props":2387,"children":2388},{},[2389],{"type":38,"value":2390},"keine dedizierte IP für GitLab zuweisen können oder wollen",{"type":23,"tag":77,"props":2392,"children":2393},{},[2394],{"type":38,"value":2395},"Ihren Standard-SSH-Port nicht ändern können oder wollen",{"type":23,"tag":77,"props":2397,"children":2398},{},[2399],{"type":38,"value":2400},"Traefik als Reverse-Proxy verwenden möchten",{"type":23,"tag":1471,"props":2402,"children":2404},{"id":2403},"das-traefik-deployment",[2405],{"type":38,"value":2406},"Das Traefik-Deployment",{"type":23,"tag":41,"props":2408,"children":2409},{},[2410,2412,2421],{"type":38,"value":2411},"Denken Sie daran, ",{"type":23,"tag":45,"props":2413,"children":2414},{},[2415],{"type":23,"tag":1710,"props":2416,"children":2418},{"className":2417},[],[2419],{"type":38,"value":2420},"\u003Cinfo@example.com>",{"type":38,"value":2422}," durch Ihre eigene E-Mail-Adresse zu ersetzen.",{"type":23,"tag":1702,"props":2424,"children":2427},{"className":1704,"code":2425,"filename":2426,"language":1707,"meta":7,"style":7},"volumes:\n  letsencrypt:\n\nservices:\n  traefik:\n    image: traefik:3\n    container_name: traefik\n    restart: always\n    network_mode: host\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock:ro\n      - letsencrypt:/letsencrypt\n    command:\n      - --log.level=INFO\n\n      - --entrypoints.web.address=:80\n      - --entrypoints.web.http.redirections.entrypoint.to=websecure\n      - --entrypoints.web.http.redirections.entrypoint.scheme=https\n\n      - --entrypoints.websecure.address=:443\n      - --entrypoints.websecure.http.tls.certresolver=letsencrypt\n\n      - --providers.docker=true\n      - --providers.docker.exposedByDefault=false\n\n      - --certificatesresolvers.letsencrypt.acme.email=\u003Cinfo@example.com>\n      - --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json\n      - --certificatesresolvers.letsencrypt.acme.httpchallenge=true\n      - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web\n","traefik/docker-compose.yaml",[2428],{"type":23,"tag":1710,"props":2429,"children":2430},{"__ignoreMap":7},[2431,2443,2455,2464,2475,2487,2503,2519,2534,2551,2562,2574,2586,2598,2610,2617,2629,2641,2653,2660,2673,2686,2694,2707,2720,2728,2741,2754,2767],{"type":23,"tag":132,"props":2432,"children":2433},{"class":1715,"line":1716},[2434,2439],{"type":23,"tag":132,"props":2435,"children":2436},{"style":1720},[2437],{"type":38,"value":2438},"volumes",{"type":23,"tag":132,"props":2440,"children":2441},{"style":1726},[2442],{"type":38,"value":1729},{"type":23,"tag":132,"props":2444,"children":2445},{"class":1715,"line":1531},[2446,2451],{"type":23,"tag":132,"props":2447,"children":2448},{"style":1720},[2449],{"type":38,"value":2450},"  letsencrypt",{"type":23,"tag":132,"props":2452,"children":2453},{"style":1726},[2454],{"type":38,"value":1729},{"type":23,"tag":132,"props":2456,"children":2457},{"class":1715,"line":1538},[2458],{"type":23,"tag":132,"props":2459,"children":2461},{"emptyLinePlaceholder":2460},true,[2462],{"type":38,"value":2463},"\n",{"type":23,"tag":132,"props":2465,"children":2466},{"class":1715,"line":1763},[2467,2471],{"type":23,"tag":132,"props":2468,"children":2469},{"style":1720},[2470],{"type":38,"value":1723},{"type":23,"tag":132,"props":2472,"children":2473},{"style":1726},[2474],{"type":38,"value":1729},{"type":23,"tag":132,"props":2476,"children":2477},{"class":1715,"line":1781},[2478,2483],{"type":23,"tag":132,"props":2479,"children":2480},{"style":1720},[2481],{"type":38,"value":2482},"  traefik",{"type":23,"tag":132,"props":2484,"children":2485},{"style":1726},[2486],{"type":38,"value":1729},{"type":23,"tag":132,"props":2488,"children":2489},{"class":1715,"line":1799},[2490,2494,2498],{"type":23,"tag":132,"props":2491,"children":2492},{"style":1720},[2493],{"type":38,"value":1749},{"type":23,"tag":132,"props":2495,"children":2496},{"style":1726},[2497],{"type":38,"value":1754},{"type":23,"tag":132,"props":2499,"children":2500},{"style":1757},[2501],{"type":38,"value":2502},"traefik:3\n",{"type":23,"tag":132,"props":2504,"children":2505},{"class":1715,"line":1817},[2506,2510,2514],{"type":23,"tag":132,"props":2507,"children":2508},{"style":1720},[2509],{"type":38,"value":1769},{"type":23,"tag":132,"props":2511,"children":2512},{"style":1726},[2513],{"type":38,"value":1754},{"type":23,"tag":132,"props":2515,"children":2516},{"style":1757},[2517],{"type":38,"value":2518},"traefik\n",{"type":23,"tag":132,"props":2520,"children":2521},{"class":1715,"line":1830},[2522,2526,2530],{"type":23,"tag":132,"props":2523,"children":2524},{"style":1720},[2525],{"type":38,"value":1787},{"type":23,"tag":132,"props":2527,"children":2528},{"style":1726},[2529],{"type":38,"value":1754},{"type":23,"tag":132,"props":2531,"children":2532},{"style":1757},[2533],{"type":38,"value":1796},{"type":23,"tag":132,"props":2535,"children":2536},{"class":1715,"line":1849},[2537,2542,2546],{"type":23,"tag":132,"props":2538,"children":2539},{"style":1720},[2540],{"type":38,"value":2541},"    network_mode",{"type":23,"tag":132,"props":2543,"children":2544},{"style":1726},[2545],{"type":38,"value":1754},{"type":23,"tag":132,"props":2547,"children":2548},{"style":1757},[2549],{"type":38,"value":2550},"host\n",{"type":23,"tag":132,"props":2552,"children":2553},{"class":1715,"line":1858},[2554,2558],{"type":23,"tag":132,"props":2555,"children":2556},{"style":1720},[2557],{"type":38,"value":1926},{"type":23,"tag":132,"props":2559,"children":2560},{"style":1726},[2561],{"type":38,"value":1729},{"type":23,"tag":132,"props":2563,"children":2564},{"class":1715,"line":1867},[2565,2569],{"type":23,"tag":132,"props":2566,"children":2567},{"style":1726},[2568],{"type":38,"value":1886},{"type":23,"tag":132,"props":2570,"children":2571},{"style":1757},[2572],{"type":38,"value":2573},"/var/run/docker.sock:/var/run/docker.sock:ro\n",{"type":23,"tag":132,"props":2575,"children":2576},{"class":1715,"line":1880},[2577,2581],{"type":23,"tag":132,"props":2578,"children":2579},{"style":1726},[2580],{"type":38,"value":1886},{"type":23,"tag":132,"props":2582,"children":2583},{"style":1757},[2584],{"type":38,"value":2585},"letsencrypt:/letsencrypt\n",{"type":23,"tag":132,"props":2587,"children":2588},{"class":1715,"line":1894},[2589,2594],{"type":23,"tag":132,"props":2590,"children":2591},{"style":1720},[2592],{"type":38,"value":2593},"    command",{"type":23,"tag":132,"props":2595,"children":2596},{"style":1726},[2597],{"type":38,"value":1729},{"type":23,"tag":132,"props":2599,"children":2600},{"class":1715,"line":1907},[2601,2605],{"type":23,"tag":132,"props":2602,"children":2603},{"style":1726},[2604],{"type":38,"value":1886},{"type":23,"tag":132,"props":2606,"children":2607},{"style":1757},[2608],{"type":38,"value":2609},"--log.level=INFO\n",{"type":23,"tag":132,"props":2611,"children":2612},{"class":1715,"line":1920},[2613],{"type":23,"tag":132,"props":2614,"children":2615},{"emptyLinePlaceholder":2460},[2616],{"type":38,"value":2463},{"type":23,"tag":132,"props":2618,"children":2619},{"class":1715,"line":1933},[2620,2624],{"type":23,"tag":132,"props":2621,"children":2622},{"style":1726},[2623],{"type":38,"value":1886},{"type":23,"tag":132,"props":2625,"children":2626},{"style":1757},[2627],{"type":38,"value":2628},"--entrypoints.web.address=:80\n",{"type":23,"tag":132,"props":2630,"children":2631},{"class":1715,"line":1946},[2632,2636],{"type":23,"tag":132,"props":2633,"children":2634},{"style":1726},[2635],{"type":38,"value":1886},{"type":23,"tag":132,"props":2637,"children":2638},{"style":1757},[2639],{"type":38,"value":2640},"--entrypoints.web.http.redirections.entrypoint.to=websecure\n",{"type":23,"tag":132,"props":2642,"children":2643},{"class":1715,"line":1959},[2644,2648],{"type":23,"tag":132,"props":2645,"children":2646},{"style":1726},[2647],{"type":38,"value":1886},{"type":23,"tag":132,"props":2649,"children":2650},{"style":1757},[2651],{"type":38,"value":2652},"--entrypoints.web.http.redirections.entrypoint.scheme=https\n",{"type":23,"tag":132,"props":2654,"children":2655},{"class":1715,"line":1972},[2656],{"type":23,"tag":132,"props":2657,"children":2658},{"emptyLinePlaceholder":2460},[2659],{"type":38,"value":2463},{"type":23,"tag":132,"props":2661,"children":2663},{"class":1715,"line":2662},20,[2664,2668],{"type":23,"tag":132,"props":2665,"children":2666},{"style":1726},[2667],{"type":38,"value":1886},{"type":23,"tag":132,"props":2669,"children":2670},{"style":1757},[2671],{"type":38,"value":2672},"--entrypoints.websecure.address=:443\n",{"type":23,"tag":132,"props":2674,"children":2676},{"class":1715,"line":2675},21,[2677,2681],{"type":23,"tag":132,"props":2678,"children":2679},{"style":1726},[2680],{"type":38,"value":1886},{"type":23,"tag":132,"props":2682,"children":2683},{"style":1757},[2684],{"type":38,"value":2685},"--entrypoints.websecure.http.tls.certresolver=letsencrypt\n",{"type":23,"tag":132,"props":2687,"children":2689},{"class":1715,"line":2688},22,[2690],{"type":23,"tag":132,"props":2691,"children":2692},{"emptyLinePlaceholder":2460},[2693],{"type":38,"value":2463},{"type":23,"tag":132,"props":2695,"children":2697},{"class":1715,"line":2696},23,[2698,2702],{"type":23,"tag":132,"props":2699,"children":2700},{"style":1726},[2701],{"type":38,"value":1886},{"type":23,"tag":132,"props":2703,"children":2704},{"style":1757},[2705],{"type":38,"value":2706},"--providers.docker=true\n",{"type":23,"tag":132,"props":2708,"children":2710},{"class":1715,"line":2709},24,[2711,2715],{"type":23,"tag":132,"props":2712,"children":2713},{"style":1726},[2714],{"type":38,"value":1886},{"type":23,"tag":132,"props":2716,"children":2717},{"style":1757},[2718],{"type":38,"value":2719},"--providers.docker.exposedByDefault=false\n",{"type":23,"tag":132,"props":2721,"children":2723},{"class":1715,"line":2722},25,[2724],{"type":23,"tag":132,"props":2725,"children":2726},{"emptyLinePlaceholder":2460},[2727],{"type":38,"value":2463},{"type":23,"tag":132,"props":2729,"children":2731},{"class":1715,"line":2730},26,[2732,2736],{"type":23,"tag":132,"props":2733,"children":2734},{"style":1726},[2735],{"type":38,"value":1886},{"type":23,"tag":132,"props":2737,"children":2738},{"style":1757},[2739],{"type":38,"value":2740},"--certificatesresolvers.letsencrypt.acme.email=\u003Cinfo@example.com>\n",{"type":23,"tag":132,"props":2742,"children":2744},{"class":1715,"line":2743},27,[2745,2749],{"type":23,"tag":132,"props":2746,"children":2747},{"style":1726},[2748],{"type":38,"value":1886},{"type":23,"tag":132,"props":2750,"children":2751},{"style":1757},[2752],{"type":38,"value":2753},"--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json\n",{"type":23,"tag":132,"props":2755,"children":2757},{"class":1715,"line":2756},28,[2758,2762],{"type":23,"tag":132,"props":2759,"children":2760},{"style":1726},[2761],{"type":38,"value":1886},{"type":23,"tag":132,"props":2763,"children":2764},{"style":1757},[2765],{"type":38,"value":2766},"--certificatesresolvers.letsencrypt.acme.httpchallenge=true\n",{"type":23,"tag":132,"props":2768,"children":2770},{"class":1715,"line":2769},29,[2771,2775],{"type":23,"tag":132,"props":2772,"children":2773},{"style":1726},[2774],{"type":38,"value":1886},{"type":23,"tag":132,"props":2776,"children":2777},{"style":1757},[2778],{"type":38,"value":2779},"--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web\n",{"type":23,"tag":41,"props":2781,"children":2782},{},[2783],{"type":38,"value":2784},"Diese Konfiguration wird:",{"type":23,"tag":73,"props":2786,"children":2787},{},[2788,2797,2806,2811,2828,2837],{"type":23,"tag":77,"props":2789,"children":2790},{},[2791],{"type":23,"tag":53,"props":2792,"children":2794},{"href":2793},"https://doc.traefik.io/traefik/reference/install-configuration/providers/docker/",[2795],{"type":38,"value":2796},"den Docker-Provider aktivieren",{"type":23,"tag":77,"props":2798,"children":2799},{},[2800],{"type":23,"tag":53,"props":2801,"children":2803},{"href":2802},"https://doc.traefik.io/traefik/providers/docker/#exposedbydefault",[2804],{"type":38,"value":2805},"die Container-Erkennung deaktivieren",{"type":23,"tag":77,"props":2807,"children":2808},{},[2809],{"type":38,"value":2810},"den gesamten HTTP-traffic auf HTTPS umleiten",{"type":23,"tag":77,"props":2812,"children":2813},{},[2814],{"type":23,"tag":53,"props":2815,"children":2817},{"href":2816},"https://doc.traefik.io/traefik/https/acme/#httpchallenge",[2818,2820,2826],{"type":38,"value":2819},"Let's Encrypt mit ",{"type":23,"tag":1710,"props":2821,"children":2823},{"className":2822},[],[2824],{"type":38,"value":2825},"HTTP-01",{"type":38,"value":2827},"-Challenge konfigurieren",{"type":23,"tag":77,"props":2829,"children":2830},{},[2831],{"type":23,"tag":53,"props":2832,"children":2834},{"href":2833},"https://doc.traefik.io/traefik/routing/entrypoints/#tls",[2835],{"type":38,"value":2836},"die TLS-Konfiguration auf alle Routen anwenden",{"type":23,"tag":77,"props":2838,"children":2839},{},[2840,2846],{"type":23,"tag":53,"props":2841,"children":2843},{"href":2842},"https://docs.docker.com/engine/network/tutorials/host/",[2844],{"type":38,"value":2845},"den Traefik-Container direkt an das Netzwerk des Hosts binden",{"type":38,"value":2847},", sodass keine zusätzliche Konfiguration für Traefik erforderlich ist",{"type":23,"tag":1471,"props":2849,"children":2851},{"id":2850},"das-gitlab-deployment",[2852],{"type":38,"value":2853},"Das GitLab-Deployment",{"type":23,"tag":41,"props":2855,"children":2856},{},[2857,2858,2867],{"type":38,"value":2411},{"type":23,"tag":45,"props":2859,"children":2860},{},[2861],{"type":23,"tag":1710,"props":2862,"children":2864},{"className":2863},[],[2865],{"type":38,"value":2866},"\u003Cgitlab.example.com>",{"type":38,"value":2868}," durch Ihre eigene Domain zu ersetzen.",{"type":23,"tag":41,"props":2870,"children":2871},{},[2872,2874,2880,2882,2891],{"type":38,"value":2873},"Bitte schauen Sie in die ",{"type":23,"tag":53,"props":2875,"children":2877},{"href":2876},"https://docs.gitlab.com/install/docker/installation/#create-a-directory-for-the-volumes",[2878],{"type":38,"value":2879},"offizielle Dokumentation",{"type":38,"value":2881}," bezüglich des ",{"type":23,"tag":45,"props":2883,"children":2884},{},[2885],{"type":23,"tag":1710,"props":2886,"children":2888},{"className":2887},[],[2889],{"type":38,"value":2890},"GITLAB_HOME",{"type":38,"value":2892},"-Verzeichnisses",{"type":23,"tag":1702,"props":2894,"children":2897},{"className":1704,"code":2895,"filename":1706,"highlights":2896,"language":1707,"meta":7,"style":7},"services:\n  gitlab:\n    image: gitlab/gitlab-ce:\u003Cversion>-ce.0\n    container_name: gitlab\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.gitlab.rule=Host(`\u003Cgitlab.example.com>`)\"\n      - \"traefik.http.routers.gitlab.service=gitlab\"\n      - \"traefik.http.services.gitlab.loadbalancer.server.port=80\"\n    restart: always\n    hostname: 'gitlab.example.com'\n    environment:\n      GITLAB_OMNIBUS_CONFIG: |\n        # Add any other gitlab.rb configuration here, each on its own line\n        external_url '\u003Chttps://gitlab.example.com>'\n        \n        letsencrypt['enable'] = false\n        \n        nginx['listen_port'] = 80\n        nginx['listen_https'] = false\n        nginx['proxy_set_headers'] = {\n          \"X-Forwarded-Proto\" => \"https\",\n          \"X-Forwarded-Ssl\" => \"on\"\n        }\n        \n        gitlab_rails['gitlab_shell_ssh_port'] = 2424\n    ports:\n      - '2424:22'\n    volumes:\n      - '$GITLAB_HOME/config:/etc/gitlab'\n      - '$GITLAB_HOME/logs:/var/log/gitlab'\n      - '$GITLAB_HOME/data:/var/opt/gitlab'\n    shm_size: '256m'\n",[1781,1799,1817,1830,1849,1946,1972,2662,2675,2688,2696,2709,2730,2756],[2898],{"type":23,"tag":1710,"props":2899,"children":2900},{"__ignoreMap":7},[2901,2912,2923,2939,2954,2967,2980,2993,3006,3019,3034,3050,3061,3076,3083,3091,3099,3108,3115,3124,3133,3142,3151,3160,3169,3176,3185,3196,3209,3220,3232,3244,3256],{"type":23,"tag":132,"props":2902,"children":2903},{"class":1715,"line":1716},[2904,2908],{"type":23,"tag":132,"props":2905,"children":2906},{"style":1720},[2907],{"type":38,"value":1723},{"type":23,"tag":132,"props":2909,"children":2910},{"style":1726},[2911],{"type":38,"value":1729},{"type":23,"tag":132,"props":2913,"children":2914},{"class":1715,"line":1531},[2915,2919],{"type":23,"tag":132,"props":2916,"children":2917},{"style":1720},[2918],{"type":38,"value":1737},{"type":23,"tag":132,"props":2920,"children":2921},{"style":1726},[2922],{"type":38,"value":1729},{"type":23,"tag":132,"props":2924,"children":2925},{"class":1715,"line":1538},[2926,2930,2934],{"type":23,"tag":132,"props":2927,"children":2928},{"style":1720},[2929],{"type":38,"value":1749},{"type":23,"tag":132,"props":2931,"children":2932},{"style":1726},[2933],{"type":38,"value":1754},{"type":23,"tag":132,"props":2935,"children":2936},{"style":1757},[2937],{"type":38,"value":2938},"gitlab/gitlab-ce:\u003Cversion>-ce.0\n",{"type":23,"tag":132,"props":2940,"children":2941},{"class":1715,"line":1763},[2942,2946,2950],{"type":23,"tag":132,"props":2943,"children":2944},{"style":1720},[2945],{"type":38,"value":1769},{"type":23,"tag":132,"props":2947,"children":2948},{"style":1726},[2949],{"type":38,"value":1754},{"type":23,"tag":132,"props":2951,"children":2952},{"style":1757},[2953],{"type":38,"value":1778},{"type":23,"tag":132,"props":2955,"children":2957},{"class":2956,"line":1781},[1715,2276],[2958,2963],{"type":23,"tag":132,"props":2959,"children":2960},{"style":1720},[2961],{"type":38,"value":2962},"    labels",{"type":23,"tag":132,"props":2964,"children":2965},{"style":1726},[2966],{"type":38,"value":1729},{"type":23,"tag":132,"props":2968,"children":2970},{"class":2969,"line":1799},[1715,2276],[2971,2975],{"type":23,"tag":132,"props":2972,"children":2973},{"style":1726},[2974],{"type":38,"value":1886},{"type":23,"tag":132,"props":2976,"children":2977},{"style":1757},[2978],{"type":38,"value":2979},"\"traefik.enable=true\"\n",{"type":23,"tag":132,"props":2981,"children":2983},{"class":2982,"line":1817},[1715,2276],[2984,2988],{"type":23,"tag":132,"props":2985,"children":2986},{"style":1726},[2987],{"type":38,"value":1886},{"type":23,"tag":132,"props":2989,"children":2990},{"style":1757},[2991],{"type":38,"value":2992},"\"traefik.http.routers.gitlab.rule=Host(`\u003Cgitlab.example.com>`)\"\n",{"type":23,"tag":132,"props":2994,"children":2996},{"class":2995,"line":1830},[1715,2276],[2997,3001],{"type":23,"tag":132,"props":2998,"children":2999},{"style":1726},[3000],{"type":38,"value":1886},{"type":23,"tag":132,"props":3002,"children":3003},{"style":1757},[3004],{"type":38,"value":3005},"\"traefik.http.routers.gitlab.service=gitlab\"\n",{"type":23,"tag":132,"props":3007,"children":3009},{"class":3008,"line":1849},[1715,2276],[3010,3014],{"type":23,"tag":132,"props":3011,"children":3012},{"style":1726},[3013],{"type":38,"value":1886},{"type":23,"tag":132,"props":3015,"children":3016},{"style":1757},[3017],{"type":38,"value":3018},"\"traefik.http.services.gitlab.loadbalancer.server.port=80\"\n",{"type":23,"tag":132,"props":3020,"children":3021},{"class":1715,"line":1858},[3022,3026,3030],{"type":23,"tag":132,"props":3023,"children":3024},{"style":1720},[3025],{"type":38,"value":1787},{"type":23,"tag":132,"props":3027,"children":3028},{"style":1726},[3029],{"type":38,"value":1754},{"type":23,"tag":132,"props":3031,"children":3032},{"style":1757},[3033],{"type":38,"value":1796},{"type":23,"tag":132,"props":3035,"children":3036},{"class":1715,"line":1867},[3037,3041,3045],{"type":23,"tag":132,"props":3038,"children":3039},{"style":1720},[3040],{"type":38,"value":1805},{"type":23,"tag":132,"props":3042,"children":3043},{"style":1726},[3044],{"type":38,"value":1754},{"type":23,"tag":132,"props":3046,"children":3047},{"style":1757},[3048],{"type":38,"value":3049},"'gitlab.example.com'\n",{"type":23,"tag":132,"props":3051,"children":3052},{"class":1715,"line":1880},[3053,3057],{"type":23,"tag":132,"props":3054,"children":3055},{"style":1720},[3056],{"type":38,"value":1823},{"type":23,"tag":132,"props":3058,"children":3059},{"style":1726},[3060],{"type":38,"value":1729},{"type":23,"tag":132,"props":3062,"children":3063},{"class":1715,"line":1894},[3064,3068,3072],{"type":23,"tag":132,"props":3065,"children":3066},{"style":1720},[3067],{"type":38,"value":1836},{"type":23,"tag":132,"props":3069,"children":3070},{"style":1726},[3071],{"type":38,"value":1754},{"type":23,"tag":132,"props":3073,"children":3074},{"style":1843},[3075],{"type":38,"value":1846},{"type":23,"tag":132,"props":3077,"children":3078},{"class":1715,"line":1907},[3079],{"type":23,"tag":132,"props":3080,"children":3081},{"style":1757},[3082],{"type":38,"value":1855},{"type":23,"tag":132,"props":3084,"children":3085},{"class":1715,"line":1920},[3086],{"type":23,"tag":132,"props":3087,"children":3088},{"style":1757},[3089],{"type":38,"value":3090},"        external_url '\u003Chttps://gitlab.example.com>'\n",{"type":23,"tag":132,"props":3092,"children":3093},{"class":1715,"line":1933},[3094],{"type":23,"tag":132,"props":3095,"children":3096},{"style":1757},[3097],{"type":38,"value":3098},"        \n",{"type":23,"tag":132,"props":3100,"children":3102},{"class":3101,"line":1946},[1715,2276],[3103],{"type":23,"tag":132,"props":3104,"children":3105},{"style":1757},[3106],{"type":38,"value":3107},"        letsencrypt['enable'] = false\n",{"type":23,"tag":132,"props":3109,"children":3110},{"class":1715,"line":1959},[3111],{"type":23,"tag":132,"props":3112,"children":3113},{"style":1757},[3114],{"type":38,"value":3098},{"type":23,"tag":132,"props":3116,"children":3118},{"class":3117,"line":1972},[1715,2276],[3119],{"type":23,"tag":132,"props":3120,"children":3121},{"style":1757},[3122],{"type":38,"value":3123},"        nginx['listen_port'] = 80\n",{"type":23,"tag":132,"props":3125,"children":3127},{"class":3126,"line":2662},[1715,2276],[3128],{"type":23,"tag":132,"props":3129,"children":3130},{"style":1757},[3131],{"type":38,"value":3132},"        nginx['listen_https'] = false\n",{"type":23,"tag":132,"props":3134,"children":3136},{"class":3135,"line":2675},[1715,2276],[3137],{"type":23,"tag":132,"props":3138,"children":3139},{"style":1757},[3140],{"type":38,"value":3141},"        nginx['proxy_set_headers'] = {\n",{"type":23,"tag":132,"props":3143,"children":3145},{"class":3144,"line":2688},[1715,2276],[3146],{"type":23,"tag":132,"props":3147,"children":3148},{"style":1757},[3149],{"type":38,"value":3150},"          \"X-Forwarded-Proto\" => \"https\",\n",{"type":23,"tag":132,"props":3152,"children":3154},{"class":3153,"line":2696},[1715,2276],[3155],{"type":23,"tag":132,"props":3156,"children":3157},{"style":1757},[3158],{"type":38,"value":3159},"          \"X-Forwarded-Ssl\" => \"on\"\n",{"type":23,"tag":132,"props":3161,"children":3163},{"class":3162,"line":2709},[1715,2276],[3164],{"type":23,"tag":132,"props":3165,"children":3166},{"style":1757},[3167],{"type":38,"value":3168},"        }\n",{"type":23,"tag":132,"props":3170,"children":3171},{"class":1715,"line":2722},[3172],{"type":23,"tag":132,"props":3173,"children":3174},{"style":1757},[3175],{"type":38,"value":3098},{"type":23,"tag":132,"props":3177,"children":3179},{"class":3178,"line":2730},[1715,2276],[3180],{"type":23,"tag":132,"props":3181,"children":3182},{"style":1757},[3183],{"type":38,"value":3184},"        gitlab_rails['gitlab_shell_ssh_port'] = 2424\n",{"type":23,"tag":132,"props":3186,"children":3187},{"class":1715,"line":2743},[3188,3192],{"type":23,"tag":132,"props":3189,"children":3190},{"style":1720},[3191],{"type":38,"value":1873},{"type":23,"tag":132,"props":3193,"children":3194},{"style":1726},[3195],{"type":38,"value":1729},{"type":23,"tag":132,"props":3197,"children":3199},{"class":3198,"line":2756},[1715,2276],[3200,3204],{"type":23,"tag":132,"props":3201,"children":3202},{"style":1726},[3203],{"type":38,"value":1886},{"type":23,"tag":132,"props":3205,"children":3206},{"style":1757},[3207],{"type":38,"value":3208},"'2424:22'\n",{"type":23,"tag":132,"props":3210,"children":3211},{"class":1715,"line":2769},[3212,3216],{"type":23,"tag":132,"props":3213,"children":3214},{"style":1720},[3215],{"type":38,"value":1926},{"type":23,"tag":132,"props":3217,"children":3218},{"style":1726},[3219],{"type":38,"value":1729},{"type":23,"tag":132,"props":3221,"children":3223},{"class":1715,"line":3222},30,[3224,3228],{"type":23,"tag":132,"props":3225,"children":3226},{"style":1726},[3227],{"type":38,"value":1886},{"type":23,"tag":132,"props":3229,"children":3230},{"style":1757},[3231],{"type":38,"value":1943},{"type":23,"tag":132,"props":3233,"children":3235},{"class":1715,"line":3234},31,[3236,3240],{"type":23,"tag":132,"props":3237,"children":3238},{"style":1726},[3239],{"type":38,"value":1886},{"type":23,"tag":132,"props":3241,"children":3242},{"style":1757},[3243],{"type":38,"value":1956},{"type":23,"tag":132,"props":3245,"children":3247},{"class":1715,"line":3246},32,[3248,3252],{"type":23,"tag":132,"props":3249,"children":3250},{"style":1726},[3251],{"type":38,"value":1886},{"type":23,"tag":132,"props":3253,"children":3254},{"style":1757},[3255],{"type":38,"value":1969},{"type":23,"tag":132,"props":3257,"children":3259},{"class":1715,"line":3258},33,[3260,3264,3268],{"type":23,"tag":132,"props":3261,"children":3262},{"style":1720},[3263],{"type":38,"value":1978},{"type":23,"tag":132,"props":3265,"children":3266},{"style":1726},[3267],{"type":38,"value":1754},{"type":23,"tag":132,"props":3269,"children":3270},{"style":1757},[3271],{"type":38,"value":1987},{"type":23,"tag":41,"props":3273,"children":3274},{},[3275],{"type":38,"value":2784},{"type":23,"tag":73,"props":3277,"children":3278},{},[3279,3284,3289,3294,3299],{"type":23,"tag":77,"props":3280,"children":3281},{},[3282],{"type":38,"value":3283},"Let's Encrypt deaktivieren",{"type":23,"tag":77,"props":3285,"children":3286},{},[3287],{"type":38,"value":3288},"das Abhören von HTTPS deaktivieren und auf Port 80 hören",{"type":23,"tag":77,"props":3290,"children":3291},{},[3292],{"type":38,"value":3293},"die erforderlichen Proxy-Header setzen",{"type":23,"tag":77,"props":3295,"children":3296},{},[3297],{"type":38,"value":3298},"den SSH-Port auf 2424 ändern",{"type":23,"tag":77,"props":3300,"children":3301},{},[3302,3304,3310],{"type":38,"value":3303},"Traefik anweisen, den gesamten Verkehr für ",{"type":23,"tag":1710,"props":3305,"children":3307},{"className":3306},[],[3308],{"type":38,"value":3309},"gitlab.example.com",{"type":38,"value":3311}," an Port 80 des Containers weiterzuleiten",{"type":23,"tag":147,"props":3313,"children":3314},{},[],{"type":23,"tag":41,"props":3316,"children":3317},{},[3318],{"type":23,"tag":132,"props":3319,"children":3322},{"className":3320},[3321],"text-h2",[3323],{"type":38,"value":3324},"Das war's!",{"type":23,"tag":147,"props":3326,"children":3327},{},[],{"type":23,"tag":151,"props":3329,"children":3330},{},[],{"type":23,"tag":531,"props":3332,"children":3334},{"id":3333},"gitlab-container-registry",[3335],{"type":38,"value":3336},"GitLab Container-Registry",{"type":23,"tag":41,"props":3338,"children":3339},{},[3340,3342,3348],{"type":38,"value":3341},"Wenn Sie so weit gekommen sind, möchten Sie wahrscheinlich auch die ",{"type":23,"tag":53,"props":3343,"children":3345},{"href":3344},"https://docs.gitlab.com/administration/packages/container_registry/",[3346],{"type":38,"value":3347},"Container-Registry",{"type":38,"value":3349}," einrichten",{"type":23,"tag":1471,"props":3351,"children":3353},{"id":3352},"container-registry-unter-eigener-domain-konfigurieren",[3354],{"type":23,"tag":53,"props":3355,"children":3357},{"href":3356},"https://docs.gitlab.com/administration/packages/container_registry/#configure-container-registry-under-its-own-domain",[3358],{"type":38,"value":3359},"Container-Registry unter eigener Domain konfigurieren",{"type":23,"tag":41,"props":3361,"children":3362},{},[3363,3365,3371],{"type":38,"value":3364},"Diese Einrichtung ist einfach. Wir müssen nur die ",{"type":23,"tag":1710,"props":3366,"children":3368},{"className":3367},[],[3369],{"type":38,"value":3370},"registry_external_url",{"type":38,"value":3372}," setzen und Traefik anweisen, wohin die Anfragen weitergeleitet werden sollen",{"type":23,"tag":147,"props":3374,"children":3375},{},[],{"type":23,"tag":3377,"props":3378,"children":3380},"h5",{"id":3379},"aktualisierung-der-gitlab-konfiguration",[3381],{"type":38,"value":3382},"Aktualisierung der GitLab-Konfiguration",{"type":23,"tag":1702,"props":3384,"children":3387},{"className":1704,"code":3385,"filename":1706,"highlights":3386,"language":1707,"meta":7,"style":7},"services:\n  gitlab:\n    image: gitlab/gitlab-ce:\u003Cversion>-ce.0\n    container_name: gitlab\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.gitlab.rule=Host(`\u003Cgitlab.example.com>`)\"\n      - \"traefik.http.routers.gitlab.service=gitlab\"\n      - \"traefik.http.services.gitlab.loadbalancer.server.port=80\"\n      - \"traefik.http.routers.container-registry.rule=Host(`registry.gitlab.example.com`)\"\n      - \"traefik.http.services.container-registry.loadbalancer.server.port=5000\"\n    restart: always\n    hostname: 'gitlab.example.com'\n    environment:\n      GITLAB_OMNIBUS_CONFIG: |\n        # Add any other gitlab.rb configuration here, each on its own line\n        external_url '\u003Chttps://gitlab.example.com>'\n\n        letsencrypt['enable'] = false\n\n        nginx['listen_port'] = 80\n        nginx['listen_https'] = false\n        nginx['proxy_set_headers'] = {\n          \"X-Forwarded-Proto\" => \"https\",\n          \"X-Forwarded-Ssl\" => \"on\"\n        }\n\n        gitlab_rails['gitlab_shell_ssh_port'] = 2424\n\n        registry_external_url '\u003Chttps://registry.gitlab.example.com>'\n        registry_nginx['enable'] = false\n    ports:\n      - '2424:22'\n    volumes:\n      - '$GITLAB_HOME/config:/etc/gitlab'\n      - '$GITLAB_HOME/logs:/var/log/gitlab'\n      - '$GITLAB_HOME/data:/var/opt/gitlab'\n    shm_size: '256m'\n",[1858,1867,3222,3234],[3388],{"type":23,"tag":1710,"props":3389,"children":3390},{"__ignoreMap":7},[3391,3402,3413,3428,3443,3454,3465,3476,3487,3498,3511,3524,3539,3554,3565,3580,3587,3594,3601,3608,3615,3622,3629,3636,3643,3650,3657,3664,3671,3678,3687,3696,3707,3718,3730,3742,3754,3766],{"type":23,"tag":132,"props":3392,"children":3393},{"class":1715,"line":1716},[3394,3398],{"type":23,"tag":132,"props":3395,"children":3396},{"style":1720},[3397],{"type":38,"value":1723},{"type":23,"tag":132,"props":3399,"children":3400},{"style":1726},[3401],{"type":38,"value":1729},{"type":23,"tag":132,"props":3403,"children":3404},{"class":1715,"line":1531},[3405,3409],{"type":23,"tag":132,"props":3406,"children":3407},{"style":1720},[3408],{"type":38,"value":1737},{"type":23,"tag":132,"props":3410,"children":3411},{"style":1726},[3412],{"type":38,"value":1729},{"type":23,"tag":132,"props":3414,"children":3415},{"class":1715,"line":1538},[3416,3420,3424],{"type":23,"tag":132,"props":3417,"children":3418},{"style":1720},[3419],{"type":38,"value":1749},{"type":23,"tag":132,"props":3421,"children":3422},{"style":1726},[3423],{"type":38,"value":1754},{"type":23,"tag":132,"props":3425,"children":3426},{"style":1757},[3427],{"type":38,"value":2938},{"type":23,"tag":132,"props":3429,"children":3430},{"class":1715,"line":1763},[3431,3435,3439],{"type":23,"tag":132,"props":3432,"children":3433},{"style":1720},[3434],{"type":38,"value":1769},{"type":23,"tag":132,"props":3436,"children":3437},{"style":1726},[3438],{"type":38,"value":1754},{"type":23,"tag":132,"props":3440,"children":3441},{"style":1757},[3442],{"type":38,"value":1778},{"type":23,"tag":132,"props":3444,"children":3445},{"class":1715,"line":1781},[3446,3450],{"type":23,"tag":132,"props":3447,"children":3448},{"style":1720},[3449],{"type":38,"value":2962},{"type":23,"tag":132,"props":3451,"children":3452},{"style":1726},[3453],{"type":38,"value":1729},{"type":23,"tag":132,"props":3455,"children":3456},{"class":1715,"line":1799},[3457,3461],{"type":23,"tag":132,"props":3458,"children":3459},{"style":1726},[3460],{"type":38,"value":1886},{"type":23,"tag":132,"props":3462,"children":3463},{"style":1757},[3464],{"type":38,"value":2979},{"type":23,"tag":132,"props":3466,"children":3467},{"class":1715,"line":1817},[3468,3472],{"type":23,"tag":132,"props":3469,"children":3470},{"style":1726},[3471],{"type":38,"value":1886},{"type":23,"tag":132,"props":3473,"children":3474},{"style":1757},[3475],{"type":38,"value":2992},{"type":23,"tag":132,"props":3477,"children":3478},{"class":1715,"line":1830},[3479,3483],{"type":23,"tag":132,"props":3480,"children":3481},{"style":1726},[3482],{"type":38,"value":1886},{"type":23,"tag":132,"props":3484,"children":3485},{"style":1757},[3486],{"type":38,"value":3005},{"type":23,"tag":132,"props":3488,"children":3489},{"class":1715,"line":1849},[3490,3494],{"type":23,"tag":132,"props":3491,"children":3492},{"style":1726},[3493],{"type":38,"value":1886},{"type":23,"tag":132,"props":3495,"children":3496},{"style":1757},[3497],{"type":38,"value":3018},{"type":23,"tag":132,"props":3499,"children":3501},{"class":3500,"line":1858},[1715,2276],[3502,3506],{"type":23,"tag":132,"props":3503,"children":3504},{"style":1726},[3505],{"type":38,"value":1886},{"type":23,"tag":132,"props":3507,"children":3508},{"style":1757},[3509],{"type":38,"value":3510},"\"traefik.http.routers.container-registry.rule=Host(`registry.gitlab.example.com`)\"\n",{"type":23,"tag":132,"props":3512,"children":3514},{"class":3513,"line":1867},[1715,2276],[3515,3519],{"type":23,"tag":132,"props":3516,"children":3517},{"style":1726},[3518],{"type":38,"value":1886},{"type":23,"tag":132,"props":3520,"children":3521},{"style":1757},[3522],{"type":38,"value":3523},"\"traefik.http.services.container-registry.loadbalancer.server.port=5000\"\n",{"type":23,"tag":132,"props":3525,"children":3526},{"class":1715,"line":1880},[3527,3531,3535],{"type":23,"tag":132,"props":3528,"children":3529},{"style":1720},[3530],{"type":38,"value":1787},{"type":23,"tag":132,"props":3532,"children":3533},{"style":1726},[3534],{"type":38,"value":1754},{"type":23,"tag":132,"props":3536,"children":3537},{"style":1757},[3538],{"type":38,"value":1796},{"type":23,"tag":132,"props":3540,"children":3541},{"class":1715,"line":1894},[3542,3546,3550],{"type":23,"tag":132,"props":3543,"children":3544},{"style":1720},[3545],{"type":38,"value":1805},{"type":23,"tag":132,"props":3547,"children":3548},{"style":1726},[3549],{"type":38,"value":1754},{"type":23,"tag":132,"props":3551,"children":3552},{"style":1757},[3553],{"type":38,"value":3049},{"type":23,"tag":132,"props":3555,"children":3556},{"class":1715,"line":1907},[3557,3561],{"type":23,"tag":132,"props":3558,"children":3559},{"style":1720},[3560],{"type":38,"value":1823},{"type":23,"tag":132,"props":3562,"children":3563},{"style":1726},[3564],{"type":38,"value":1729},{"type":23,"tag":132,"props":3566,"children":3567},{"class":1715,"line":1920},[3568,3572,3576],{"type":23,"tag":132,"props":3569,"children":3570},{"style":1720},[3571],{"type":38,"value":1836},{"type":23,"tag":132,"props":3573,"children":3574},{"style":1726},[3575],{"type":38,"value":1754},{"type":23,"tag":132,"props":3577,"children":3578},{"style":1843},[3579],{"type":38,"value":1846},{"type":23,"tag":132,"props":3581,"children":3582},{"class":1715,"line":1933},[3583],{"type":23,"tag":132,"props":3584,"children":3585},{"style":1757},[3586],{"type":38,"value":1855},{"type":23,"tag":132,"props":3588,"children":3589},{"class":1715,"line":1946},[3590],{"type":23,"tag":132,"props":3591,"children":3592},{"style":1757},[3593],{"type":38,"value":3090},{"type":23,"tag":132,"props":3595,"children":3596},{"class":1715,"line":1959},[3597],{"type":23,"tag":132,"props":3598,"children":3599},{"emptyLinePlaceholder":2460},[3600],{"type":38,"value":2463},{"type":23,"tag":132,"props":3602,"children":3603},{"class":1715,"line":1972},[3604],{"type":23,"tag":132,"props":3605,"children":3606},{"style":1757},[3607],{"type":38,"value":3107},{"type":23,"tag":132,"props":3609,"children":3610},{"class":1715,"line":2662},[3611],{"type":23,"tag":132,"props":3612,"children":3613},{"emptyLinePlaceholder":2460},[3614],{"type":38,"value":2463},{"type":23,"tag":132,"props":3616,"children":3617},{"class":1715,"line":2675},[3618],{"type":23,"tag":132,"props":3619,"children":3620},{"style":1757},[3621],{"type":38,"value":3123},{"type":23,"tag":132,"props":3623,"children":3624},{"class":1715,"line":2688},[3625],{"type":23,"tag":132,"props":3626,"children":3627},{"style":1757},[3628],{"type":38,"value":3132},{"type":23,"tag":132,"props":3630,"children":3631},{"class":1715,"line":2696},[3632],{"type":23,"tag":132,"props":3633,"children":3634},{"style":1757},[3635],{"type":38,"value":3141},{"type":23,"tag":132,"props":3637,"children":3638},{"class":1715,"line":2709},[3639],{"type":23,"tag":132,"props":3640,"children":3641},{"style":1757},[3642],{"type":38,"value":3150},{"type":23,"tag":132,"props":3644,"children":3645},{"class":1715,"line":2722},[3646],{"type":23,"tag":132,"props":3647,"children":3648},{"style":1757},[3649],{"type":38,"value":3159},{"type":23,"tag":132,"props":3651,"children":3652},{"class":1715,"line":2730},[3653],{"type":23,"tag":132,"props":3654,"children":3655},{"style":1757},[3656],{"type":38,"value":3168},{"type":23,"tag":132,"props":3658,"children":3659},{"class":1715,"line":2743},[3660],{"type":23,"tag":132,"props":3661,"children":3662},{"emptyLinePlaceholder":2460},[3663],{"type":38,"value":2463},{"type":23,"tag":132,"props":3665,"children":3666},{"class":1715,"line":2756},[3667],{"type":23,"tag":132,"props":3668,"children":3669},{"style":1757},[3670],{"type":38,"value":3184},{"type":23,"tag":132,"props":3672,"children":3673},{"class":1715,"line":2769},[3674],{"type":23,"tag":132,"props":3675,"children":3676},{"emptyLinePlaceholder":2460},[3677],{"type":38,"value":2463},{"type":23,"tag":132,"props":3679,"children":3681},{"class":3680,"line":3222},[1715,2276],[3682],{"type":23,"tag":132,"props":3683,"children":3684},{"style":1757},[3685],{"type":38,"value":3686},"        registry_external_url '\u003Chttps://registry.gitlab.example.com>'\n",{"type":23,"tag":132,"props":3688,"children":3690},{"class":3689,"line":3234},[1715,2276],[3691],{"type":23,"tag":132,"props":3692,"children":3693},{"style":1757},[3694],{"type":38,"value":3695},"        registry_nginx['enable'] = false\n",{"type":23,"tag":132,"props":3697,"children":3698},{"class":1715,"line":3246},[3699,3703],{"type":23,"tag":132,"props":3700,"children":3701},{"style":1720},[3702],{"type":38,"value":1873},{"type":23,"tag":132,"props":3704,"children":3705},{"style":1726},[3706],{"type":38,"value":1729},{"type":23,"tag":132,"props":3708,"children":3709},{"class":1715,"line":3258},[3710,3714],{"type":23,"tag":132,"props":3711,"children":3712},{"style":1726},[3713],{"type":38,"value":1886},{"type":23,"tag":132,"props":3715,"children":3716},{"style":1757},[3717],{"type":38,"value":3208},{"type":23,"tag":132,"props":3719,"children":3721},{"class":1715,"line":3720},34,[3722,3726],{"type":23,"tag":132,"props":3723,"children":3724},{"style":1720},[3725],{"type":38,"value":1926},{"type":23,"tag":132,"props":3727,"children":3728},{"style":1726},[3729],{"type":38,"value":1729},{"type":23,"tag":132,"props":3731,"children":3733},{"class":1715,"line":3732},35,[3734,3738],{"type":23,"tag":132,"props":3735,"children":3736},{"style":1726},[3737],{"type":38,"value":1886},{"type":23,"tag":132,"props":3739,"children":3740},{"style":1757},[3741],{"type":38,"value":1943},{"type":23,"tag":132,"props":3743,"children":3745},{"class":1715,"line":3744},36,[3746,3750],{"type":23,"tag":132,"props":3747,"children":3748},{"style":1726},[3749],{"type":38,"value":1886},{"type":23,"tag":132,"props":3751,"children":3752},{"style":1757},[3753],{"type":38,"value":1956},{"type":23,"tag":132,"props":3755,"children":3757},{"class":1715,"line":3756},37,[3758,3762],{"type":23,"tag":132,"props":3759,"children":3760},{"style":1726},[3761],{"type":38,"value":1886},{"type":23,"tag":132,"props":3763,"children":3764},{"style":1757},[3765],{"type":38,"value":1969},{"type":23,"tag":132,"props":3767,"children":3769},{"class":1715,"line":3768},38,[3770,3774,3778],{"type":23,"tag":132,"props":3771,"children":3772},{"style":1720},[3773],{"type":38,"value":1978},{"type":23,"tag":132,"props":3775,"children":3776},{"style":1726},[3777],{"type":38,"value":1754},{"type":23,"tag":132,"props":3779,"children":3780},{"style":1757},[3781],{"type":38,"value":1987},{"type":23,"tag":41,"props":3783,"children":3784},{},[3785],{"type":38,"value":2784},{"type":23,"tag":73,"props":3787,"children":3788},{},[3789,3794,3799],{"type":23,"tag":77,"props":3790,"children":3791},{},[3792],{"type":38,"value":3793},"die externe URL der Registry setzen",{"type":23,"tag":77,"props":3795,"children":3796},{},[3797],{"type":38,"value":3798},"Nginx für die Registry deaktivieren",{"type":23,"tag":77,"props":3800,"children":3801},{},[3802,3803,3809],{"type":38,"value":3303},{"type":23,"tag":1710,"props":3804,"children":3806},{"className":3805},[],[3807],{"type":38,"value":3808},"registry.gitlab.example.com",{"type":38,"value":3810}," an Port 5000 des Containers weiterzuleiten",{"type":23,"tag":147,"props":3812,"children":3813},{},[],{"type":23,"tag":151,"props":3815,"children":3816},{},[],{"type":23,"tag":1471,"props":3818,"children":3820},{"id":3819},"container-registry-unter-einer-bestehenden-gitlab-domain-konfigurieren",[3821],{"type":23,"tag":53,"props":3822,"children":3824},{"href":3823},"https://docs.gitlab.com/administration/packages/container_registry/#configure-container-registry-under-an-existing-gitlab-domain",[3825],{"type":38,"value":3826},"Container-Registry unter einer bestehenden GitLab-Domain konfigurieren",{"type":23,"tag":3377,"props":3828,"children":3830},{"id":3829},"aktualisierung-der-traefik-konfiguration",[3831],{"type":38,"value":3832},"Aktualisierung der Traefik-Konfiguration",{"type":23,"tag":1702,"props":3834,"children":3837},{"className":1704,"code":3835,"filename":2426,"highlights":3836,"language":1707,"meta":7,"style":7},"volumes:\n  letsencrypt:\n\nservices:\n  traefik:\n    image: traefik:3\n    container_name: traefik\n    restart: always\n    network_mode: host\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock:ro\n      - letsencrypt:/letsencrypt\n    command:\n      - --log.level=INFO\n\n      - --entrypoints.web.address=:80\n      - --entrypoints.web.http.redirections.entrypoint.to=websecure\n      - --entrypoints.web.http.redirections.entrypoint.scheme=https\n\n      - --entrypoints.websecure.address=:443\n      - --entrypoints.websecure.http.tls.certresolver=letsencrypt\n        \n      - --entrypoints.container-registry.address=:5050\n      - --entrypoints.container-registry.http.tls.certresolver=letsencrypt\n\n      - --providers.docker=true\n      - --providers.docker.exposedByDefault=false\n\n      - --certificatesresolvers.letsencrypt.acme.email=\u003Cinfo@example.com>\n      - --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json\n      - --certificatesresolvers.letsencrypt.acme.httpchallenge=true\n      - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web\n",[2696,2709],[3838],{"type":23,"tag":1710,"props":3839,"children":3840},{"__ignoreMap":7},[3841,3852,3863,3870,3881,3892,3907,3922,3937,3952,3963,3974,3985,3996,4007,4014,4025,4036,4047,4054,4065,4076,4083,4096,4109,4116,4127,4138,4145,4156,4167,4178],{"type":23,"tag":132,"props":3842,"children":3843},{"class":1715,"line":1716},[3844,3848],{"type":23,"tag":132,"props":3845,"children":3846},{"style":1720},[3847],{"type":38,"value":2438},{"type":23,"tag":132,"props":3849,"children":3850},{"style":1726},[3851],{"type":38,"value":1729},{"type":23,"tag":132,"props":3853,"children":3854},{"class":1715,"line":1531},[3855,3859],{"type":23,"tag":132,"props":3856,"children":3857},{"style":1720},[3858],{"type":38,"value":2450},{"type":23,"tag":132,"props":3860,"children":3861},{"style":1726},[3862],{"type":38,"value":1729},{"type":23,"tag":132,"props":3864,"children":3865},{"class":1715,"line":1538},[3866],{"type":23,"tag":132,"props":3867,"children":3868},{"emptyLinePlaceholder":2460},[3869],{"type":38,"value":2463},{"type":23,"tag":132,"props":3871,"children":3872},{"class":1715,"line":1763},[3873,3877],{"type":23,"tag":132,"props":3874,"children":3875},{"style":1720},[3876],{"type":38,"value":1723},{"type":23,"tag":132,"props":3878,"children":3879},{"style":1726},[3880],{"type":38,"value":1729},{"type":23,"tag":132,"props":3882,"children":3883},{"class":1715,"line":1781},[3884,3888],{"type":23,"tag":132,"props":3885,"children":3886},{"style":1720},[3887],{"type":38,"value":2482},{"type":23,"tag":132,"props":3889,"children":3890},{"style":1726},[3891],{"type":38,"value":1729},{"type":23,"tag":132,"props":3893,"children":3894},{"class":1715,"line":1799},[3895,3899,3903],{"type":23,"tag":132,"props":3896,"children":3897},{"style":1720},[3898],{"type":38,"value":1749},{"type":23,"tag":132,"props":3900,"children":3901},{"style":1726},[3902],{"type":38,"value":1754},{"type":23,"tag":132,"props":3904,"children":3905},{"style":1757},[3906],{"type":38,"value":2502},{"type":23,"tag":132,"props":3908,"children":3909},{"class":1715,"line":1817},[3910,3914,3918],{"type":23,"tag":132,"props":3911,"children":3912},{"style":1720},[3913],{"type":38,"value":1769},{"type":23,"tag":132,"props":3915,"children":3916},{"style":1726},[3917],{"type":38,"value":1754},{"type":23,"tag":132,"props":3919,"children":3920},{"style":1757},[3921],{"type":38,"value":2518},{"type":23,"tag":132,"props":3923,"children":3924},{"class":1715,"line":1830},[3925,3929,3933],{"type":23,"tag":132,"props":3926,"children":3927},{"style":1720},[3928],{"type":38,"value":1787},{"type":23,"tag":132,"props":3930,"children":3931},{"style":1726},[3932],{"type":38,"value":1754},{"type":23,"tag":132,"props":3934,"children":3935},{"style":1757},[3936],{"type":38,"value":1796},{"type":23,"tag":132,"props":3938,"children":3939},{"class":1715,"line":1849},[3940,3944,3948],{"type":23,"tag":132,"props":3941,"children":3942},{"style":1720},[3943],{"type":38,"value":2541},{"type":23,"tag":132,"props":3945,"children":3946},{"style":1726},[3947],{"type":38,"value":1754},{"type":23,"tag":132,"props":3949,"children":3950},{"style":1757},[3951],{"type":38,"value":2550},{"type":23,"tag":132,"props":3953,"children":3954},{"class":1715,"line":1858},[3955,3959],{"type":23,"tag":132,"props":3956,"children":3957},{"style":1720},[3958],{"type":38,"value":1926},{"type":23,"tag":132,"props":3960,"children":3961},{"style":1726},[3962],{"type":38,"value":1729},{"type":23,"tag":132,"props":3964,"children":3965},{"class":1715,"line":1867},[3966,3970],{"type":23,"tag":132,"props":3967,"children":3968},{"style":1726},[3969],{"type":38,"value":1886},{"type":23,"tag":132,"props":3971,"children":3972},{"style":1757},[3973],{"type":38,"value":2573},{"type":23,"tag":132,"props":3975,"children":3976},{"class":1715,"line":1880},[3977,3981],{"type":23,"tag":132,"props":3978,"children":3979},{"style":1726},[3980],{"type":38,"value":1886},{"type":23,"tag":132,"props":3982,"children":3983},{"style":1757},[3984],{"type":38,"value":2585},{"type":23,"tag":132,"props":3986,"children":3987},{"class":1715,"line":1894},[3988,3992],{"type":23,"tag":132,"props":3989,"children":3990},{"style":1720},[3991],{"type":38,"value":2593},{"type":23,"tag":132,"props":3993,"children":3994},{"style":1726},[3995],{"type":38,"value":1729},{"type":23,"tag":132,"props":3997,"children":3998},{"class":1715,"line":1907},[3999,4003],{"type":23,"tag":132,"props":4000,"children":4001},{"style":1726},[4002],{"type":38,"value":1886},{"type":23,"tag":132,"props":4004,"children":4005},{"style":1757},[4006],{"type":38,"value":2609},{"type":23,"tag":132,"props":4008,"children":4009},{"class":1715,"line":1920},[4010],{"type":23,"tag":132,"props":4011,"children":4012},{"emptyLinePlaceholder":2460},[4013],{"type":38,"value":2463},{"type":23,"tag":132,"props":4015,"children":4016},{"class":1715,"line":1933},[4017,4021],{"type":23,"tag":132,"props":4018,"children":4019},{"style":1726},[4020],{"type":38,"value":1886},{"type":23,"tag":132,"props":4022,"children":4023},{"style":1757},[4024],{"type":38,"value":2628},{"type":23,"tag":132,"props":4026,"children":4027},{"class":1715,"line":1946},[4028,4032],{"type":23,"tag":132,"props":4029,"children":4030},{"style":1726},[4031],{"type":38,"value":1886},{"type":23,"tag":132,"props":4033,"children":4034},{"style":1757},[4035],{"type":38,"value":2640},{"type":23,"tag":132,"props":4037,"children":4038},{"class":1715,"line":1959},[4039,4043],{"type":23,"tag":132,"props":4040,"children":4041},{"style":1726},[4042],{"type":38,"value":1886},{"type":23,"tag":132,"props":4044,"children":4045},{"style":1757},[4046],{"type":38,"value":2652},{"type":23,"tag":132,"props":4048,"children":4049},{"class":1715,"line":1972},[4050],{"type":23,"tag":132,"props":4051,"children":4052},{"emptyLinePlaceholder":2460},[4053],{"type":38,"value":2463},{"type":23,"tag":132,"props":4055,"children":4056},{"class":1715,"line":2662},[4057,4061],{"type":23,"tag":132,"props":4058,"children":4059},{"style":1726},[4060],{"type":38,"value":1886},{"type":23,"tag":132,"props":4062,"children":4063},{"style":1757},[4064],{"type":38,"value":2672},{"type":23,"tag":132,"props":4066,"children":4067},{"class":1715,"line":2675},[4068,4072],{"type":23,"tag":132,"props":4069,"children":4070},{"style":1726},[4071],{"type":38,"value":1886},{"type":23,"tag":132,"props":4073,"children":4074},{"style":1757},[4075],{"type":38,"value":2685},{"type":23,"tag":132,"props":4077,"children":4078},{"class":1715,"line":2688},[4079],{"type":23,"tag":132,"props":4080,"children":4081},{"style":1726},[4082],{"type":38,"value":3098},{"type":23,"tag":132,"props":4084,"children":4086},{"class":4085,"line":2696},[1715,2276],[4087,4091],{"type":23,"tag":132,"props":4088,"children":4089},{"style":1726},[4090],{"type":38,"value":1886},{"type":23,"tag":132,"props":4092,"children":4093},{"style":1757},[4094],{"type":38,"value":4095},"--entrypoints.container-registry.address=:5050\n",{"type":23,"tag":132,"props":4097,"children":4099},{"class":4098,"line":2709},[1715,2276],[4100,4104],{"type":23,"tag":132,"props":4101,"children":4102},{"style":1726},[4103],{"type":38,"value":1886},{"type":23,"tag":132,"props":4105,"children":4106},{"style":1757},[4107],{"type":38,"value":4108},"--entrypoints.container-registry.http.tls.certresolver=letsencrypt\n",{"type":23,"tag":132,"props":4110,"children":4111},{"class":1715,"line":2722},[4112],{"type":23,"tag":132,"props":4113,"children":4114},{"emptyLinePlaceholder":2460},[4115],{"type":38,"value":2463},{"type":23,"tag":132,"props":4117,"children":4118},{"class":1715,"line":2730},[4119,4123],{"type":23,"tag":132,"props":4120,"children":4121},{"style":1726},[4122],{"type":38,"value":1886},{"type":23,"tag":132,"props":4124,"children":4125},{"style":1757},[4126],{"type":38,"value":2706},{"type":23,"tag":132,"props":4128,"children":4129},{"class":1715,"line":2743},[4130,4134],{"type":23,"tag":132,"props":4131,"children":4132},{"style":1726},[4133],{"type":38,"value":1886},{"type":23,"tag":132,"props":4135,"children":4136},{"style":1757},[4137],{"type":38,"value":2719},{"type":23,"tag":132,"props":4139,"children":4140},{"class":1715,"line":2756},[4141],{"type":23,"tag":132,"props":4142,"children":4143},{"emptyLinePlaceholder":2460},[4144],{"type":38,"value":2463},{"type":23,"tag":132,"props":4146,"children":4147},{"class":1715,"line":2769},[4148,4152],{"type":23,"tag":132,"props":4149,"children":4150},{"style":1726},[4151],{"type":38,"value":1886},{"type":23,"tag":132,"props":4153,"children":4154},{"style":1757},[4155],{"type":38,"value":2740},{"type":23,"tag":132,"props":4157,"children":4158},{"class":1715,"line":3222},[4159,4163],{"type":23,"tag":132,"props":4160,"children":4161},{"style":1726},[4162],{"type":38,"value":1886},{"type":23,"tag":132,"props":4164,"children":4165},{"style":1757},[4166],{"type":38,"value":2753},{"type":23,"tag":132,"props":4168,"children":4169},{"class":1715,"line":3234},[4170,4174],{"type":23,"tag":132,"props":4171,"children":4172},{"style":1726},[4173],{"type":38,"value":1886},{"type":23,"tag":132,"props":4175,"children":4176},{"style":1757},[4177],{"type":38,"value":2766},{"type":23,"tag":132,"props":4179,"children":4180},{"class":1715,"line":3246},[4181,4185],{"type":23,"tag":132,"props":4182,"children":4183},{"style":1726},[4184],{"type":38,"value":1886},{"type":23,"tag":132,"props":4186,"children":4187},{"style":1757},[4188],{"type":38,"value":2779},{"type":23,"tag":41,"props":4190,"children":4191},{},[4192],{"type":38,"value":2784},{"type":23,"tag":73,"props":4194,"children":4195},{},[4196,4201],{"type":23,"tag":77,"props":4197,"children":4198},{},[4199],{"type":38,"value":4200},"einen neuen Einstiegspunkt für die Container-Registry hinzufügen",{"type":23,"tag":77,"props":4202,"children":4203},{},[4204],{"type":38,"value":4205},"die TLS-Konfiguration auf alle Routen in diesem Einstiegspunkt anwenden",{"type":23,"tag":147,"props":4207,"children":4208},{},[],{"type":23,"tag":3377,"props":4210,"children":4212},{"id":4211},"aktualisierung-der-gitlab-konfiguration-1",[4213],{"type":38,"value":3382},{"type":23,"tag":1702,"props":4215,"children":4218},{"className":1704,"code":4216,"filename":1706,"highlights":4217,"language":1707,"meta":7,"style":7},"services:\n  gitlab:\n    image: gitlab/gitlab-ce:\u003Cversion>-ce.0\n    container_name: gitlab\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.gitlab.rule=Host(`\u003Cgitlab.example.com>`)\"\n      - \"traefik.http.routers.gitlab.entrypoints=web,websecure\"\n      - \"traefik.http.routers.gitlab.service=gitlab\"\n      - \"traefik.http.services.gitlab.loadbalancer.server.port=80\"\n      - \"traefik.http.routers.container-registry.rule=Host(`gitlab.example.com`)\"\n      - \"traefik.http.routers.container-registry.entrypoints=container-registry\"\n      - \"traefik.http.routers.container-registry.service=container-registry\"\n      - \"traefik.http.services.container-registry.loadbalancer.server.port=5000\"\n    restart: always\n    hostname: 'gitlab.example.com'\n    environment:\n      GITLAB_OMNIBUS_CONFIG: |\n        # Add any other gitlab.rb configuration here, each on its own line\n        external_url '\u003Chttps://gitlab.example.com>'\n\n        letsencrypt['enable'] = false\n\n        nginx['listen_port'] = 80\n        nginx['listen_https'] = false\n        nginx['proxy_set_headers'] = {\n          \"X-Forwarded-Proto\" => \"https\",\n          \"X-Forwarded-Ssl\" => \"on\"\n        }\n\n        gitlab_rails['gitlab_shell_ssh_port'] = 2424\n\n        registry_external_url '\u003Chttps://gitlab.example.com:5050>'\n        registry_nginx['enable'] = false\n    ports:\n      - '2424:22'\n    volumes:\n      - '$GITLAB_HOME/config:/etc/gitlab'\n      - '$GITLAB_HOME/logs:/var/log/gitlab'\n      - '$GITLAB_HOME/data:/var/opt/gitlab'\n    shm_size: '256m'\n",[1830,1867,1880,1894,1907,3258],[4219],{"type":23,"tag":1710,"props":4220,"children":4221},{"__ignoreMap":7},[4222,4233,4244,4259,4274,4285,4296,4307,4320,4331,4342,4355,4368,4381,4393,4408,4423,4434,4449,4456,4463,4470,4477,4484,4491,4498,4505,4512,4519,4526,4533,4540,4547,4556,4563,4574,4585,4596,4607,4619,4631],{"type":23,"tag":132,"props":4223,"children":4224},{"class":1715,"line":1716},[4225,4229],{"type":23,"tag":132,"props":4226,"children":4227},{"style":1720},[4228],{"type":38,"value":1723},{"type":23,"tag":132,"props":4230,"children":4231},{"style":1726},[4232],{"type":38,"value":1729},{"type":23,"tag":132,"props":4234,"children":4235},{"class":1715,"line":1531},[4236,4240],{"type":23,"tag":132,"props":4237,"children":4238},{"style":1720},[4239],{"type":38,"value":1737},{"type":23,"tag":132,"props":4241,"children":4242},{"style":1726},[4243],{"type":38,"value":1729},{"type":23,"tag":132,"props":4245,"children":4246},{"class":1715,"line":1538},[4247,4251,4255],{"type":23,"tag":132,"props":4248,"children":4249},{"style":1720},[4250],{"type":38,"value":1749},{"type":23,"tag":132,"props":4252,"children":4253},{"style":1726},[4254],{"type":38,"value":1754},{"type":23,"tag":132,"props":4256,"children":4257},{"style":1757},[4258],{"type":38,"value":2938},{"type":23,"tag":132,"props":4260,"children":4261},{"class":1715,"line":1763},[4262,4266,4270],{"type":23,"tag":132,"props":4263,"children":4264},{"style":1720},[4265],{"type":38,"value":1769},{"type":23,"tag":132,"props":4267,"children":4268},{"style":1726},[4269],{"type":38,"value":1754},{"type":23,"tag":132,"props":4271,"children":4272},{"style":1757},[4273],{"type":38,"value":1778},{"type":23,"tag":132,"props":4275,"children":4276},{"class":1715,"line":1781},[4277,4281],{"type":23,"tag":132,"props":4278,"children":4279},{"style":1720},[4280],{"type":38,"value":2962},{"type":23,"tag":132,"props":4282,"children":4283},{"style":1726},[4284],{"type":38,"value":1729},{"type":23,"tag":132,"props":4286,"children":4287},{"class":1715,"line":1799},[4288,4292],{"type":23,"tag":132,"props":4289,"children":4290},{"style":1726},[4291],{"type":38,"value":1886},{"type":23,"tag":132,"props":4293,"children":4294},{"style":1757},[4295],{"type":38,"value":2979},{"type":23,"tag":132,"props":4297,"children":4298},{"class":1715,"line":1817},[4299,4303],{"type":23,"tag":132,"props":4300,"children":4301},{"style":1726},[4302],{"type":38,"value":1886},{"type":23,"tag":132,"props":4304,"children":4305},{"style":1757},[4306],{"type":38,"value":2992},{"type":23,"tag":132,"props":4308,"children":4310},{"class":4309,"line":1830},[1715,2276],[4311,4315],{"type":23,"tag":132,"props":4312,"children":4313},{"style":1726},[4314],{"type":38,"value":1886},{"type":23,"tag":132,"props":4316,"children":4317},{"style":1757},[4318],{"type":38,"value":4319},"\"traefik.http.routers.gitlab.entrypoints=web,websecure\"\n",{"type":23,"tag":132,"props":4321,"children":4322},{"class":1715,"line":1849},[4323,4327],{"type":23,"tag":132,"props":4324,"children":4325},{"style":1726},[4326],{"type":38,"value":1886},{"type":23,"tag":132,"props":4328,"children":4329},{"style":1757},[4330],{"type":38,"value":3005},{"type":23,"tag":132,"props":4332,"children":4333},{"class":1715,"line":1858},[4334,4338],{"type":23,"tag":132,"props":4335,"children":4336},{"style":1726},[4337],{"type":38,"value":1886},{"type":23,"tag":132,"props":4339,"children":4340},{"style":1757},[4341],{"type":38,"value":3018},{"type":23,"tag":132,"props":4343,"children":4345},{"class":4344,"line":1867},[1715,2276],[4346,4350],{"type":23,"tag":132,"props":4347,"children":4348},{"style":1726},[4349],{"type":38,"value":1886},{"type":23,"tag":132,"props":4351,"children":4352},{"style":1757},[4353],{"type":38,"value":4354},"\"traefik.http.routers.container-registry.rule=Host(`gitlab.example.com`)\"\n",{"type":23,"tag":132,"props":4356,"children":4358},{"class":4357,"line":1880},[1715,2276],[4359,4363],{"type":23,"tag":132,"props":4360,"children":4361},{"style":1726},[4362],{"type":38,"value":1886},{"type":23,"tag":132,"props":4364,"children":4365},{"style":1757},[4366],{"type":38,"value":4367},"\"traefik.http.routers.container-registry.entrypoints=container-registry\"\n",{"type":23,"tag":132,"props":4369,"children":4371},{"class":4370,"line":1894},[1715,2276],[4372,4376],{"type":23,"tag":132,"props":4373,"children":4374},{"style":1726},[4375],{"type":38,"value":1886},{"type":23,"tag":132,"props":4377,"children":4378},{"style":1757},[4379],{"type":38,"value":4380},"\"traefik.http.routers.container-registry.service=container-registry\"\n",{"type":23,"tag":132,"props":4382,"children":4384},{"class":4383,"line":1907},[1715,2276],[4385,4389],{"type":23,"tag":132,"props":4386,"children":4387},{"style":1726},[4388],{"type":38,"value":1886},{"type":23,"tag":132,"props":4390,"children":4391},{"style":1757},[4392],{"type":38,"value":3523},{"type":23,"tag":132,"props":4394,"children":4395},{"class":1715,"line":1920},[4396,4400,4404],{"type":23,"tag":132,"props":4397,"children":4398},{"style":1720},[4399],{"type":38,"value":1787},{"type":23,"tag":132,"props":4401,"children":4402},{"style":1726},[4403],{"type":38,"value":1754},{"type":23,"tag":132,"props":4405,"children":4406},{"style":1757},[4407],{"type":38,"value":1796},{"type":23,"tag":132,"props":4409,"children":4410},{"class":1715,"line":1933},[4411,4415,4419],{"type":23,"tag":132,"props":4412,"children":4413},{"style":1720},[4414],{"type":38,"value":1805},{"type":23,"tag":132,"props":4416,"children":4417},{"style":1726},[4418],{"type":38,"value":1754},{"type":23,"tag":132,"props":4420,"children":4421},{"style":1757},[4422],{"type":38,"value":3049},{"type":23,"tag":132,"props":4424,"children":4425},{"class":1715,"line":1946},[4426,4430],{"type":23,"tag":132,"props":4427,"children":4428},{"style":1720},[4429],{"type":38,"value":1823},{"type":23,"tag":132,"props":4431,"children":4432},{"style":1726},[4433],{"type":38,"value":1729},{"type":23,"tag":132,"props":4435,"children":4436},{"class":1715,"line":1959},[4437,4441,4445],{"type":23,"tag":132,"props":4438,"children":4439},{"style":1720},[4440],{"type":38,"value":1836},{"type":23,"tag":132,"props":4442,"children":4443},{"style":1726},[4444],{"type":38,"value":1754},{"type":23,"tag":132,"props":4446,"children":4447},{"style":1843},[4448],{"type":38,"value":1846},{"type":23,"tag":132,"props":4450,"children":4451},{"class":1715,"line":1972},[4452],{"type":23,"tag":132,"props":4453,"children":4454},{"style":1757},[4455],{"type":38,"value":1855},{"type":23,"tag":132,"props":4457,"children":4458},{"class":1715,"line":2662},[4459],{"type":23,"tag":132,"props":4460,"children":4461},{"style":1757},[4462],{"type":38,"value":3090},{"type":23,"tag":132,"props":4464,"children":4465},{"class":1715,"line":2675},[4466],{"type":23,"tag":132,"props":4467,"children":4468},{"emptyLinePlaceholder":2460},[4469],{"type":38,"value":2463},{"type":23,"tag":132,"props":4471,"children":4472},{"class":1715,"line":2688},[4473],{"type":23,"tag":132,"props":4474,"children":4475},{"style":1757},[4476],{"type":38,"value":3107},{"type":23,"tag":132,"props":4478,"children":4479},{"class":1715,"line":2696},[4480],{"type":23,"tag":132,"props":4481,"children":4482},{"emptyLinePlaceholder":2460},[4483],{"type":38,"value":2463},{"type":23,"tag":132,"props":4485,"children":4486},{"class":1715,"line":2709},[4487],{"type":23,"tag":132,"props":4488,"children":4489},{"style":1757},[4490],{"type":38,"value":3123},{"type":23,"tag":132,"props":4492,"children":4493},{"class":1715,"line":2722},[4494],{"type":23,"tag":132,"props":4495,"children":4496},{"style":1757},[4497],{"type":38,"value":3132},{"type":23,"tag":132,"props":4499,"children":4500},{"class":1715,"line":2730},[4501],{"type":23,"tag":132,"props":4502,"children":4503},{"style":1757},[4504],{"type":38,"value":3141},{"type":23,"tag":132,"props":4506,"children":4507},{"class":1715,"line":2743},[4508],{"type":23,"tag":132,"props":4509,"children":4510},{"style":1757},[4511],{"type":38,"value":3150},{"type":23,"tag":132,"props":4513,"children":4514},{"class":1715,"line":2756},[4515],{"type":23,"tag":132,"props":4516,"children":4517},{"style":1757},[4518],{"type":38,"value":3159},{"type":23,"tag":132,"props":4520,"children":4521},{"class":1715,"line":2769},[4522],{"type":23,"tag":132,"props":4523,"children":4524},{"style":1757},[4525],{"type":38,"value":3168},{"type":23,"tag":132,"props":4527,"children":4528},{"class":1715,"line":3222},[4529],{"type":23,"tag":132,"props":4530,"children":4531},{"emptyLinePlaceholder":2460},[4532],{"type":38,"value":2463},{"type":23,"tag":132,"props":4534,"children":4535},{"class":1715,"line":3234},[4536],{"type":23,"tag":132,"props":4537,"children":4538},{"style":1757},[4539],{"type":38,"value":3184},{"type":23,"tag":132,"props":4541,"children":4542},{"class":1715,"line":3246},[4543],{"type":23,"tag":132,"props":4544,"children":4545},{"emptyLinePlaceholder":2460},[4546],{"type":38,"value":2463},{"type":23,"tag":132,"props":4548,"children":4550},{"class":4549,"line":3258},[1715,2276],[4551],{"type":23,"tag":132,"props":4552,"children":4553},{"style":1757},[4554],{"type":38,"value":4555},"        registry_external_url '\u003Chttps://gitlab.example.com:5050>'\n",{"type":23,"tag":132,"props":4557,"children":4558},{"class":1715,"line":3720},[4559],{"type":23,"tag":132,"props":4560,"children":4561},{"style":1757},[4562],{"type":38,"value":3695},{"type":23,"tag":132,"props":4564,"children":4565},{"class":1715,"line":3732},[4566,4570],{"type":23,"tag":132,"props":4567,"children":4568},{"style":1720},[4569],{"type":38,"value":1873},{"type":23,"tag":132,"props":4571,"children":4572},{"style":1726},[4573],{"type":38,"value":1729},{"type":23,"tag":132,"props":4575,"children":4576},{"class":1715,"line":3744},[4577,4581],{"type":23,"tag":132,"props":4578,"children":4579},{"style":1726},[4580],{"type":38,"value":1886},{"type":23,"tag":132,"props":4582,"children":4583},{"style":1757},[4584],{"type":38,"value":3208},{"type":23,"tag":132,"props":4586,"children":4587},{"class":1715,"line":3756},[4588,4592],{"type":23,"tag":132,"props":4589,"children":4590},{"style":1720},[4591],{"type":38,"value":1926},{"type":23,"tag":132,"props":4593,"children":4594},{"style":1726},[4595],{"type":38,"value":1729},{"type":23,"tag":132,"props":4597,"children":4598},{"class":1715,"line":3768},[4599,4603],{"type":23,"tag":132,"props":4600,"children":4601},{"style":1726},[4602],{"type":38,"value":1886},{"type":23,"tag":132,"props":4604,"children":4605},{"style":1757},[4606],{"type":38,"value":1943},{"type":23,"tag":132,"props":4608,"children":4610},{"class":1715,"line":4609},39,[4611,4615],{"type":23,"tag":132,"props":4612,"children":4613},{"style":1726},[4614],{"type":38,"value":1886},{"type":23,"tag":132,"props":4616,"children":4617},{"style":1757},[4618],{"type":38,"value":1956},{"type":23,"tag":132,"props":4620,"children":4622},{"class":1715,"line":4621},40,[4623,4627],{"type":23,"tag":132,"props":4624,"children":4625},{"style":1726},[4626],{"type":38,"value":1886},{"type":23,"tag":132,"props":4628,"children":4629},{"style":1757},[4630],{"type":38,"value":1969},{"type":23,"tag":132,"props":4632,"children":4634},{"class":1715,"line":4633},41,[4635,4639,4643],{"type":23,"tag":132,"props":4636,"children":4637},{"style":1720},[4638],{"type":38,"value":1978},{"type":23,"tag":132,"props":4640,"children":4641},{"style":1726},[4642],{"type":38,"value":1754},{"type":23,"tag":132,"props":4644,"children":4645},{"style":1757},[4646],{"type":38,"value":1987},{"type":23,"tag":41,"props":4648,"children":4649},{},[4650],{"type":38,"value":2784},{"type":23,"tag":73,"props":4652,"children":4653},{},[4654,4658,4662],{"type":23,"tag":77,"props":4655,"children":4656},{},[4657],{"type":38,"value":3793},{"type":23,"tag":77,"props":4659,"children":4660},{},[4661],{"type":38,"value":3798},{"type":23,"tag":77,"props":4663,"children":4664},{},[4665],{"type":38,"value":4666},"Traefik anweisen, den gesamten Verkehr von Port 5050 an Port 5000 des Containers weiterzuleiten",{"type":23,"tag":4668,"props":4669,"children":4670},"style",{},[4671],{"type":38,"value":4672},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":7,"searchDepth":1531,"depth":1531,"links":4674},[4675,4676],{"id":1686,"depth":1531,"text":1689},{"id":1995,"depth":1531,"text":1998,"children":4677},[4678,4679,4680],{"id":2123,"depth":1538,"text":2126},{"id":2374,"depth":1538,"text":2377},{"id":3333,"depth":1538,"text":3336},{"_path":1569,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1570,"description":1571,"author":1555,"image":1556,"releaseDate":1572,"blogCategories":4682,"articleTags":4683,"tags":4684,"body":4685,"_type":1545,"_id":1578,"_source":1547,"_file":1579,"_stem":1580,"_extension":1550},[14,1562],[1562,1575],[1577,1564],{"type":20,"children":4686,"toc":5226},[4687,4691,4702,4708,4721,4729,4760,4766,4793,4798,4829,5151,5156,5222],{"type":23,"tag":24,"props":4688,"children":4690},{"alt":7,"aspect-ratio":1681,"height":28,"object-fit":29,"src":4689},"/blog/shopware-renovate.png",[],{"type":23,"tag":41,"props":4692,"children":4693},{},[4694,4700],{"type":23,"tag":53,"props":4695,"children":4697},{"href":4696},"https://docs.renovatebot.com/",[4698],{"type":38,"value":4699},"Renovate",{"type":38,"value":4701}," ist ein Tool zur Verfolgung von Projektabhängigkeiten und zur Erstellung von Merge-/Pull-Requests für diese. Es funktioniert perfekt für die meisten gängigen Paketmanager, aber...",{"type":23,"tag":33,"props":4703,"children":4705},{"id":4704},"shopware-versionierungsschema",[4706],{"type":38,"value":4707},"Shopware Versionierungsschema",{"type":23,"tag":41,"props":4709,"children":4710},{},[4711,4713,4719],{"type":38,"value":4712},"Shopware verwendet ein benutzerdefiniertes Versionierungsschema. Sie können den ",{"type":23,"tag":53,"props":4714,"children":4716},{"href":4715},"https://www.shopware.com/de/news/shopware-6-versionierungs-strategie/",[4717],{"type":38,"value":4718},"offiziellen Artikel",{"type":38,"value":4720}," lesen, aber kurz gesagt:",{"type":23,"tag":1041,"props":4722,"children":4723},{},[4724],{"type":23,"tag":41,"props":4725,"children":4726},{},[4727],{"type":38,"value":4728},"Shopware implementierte SemVer als \"SemVer with benefits\".",{"type":23,"tag":1041,"props":4730,"children":4731},{},[4732,4737,4755],{"type":23,"tag":41,"props":4733,"children":4734},{},[4735],{"type":38,"value":4736},"Eine SemVer-konforme Version hat drei Zahlen: Major, Minor und Patch. Diese werden nach folgendem Regelsatz erhöht:",{"type":23,"tag":73,"props":4738,"children":4739},{},[4740,4745,4750],{"type":23,"tag":77,"props":4741,"children":4742},{},[4743],{"type":38,"value":4744},"MAJOR: Inkompatible API-Änderungen werden vorgenommen",{"type":23,"tag":77,"props":4746,"children":4747},{},[4748],{"type":38,"value":4749},"MINOR: Funktionalität wird auf rückwärtskompatible Weise hinzugefügt",{"type":23,"tag":77,"props":4751,"children":4752},{},[4753],{"type":38,"value":4754},"PATCH: Rückwärtskompatible Fehlerbehebungen werden vorgenommen",{"type":23,"tag":41,"props":4756,"children":4757},{},[4758],{"type":38,"value":4759},"Der \"with benefits\"-Teil ist: Wir behalten die große Marketing-Nummer. Also ist Shopware 6 immer noch das Produkt, aber es gibt eine Shopware 6.3.0.0. Wobei 3.0.0 der SemVer-Teil ist.",{"type":23,"tag":33,"props":4761,"children":4763},{"id":4762},"renovate-konfiguration",[4764],{"type":38,"value":4765},"Renovate-Konfiguration",{"type":23,"tag":41,"props":4767,"children":4768},{},[4769,4770,4776,4777,4783,4785,4791],{"type":38,"value":1458},{"type":23,"tag":1710,"props":4771,"children":4773},{"className":4772},[],[4774],{"type":38,"value":4775},"\"große Marketing-Nummer\"",{"type":38,"value":1504},{"type":23,"tag":1710,"props":4778,"children":4780},{"className":4779},[],[4781],{"type":38,"value":4782},"\"Generation\"",{"type":38,"value":4784}," wird in Renovate als ",{"type":23,"tag":1710,"props":4786,"children":4788},{"className":4787},[],[4789],{"type":38,"value":4790},"compatibility",{"type":38,"value":4792}," dargestellt.",{"type":23,"tag":41,"props":4794,"children":4795},{},[4796],{"type":38,"value":4797},"Die folgende Konfiguration wird:",{"type":23,"tag":4799,"props":4800,"children":4801},"ol",{},[4802,4807,4819,4824],{"type":23,"tag":77,"props":4803,"children":4804},{},[4805],{"type":38,"value":4806},"Alle shopware-spezifischen Updates gruppieren",{"type":23,"tag":77,"props":4808,"children":4809},{},[4810,4812,4817],{"type":38,"value":4811},"Die Updates als ",{"type":23,"tag":1710,"props":4813,"children":4815},{"className":4814},[],[4816],{"type":38,"value":1577},{"type":38,"value":4818}," gruppieren",{"type":23,"tag":77,"props":4820,"children":4821},{},[4822],{"type":38,"value":4823},"Renovate mitteilen, wie die Version extrahiert werden soll",{"type":23,"tag":77,"props":4825,"children":4826},{},[4827],{"type":38,"value":4828},"Renovate mitteilen, wo Changelog-Informationen zu finden sind",{"type":23,"tag":1702,"props":4830,"children":4834},{"className":4831,"code":4832,"filename":4833,"language":1669,"meta":7,"style":7},"language-json shiki shiki-themes github-dark github-dark monokai","{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"packageRules\": [\n    {\n      \"description\": \"Follow Shopware version schema\",\n      \"matchDatasources\": [\n        \"packagist\"\n      ],\n      \"matchPackageNames\": [\n        \"shopware/core\",\n        \"shopware/administration\",\n        \"shopware/elasticsearch\",\n        \"shopware/storefront\"\n      ],\n      \"groupName\": \"shopware\",\n      \"versioning\": \"regex:(?\u003Ccompatibility>\\\\d+)\\\\.(?\u003Cmajor>\\\\d+)(\\\\.(?\u003Cminor>\\\\d+))?(\\\\.(?\u003Cpatch>\\\\d+))?$\",\n      \"sourceUrl\": \"https://github.com/shopware/shopware\"\n    }\n  ]\n}\n","renovate.json",[4835],{"type":23,"tag":1710,"props":4836,"children":4837},{"__ignoreMap":7},[4838,4846,4870,4883,4891,4912,4924,4932,4940,4952,4964,4976,4988,4996,5003,5024,5110,5127,5135,5143],{"type":23,"tag":132,"props":4839,"children":4840},{"class":1715,"line":1716},[4841],{"type":23,"tag":132,"props":4842,"children":4843},{"style":1726},[4844],{"type":38,"value":4845},"{\n",{"type":23,"tag":132,"props":4847,"children":4848},{"class":1715,"line":1531},[4849,4855,4859,4865],{"type":23,"tag":132,"props":4850,"children":4852},{"style":4851},"--shiki-default:#79B8FF;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic",[4853],{"type":38,"value":4854},"  \"$schema\"",{"type":23,"tag":132,"props":4856,"children":4857},{"style":1726},[4858],{"type":38,"value":1754},{"type":23,"tag":132,"props":4860,"children":4862},{"style":4861},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2",[4863],{"type":38,"value":4864},"\"https://docs.renovatebot.com/renovate-schema.json\"",{"type":23,"tag":132,"props":4866,"children":4867},{"style":1726},[4868],{"type":38,"value":4869},",\n",{"type":23,"tag":132,"props":4871,"children":4872},{"class":1715,"line":1538},[4873,4878],{"type":23,"tag":132,"props":4874,"children":4875},{"style":4851},[4876],{"type":38,"value":4877},"  \"packageRules\"",{"type":23,"tag":132,"props":4879,"children":4880},{"style":1726},[4881],{"type":38,"value":4882},": [\n",{"type":23,"tag":132,"props":4884,"children":4885},{"class":1715,"line":1763},[4886],{"type":23,"tag":132,"props":4887,"children":4888},{"style":1726},[4889],{"type":38,"value":4890},"    {\n",{"type":23,"tag":132,"props":4892,"children":4893},{"class":1715,"line":1781},[4894,4899,4903,4908],{"type":23,"tag":132,"props":4895,"children":4896},{"style":4851},[4897],{"type":38,"value":4898},"      \"description\"",{"type":23,"tag":132,"props":4900,"children":4901},{"style":1726},[4902],{"type":38,"value":1754},{"type":23,"tag":132,"props":4904,"children":4905},{"style":4861},[4906],{"type":38,"value":4907},"\"Follow Shopware version schema\"",{"type":23,"tag":132,"props":4909,"children":4910},{"style":1726},[4911],{"type":38,"value":4869},{"type":23,"tag":132,"props":4913,"children":4914},{"class":1715,"line":1799},[4915,4920],{"type":23,"tag":132,"props":4916,"children":4917},{"style":4851},[4918],{"type":38,"value":4919},"      \"matchDatasources\"",{"type":23,"tag":132,"props":4921,"children":4922},{"style":1726},[4923],{"type":38,"value":4882},{"type":23,"tag":132,"props":4925,"children":4926},{"class":1715,"line":1817},[4927],{"type":23,"tag":132,"props":4928,"children":4929},{"style":4861},[4930],{"type":38,"value":4931},"        \"packagist\"\n",{"type":23,"tag":132,"props":4933,"children":4934},{"class":1715,"line":1830},[4935],{"type":23,"tag":132,"props":4936,"children":4937},{"style":1726},[4938],{"type":38,"value":4939},"      ],\n",{"type":23,"tag":132,"props":4941,"children":4942},{"class":1715,"line":1849},[4943,4948],{"type":23,"tag":132,"props":4944,"children":4945},{"style":4851},[4946],{"type":38,"value":4947},"      \"matchPackageNames\"",{"type":23,"tag":132,"props":4949,"children":4950},{"style":1726},[4951],{"type":38,"value":4882},{"type":23,"tag":132,"props":4953,"children":4954},{"class":1715,"line":1858},[4955,4960],{"type":23,"tag":132,"props":4956,"children":4957},{"style":4861},[4958],{"type":38,"value":4959},"        \"shopware/core\"",{"type":23,"tag":132,"props":4961,"children":4962},{"style":1726},[4963],{"type":38,"value":4869},{"type":23,"tag":132,"props":4965,"children":4966},{"class":1715,"line":1867},[4967,4972],{"type":23,"tag":132,"props":4968,"children":4969},{"style":4861},[4970],{"type":38,"value":4971},"        \"shopware/administration\"",{"type":23,"tag":132,"props":4973,"children":4974},{"style":1726},[4975],{"type":38,"value":4869},{"type":23,"tag":132,"props":4977,"children":4978},{"class":1715,"line":1880},[4979,4984],{"type":23,"tag":132,"props":4980,"children":4981},{"style":4861},[4982],{"type":38,"value":4983},"        \"shopware/elasticsearch\"",{"type":23,"tag":132,"props":4985,"children":4986},{"style":1726},[4987],{"type":38,"value":4869},{"type":23,"tag":132,"props":4989,"children":4990},{"class":1715,"line":1894},[4991],{"type":23,"tag":132,"props":4992,"children":4993},{"style":4861},[4994],{"type":38,"value":4995},"        \"shopware/storefront\"\n",{"type":23,"tag":132,"props":4997,"children":4998},{"class":1715,"line":1907},[4999],{"type":23,"tag":132,"props":5000,"children":5001},{"style":1726},[5002],{"type":38,"value":4939},{"type":23,"tag":132,"props":5004,"children":5005},{"class":1715,"line":1920},[5006,5011,5015,5020],{"type":23,"tag":132,"props":5007,"children":5008},{"style":4851},[5009],{"type":38,"value":5010},"      \"groupName\"",{"type":23,"tag":132,"props":5012,"children":5013},{"style":1726},[5014],{"type":38,"value":1754},{"type":23,"tag":132,"props":5016,"children":5017},{"style":4861},[5018],{"type":38,"value":5019},"\"shopware\"",{"type":23,"tag":132,"props":5021,"children":5022},{"style":1726},[5023],{"type":38,"value":4869},{"type":23,"tag":132,"props":5025,"children":5026},{"class":1715,"line":1933},[5027,5032,5036,5041,5047,5052,5056,5061,5065,5070,5074,5079,5083,5088,5092,5097,5101,5106],{"type":23,"tag":132,"props":5028,"children":5029},{"style":4851},[5030],{"type":38,"value":5031},"      \"versioning\"",{"type":23,"tag":132,"props":5033,"children":5034},{"style":1726},[5035],{"type":38,"value":1754},{"type":23,"tag":132,"props":5037,"children":5038},{"style":4861},[5039],{"type":38,"value":5040},"\"regex:(?\u003Ccompatibility>",{"type":23,"tag":132,"props":5042,"children":5044},{"style":5043},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF",[5045],{"type":38,"value":5046},"\\\\",{"type":23,"tag":132,"props":5048,"children":5049},{"style":4861},[5050],{"type":38,"value":5051},"d+)",{"type":23,"tag":132,"props":5053,"children":5054},{"style":5043},[5055],{"type":38,"value":5046},{"type":23,"tag":132,"props":5057,"children":5058},{"style":4861},[5059],{"type":38,"value":5060},".(?\u003Cmajor>",{"type":23,"tag":132,"props":5062,"children":5063},{"style":5043},[5064],{"type":38,"value":5046},{"type":23,"tag":132,"props":5066,"children":5067},{"style":4861},[5068],{"type":38,"value":5069},"d+)(",{"type":23,"tag":132,"props":5071,"children":5072},{"style":5043},[5073],{"type":38,"value":5046},{"type":23,"tag":132,"props":5075,"children":5076},{"style":4861},[5077],{"type":38,"value":5078},".(?\u003Cminor>",{"type":23,"tag":132,"props":5080,"children":5081},{"style":5043},[5082],{"type":38,"value":5046},{"type":23,"tag":132,"props":5084,"children":5085},{"style":4861},[5086],{"type":38,"value":5087},"d+))?(",{"type":23,"tag":132,"props":5089,"children":5090},{"style":5043},[5091],{"type":38,"value":5046},{"type":23,"tag":132,"props":5093,"children":5094},{"style":4861},[5095],{"type":38,"value":5096},".(?\u003Cpatch>",{"type":23,"tag":132,"props":5098,"children":5099},{"style":5043},[5100],{"type":38,"value":5046},{"type":23,"tag":132,"props":5102,"children":5103},{"style":4861},[5104],{"type":38,"value":5105},"d+))?$\"",{"type":23,"tag":132,"props":5107,"children":5108},{"style":1726},[5109],{"type":38,"value":4869},{"type":23,"tag":132,"props":5111,"children":5112},{"class":1715,"line":1946},[5113,5118,5122],{"type":23,"tag":132,"props":5114,"children":5115},{"style":4851},[5116],{"type":38,"value":5117},"      \"sourceUrl\"",{"type":23,"tag":132,"props":5119,"children":5120},{"style":1726},[5121],{"type":38,"value":1754},{"type":23,"tag":132,"props":5123,"children":5124},{"style":4861},[5125],{"type":38,"value":5126},"\"https://github.com/shopware/shopware\"\n",{"type":23,"tag":132,"props":5128,"children":5129},{"class":1715,"line":1959},[5130],{"type":23,"tag":132,"props":5131,"children":5132},{"style":1726},[5133],{"type":38,"value":5134},"    }\n",{"type":23,"tag":132,"props":5136,"children":5137},{"class":1715,"line":1972},[5138],{"type":23,"tag":132,"props":5139,"children":5140},{"style":1726},[5141],{"type":38,"value":5142},"  ]\n",{"type":23,"tag":132,"props":5144,"children":5145},{"class":1715,"line":2662},[5146],{"type":23,"tag":132,"props":5147,"children":5148},{"style":1726},[5149],{"type":38,"value":5150},"}\n",{"type":23,"tag":41,"props":5152,"children":5153},{},[5154],{"type":38,"value":5155},"Dies sollte zur Erstellung folgender Merge-/Pull-Requests führen:",{"type":23,"tag":73,"props":5157,"children":5158},{},[5159,5193],{"type":23,"tag":77,"props":5160,"children":5161},{},[5162,5164,5170,5171,5177,5178,5184,5185,5191],{"type":38,"value":5163},"fix(deps): update shopware (",{"type":23,"tag":1710,"props":5165,"children":5167},{"className":5166},[],[5168],{"type":38,"value":5169},"shopware/administration",{"type":38,"value":1136},{"type":23,"tag":1710,"props":5172,"children":5174},{"className":5173},[],[5175],{"type":38,"value":5176},"shopware/core",{"type":38,"value":1136},{"type":23,"tag":1710,"props":5179,"children":5181},{"className":5180},[],[5182],{"type":38,"value":5183},"shopware/elasticsearch",{"type":38,"value":1136},{"type":23,"tag":1710,"props":5186,"children":5188},{"className":5187},[],[5189],{"type":38,"value":5190},"shopware/storefront",{"type":38,"value":5192},")",{"type":23,"tag":77,"props":5194,"children":5195},{},[5196,5198,5203,5204,5209,5210,5215,5216,5221],{"type":38,"value":5197},"fix(deps): update shopware to v7 (major) (",{"type":23,"tag":1710,"props":5199,"children":5201},{"className":5200},[],[5202],{"type":38,"value":5169},{"type":38,"value":1136},{"type":23,"tag":1710,"props":5205,"children":5207},{"className":5206},[],[5208],{"type":38,"value":5176},{"type":38,"value":1136},{"type":23,"tag":1710,"props":5211,"children":5213},{"className":5212},[],[5214],{"type":38,"value":5183},{"type":38,"value":1136},{"type":23,"tag":1710,"props":5217,"children":5219},{"className":5218},[],[5220],{"type":38,"value":5190},{"type":38,"value":5192},{"type":23,"tag":4668,"props":5223,"children":5224},{},[5225],{"type":38,"value":4672},{"title":7,"searchDepth":1531,"depth":1531,"links":5227},[5228,5229],{"id":4704,"depth":1531,"text":4707},{"id":4762,"depth":1531,"text":4765},{"_path":5231,"_dir":1586,"_draft":6,"_partial":6,"_locale":7,"slug":1555,"teams":5232,"primaryTeam":5233,"firstName":5234,"lastName":5235,"prefixTitle":7,"suffixTitle":5236,"education":5237,"role":5242,"workingSince":5244,"inTheCompanySince":5245,"techSkills":5246,"skills":5277,"projects":5293,"contactDetails":5303,"_image":5306,"image":5307,"_id":5308,"_type":1669,"title":5309,"_source":1586,"_file":5310,"_stem":5311,"_extension":1669},"/employees/robert-juzak",[1588,5233],"devOps","Robert","Juzak","B.Sc.",[5238],[5239,5240,5241],"Bachelor of Computer Science","Technische Universität Breslau","2016",[1603,1604,5243,1607],"admin","2015","2018",[5247,5250,5252,5255,5258,5261,5263,5266,5269,5270,5271,5272,5275],{"name":5248,"level":1611,"icon":5249},"Docker","/images/Docker.svg",{"name":5251,"level":1611},"GitLab",{"name":5253,"level":1611,"icon":5254},"Kubernetes","/images/Kubernetes.svg",{"name":5256,"level":1611,"icon":5257},"PHPUnit","/images/PHP-Unit.svg",{"name":5259,"level":1611,"icon":5260},"Portainer","/images/Portainer.svg",{"name":5262,"level":1611},"Sentry",{"name":5264,"level":1611,"icon":5265},"Sonarqube","/images/Sonarqube.svg",{"name":5267,"level":1611,"icon":5268},"Linux","/images/linux_os-mono.svg",{"name":1616,"level":1617,"icon":1618},{"name":1620,"level":1617,"icon":1621},{"name":1610,"level":1617},{"name":5273,"level":1617,"icon":5274},"SQL","/images/SQL.svg",{"name":5276,"level":1617,"icon":1624},"VueJS",[5278,5280,5282,5283,5285,5287,5288,5290,5292],{"name":5279,"level":1611},"CI/CD",{"name":5281,"level":1611},"qualityAssurance",{"name":5233,"level":1611},{"name":5284,"level":1611},"testDrivenBugfix",{"name":5286,"level":1611},"testDrivenDevelopment",{"name":1606,"level":1617},{"name":5289,"level":1617},"databases",{"name":5291,"level":1617},"linuxServerAdministration",{"name":1648,"level":1617},[5294,5299,5301],{"project":5295,"position":5296},"Herole",[5297,5298],"Dev-Ops","Frontend Developer",{"project":5300,"position":5298},"Huawei-Calibration-aaS",{"project":5302,"position":5298},"Huawei-Inspect-3D",{"eMail":5304,"phone":5305,"visibility":1660},"robert.juzak@helmundwalter.de","+49 351 799 035 26","images/employees/Portraits/robert_juzak.webp","images/employees/Portraits/RobertJuzak_MS.webp","employees:employees:6.robert-juzak.json","Robert Juzak","employees/6.robert-juzak.json","employees/6.robert-juzak",[5313,5327,5339],{"_path":5314,"_dir":5315,"_draft":6,"_partial":2460,"_locale":7,"name":5316,"slug":5315,"text":5317,"hoverText":5318,"image":5319,"customer":5320,"tags":5321,"_id":5323,"_type":1707,"title":5324,"_source":1547,"_file":5325,"_stem":5326,"_extension":1707},"/portfolio/gridside/_teaser","gridside","Gridside HANS","Umbauplanung von überregionalen Stromnetzen","Helm & Walter IT-Solutions GmbH wurde beauftragt, eine Web-Applikation für die Umbauplanung von überregionalen Stromnetzen zu entwickeln.","/images/portfolio/gridside/hero.png","Eine große internationale Elektronikfirma",[18,5322],"backend","common:portfolio:890.gridside:_teaser.yaml","Teaser","portfolio/890.gridside/_teaser.yaml","portfolio/890.gridside/_teaser",{"_path":5328,"_dir":5329,"_draft":6,"_partial":2460,"_locale":7,"name":5330,"slug":5329,"text":5331,"hoverText":5332,"image":5333,"customer":5320,"tags":5334,"_id":5336,"_type":1707,"title":5324,"_source":1547,"_file":5337,"_stem":5338,"_extension":1707},"/portfolio/camera-calibration/_teaser","camera-calibration","Camera Calibration Service","Benutzerfreundliche Kalibrierung von Industriekameras","Für eine große produzierende Elektronikfirma haben wir eine webbasierte Anwendung entwickelt, die Schritt für Schritt durch den Kalibrierungsprozess von Industriekameras führt.","/images/portfolio/inspect_3d/CAAS.jpg",[5335,18],"3d","common:portfolio:998.camera-calibration:_teaser.yaml","portfolio/998.camera-calibration/_teaser.yaml","portfolio/998.camera-calibration/_teaser",{"_path":5340,"_dir":5341,"_draft":6,"_partial":2460,"_locale":7,"name":5342,"slug":5341,"text":5343,"hoverText":5344,"image":5345,"customer":5320,"tags":5346,"_id":5347,"_type":1707,"title":5324,"_source":1547,"_file":5348,"_stem":5349,"_extension":1707},"/portfolio/inspect3d/_teaser","inspect3d","Object Inspection","Prüfung von Bauteilen und Qualitätssicherung","Im Rahmen des Projektes wurde ein UI konzipiert und entwickelt, das Interaktion innerhalb einer 3d-Punktwolke ermöglicht. Diese 3D-Ansicht resultiert dabei aus einem mit einer Industriekamera erfassten Werkstück. Auf der erstellten Punktwolke können anschließend Tools angewendet werden.","/images/portfolio/inspect_3d/inspect_3d_medium.png",[5335,18],"common:portfolio:999.inspect3d:_teaser.yaml","portfolio/999.inspect3d/_teaser.yaml","portfolio/999.inspect3d/_teaser",1782284043328]