[{"data":1,"prerenderedAt":6061},["ShallowReactive",2],{"blog-current-gitlab-behind-traefik-en":3,"blog-previous-gitlab-behind-traefik-en":3047,"blog-next-gitlab-behind-traefik-en":3062,"blog-alt-de-gitlab-behind-traefik-en":3074,"blog-alt-en-gitlab-behind-traefik-en":3076,"employee-robert-juzak":3077,"related-refs-devops--en":3176,"content-query-abDu7ax1qT":3201,"content-query-9RJBkyXCE2":4494,"content-query-vhr2h3d1hs":5989},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"author":10,"image":11,"releaseDate":12,"blogCategories":13,"articleTags":16,"tags":18,"body":20,"_type":3041,"_id":3042,"_source":3043,"_file":3044,"_stem":3045,"_extension":3046},"/en/blog/gitlab-behind-traefik","blog",false,"","Installing Gitlab behind Traefik","It's super easy to install GitLab with docker on a dedicated host. But what when you need to deploy it alongside you outher deployments?","robert-juzak","/images/dev-ops-dark.svg","2025-07-16",[14,15],"What moves us","Infrastructure",[17],"DevOps",[19],"devops",{"type":21,"children":22,"toc":3033},"root",[23,32,40,53,343,348,354,359,364,369,476,483,488,728,734,739,759,766,783,1140,1145,1208,1214,1229,1253,1632,1636,1672,1676,1686,1689,1693,1699,1710,1720,1733,1736,1743,2142,2146,2171,2174,2177,2187,2193,2549,2553,2566,2569,2574,3007,3011,3027],{"type":24,"tag":25,"props":26,"children":31},"element","img",{"alt":7,"aspect-ratio":27,"height":28,"object-fit":29,"src":30},"1.78",300,"fill","/blog/gitlab-traefik.png",[],{"type":24,"tag":33,"props":34,"children":36},"h2",{"id":35},"the-simplest-way-to-install-gitlab",[37],{"type":38,"value":39},"text","The simplest way to install GitLab",{"type":24,"tag":41,"props":42,"children":43},"p",{},[44,46],{"type":38,"value":45},"GitLab provides official instructions to install it using Docker and Docker Compose. You can find it in ",{"type":24,"tag":47,"props":48,"children":50},"a",{"href":49},"https://docs.gitlab.com/install/docker/installation/#install-gitlab-by-using-docker-compose",[51],{"type":38,"value":52},"the official documentation",{"type":24,"tag":54,"props":55,"children":60},"pre",{"className":56,"code":57,"filename":58,"language":59,"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",[61],{"type":24,"tag":62,"props":63,"children":64},"code",{"__ignoreMap":7},[65,83,96,116,134,152,170,183,202,211,220,233,247,260,273,286,299,312,325],{"type":24,"tag":66,"props":67,"children":70},"span",{"class":68,"line":69},"line",1,[71,77],{"type":24,"tag":66,"props":72,"children":74},{"style":73},"--shiki-default:#85E89D;--shiki-dark:#85E89D;--shiki-sepia:#F92672",[75],{"type":38,"value":76},"services",{"type":24,"tag":66,"props":78,"children":80},{"style":79},"--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2",[81],{"type":38,"value":82},":\n",{"type":24,"tag":66,"props":84,"children":86},{"class":68,"line":85},2,[87,92],{"type":24,"tag":66,"props":88,"children":89},{"style":73},[90],{"type":38,"value":91},"  gitlab",{"type":24,"tag":66,"props":93,"children":94},{"style":79},[95],{"type":38,"value":82},{"type":24,"tag":66,"props":97,"children":99},{"class":68,"line":98},3,[100,105,110],{"type":24,"tag":66,"props":101,"children":102},{"style":73},[103],{"type":38,"value":104},"    image",{"type":24,"tag":66,"props":106,"children":107},{"style":79},[108],{"type":38,"value":109},": ",{"type":24,"tag":66,"props":111,"children":113},{"style":112},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74",[114],{"type":38,"value":115},"gitlab/gitlab-ee:\u003Cversion>-ce.0\n",{"type":24,"tag":66,"props":117,"children":119},{"class":68,"line":118},4,[120,125,129],{"type":24,"tag":66,"props":121,"children":122},{"style":73},[123],{"type":38,"value":124},"    container_name",{"type":24,"tag":66,"props":126,"children":127},{"style":79},[128],{"type":38,"value":109},{"type":24,"tag":66,"props":130,"children":131},{"style":112},[132],{"type":38,"value":133},"gitlab\n",{"type":24,"tag":66,"props":135,"children":137},{"class":68,"line":136},5,[138,143,147],{"type":24,"tag":66,"props":139,"children":140},{"style":73},[141],{"type":38,"value":142},"    restart",{"type":24,"tag":66,"props":144,"children":145},{"style":79},[146],{"type":38,"value":109},{"type":24,"tag":66,"props":148,"children":149},{"style":112},[150],{"type":38,"value":151},"always\n",{"type":24,"tag":66,"props":153,"children":155},{"class":68,"line":154},6,[156,161,165],{"type":24,"tag":66,"props":157,"children":158},{"style":73},[159],{"type":38,"value":160},"    hostname",{"type":24,"tag":66,"props":162,"children":163},{"style":79},[164],{"type":38,"value":109},{"type":24,"tag":66,"props":166,"children":167},{"style":112},[168],{"type":38,"value":169},"'\u003Cgitlab.example.com>'\n",{"type":24,"tag":66,"props":171,"children":173},{"class":68,"line":172},7,[174,179],{"type":24,"tag":66,"props":175,"children":176},{"style":73},[177],{"type":38,"value":178},"    environment",{"type":24,"tag":66,"props":180,"children":181},{"style":79},[182],{"type":38,"value":82},{"type":24,"tag":66,"props":184,"children":186},{"class":68,"line":185},8,[187,192,196],{"type":24,"tag":66,"props":188,"children":189},{"style":73},[190],{"type":38,"value":191},"      GITLAB_OMNIBUS_CONFIG",{"type":24,"tag":66,"props":193,"children":194},{"style":79},[195],{"type":38,"value":109},{"type":24,"tag":66,"props":197,"children":199},{"style":198},"--shiki-default:#F97583;--shiki-dark:#F97583;--shiki-sepia:#F92672",[200],{"type":38,"value":201},"|\n",{"type":24,"tag":66,"props":203,"children":205},{"class":68,"line":204},9,[206],{"type":24,"tag":66,"props":207,"children":208},{"style":112},[209],{"type":38,"value":210},"        # Add any other gitlab.rb configuration here, each on its own line\n",{"type":24,"tag":66,"props":212,"children":214},{"class":68,"line":213},10,[215],{"type":24,"tag":66,"props":216,"children":217},{"style":112},[218],{"type":38,"value":219},"        external_url 'https://\u003Cgitlab.example.com>'\n",{"type":24,"tag":66,"props":221,"children":223},{"class":68,"line":222},11,[224,229],{"type":24,"tag":66,"props":225,"children":226},{"style":73},[227],{"type":38,"value":228},"    ports",{"type":24,"tag":66,"props":230,"children":231},{"style":79},[232],{"type":38,"value":82},{"type":24,"tag":66,"props":234,"children":236},{"class":68,"line":235},12,[237,242],{"type":24,"tag":66,"props":238,"children":239},{"style":79},[240],{"type":38,"value":241},"      - ",{"type":24,"tag":66,"props":243,"children":244},{"style":112},[245],{"type":38,"value":246},"'80:80'\n",{"type":24,"tag":66,"props":248,"children":250},{"class":68,"line":249},13,[251,255],{"type":24,"tag":66,"props":252,"children":253},{"style":79},[254],{"type":38,"value":241},{"type":24,"tag":66,"props":256,"children":257},{"style":112},[258],{"type":38,"value":259},"'443:443'\n",{"type":24,"tag":66,"props":261,"children":263},{"class":68,"line":262},14,[264,268],{"type":24,"tag":66,"props":265,"children":266},{"style":79},[267],{"type":38,"value":241},{"type":24,"tag":66,"props":269,"children":270},{"style":112},[271],{"type":38,"value":272},"'22:22'\n",{"type":24,"tag":66,"props":274,"children":276},{"class":68,"line":275},15,[277,282],{"type":24,"tag":66,"props":278,"children":279},{"style":73},[280],{"type":38,"value":281},"    volumes",{"type":24,"tag":66,"props":283,"children":284},{"style":79},[285],{"type":38,"value":82},{"type":24,"tag":66,"props":287,"children":289},{"class":68,"line":288},16,[290,294],{"type":24,"tag":66,"props":291,"children":292},{"style":79},[293],{"type":38,"value":241},{"type":24,"tag":66,"props":295,"children":296},{"style":112},[297],{"type":38,"value":298},"'$GITLAB_HOME/config:/etc/gitlab'\n",{"type":24,"tag":66,"props":300,"children":302},{"class":68,"line":301},17,[303,307],{"type":24,"tag":66,"props":304,"children":305},{"style":79},[306],{"type":38,"value":241},{"type":24,"tag":66,"props":308,"children":309},{"style":112},[310],{"type":38,"value":311},"'$GITLAB_HOME/logs:/var/log/gitlab'\n",{"type":24,"tag":66,"props":313,"children":315},{"class":68,"line":314},18,[316,320],{"type":24,"tag":66,"props":317,"children":318},{"style":79},[319],{"type":38,"value":241},{"type":24,"tag":66,"props":321,"children":322},{"style":112},[323],{"type":38,"value":324},"'$GITLAB_HOME/data:/var/opt/gitlab'\n",{"type":24,"tag":66,"props":326,"children":328},{"class":68,"line":327},19,[329,334,338],{"type":24,"tag":66,"props":330,"children":331},{"style":73},[332],{"type":38,"value":333},"    shm_size",{"type":24,"tag":66,"props":335,"children":336},{"style":79},[337],{"type":38,"value":109},{"type":24,"tag":66,"props":339,"children":340},{"style":112},[341],{"type":38,"value":342},"'256m'\n",{"type":24,"tag":41,"props":344,"children":345},{},[346],{"type":38,"value":347},"This assumes you have your server dedicated to GitLab and all required ports (http, https, ssh) are free.\nGitLab will take care of everything, including TLS configuration with Lets Encrypt",{"type":24,"tag":33,"props":349,"children":351},{"id":350},"integrating-gitlab-alongside-other-deployments",[352],{"type":38,"value":353},"Integrating GitLab alongside other deployments",{"type":24,"tag":41,"props":355,"children":356},{},[357],{"type":38,"value":358},"What if you can't or don't want to install GitLab on a dedicated server?",{"type":24,"tag":41,"props":360,"children":361},{},[362],{"type":38,"value":363},"Maybe you just want a single server for all you services?",{"type":24,"tag":41,"props":365,"children":366},{},[367],{"type":38,"value":368},"This is an example structure how you could organize your deployments:",{"type":24,"tag":54,"props":370,"children":374},{"className":371,"code":372,"language":373,"meta":7,"style":7},"language-shell shiki shiki-themes github-dark github-dark monokai",".\n├── gitlab/                # GitLab service stack\n├── gitlab-runner/         # GitLab Runner for CI/CD\n├── mattermost/            # Mattermost team collaboration\n├── nextcloud/             # Nextcloud file hosting and collaboration\n└── traefik/               # Traefik reverse proxy configuration\n","shell",[375],{"type":24,"tag":62,"props":376,"children":377},{"__ignoreMap":7},[378,387,407,424,441,458],{"type":24,"tag":66,"props":379,"children":380},{"class":68,"line":69},[381],{"type":24,"tag":66,"props":382,"children":384},{"style":383},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-sepia:#66D9EF",[385],{"type":38,"value":386},".\n",{"type":24,"tag":66,"props":388,"children":389},{"class":68,"line":85},[390,396,401],{"type":24,"tag":66,"props":391,"children":393},{"style":392},"--shiki-default:#B392F0;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E",[394],{"type":38,"value":395},"├──",{"type":24,"tag":66,"props":397,"children":398},{"style":112},[399],{"type":38,"value":400}," gitlab/",{"type":24,"tag":66,"props":402,"children":404},{"style":403},"--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F",[405],{"type":38,"value":406},"                # GitLab service stack\n",{"type":24,"tag":66,"props":408,"children":409},{"class":68,"line":98},[410,414,419],{"type":24,"tag":66,"props":411,"children":412},{"style":392},[413],{"type":38,"value":395},{"type":24,"tag":66,"props":415,"children":416},{"style":112},[417],{"type":38,"value":418}," gitlab-runner/",{"type":24,"tag":66,"props":420,"children":421},{"style":403},[422],{"type":38,"value":423},"         # GitLab Runner for CI/CD\n",{"type":24,"tag":66,"props":425,"children":426},{"class":68,"line":118},[427,431,436],{"type":24,"tag":66,"props":428,"children":429},{"style":392},[430],{"type":38,"value":395},{"type":24,"tag":66,"props":432,"children":433},{"style":112},[434],{"type":38,"value":435}," mattermost/",{"type":24,"tag":66,"props":437,"children":438},{"style":403},[439],{"type":38,"value":440},"            # Mattermost team collaboration\n",{"type":24,"tag":66,"props":442,"children":443},{"class":68,"line":136},[444,448,453],{"type":24,"tag":66,"props":445,"children":446},{"style":392},[447],{"type":38,"value":395},{"type":24,"tag":66,"props":449,"children":450},{"style":112},[451],{"type":38,"value":452}," nextcloud/",{"type":24,"tag":66,"props":454,"children":455},{"style":403},[456],{"type":38,"value":457},"             # Nextcloud file hosting and collaboration\n",{"type":24,"tag":66,"props":459,"children":460},{"class":68,"line":154},[461,466,471],{"type":24,"tag":66,"props":462,"children":463},{"style":392},[464],{"type":38,"value":465},"└──",{"type":24,"tag":66,"props":467,"children":468},{"style":112},[469],{"type":38,"value":470}," traefik/",{"type":24,"tag":66,"props":472,"children":473},{"style":403},[474],{"type":38,"value":475},"               # Traefik reverse proxy configuration\n",{"type":24,"tag":477,"props":478,"children":480},"h3",{"id":479},"using-a-dedicated-ip",[481],{"type":38,"value":482},"Using a dedicated IP",{"type":24,"tag":41,"props":484,"children":485},{},[486],{"type":38,"value":487},"In case you have a possibility to attach an additional IP to your server (like a Floating IP on Hetzner),\nyou can simply bind the ports to this IP.",{"type":24,"tag":54,"props":489,"children":492},{"className":56,"code":490,"filename":58,"highlights":491,"language":59,"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",[235,249,262],[493],{"type":24,"tag":62,"props":494,"children":495},{"__ignoreMap":7},[496,507,518,533,548,563,578,589,604,611,618,629,643,656,669,680,691,702,713],{"type":24,"tag":66,"props":497,"children":498},{"class":68,"line":69},[499,503],{"type":24,"tag":66,"props":500,"children":501},{"style":73},[502],{"type":38,"value":76},{"type":24,"tag":66,"props":504,"children":505},{"style":79},[506],{"type":38,"value":82},{"type":24,"tag":66,"props":508,"children":509},{"class":68,"line":85},[510,514],{"type":24,"tag":66,"props":511,"children":512},{"style":73},[513],{"type":38,"value":91},{"type":24,"tag":66,"props":515,"children":516},{"style":79},[517],{"type":38,"value":82},{"type":24,"tag":66,"props":519,"children":520},{"class":68,"line":98},[521,525,529],{"type":24,"tag":66,"props":522,"children":523},{"style":73},[524],{"type":38,"value":104},{"type":24,"tag":66,"props":526,"children":527},{"style":79},[528],{"type":38,"value":109},{"type":24,"tag":66,"props":530,"children":531},{"style":112},[532],{"type":38,"value":115},{"type":24,"tag":66,"props":534,"children":535},{"class":68,"line":118},[536,540,544],{"type":24,"tag":66,"props":537,"children":538},{"style":73},[539],{"type":38,"value":124},{"type":24,"tag":66,"props":541,"children":542},{"style":79},[543],{"type":38,"value":109},{"type":24,"tag":66,"props":545,"children":546},{"style":112},[547],{"type":38,"value":133},{"type":24,"tag":66,"props":549,"children":550},{"class":68,"line":136},[551,555,559],{"type":24,"tag":66,"props":552,"children":553},{"style":73},[554],{"type":38,"value":142},{"type":24,"tag":66,"props":556,"children":557},{"style":79},[558],{"type":38,"value":109},{"type":24,"tag":66,"props":560,"children":561},{"style":112},[562],{"type":38,"value":151},{"type":24,"tag":66,"props":564,"children":565},{"class":68,"line":154},[566,570,574],{"type":24,"tag":66,"props":567,"children":568},{"style":73},[569],{"type":38,"value":160},{"type":24,"tag":66,"props":571,"children":572},{"style":79},[573],{"type":38,"value":109},{"type":24,"tag":66,"props":575,"children":576},{"style":112},[577],{"type":38,"value":169},{"type":24,"tag":66,"props":579,"children":580},{"class":68,"line":172},[581,585],{"type":24,"tag":66,"props":582,"children":583},{"style":73},[584],{"type":38,"value":178},{"type":24,"tag":66,"props":586,"children":587},{"style":79},[588],{"type":38,"value":82},{"type":24,"tag":66,"props":590,"children":591},{"class":68,"line":185},[592,596,600],{"type":24,"tag":66,"props":593,"children":594},{"style":73},[595],{"type":38,"value":191},{"type":24,"tag":66,"props":597,"children":598},{"style":79},[599],{"type":38,"value":109},{"type":24,"tag":66,"props":601,"children":602},{"style":198},[603],{"type":38,"value":201},{"type":24,"tag":66,"props":605,"children":606},{"class":68,"line":204},[607],{"type":24,"tag":66,"props":608,"children":609},{"style":112},[610],{"type":38,"value":210},{"type":24,"tag":66,"props":612,"children":613},{"class":68,"line":213},[614],{"type":24,"tag":66,"props":615,"children":616},{"style":112},[617],{"type":38,"value":219},{"type":24,"tag":66,"props":619,"children":620},{"class":68,"line":222},[621,625],{"type":24,"tag":66,"props":622,"children":623},{"style":73},[624],{"type":38,"value":228},{"type":24,"tag":66,"props":626,"children":627},{"style":79},[628],{"type":38,"value":82},{"type":24,"tag":66,"props":630,"children":633},{"class":631,"line":235},[68,632],"highlight",[634,638],{"type":24,"tag":66,"props":635,"children":636},{"style":79},[637],{"type":38,"value":241},{"type":24,"tag":66,"props":639,"children":640},{"style":112},[641],{"type":38,"value":642},"'192.168.0.1:80:80'\n",{"type":24,"tag":66,"props":644,"children":646},{"class":645,"line":249},[68,632],[647,651],{"type":24,"tag":66,"props":648,"children":649},{"style":79},[650],{"type":38,"value":241},{"type":24,"tag":66,"props":652,"children":653},{"style":112},[654],{"type":38,"value":655},"'192.168.0.1:443:443'\n",{"type":24,"tag":66,"props":657,"children":659},{"class":658,"line":262},[68,632],[660,664],{"type":24,"tag":66,"props":661,"children":662},{"style":79},[663],{"type":38,"value":241},{"type":24,"tag":66,"props":665,"children":666},{"style":112},[667],{"type":38,"value":668},"'192.168.0.1:22:22'\n",{"type":24,"tag":66,"props":670,"children":671},{"class":68,"line":275},[672,676],{"type":24,"tag":66,"props":673,"children":674},{"style":73},[675],{"type":38,"value":281},{"type":24,"tag":66,"props":677,"children":678},{"style":79},[679],{"type":38,"value":82},{"type":24,"tag":66,"props":681,"children":682},{"class":68,"line":288},[683,687],{"type":24,"tag":66,"props":684,"children":685},{"style":79},[686],{"type":38,"value":241},{"type":24,"tag":66,"props":688,"children":689},{"style":112},[690],{"type":38,"value":298},{"type":24,"tag":66,"props":692,"children":693},{"class":68,"line":301},[694,698],{"type":24,"tag":66,"props":695,"children":696},{"style":79},[697],{"type":38,"value":241},{"type":24,"tag":66,"props":699,"children":700},{"style":112},[701],{"type":38,"value":311},{"type":24,"tag":66,"props":703,"children":704},{"class":68,"line":314},[705,709],{"type":24,"tag":66,"props":706,"children":707},{"style":79},[708],{"type":38,"value":241},{"type":24,"tag":66,"props":710,"children":711},{"style":112},[712],{"type":38,"value":324},{"type":24,"tag":66,"props":714,"children":715},{"class":68,"line":327},[716,720,724],{"type":24,"tag":66,"props":717,"children":718},{"style":73},[719],{"type":38,"value":333},{"type":24,"tag":66,"props":721,"children":722},{"style":79},[723],{"type":38,"value":109},{"type":24,"tag":66,"props":725,"children":726},{"style":112},[727],{"type":38,"value":342},{"type":24,"tag":477,"props":729,"children":731},{"id":730},"using-traefik-as-a-reverse-proxy",[732],{"type":38,"value":733},"Using Traefik as a reverse proxy",{"type":24,"tag":41,"props":735,"children":736},{},[737],{"type":38,"value":738},"In this case I assume that you:",{"type":24,"tag":740,"props":741,"children":742},"ul",{},[743,749,754],{"type":24,"tag":744,"props":745,"children":746},"li",{},[747],{"type":38,"value":748},"can't or don't want to assign a dedicated IP for GitLab",{"type":24,"tag":744,"props":750,"children":751},{},[752],{"type":38,"value":753},"can't or don't want to change you default ssh port",{"type":24,"tag":744,"props":755,"children":756},{},[757],{"type":38,"value":758},"want to use Traefik as a reverse proxy",{"type":24,"tag":760,"props":761,"children":763},"h4",{"id":762},"the-traefik-deployment",[764],{"type":38,"value":765},"The Traefik deployment",{"type":24,"tag":41,"props":767,"children":768},{},[769,771,781],{"type":38,"value":770},"Remember to replace ",{"type":24,"tag":772,"props":773,"children":774},"strong",{},[775],{"type":24,"tag":62,"props":776,"children":778},{"className":777},[],[779],{"type":38,"value":780},"\u003Cinfo@example.com>",{"type":38,"value":782}," with your own email.",{"type":24,"tag":54,"props":784,"children":787},{"className":56,"code":785,"filename":786,"language":59,"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",[788],{"type":24,"tag":62,"props":789,"children":790},{"__ignoreMap":7},[791,803,815,824,835,847,863,879,894,911,922,934,946,958,970,977,989,1001,1013,1020,1033,1046,1054,1067,1080,1088,1101,1114,1127],{"type":24,"tag":66,"props":792,"children":793},{"class":68,"line":69},[794,799],{"type":24,"tag":66,"props":795,"children":796},{"style":73},[797],{"type":38,"value":798},"volumes",{"type":24,"tag":66,"props":800,"children":801},{"style":79},[802],{"type":38,"value":82},{"type":24,"tag":66,"props":804,"children":805},{"class":68,"line":85},[806,811],{"type":24,"tag":66,"props":807,"children":808},{"style":73},[809],{"type":38,"value":810},"  letsencrypt",{"type":24,"tag":66,"props":812,"children":813},{"style":79},[814],{"type":38,"value":82},{"type":24,"tag":66,"props":816,"children":817},{"class":68,"line":98},[818],{"type":24,"tag":66,"props":819,"children":821},{"emptyLinePlaceholder":820},true,[822],{"type":38,"value":823},"\n",{"type":24,"tag":66,"props":825,"children":826},{"class":68,"line":118},[827,831],{"type":24,"tag":66,"props":828,"children":829},{"style":73},[830],{"type":38,"value":76},{"type":24,"tag":66,"props":832,"children":833},{"style":79},[834],{"type":38,"value":82},{"type":24,"tag":66,"props":836,"children":837},{"class":68,"line":136},[838,843],{"type":24,"tag":66,"props":839,"children":840},{"style":73},[841],{"type":38,"value":842},"  traefik",{"type":24,"tag":66,"props":844,"children":845},{"style":79},[846],{"type":38,"value":82},{"type":24,"tag":66,"props":848,"children":849},{"class":68,"line":154},[850,854,858],{"type":24,"tag":66,"props":851,"children":852},{"style":73},[853],{"type":38,"value":104},{"type":24,"tag":66,"props":855,"children":856},{"style":79},[857],{"type":38,"value":109},{"type":24,"tag":66,"props":859,"children":860},{"style":112},[861],{"type":38,"value":862},"traefik:3\n",{"type":24,"tag":66,"props":864,"children":865},{"class":68,"line":172},[866,870,874],{"type":24,"tag":66,"props":867,"children":868},{"style":73},[869],{"type":38,"value":124},{"type":24,"tag":66,"props":871,"children":872},{"style":79},[873],{"type":38,"value":109},{"type":24,"tag":66,"props":875,"children":876},{"style":112},[877],{"type":38,"value":878},"traefik\n",{"type":24,"tag":66,"props":880,"children":881},{"class":68,"line":185},[882,886,890],{"type":24,"tag":66,"props":883,"children":884},{"style":73},[885],{"type":38,"value":142},{"type":24,"tag":66,"props":887,"children":888},{"style":79},[889],{"type":38,"value":109},{"type":24,"tag":66,"props":891,"children":892},{"style":112},[893],{"type":38,"value":151},{"type":24,"tag":66,"props":895,"children":896},{"class":68,"line":204},[897,902,906],{"type":24,"tag":66,"props":898,"children":899},{"style":73},[900],{"type":38,"value":901},"    network_mode",{"type":24,"tag":66,"props":903,"children":904},{"style":79},[905],{"type":38,"value":109},{"type":24,"tag":66,"props":907,"children":908},{"style":112},[909],{"type":38,"value":910},"host\n",{"type":24,"tag":66,"props":912,"children":913},{"class":68,"line":213},[914,918],{"type":24,"tag":66,"props":915,"children":916},{"style":73},[917],{"type":38,"value":281},{"type":24,"tag":66,"props":919,"children":920},{"style":79},[921],{"type":38,"value":82},{"type":24,"tag":66,"props":923,"children":924},{"class":68,"line":222},[925,929],{"type":24,"tag":66,"props":926,"children":927},{"style":79},[928],{"type":38,"value":241},{"type":24,"tag":66,"props":930,"children":931},{"style":112},[932],{"type":38,"value":933},"/var/run/docker.sock:/var/run/docker.sock:ro\n",{"type":24,"tag":66,"props":935,"children":936},{"class":68,"line":235},[937,941],{"type":24,"tag":66,"props":938,"children":939},{"style":79},[940],{"type":38,"value":241},{"type":24,"tag":66,"props":942,"children":943},{"style":112},[944],{"type":38,"value":945},"letsencrypt:/letsencrypt\n",{"type":24,"tag":66,"props":947,"children":948},{"class":68,"line":249},[949,954],{"type":24,"tag":66,"props":950,"children":951},{"style":73},[952],{"type":38,"value":953},"    command",{"type":24,"tag":66,"props":955,"children":956},{"style":79},[957],{"type":38,"value":82},{"type":24,"tag":66,"props":959,"children":960},{"class":68,"line":262},[961,965],{"type":24,"tag":66,"props":962,"children":963},{"style":79},[964],{"type":38,"value":241},{"type":24,"tag":66,"props":966,"children":967},{"style":112},[968],{"type":38,"value":969},"--log.level=INFO\n",{"type":24,"tag":66,"props":971,"children":972},{"class":68,"line":275},[973],{"type":24,"tag":66,"props":974,"children":975},{"emptyLinePlaceholder":820},[976],{"type":38,"value":823},{"type":24,"tag":66,"props":978,"children":979},{"class":68,"line":288},[980,984],{"type":24,"tag":66,"props":981,"children":982},{"style":79},[983],{"type":38,"value":241},{"type":24,"tag":66,"props":985,"children":986},{"style":112},[987],{"type":38,"value":988},"--entrypoints.web.address=:80\n",{"type":24,"tag":66,"props":990,"children":991},{"class":68,"line":301},[992,996],{"type":24,"tag":66,"props":993,"children":994},{"style":79},[995],{"type":38,"value":241},{"type":24,"tag":66,"props":997,"children":998},{"style":112},[999],{"type":38,"value":1000},"--entrypoints.web.http.redirections.entrypoint.to=websecure\n",{"type":24,"tag":66,"props":1002,"children":1003},{"class":68,"line":314},[1004,1008],{"type":24,"tag":66,"props":1005,"children":1006},{"style":79},[1007],{"type":38,"value":241},{"type":24,"tag":66,"props":1009,"children":1010},{"style":112},[1011],{"type":38,"value":1012},"--entrypoints.web.http.redirections.entrypoint.scheme=https\n",{"type":24,"tag":66,"props":1014,"children":1015},{"class":68,"line":327},[1016],{"type":24,"tag":66,"props":1017,"children":1018},{"emptyLinePlaceholder":820},[1019],{"type":38,"value":823},{"type":24,"tag":66,"props":1021,"children":1023},{"class":68,"line":1022},20,[1024,1028],{"type":24,"tag":66,"props":1025,"children":1026},{"style":79},[1027],{"type":38,"value":241},{"type":24,"tag":66,"props":1029,"children":1030},{"style":112},[1031],{"type":38,"value":1032},"--entrypoints.websecure.address=:443\n",{"type":24,"tag":66,"props":1034,"children":1036},{"class":68,"line":1035},21,[1037,1041],{"type":24,"tag":66,"props":1038,"children":1039},{"style":79},[1040],{"type":38,"value":241},{"type":24,"tag":66,"props":1042,"children":1043},{"style":112},[1044],{"type":38,"value":1045},"--entrypoints.websecure.http.tls.certresolver=letsencrypt\n",{"type":24,"tag":66,"props":1047,"children":1049},{"class":68,"line":1048},22,[1050],{"type":24,"tag":66,"props":1051,"children":1052},{"emptyLinePlaceholder":820},[1053],{"type":38,"value":823},{"type":24,"tag":66,"props":1055,"children":1057},{"class":68,"line":1056},23,[1058,1062],{"type":24,"tag":66,"props":1059,"children":1060},{"style":79},[1061],{"type":38,"value":241},{"type":24,"tag":66,"props":1063,"children":1064},{"style":112},[1065],{"type":38,"value":1066},"--providers.docker=true\n",{"type":24,"tag":66,"props":1068,"children":1070},{"class":68,"line":1069},24,[1071,1075],{"type":24,"tag":66,"props":1072,"children":1073},{"style":79},[1074],{"type":38,"value":241},{"type":24,"tag":66,"props":1076,"children":1077},{"style":112},[1078],{"type":38,"value":1079},"--providers.docker.exposedByDefault=false\n",{"type":24,"tag":66,"props":1081,"children":1083},{"class":68,"line":1082},25,[1084],{"type":24,"tag":66,"props":1085,"children":1086},{"emptyLinePlaceholder":820},[1087],{"type":38,"value":823},{"type":24,"tag":66,"props":1089,"children":1091},{"class":68,"line":1090},26,[1092,1096],{"type":24,"tag":66,"props":1093,"children":1094},{"style":79},[1095],{"type":38,"value":241},{"type":24,"tag":66,"props":1097,"children":1098},{"style":112},[1099],{"type":38,"value":1100},"--certificatesresolvers.letsencrypt.acme.email=\u003Cinfo@example.com>\n",{"type":24,"tag":66,"props":1102,"children":1104},{"class":68,"line":1103},27,[1105,1109],{"type":24,"tag":66,"props":1106,"children":1107},{"style":79},[1108],{"type":38,"value":241},{"type":24,"tag":66,"props":1110,"children":1111},{"style":112},[1112],{"type":38,"value":1113},"--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json\n",{"type":24,"tag":66,"props":1115,"children":1117},{"class":68,"line":1116},28,[1118,1122],{"type":24,"tag":66,"props":1119,"children":1120},{"style":79},[1121],{"type":38,"value":241},{"type":24,"tag":66,"props":1123,"children":1124},{"style":112},[1125],{"type":38,"value":1126},"--certificatesresolvers.letsencrypt.acme.httpchallenge=true\n",{"type":24,"tag":66,"props":1128,"children":1130},{"class":68,"line":1129},29,[1131,1135],{"type":24,"tag":66,"props":1132,"children":1133},{"style":79},[1134],{"type":38,"value":241},{"type":24,"tag":66,"props":1136,"children":1137},{"style":112},[1138],{"type":38,"value":1139},"--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web\n",{"type":24,"tag":41,"props":1141,"children":1142},{},[1143],{"type":38,"value":1144},"This setup will:",{"type":24,"tag":740,"props":1146,"children":1147},{},[1148,1157,1166,1171,1188,1197],{"type":24,"tag":744,"props":1149,"children":1150},{},[1151],{"type":24,"tag":47,"props":1152,"children":1154},{"href":1153},"https://doc.traefik.io/traefik/reference/install-configuration/providers/docker/",[1155],{"type":38,"value":1156},"enable the docker provider",{"type":24,"tag":744,"props":1158,"children":1159},{},[1160],{"type":24,"tag":47,"props":1161,"children":1163},{"href":1162},"https://doc.traefik.io/traefik/providers/docker/#exposedbydefault",[1164],{"type":38,"value":1165},"disable the container discovery",{"type":24,"tag":744,"props":1167,"children":1168},{},[1169],{"type":38,"value":1170},"redirect all HTTP traffic to HTTPS",{"type":24,"tag":744,"props":1172,"children":1173},{},[1174],{"type":24,"tag":47,"props":1175,"children":1177},{"href":1176},"https://doc.traefik.io/traefik/https/acme/#httpchallenge",[1178,1180,1186],{"type":38,"value":1179},"configure Let's Encrypt with ",{"type":24,"tag":62,"props":1181,"children":1183},{"className":1182},[],[1184],{"type":38,"value":1185},"HTTP-01",{"type":38,"value":1187}," challenge",{"type":24,"tag":744,"props":1189,"children":1190},{},[1191],{"type":24,"tag":47,"props":1192,"children":1194},{"href":1193},"https://doc.traefik.io/traefik/routing/entrypoints/#tls",[1195],{"type":38,"value":1196},"apply the TLS configuration to all routes",{"type":24,"tag":744,"props":1198,"children":1199},{},[1200,1206],{"type":24,"tag":47,"props":1201,"children":1203},{"href":1202},"https://docs.docker.com/engine/network/tutorials/host/",[1204],{"type":38,"value":1205},"start the Traefik container bound directly to host's network",{"type":38,"value":1207},", so no addition configuration is required for traefik",{"type":24,"tag":760,"props":1209,"children":1211},{"id":1210},"the-gitlab-deployment",[1212],{"type":38,"value":1213},"The GitLab deployment",{"type":24,"tag":41,"props":1215,"children":1216},{},[1217,1218,1227],{"type":38,"value":770},{"type":24,"tag":772,"props":1219,"children":1220},{},[1221],{"type":24,"tag":62,"props":1222,"children":1224},{"className":1223},[],[1225],{"type":38,"value":1226},"\u003Cgitlab.example.com>",{"type":38,"value":1228}," with your own domain.",{"type":24,"tag":41,"props":1230,"children":1231},{},[1232,1234,1240,1242,1251],{"type":38,"value":1233},"Please take a look in the ",{"type":24,"tag":47,"props":1235,"children":1237},{"href":1236},"https://docs.gitlab.com/install/docker/installation/#create-a-directory-for-the-volumes",[1238],{"type":38,"value":1239},"official dokumentation",{"type":38,"value":1241}," about ",{"type":24,"tag":772,"props":1243,"children":1244},{},[1245],{"type":24,"tag":62,"props":1246,"children":1248},{"className":1247},[],[1249],{"type":38,"value":1250},"GITLAB_HOME",{"type":38,"value":1252}," directory",{"type":24,"tag":54,"props":1254,"children":1257},{"className":56,"code":1255,"filename":58,"highlights":1256,"language":59,"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",[136,154,172,185,204,301,327,1022,1035,1048,1056,1069,1090,1116],[1258],{"type":24,"tag":62,"props":1259,"children":1260},{"__ignoreMap":7},[1261,1272,1283,1299,1314,1327,1340,1353,1366,1379,1394,1410,1421,1436,1443,1451,1459,1468,1475,1484,1493,1502,1511,1520,1529,1536,1545,1556,1569,1580,1592,1604,1616],{"type":24,"tag":66,"props":1262,"children":1263},{"class":68,"line":69},[1264,1268],{"type":24,"tag":66,"props":1265,"children":1266},{"style":73},[1267],{"type":38,"value":76},{"type":24,"tag":66,"props":1269,"children":1270},{"style":79},[1271],{"type":38,"value":82},{"type":24,"tag":66,"props":1273,"children":1274},{"class":68,"line":85},[1275,1279],{"type":24,"tag":66,"props":1276,"children":1277},{"style":73},[1278],{"type":38,"value":91},{"type":24,"tag":66,"props":1280,"children":1281},{"style":79},[1282],{"type":38,"value":82},{"type":24,"tag":66,"props":1284,"children":1285},{"class":68,"line":98},[1286,1290,1294],{"type":24,"tag":66,"props":1287,"children":1288},{"style":73},[1289],{"type":38,"value":104},{"type":24,"tag":66,"props":1291,"children":1292},{"style":79},[1293],{"type":38,"value":109},{"type":24,"tag":66,"props":1295,"children":1296},{"style":112},[1297],{"type":38,"value":1298},"gitlab/gitlab-ce:\u003Cversion>-ce.0\n",{"type":24,"tag":66,"props":1300,"children":1301},{"class":68,"line":118},[1302,1306,1310],{"type":24,"tag":66,"props":1303,"children":1304},{"style":73},[1305],{"type":38,"value":124},{"type":24,"tag":66,"props":1307,"children":1308},{"style":79},[1309],{"type":38,"value":109},{"type":24,"tag":66,"props":1311,"children":1312},{"style":112},[1313],{"type":38,"value":133},{"type":24,"tag":66,"props":1315,"children":1317},{"class":1316,"line":136},[68,632],[1318,1323],{"type":24,"tag":66,"props":1319,"children":1320},{"style":73},[1321],{"type":38,"value":1322},"    labels",{"type":24,"tag":66,"props":1324,"children":1325},{"style":79},[1326],{"type":38,"value":82},{"type":24,"tag":66,"props":1328,"children":1330},{"class":1329,"line":154},[68,632],[1331,1335],{"type":24,"tag":66,"props":1332,"children":1333},{"style":79},[1334],{"type":38,"value":241},{"type":24,"tag":66,"props":1336,"children":1337},{"style":112},[1338],{"type":38,"value":1339},"\"traefik.enable=true\"\n",{"type":24,"tag":66,"props":1341,"children":1343},{"class":1342,"line":172},[68,632],[1344,1348],{"type":24,"tag":66,"props":1345,"children":1346},{"style":79},[1347],{"type":38,"value":241},{"type":24,"tag":66,"props":1349,"children":1350},{"style":112},[1351],{"type":38,"value":1352},"\"traefik.http.routers.gitlab.rule=Host(`\u003Cgitlab.example.com>`)\"\n",{"type":24,"tag":66,"props":1354,"children":1356},{"class":1355,"line":185},[68,632],[1357,1361],{"type":24,"tag":66,"props":1358,"children":1359},{"style":79},[1360],{"type":38,"value":241},{"type":24,"tag":66,"props":1362,"children":1363},{"style":112},[1364],{"type":38,"value":1365},"\"traefik.http.routers.gitlab.service=gitlab\"\n",{"type":24,"tag":66,"props":1367,"children":1369},{"class":1368,"line":204},[68,632],[1370,1374],{"type":24,"tag":66,"props":1371,"children":1372},{"style":79},[1373],{"type":38,"value":241},{"type":24,"tag":66,"props":1375,"children":1376},{"style":112},[1377],{"type":38,"value":1378},"\"traefik.http.services.gitlab.loadbalancer.server.port=80\"\n",{"type":24,"tag":66,"props":1380,"children":1381},{"class":68,"line":213},[1382,1386,1390],{"type":24,"tag":66,"props":1383,"children":1384},{"style":73},[1385],{"type":38,"value":142},{"type":24,"tag":66,"props":1387,"children":1388},{"style":79},[1389],{"type":38,"value":109},{"type":24,"tag":66,"props":1391,"children":1392},{"style":112},[1393],{"type":38,"value":151},{"type":24,"tag":66,"props":1395,"children":1396},{"class":68,"line":222},[1397,1401,1405],{"type":24,"tag":66,"props":1398,"children":1399},{"style":73},[1400],{"type":38,"value":160},{"type":24,"tag":66,"props":1402,"children":1403},{"style":79},[1404],{"type":38,"value":109},{"type":24,"tag":66,"props":1406,"children":1407},{"style":112},[1408],{"type":38,"value":1409},"'gitlab.example.com'\n",{"type":24,"tag":66,"props":1411,"children":1412},{"class":68,"line":235},[1413,1417],{"type":24,"tag":66,"props":1414,"children":1415},{"style":73},[1416],{"type":38,"value":178},{"type":24,"tag":66,"props":1418,"children":1419},{"style":79},[1420],{"type":38,"value":82},{"type":24,"tag":66,"props":1422,"children":1423},{"class":68,"line":249},[1424,1428,1432],{"type":24,"tag":66,"props":1425,"children":1426},{"style":73},[1427],{"type":38,"value":191},{"type":24,"tag":66,"props":1429,"children":1430},{"style":79},[1431],{"type":38,"value":109},{"type":24,"tag":66,"props":1433,"children":1434},{"style":198},[1435],{"type":38,"value":201},{"type":24,"tag":66,"props":1437,"children":1438},{"class":68,"line":262},[1439],{"type":24,"tag":66,"props":1440,"children":1441},{"style":112},[1442],{"type":38,"value":210},{"type":24,"tag":66,"props":1444,"children":1445},{"class":68,"line":275},[1446],{"type":24,"tag":66,"props":1447,"children":1448},{"style":112},[1449],{"type":38,"value":1450},"        external_url '\u003Chttps://gitlab.example.com>'\n",{"type":24,"tag":66,"props":1452,"children":1453},{"class":68,"line":288},[1454],{"type":24,"tag":66,"props":1455,"children":1456},{"style":112},[1457],{"type":38,"value":1458},"        \n",{"type":24,"tag":66,"props":1460,"children":1462},{"class":1461,"line":301},[68,632],[1463],{"type":24,"tag":66,"props":1464,"children":1465},{"style":112},[1466],{"type":38,"value":1467},"        letsencrypt['enable'] = false\n",{"type":24,"tag":66,"props":1469,"children":1470},{"class":68,"line":314},[1471],{"type":24,"tag":66,"props":1472,"children":1473},{"style":112},[1474],{"type":38,"value":1458},{"type":24,"tag":66,"props":1476,"children":1478},{"class":1477,"line":327},[68,632],[1479],{"type":24,"tag":66,"props":1480,"children":1481},{"style":112},[1482],{"type":38,"value":1483},"        nginx['listen_port'] = 80\n",{"type":24,"tag":66,"props":1485,"children":1487},{"class":1486,"line":1022},[68,632],[1488],{"type":24,"tag":66,"props":1489,"children":1490},{"style":112},[1491],{"type":38,"value":1492},"        nginx['listen_https'] = false\n",{"type":24,"tag":66,"props":1494,"children":1496},{"class":1495,"line":1035},[68,632],[1497],{"type":24,"tag":66,"props":1498,"children":1499},{"style":112},[1500],{"type":38,"value":1501},"        nginx['proxy_set_headers'] = {\n",{"type":24,"tag":66,"props":1503,"children":1505},{"class":1504,"line":1048},[68,632],[1506],{"type":24,"tag":66,"props":1507,"children":1508},{"style":112},[1509],{"type":38,"value":1510},"          \"X-Forwarded-Proto\" => \"https\",\n",{"type":24,"tag":66,"props":1512,"children":1514},{"class":1513,"line":1056},[68,632],[1515],{"type":24,"tag":66,"props":1516,"children":1517},{"style":112},[1518],{"type":38,"value":1519},"          \"X-Forwarded-Ssl\" => \"on\"\n",{"type":24,"tag":66,"props":1521,"children":1523},{"class":1522,"line":1069},[68,632],[1524],{"type":24,"tag":66,"props":1525,"children":1526},{"style":112},[1527],{"type":38,"value":1528},"        }\n",{"type":24,"tag":66,"props":1530,"children":1531},{"class":68,"line":1082},[1532],{"type":24,"tag":66,"props":1533,"children":1534},{"style":112},[1535],{"type":38,"value":1458},{"type":24,"tag":66,"props":1537,"children":1539},{"class":1538,"line":1090},[68,632],[1540],{"type":24,"tag":66,"props":1541,"children":1542},{"style":112},[1543],{"type":38,"value":1544},"        gitlab_rails['gitlab_shell_ssh_port'] = 2424\n",{"type":24,"tag":66,"props":1546,"children":1547},{"class":68,"line":1103},[1548,1552],{"type":24,"tag":66,"props":1549,"children":1550},{"style":73},[1551],{"type":38,"value":228},{"type":24,"tag":66,"props":1553,"children":1554},{"style":79},[1555],{"type":38,"value":82},{"type":24,"tag":66,"props":1557,"children":1559},{"class":1558,"line":1116},[68,632],[1560,1564],{"type":24,"tag":66,"props":1561,"children":1562},{"style":79},[1563],{"type":38,"value":241},{"type":24,"tag":66,"props":1565,"children":1566},{"style":112},[1567],{"type":38,"value":1568},"'2424:22'\n",{"type":24,"tag":66,"props":1570,"children":1571},{"class":68,"line":1129},[1572,1576],{"type":24,"tag":66,"props":1573,"children":1574},{"style":73},[1575],{"type":38,"value":281},{"type":24,"tag":66,"props":1577,"children":1578},{"style":79},[1579],{"type":38,"value":82},{"type":24,"tag":66,"props":1581,"children":1583},{"class":68,"line":1582},30,[1584,1588],{"type":24,"tag":66,"props":1585,"children":1586},{"style":79},[1587],{"type":38,"value":241},{"type":24,"tag":66,"props":1589,"children":1590},{"style":112},[1591],{"type":38,"value":298},{"type":24,"tag":66,"props":1593,"children":1595},{"class":68,"line":1594},31,[1596,1600],{"type":24,"tag":66,"props":1597,"children":1598},{"style":79},[1599],{"type":38,"value":241},{"type":24,"tag":66,"props":1601,"children":1602},{"style":112},[1603],{"type":38,"value":311},{"type":24,"tag":66,"props":1605,"children":1607},{"class":68,"line":1606},32,[1608,1612],{"type":24,"tag":66,"props":1609,"children":1610},{"style":79},[1611],{"type":38,"value":241},{"type":24,"tag":66,"props":1613,"children":1614},{"style":112},[1615],{"type":38,"value":324},{"type":24,"tag":66,"props":1617,"children":1619},{"class":68,"line":1618},33,[1620,1624,1628],{"type":24,"tag":66,"props":1621,"children":1622},{"style":73},[1623],{"type":38,"value":333},{"type":24,"tag":66,"props":1625,"children":1626},{"style":79},[1627],{"type":38,"value":109},{"type":24,"tag":66,"props":1629,"children":1630},{"style":112},[1631],{"type":38,"value":342},{"type":24,"tag":41,"props":1633,"children":1634},{},[1635],{"type":38,"value":1144},{"type":24,"tag":740,"props":1637,"children":1638},{},[1639,1644,1649,1654,1659],{"type":24,"tag":744,"props":1640,"children":1641},{},[1642],{"type":38,"value":1643},"disable the Let's Encrypt",{"type":24,"tag":744,"props":1645,"children":1646},{},[1647],{"type":38,"value":1648},"disable listening on https and listen on port 80",{"type":24,"tag":744,"props":1650,"children":1651},{},[1652],{"type":38,"value":1653},"set the required proxy headers",{"type":24,"tag":744,"props":1655,"children":1656},{},[1657],{"type":38,"value":1658},"change the ssh port to 2424",{"type":24,"tag":744,"props":1660,"children":1661},{},[1662,1664,1670],{"type":38,"value":1663},"instruct Traefik to route all traffic for ",{"type":24,"tag":62,"props":1665,"children":1667},{"className":1666},[],[1668],{"type":38,"value":1669},"gitlab.example.com",{"type":38,"value":1671}," to port 80 of the container",{"type":24,"tag":1673,"props":1674,"children":1675},"br",{},[],{"type":24,"tag":41,"props":1677,"children":1678},{},[1679],{"type":24,"tag":66,"props":1680,"children":1683},{"className":1681},[1682],"text-h2",[1684],{"type":38,"value":1685},"That's it!",{"type":24,"tag":1673,"props":1687,"children":1688},{},[],{"type":24,"tag":1690,"props":1691,"children":1692},"hr",{},[],{"type":24,"tag":477,"props":1694,"children":1696},{"id":1695},"gitlab-container-registry",[1697],{"type":38,"value":1698},"GitLab Container registry",{"type":24,"tag":41,"props":1700,"children":1701},{},[1702,1704],{"type":38,"value":1703},"When you got so far, you probably also want to set up the ",{"type":24,"tag":47,"props":1705,"children":1707},{"href":1706},"https://docs.gitlab.com/administration/packages/container_registry/",[1708],{"type":38,"value":1709},"container registry",{"type":24,"tag":760,"props":1711,"children":1713},{"id":1712},"configure-container-registry-under-its-own-domain",[1714],{"type":24,"tag":47,"props":1715,"children":1717},{"href":1716},"https://docs.gitlab.com/administration/packages/container_registry/#configure-container-registry-under-its-own-domain",[1718],{"type":38,"value":1719},"Configure container registry under its own domain",{"type":24,"tag":41,"props":1721,"children":1722},{},[1723,1725,1731],{"type":38,"value":1724},"This setup is easy. We just need to set the ",{"type":24,"tag":62,"props":1726,"children":1728},{"className":1727},[],[1729],{"type":38,"value":1730},"registry_external_url",{"type":38,"value":1732}," and instruct Traefik where to route the requests",{"type":24,"tag":1673,"props":1734,"children":1735},{},[],{"type":24,"tag":1737,"props":1738,"children":1740},"h5",{"id":1739},"update-the-gitlab-config",[1741],{"type":38,"value":1742},"Update the GitLab config",{"type":24,"tag":54,"props":1744,"children":1747},{"className":56,"code":1745,"filename":58,"highlights":1746,"language":59,"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",[213,222,1582,1594],[1748],{"type":24,"tag":62,"props":1749,"children":1750},{"__ignoreMap":7},[1751,1762,1773,1788,1803,1814,1825,1836,1847,1858,1871,1884,1899,1914,1925,1940,1947,1954,1961,1968,1975,1982,1989,1996,2003,2010,2017,2024,2031,2038,2047,2056,2067,2078,2090,2102,2114,2126],{"type":24,"tag":66,"props":1752,"children":1753},{"class":68,"line":69},[1754,1758],{"type":24,"tag":66,"props":1755,"children":1756},{"style":73},[1757],{"type":38,"value":76},{"type":24,"tag":66,"props":1759,"children":1760},{"style":79},[1761],{"type":38,"value":82},{"type":24,"tag":66,"props":1763,"children":1764},{"class":68,"line":85},[1765,1769],{"type":24,"tag":66,"props":1766,"children":1767},{"style":73},[1768],{"type":38,"value":91},{"type":24,"tag":66,"props":1770,"children":1771},{"style":79},[1772],{"type":38,"value":82},{"type":24,"tag":66,"props":1774,"children":1775},{"class":68,"line":98},[1776,1780,1784],{"type":24,"tag":66,"props":1777,"children":1778},{"style":73},[1779],{"type":38,"value":104},{"type":24,"tag":66,"props":1781,"children":1782},{"style":79},[1783],{"type":38,"value":109},{"type":24,"tag":66,"props":1785,"children":1786},{"style":112},[1787],{"type":38,"value":1298},{"type":24,"tag":66,"props":1789,"children":1790},{"class":68,"line":118},[1791,1795,1799],{"type":24,"tag":66,"props":1792,"children":1793},{"style":73},[1794],{"type":38,"value":124},{"type":24,"tag":66,"props":1796,"children":1797},{"style":79},[1798],{"type":38,"value":109},{"type":24,"tag":66,"props":1800,"children":1801},{"style":112},[1802],{"type":38,"value":133},{"type":24,"tag":66,"props":1804,"children":1805},{"class":68,"line":136},[1806,1810],{"type":24,"tag":66,"props":1807,"children":1808},{"style":73},[1809],{"type":38,"value":1322},{"type":24,"tag":66,"props":1811,"children":1812},{"style":79},[1813],{"type":38,"value":82},{"type":24,"tag":66,"props":1815,"children":1816},{"class":68,"line":154},[1817,1821],{"type":24,"tag":66,"props":1818,"children":1819},{"style":79},[1820],{"type":38,"value":241},{"type":24,"tag":66,"props":1822,"children":1823},{"style":112},[1824],{"type":38,"value":1339},{"type":24,"tag":66,"props":1826,"children":1827},{"class":68,"line":172},[1828,1832],{"type":24,"tag":66,"props":1829,"children":1830},{"style":79},[1831],{"type":38,"value":241},{"type":24,"tag":66,"props":1833,"children":1834},{"style":112},[1835],{"type":38,"value":1352},{"type":24,"tag":66,"props":1837,"children":1838},{"class":68,"line":185},[1839,1843],{"type":24,"tag":66,"props":1840,"children":1841},{"style":79},[1842],{"type":38,"value":241},{"type":24,"tag":66,"props":1844,"children":1845},{"style":112},[1846],{"type":38,"value":1365},{"type":24,"tag":66,"props":1848,"children":1849},{"class":68,"line":204},[1850,1854],{"type":24,"tag":66,"props":1851,"children":1852},{"style":79},[1853],{"type":38,"value":241},{"type":24,"tag":66,"props":1855,"children":1856},{"style":112},[1857],{"type":38,"value":1378},{"type":24,"tag":66,"props":1859,"children":1861},{"class":1860,"line":213},[68,632],[1862,1866],{"type":24,"tag":66,"props":1863,"children":1864},{"style":79},[1865],{"type":38,"value":241},{"type":24,"tag":66,"props":1867,"children":1868},{"style":112},[1869],{"type":38,"value":1870},"\"traefik.http.routers.container-registry.rule=Host(`registry.gitlab.example.com`)\"\n",{"type":24,"tag":66,"props":1872,"children":1874},{"class":1873,"line":222},[68,632],[1875,1879],{"type":24,"tag":66,"props":1876,"children":1877},{"style":79},[1878],{"type":38,"value":241},{"type":24,"tag":66,"props":1880,"children":1881},{"style":112},[1882],{"type":38,"value":1883},"\"traefik.http.services.container-registry.loadbalancer.server.port=5000\"\n",{"type":24,"tag":66,"props":1885,"children":1886},{"class":68,"line":235},[1887,1891,1895],{"type":24,"tag":66,"props":1888,"children":1889},{"style":73},[1890],{"type":38,"value":142},{"type":24,"tag":66,"props":1892,"children":1893},{"style":79},[1894],{"type":38,"value":109},{"type":24,"tag":66,"props":1896,"children":1897},{"style":112},[1898],{"type":38,"value":151},{"type":24,"tag":66,"props":1900,"children":1901},{"class":68,"line":249},[1902,1906,1910],{"type":24,"tag":66,"props":1903,"children":1904},{"style":73},[1905],{"type":38,"value":160},{"type":24,"tag":66,"props":1907,"children":1908},{"style":79},[1909],{"type":38,"value":109},{"type":24,"tag":66,"props":1911,"children":1912},{"style":112},[1913],{"type":38,"value":1409},{"type":24,"tag":66,"props":1915,"children":1916},{"class":68,"line":262},[1917,1921],{"type":24,"tag":66,"props":1918,"children":1919},{"style":73},[1920],{"type":38,"value":178},{"type":24,"tag":66,"props":1922,"children":1923},{"style":79},[1924],{"type":38,"value":82},{"type":24,"tag":66,"props":1926,"children":1927},{"class":68,"line":275},[1928,1932,1936],{"type":24,"tag":66,"props":1929,"children":1930},{"style":73},[1931],{"type":38,"value":191},{"type":24,"tag":66,"props":1933,"children":1934},{"style":79},[1935],{"type":38,"value":109},{"type":24,"tag":66,"props":1937,"children":1938},{"style":198},[1939],{"type":38,"value":201},{"type":24,"tag":66,"props":1941,"children":1942},{"class":68,"line":288},[1943],{"type":24,"tag":66,"props":1944,"children":1945},{"style":112},[1946],{"type":38,"value":210},{"type":24,"tag":66,"props":1948,"children":1949},{"class":68,"line":301},[1950],{"type":24,"tag":66,"props":1951,"children":1952},{"style":112},[1953],{"type":38,"value":1450},{"type":24,"tag":66,"props":1955,"children":1956},{"class":68,"line":314},[1957],{"type":24,"tag":66,"props":1958,"children":1959},{"emptyLinePlaceholder":820},[1960],{"type":38,"value":823},{"type":24,"tag":66,"props":1962,"children":1963},{"class":68,"line":327},[1964],{"type":24,"tag":66,"props":1965,"children":1966},{"style":112},[1967],{"type":38,"value":1467},{"type":24,"tag":66,"props":1969,"children":1970},{"class":68,"line":1022},[1971],{"type":24,"tag":66,"props":1972,"children":1973},{"emptyLinePlaceholder":820},[1974],{"type":38,"value":823},{"type":24,"tag":66,"props":1976,"children":1977},{"class":68,"line":1035},[1978],{"type":24,"tag":66,"props":1979,"children":1980},{"style":112},[1981],{"type":38,"value":1483},{"type":24,"tag":66,"props":1983,"children":1984},{"class":68,"line":1048},[1985],{"type":24,"tag":66,"props":1986,"children":1987},{"style":112},[1988],{"type":38,"value":1492},{"type":24,"tag":66,"props":1990,"children":1991},{"class":68,"line":1056},[1992],{"type":24,"tag":66,"props":1993,"children":1994},{"style":112},[1995],{"type":38,"value":1501},{"type":24,"tag":66,"props":1997,"children":1998},{"class":68,"line":1069},[1999],{"type":24,"tag":66,"props":2000,"children":2001},{"style":112},[2002],{"type":38,"value":1510},{"type":24,"tag":66,"props":2004,"children":2005},{"class":68,"line":1082},[2006],{"type":24,"tag":66,"props":2007,"children":2008},{"style":112},[2009],{"type":38,"value":1519},{"type":24,"tag":66,"props":2011,"children":2012},{"class":68,"line":1090},[2013],{"type":24,"tag":66,"props":2014,"children":2015},{"style":112},[2016],{"type":38,"value":1528},{"type":24,"tag":66,"props":2018,"children":2019},{"class":68,"line":1103},[2020],{"type":24,"tag":66,"props":2021,"children":2022},{"emptyLinePlaceholder":820},[2023],{"type":38,"value":823},{"type":24,"tag":66,"props":2025,"children":2026},{"class":68,"line":1116},[2027],{"type":24,"tag":66,"props":2028,"children":2029},{"style":112},[2030],{"type":38,"value":1544},{"type":24,"tag":66,"props":2032,"children":2033},{"class":68,"line":1129},[2034],{"type":24,"tag":66,"props":2035,"children":2036},{"emptyLinePlaceholder":820},[2037],{"type":38,"value":823},{"type":24,"tag":66,"props":2039,"children":2041},{"class":2040,"line":1582},[68,632],[2042],{"type":24,"tag":66,"props":2043,"children":2044},{"style":112},[2045],{"type":38,"value":2046},"        registry_external_url '\u003Chttps://registry.gitlab.example.com>'\n",{"type":24,"tag":66,"props":2048,"children":2050},{"class":2049,"line":1594},[68,632],[2051],{"type":24,"tag":66,"props":2052,"children":2053},{"style":112},[2054],{"type":38,"value":2055},"        registry_nginx['enable'] = false\n",{"type":24,"tag":66,"props":2057,"children":2058},{"class":68,"line":1606},[2059,2063],{"type":24,"tag":66,"props":2060,"children":2061},{"style":73},[2062],{"type":38,"value":228},{"type":24,"tag":66,"props":2064,"children":2065},{"style":79},[2066],{"type":38,"value":82},{"type":24,"tag":66,"props":2068,"children":2069},{"class":68,"line":1618},[2070,2074],{"type":24,"tag":66,"props":2071,"children":2072},{"style":79},[2073],{"type":38,"value":241},{"type":24,"tag":66,"props":2075,"children":2076},{"style":112},[2077],{"type":38,"value":1568},{"type":24,"tag":66,"props":2079,"children":2081},{"class":68,"line":2080},34,[2082,2086],{"type":24,"tag":66,"props":2083,"children":2084},{"style":73},[2085],{"type":38,"value":281},{"type":24,"tag":66,"props":2087,"children":2088},{"style":79},[2089],{"type":38,"value":82},{"type":24,"tag":66,"props":2091,"children":2093},{"class":68,"line":2092},35,[2094,2098],{"type":24,"tag":66,"props":2095,"children":2096},{"style":79},[2097],{"type":38,"value":241},{"type":24,"tag":66,"props":2099,"children":2100},{"style":112},[2101],{"type":38,"value":298},{"type":24,"tag":66,"props":2103,"children":2105},{"class":68,"line":2104},36,[2106,2110],{"type":24,"tag":66,"props":2107,"children":2108},{"style":79},[2109],{"type":38,"value":241},{"type":24,"tag":66,"props":2111,"children":2112},{"style":112},[2113],{"type":38,"value":311},{"type":24,"tag":66,"props":2115,"children":2117},{"class":68,"line":2116},37,[2118,2122],{"type":24,"tag":66,"props":2119,"children":2120},{"style":79},[2121],{"type":38,"value":241},{"type":24,"tag":66,"props":2123,"children":2124},{"style":112},[2125],{"type":38,"value":324},{"type":24,"tag":66,"props":2127,"children":2129},{"class":68,"line":2128},38,[2130,2134,2138],{"type":24,"tag":66,"props":2131,"children":2132},{"style":73},[2133],{"type":38,"value":333},{"type":24,"tag":66,"props":2135,"children":2136},{"style":79},[2137],{"type":38,"value":109},{"type":24,"tag":66,"props":2139,"children":2140},{"style":112},[2141],{"type":38,"value":342},{"type":24,"tag":41,"props":2143,"children":2144},{},[2145],{"type":38,"value":1144},{"type":24,"tag":740,"props":2147,"children":2148},{},[2149,2154,2159],{"type":24,"tag":744,"props":2150,"children":2151},{},[2152],{"type":38,"value":2153},"set the registry external url",{"type":24,"tag":744,"props":2155,"children":2156},{},[2157],{"type":38,"value":2158},"disable the nginx for the registry",{"type":24,"tag":744,"props":2160,"children":2161},{},[2162,2163,2169],{"type":38,"value":1663},{"type":24,"tag":62,"props":2164,"children":2166},{"className":2165},[],[2167],{"type":38,"value":2168},"registry.gitlab.example.com",{"type":38,"value":2170}," to port 5000 of the container",{"type":24,"tag":1673,"props":2172,"children":2173},{},[],{"type":24,"tag":1690,"props":2175,"children":2176},{},[],{"type":24,"tag":760,"props":2178,"children":2180},{"id":2179},"configure-container-registry-under-an-existing-gitlab-domain",[2181],{"type":24,"tag":47,"props":2182,"children":2184},{"href":2183},"https://docs.gitlab.com/administration/packages/container_registry/#configure-container-registry-under-an-existing-gitlab-domain",[2185],{"type":38,"value":2186},"Configure container registry under an existing GitLab domain",{"type":24,"tag":1737,"props":2188,"children":2190},{"id":2189},"update-the-traefik-config",[2191],{"type":38,"value":2192},"Update the Traefik config",{"type":24,"tag":54,"props":2194,"children":2197},{"className":56,"code":2195,"filename":786,"highlights":2196,"language":59,"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",[1056,1069],[2198],{"type":24,"tag":62,"props":2199,"children":2200},{"__ignoreMap":7},[2201,2212,2223,2230,2241,2252,2267,2282,2297,2312,2323,2334,2345,2356,2367,2374,2385,2396,2407,2414,2425,2436,2443,2456,2469,2476,2487,2498,2505,2516,2527,2538],{"type":24,"tag":66,"props":2202,"children":2203},{"class":68,"line":69},[2204,2208],{"type":24,"tag":66,"props":2205,"children":2206},{"style":73},[2207],{"type":38,"value":798},{"type":24,"tag":66,"props":2209,"children":2210},{"style":79},[2211],{"type":38,"value":82},{"type":24,"tag":66,"props":2213,"children":2214},{"class":68,"line":85},[2215,2219],{"type":24,"tag":66,"props":2216,"children":2217},{"style":73},[2218],{"type":38,"value":810},{"type":24,"tag":66,"props":2220,"children":2221},{"style":79},[2222],{"type":38,"value":82},{"type":24,"tag":66,"props":2224,"children":2225},{"class":68,"line":98},[2226],{"type":24,"tag":66,"props":2227,"children":2228},{"emptyLinePlaceholder":820},[2229],{"type":38,"value":823},{"type":24,"tag":66,"props":2231,"children":2232},{"class":68,"line":118},[2233,2237],{"type":24,"tag":66,"props":2234,"children":2235},{"style":73},[2236],{"type":38,"value":76},{"type":24,"tag":66,"props":2238,"children":2239},{"style":79},[2240],{"type":38,"value":82},{"type":24,"tag":66,"props":2242,"children":2243},{"class":68,"line":136},[2244,2248],{"type":24,"tag":66,"props":2245,"children":2246},{"style":73},[2247],{"type":38,"value":842},{"type":24,"tag":66,"props":2249,"children":2250},{"style":79},[2251],{"type":38,"value":82},{"type":24,"tag":66,"props":2253,"children":2254},{"class":68,"line":154},[2255,2259,2263],{"type":24,"tag":66,"props":2256,"children":2257},{"style":73},[2258],{"type":38,"value":104},{"type":24,"tag":66,"props":2260,"children":2261},{"style":79},[2262],{"type":38,"value":109},{"type":24,"tag":66,"props":2264,"children":2265},{"style":112},[2266],{"type":38,"value":862},{"type":24,"tag":66,"props":2268,"children":2269},{"class":68,"line":172},[2270,2274,2278],{"type":24,"tag":66,"props":2271,"children":2272},{"style":73},[2273],{"type":38,"value":124},{"type":24,"tag":66,"props":2275,"children":2276},{"style":79},[2277],{"type":38,"value":109},{"type":24,"tag":66,"props":2279,"children":2280},{"style":112},[2281],{"type":38,"value":878},{"type":24,"tag":66,"props":2283,"children":2284},{"class":68,"line":185},[2285,2289,2293],{"type":24,"tag":66,"props":2286,"children":2287},{"style":73},[2288],{"type":38,"value":142},{"type":24,"tag":66,"props":2290,"children":2291},{"style":79},[2292],{"type":38,"value":109},{"type":24,"tag":66,"props":2294,"children":2295},{"style":112},[2296],{"type":38,"value":151},{"type":24,"tag":66,"props":2298,"children":2299},{"class":68,"line":204},[2300,2304,2308],{"type":24,"tag":66,"props":2301,"children":2302},{"style":73},[2303],{"type":38,"value":901},{"type":24,"tag":66,"props":2305,"children":2306},{"style":79},[2307],{"type":38,"value":109},{"type":24,"tag":66,"props":2309,"children":2310},{"style":112},[2311],{"type":38,"value":910},{"type":24,"tag":66,"props":2313,"children":2314},{"class":68,"line":213},[2315,2319],{"type":24,"tag":66,"props":2316,"children":2317},{"style":73},[2318],{"type":38,"value":281},{"type":24,"tag":66,"props":2320,"children":2321},{"style":79},[2322],{"type":38,"value":82},{"type":24,"tag":66,"props":2324,"children":2325},{"class":68,"line":222},[2326,2330],{"type":24,"tag":66,"props":2327,"children":2328},{"style":79},[2329],{"type":38,"value":241},{"type":24,"tag":66,"props":2331,"children":2332},{"style":112},[2333],{"type":38,"value":933},{"type":24,"tag":66,"props":2335,"children":2336},{"class":68,"line":235},[2337,2341],{"type":24,"tag":66,"props":2338,"children":2339},{"style":79},[2340],{"type":38,"value":241},{"type":24,"tag":66,"props":2342,"children":2343},{"style":112},[2344],{"type":38,"value":945},{"type":24,"tag":66,"props":2346,"children":2347},{"class":68,"line":249},[2348,2352],{"type":24,"tag":66,"props":2349,"children":2350},{"style":73},[2351],{"type":38,"value":953},{"type":24,"tag":66,"props":2353,"children":2354},{"style":79},[2355],{"type":38,"value":82},{"type":24,"tag":66,"props":2357,"children":2358},{"class":68,"line":262},[2359,2363],{"type":24,"tag":66,"props":2360,"children":2361},{"style":79},[2362],{"type":38,"value":241},{"type":24,"tag":66,"props":2364,"children":2365},{"style":112},[2366],{"type":38,"value":969},{"type":24,"tag":66,"props":2368,"children":2369},{"class":68,"line":275},[2370],{"type":24,"tag":66,"props":2371,"children":2372},{"emptyLinePlaceholder":820},[2373],{"type":38,"value":823},{"type":24,"tag":66,"props":2375,"children":2376},{"class":68,"line":288},[2377,2381],{"type":24,"tag":66,"props":2378,"children":2379},{"style":79},[2380],{"type":38,"value":241},{"type":24,"tag":66,"props":2382,"children":2383},{"style":112},[2384],{"type":38,"value":988},{"type":24,"tag":66,"props":2386,"children":2387},{"class":68,"line":301},[2388,2392],{"type":24,"tag":66,"props":2389,"children":2390},{"style":79},[2391],{"type":38,"value":241},{"type":24,"tag":66,"props":2393,"children":2394},{"style":112},[2395],{"type":38,"value":1000},{"type":24,"tag":66,"props":2397,"children":2398},{"class":68,"line":314},[2399,2403],{"type":24,"tag":66,"props":2400,"children":2401},{"style":79},[2402],{"type":38,"value":241},{"type":24,"tag":66,"props":2404,"children":2405},{"style":112},[2406],{"type":38,"value":1012},{"type":24,"tag":66,"props":2408,"children":2409},{"class":68,"line":327},[2410],{"type":24,"tag":66,"props":2411,"children":2412},{"emptyLinePlaceholder":820},[2413],{"type":38,"value":823},{"type":24,"tag":66,"props":2415,"children":2416},{"class":68,"line":1022},[2417,2421],{"type":24,"tag":66,"props":2418,"children":2419},{"style":79},[2420],{"type":38,"value":241},{"type":24,"tag":66,"props":2422,"children":2423},{"style":112},[2424],{"type":38,"value":1032},{"type":24,"tag":66,"props":2426,"children":2427},{"class":68,"line":1035},[2428,2432],{"type":24,"tag":66,"props":2429,"children":2430},{"style":79},[2431],{"type":38,"value":241},{"type":24,"tag":66,"props":2433,"children":2434},{"style":112},[2435],{"type":38,"value":1045},{"type":24,"tag":66,"props":2437,"children":2438},{"class":68,"line":1048},[2439],{"type":24,"tag":66,"props":2440,"children":2441},{"style":79},[2442],{"type":38,"value":1458},{"type":24,"tag":66,"props":2444,"children":2446},{"class":2445,"line":1056},[68,632],[2447,2451],{"type":24,"tag":66,"props":2448,"children":2449},{"style":79},[2450],{"type":38,"value":241},{"type":24,"tag":66,"props":2452,"children":2453},{"style":112},[2454],{"type":38,"value":2455},"--entrypoints.container-registry.address=:5050\n",{"type":24,"tag":66,"props":2457,"children":2459},{"class":2458,"line":1069},[68,632],[2460,2464],{"type":24,"tag":66,"props":2461,"children":2462},{"style":79},[2463],{"type":38,"value":241},{"type":24,"tag":66,"props":2465,"children":2466},{"style":112},[2467],{"type":38,"value":2468},"--entrypoints.container-registry.http.tls.certresolver=letsencrypt\n",{"type":24,"tag":66,"props":2470,"children":2471},{"class":68,"line":1082},[2472],{"type":24,"tag":66,"props":2473,"children":2474},{"emptyLinePlaceholder":820},[2475],{"type":38,"value":823},{"type":24,"tag":66,"props":2477,"children":2478},{"class":68,"line":1090},[2479,2483],{"type":24,"tag":66,"props":2480,"children":2481},{"style":79},[2482],{"type":38,"value":241},{"type":24,"tag":66,"props":2484,"children":2485},{"style":112},[2486],{"type":38,"value":1066},{"type":24,"tag":66,"props":2488,"children":2489},{"class":68,"line":1103},[2490,2494],{"type":24,"tag":66,"props":2491,"children":2492},{"style":79},[2493],{"type":38,"value":241},{"type":24,"tag":66,"props":2495,"children":2496},{"style":112},[2497],{"type":38,"value":1079},{"type":24,"tag":66,"props":2499,"children":2500},{"class":68,"line":1116},[2501],{"type":24,"tag":66,"props":2502,"children":2503},{"emptyLinePlaceholder":820},[2504],{"type":38,"value":823},{"type":24,"tag":66,"props":2506,"children":2507},{"class":68,"line":1129},[2508,2512],{"type":24,"tag":66,"props":2509,"children":2510},{"style":79},[2511],{"type":38,"value":241},{"type":24,"tag":66,"props":2513,"children":2514},{"style":112},[2515],{"type":38,"value":1100},{"type":24,"tag":66,"props":2517,"children":2518},{"class":68,"line":1582},[2519,2523],{"type":24,"tag":66,"props":2520,"children":2521},{"style":79},[2522],{"type":38,"value":241},{"type":24,"tag":66,"props":2524,"children":2525},{"style":112},[2526],{"type":38,"value":1113},{"type":24,"tag":66,"props":2528,"children":2529},{"class":68,"line":1594},[2530,2534],{"type":24,"tag":66,"props":2531,"children":2532},{"style":79},[2533],{"type":38,"value":241},{"type":24,"tag":66,"props":2535,"children":2536},{"style":112},[2537],{"type":38,"value":1126},{"type":24,"tag":66,"props":2539,"children":2540},{"class":68,"line":1606},[2541,2545],{"type":24,"tag":66,"props":2542,"children":2543},{"style":79},[2544],{"type":38,"value":241},{"type":24,"tag":66,"props":2546,"children":2547},{"style":112},[2548],{"type":38,"value":1139},{"type":24,"tag":41,"props":2550,"children":2551},{},[2552],{"type":38,"value":1144},{"type":24,"tag":740,"props":2554,"children":2555},{},[2556,2561],{"type":24,"tag":744,"props":2557,"children":2558},{},[2559],{"type":38,"value":2560},"add a new entry point for the container registry",{"type":24,"tag":744,"props":2562,"children":2563},{},[2564],{"type":38,"value":2565},"apply the TLS configuration to all routes in this entrypoint",{"type":24,"tag":1673,"props":2567,"children":2568},{},[],{"type":24,"tag":1737,"props":2570,"children":2572},{"id":2571},"update-the-gitlab-config-1",[2573],{"type":38,"value":1742},{"type":24,"tag":54,"props":2575,"children":2578},{"className":56,"code":2576,"filename":58,"highlights":2577,"language":59,"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",[185,222,235,249,262,1618],[2579],{"type":24,"tag":62,"props":2580,"children":2581},{"__ignoreMap":7},[2582,2593,2604,2619,2634,2645,2656,2667,2680,2691,2702,2715,2728,2741,2753,2768,2783,2794,2809,2816,2823,2830,2837,2844,2851,2858,2865,2872,2879,2886,2893,2900,2907,2916,2923,2934,2945,2956,2967,2979,2991],{"type":24,"tag":66,"props":2583,"children":2584},{"class":68,"line":69},[2585,2589],{"type":24,"tag":66,"props":2586,"children":2587},{"style":73},[2588],{"type":38,"value":76},{"type":24,"tag":66,"props":2590,"children":2591},{"style":79},[2592],{"type":38,"value":82},{"type":24,"tag":66,"props":2594,"children":2595},{"class":68,"line":85},[2596,2600],{"type":24,"tag":66,"props":2597,"children":2598},{"style":73},[2599],{"type":38,"value":91},{"type":24,"tag":66,"props":2601,"children":2602},{"style":79},[2603],{"type":38,"value":82},{"type":24,"tag":66,"props":2605,"children":2606},{"class":68,"line":98},[2607,2611,2615],{"type":24,"tag":66,"props":2608,"children":2609},{"style":73},[2610],{"type":38,"value":104},{"type":24,"tag":66,"props":2612,"children":2613},{"style":79},[2614],{"type":38,"value":109},{"type":24,"tag":66,"props":2616,"children":2617},{"style":112},[2618],{"type":38,"value":1298},{"type":24,"tag":66,"props":2620,"children":2621},{"class":68,"line":118},[2622,2626,2630],{"type":24,"tag":66,"props":2623,"children":2624},{"style":73},[2625],{"type":38,"value":124},{"type":24,"tag":66,"props":2627,"children":2628},{"style":79},[2629],{"type":38,"value":109},{"type":24,"tag":66,"props":2631,"children":2632},{"style":112},[2633],{"type":38,"value":133},{"type":24,"tag":66,"props":2635,"children":2636},{"class":68,"line":136},[2637,2641],{"type":24,"tag":66,"props":2638,"children":2639},{"style":73},[2640],{"type":38,"value":1322},{"type":24,"tag":66,"props":2642,"children":2643},{"style":79},[2644],{"type":38,"value":82},{"type":24,"tag":66,"props":2646,"children":2647},{"class":68,"line":154},[2648,2652],{"type":24,"tag":66,"props":2649,"children":2650},{"style":79},[2651],{"type":38,"value":241},{"type":24,"tag":66,"props":2653,"children":2654},{"style":112},[2655],{"type":38,"value":1339},{"type":24,"tag":66,"props":2657,"children":2658},{"class":68,"line":172},[2659,2663],{"type":24,"tag":66,"props":2660,"children":2661},{"style":79},[2662],{"type":38,"value":241},{"type":24,"tag":66,"props":2664,"children":2665},{"style":112},[2666],{"type":38,"value":1352},{"type":24,"tag":66,"props":2668,"children":2670},{"class":2669,"line":185},[68,632],[2671,2675],{"type":24,"tag":66,"props":2672,"children":2673},{"style":79},[2674],{"type":38,"value":241},{"type":24,"tag":66,"props":2676,"children":2677},{"style":112},[2678],{"type":38,"value":2679},"\"traefik.http.routers.gitlab.entrypoints=web,websecure\"\n",{"type":24,"tag":66,"props":2681,"children":2682},{"class":68,"line":204},[2683,2687],{"type":24,"tag":66,"props":2684,"children":2685},{"style":79},[2686],{"type":38,"value":241},{"type":24,"tag":66,"props":2688,"children":2689},{"style":112},[2690],{"type":38,"value":1365},{"type":24,"tag":66,"props":2692,"children":2693},{"class":68,"line":213},[2694,2698],{"type":24,"tag":66,"props":2695,"children":2696},{"style":79},[2697],{"type":38,"value":241},{"type":24,"tag":66,"props":2699,"children":2700},{"style":112},[2701],{"type":38,"value":1378},{"type":24,"tag":66,"props":2703,"children":2705},{"class":2704,"line":222},[68,632],[2706,2710],{"type":24,"tag":66,"props":2707,"children":2708},{"style":79},[2709],{"type":38,"value":241},{"type":24,"tag":66,"props":2711,"children":2712},{"style":112},[2713],{"type":38,"value":2714},"\"traefik.http.routers.container-registry.rule=Host(`gitlab.example.com`)\"\n",{"type":24,"tag":66,"props":2716,"children":2718},{"class":2717,"line":235},[68,632],[2719,2723],{"type":24,"tag":66,"props":2720,"children":2721},{"style":79},[2722],{"type":38,"value":241},{"type":24,"tag":66,"props":2724,"children":2725},{"style":112},[2726],{"type":38,"value":2727},"\"traefik.http.routers.container-registry.entrypoints=container-registry\"\n",{"type":24,"tag":66,"props":2729,"children":2731},{"class":2730,"line":249},[68,632],[2732,2736],{"type":24,"tag":66,"props":2733,"children":2734},{"style":79},[2735],{"type":38,"value":241},{"type":24,"tag":66,"props":2737,"children":2738},{"style":112},[2739],{"type":38,"value":2740},"\"traefik.http.routers.container-registry.service=container-registry\"\n",{"type":24,"tag":66,"props":2742,"children":2744},{"class":2743,"line":262},[68,632],[2745,2749],{"type":24,"tag":66,"props":2746,"children":2747},{"style":79},[2748],{"type":38,"value":241},{"type":24,"tag":66,"props":2750,"children":2751},{"style":112},[2752],{"type":38,"value":1883},{"type":24,"tag":66,"props":2754,"children":2755},{"class":68,"line":275},[2756,2760,2764],{"type":24,"tag":66,"props":2757,"children":2758},{"style":73},[2759],{"type":38,"value":142},{"type":24,"tag":66,"props":2761,"children":2762},{"style":79},[2763],{"type":38,"value":109},{"type":24,"tag":66,"props":2765,"children":2766},{"style":112},[2767],{"type":38,"value":151},{"type":24,"tag":66,"props":2769,"children":2770},{"class":68,"line":288},[2771,2775,2779],{"type":24,"tag":66,"props":2772,"children":2773},{"style":73},[2774],{"type":38,"value":160},{"type":24,"tag":66,"props":2776,"children":2777},{"style":79},[2778],{"type":38,"value":109},{"type":24,"tag":66,"props":2780,"children":2781},{"style":112},[2782],{"type":38,"value":1409},{"type":24,"tag":66,"props":2784,"children":2785},{"class":68,"line":301},[2786,2790],{"type":24,"tag":66,"props":2787,"children":2788},{"style":73},[2789],{"type":38,"value":178},{"type":24,"tag":66,"props":2791,"children":2792},{"style":79},[2793],{"type":38,"value":82},{"type":24,"tag":66,"props":2795,"children":2796},{"class":68,"line":314},[2797,2801,2805],{"type":24,"tag":66,"props":2798,"children":2799},{"style":73},[2800],{"type":38,"value":191},{"type":24,"tag":66,"props":2802,"children":2803},{"style":79},[2804],{"type":38,"value":109},{"type":24,"tag":66,"props":2806,"children":2807},{"style":198},[2808],{"type":38,"value":201},{"type":24,"tag":66,"props":2810,"children":2811},{"class":68,"line":327},[2812],{"type":24,"tag":66,"props":2813,"children":2814},{"style":112},[2815],{"type":38,"value":210},{"type":24,"tag":66,"props":2817,"children":2818},{"class":68,"line":1022},[2819],{"type":24,"tag":66,"props":2820,"children":2821},{"style":112},[2822],{"type":38,"value":1450},{"type":24,"tag":66,"props":2824,"children":2825},{"class":68,"line":1035},[2826],{"type":24,"tag":66,"props":2827,"children":2828},{"emptyLinePlaceholder":820},[2829],{"type":38,"value":823},{"type":24,"tag":66,"props":2831,"children":2832},{"class":68,"line":1048},[2833],{"type":24,"tag":66,"props":2834,"children":2835},{"style":112},[2836],{"type":38,"value":1467},{"type":24,"tag":66,"props":2838,"children":2839},{"class":68,"line":1056},[2840],{"type":24,"tag":66,"props":2841,"children":2842},{"emptyLinePlaceholder":820},[2843],{"type":38,"value":823},{"type":24,"tag":66,"props":2845,"children":2846},{"class":68,"line":1069},[2847],{"type":24,"tag":66,"props":2848,"children":2849},{"style":112},[2850],{"type":38,"value":1483},{"type":24,"tag":66,"props":2852,"children":2853},{"class":68,"line":1082},[2854],{"type":24,"tag":66,"props":2855,"children":2856},{"style":112},[2857],{"type":38,"value":1492},{"type":24,"tag":66,"props":2859,"children":2860},{"class":68,"line":1090},[2861],{"type":24,"tag":66,"props":2862,"children":2863},{"style":112},[2864],{"type":38,"value":1501},{"type":24,"tag":66,"props":2866,"children":2867},{"class":68,"line":1103},[2868],{"type":24,"tag":66,"props":2869,"children":2870},{"style":112},[2871],{"type":38,"value":1510},{"type":24,"tag":66,"props":2873,"children":2874},{"class":68,"line":1116},[2875],{"type":24,"tag":66,"props":2876,"children":2877},{"style":112},[2878],{"type":38,"value":1519},{"type":24,"tag":66,"props":2880,"children":2881},{"class":68,"line":1129},[2882],{"type":24,"tag":66,"props":2883,"children":2884},{"style":112},[2885],{"type":38,"value":1528},{"type":24,"tag":66,"props":2887,"children":2888},{"class":68,"line":1582},[2889],{"type":24,"tag":66,"props":2890,"children":2891},{"emptyLinePlaceholder":820},[2892],{"type":38,"value":823},{"type":24,"tag":66,"props":2894,"children":2895},{"class":68,"line":1594},[2896],{"type":24,"tag":66,"props":2897,"children":2898},{"style":112},[2899],{"type":38,"value":1544},{"type":24,"tag":66,"props":2901,"children":2902},{"class":68,"line":1606},[2903],{"type":24,"tag":66,"props":2904,"children":2905},{"emptyLinePlaceholder":820},[2906],{"type":38,"value":823},{"type":24,"tag":66,"props":2908,"children":2910},{"class":2909,"line":1618},[68,632],[2911],{"type":24,"tag":66,"props":2912,"children":2913},{"style":112},[2914],{"type":38,"value":2915},"        registry_external_url '\u003Chttps://gitlab.example.com:5050>'\n",{"type":24,"tag":66,"props":2917,"children":2918},{"class":68,"line":2080},[2919],{"type":24,"tag":66,"props":2920,"children":2921},{"style":112},[2922],{"type":38,"value":2055},{"type":24,"tag":66,"props":2924,"children":2925},{"class":68,"line":2092},[2926,2930],{"type":24,"tag":66,"props":2927,"children":2928},{"style":73},[2929],{"type":38,"value":228},{"type":24,"tag":66,"props":2931,"children":2932},{"style":79},[2933],{"type":38,"value":82},{"type":24,"tag":66,"props":2935,"children":2936},{"class":68,"line":2104},[2937,2941],{"type":24,"tag":66,"props":2938,"children":2939},{"style":79},[2940],{"type":38,"value":241},{"type":24,"tag":66,"props":2942,"children":2943},{"style":112},[2944],{"type":38,"value":1568},{"type":24,"tag":66,"props":2946,"children":2947},{"class":68,"line":2116},[2948,2952],{"type":24,"tag":66,"props":2949,"children":2950},{"style":73},[2951],{"type":38,"value":281},{"type":24,"tag":66,"props":2953,"children":2954},{"style":79},[2955],{"type":38,"value":82},{"type":24,"tag":66,"props":2957,"children":2958},{"class":68,"line":2128},[2959,2963],{"type":24,"tag":66,"props":2960,"children":2961},{"style":79},[2962],{"type":38,"value":241},{"type":24,"tag":66,"props":2964,"children":2965},{"style":112},[2966],{"type":38,"value":298},{"type":24,"tag":66,"props":2968,"children":2970},{"class":68,"line":2969},39,[2971,2975],{"type":24,"tag":66,"props":2972,"children":2973},{"style":79},[2974],{"type":38,"value":241},{"type":24,"tag":66,"props":2976,"children":2977},{"style":112},[2978],{"type":38,"value":311},{"type":24,"tag":66,"props":2980,"children":2982},{"class":68,"line":2981},40,[2983,2987],{"type":24,"tag":66,"props":2984,"children":2985},{"style":79},[2986],{"type":38,"value":241},{"type":24,"tag":66,"props":2988,"children":2989},{"style":112},[2990],{"type":38,"value":324},{"type":24,"tag":66,"props":2992,"children":2994},{"class":68,"line":2993},41,[2995,2999,3003],{"type":24,"tag":66,"props":2996,"children":2997},{"style":73},[2998],{"type":38,"value":333},{"type":24,"tag":66,"props":3000,"children":3001},{"style":79},[3002],{"type":38,"value":109},{"type":24,"tag":66,"props":3004,"children":3005},{"style":112},[3006],{"type":38,"value":342},{"type":24,"tag":41,"props":3008,"children":3009},{},[3010],{"type":38,"value":1144},{"type":24,"tag":740,"props":3012,"children":3013},{},[3014,3018,3022],{"type":24,"tag":744,"props":3015,"children":3016},{},[3017],{"type":38,"value":2153},{"type":24,"tag":744,"props":3019,"children":3020},{},[3021],{"type":38,"value":2158},{"type":24,"tag":744,"props":3023,"children":3024},{},[3025],{"type":38,"value":3026},"instruct Traefik to route all traffic from port 5050 to port 5000 of the container",{"type":24,"tag":3028,"props":3029,"children":3030},"style",{},[3031],{"type":38,"value":3032},"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":85,"depth":85,"links":3034},[3035,3036],{"id":35,"depth":85,"text":39},{"id":350,"depth":85,"text":353,"children":3037},[3038,3039,3040],{"id":479,"depth":98,"text":482},{"id":730,"depth":98,"text":733},{"id":1695,"depth":98,"text":1698},"markdown","common:en:blog:14.gitlab-behind-traefik.md","common","en/blog/14.gitlab-behind-traefik.md","en/blog/14.gitlab-behind-traefik","md",{"_path":3048,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":3049,"description":3050,"author":3051,"image":3052,"releaseDate":3053,"blogCategories":3054,"articleTags":3055,"tags":3057,"_type":3041,"_id":3059,"_source":3043,"_file":3060,"_stem":3061,"_extension":3046},"/en/blog/accessibility-will-be-recommended","Accessibility Empowerment Act - Barrier-free Web Services Required for Almost Everyone from July 2025!","From 28th June 2025, Germany's Accessibility Empowerment Act (BFSG) comes into effect. For the first time, this law obliges private companies to offer specific digital products and services in an accessible format. For many operators of websites, online shops and apps, this means that they must optimize their digital offers for accessibility by the deadline.","jens-bornschein","/images/Accessibility.png","2025-04-13",[14],[3056],"Accessibility",[3058],"frontend","common:en:blog:13.accessibility-will-be-recommended.md","en/blog/13.accessibility-will-be-recommended.md","en/blog/13.accessibility-will-be-recommended",{"_path":3063,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":3064,"description":3065,"author":3051,"image":3052,"releaseDate":3066,"blogCategories":3067,"articleTags":3069,"tags":3070,"_type":3041,"_id":3071,"_source":3043,"_file":3072,"_stem":3073,"_extension":3046},"/en/blog/accessibility-legal-statement-template","Accessibility Statement (AS) – How to Implement the German Accessibility Strengthening Act and Avoid Potential Warnings","Accessibility Statement according to German BFSG: Template and guide for accessibility declarations. Protect yourself from warnings with our template for an individual Accessibility Strengthening Act. The provisions of the German Accessibility Strengthening Act must be implemented to avoid penalties. You can protect yourself from regulatory enforcement procedures by providing a detailed accessibility statement. You can find a commented template for this in this blog post.","2025-09-05",[3068],"What Moves Us",[3056],[3058],"common:en:blog:15.accessibility-legal-statement-template.md","en/blog/15.accessibility-legal-statement-template.md","en/blog/15.accessibility-legal-statement-template",{"_path":3075},"/blog/gitlab-behind-traefik",{"_path":4},{"_path":3078,"_dir":3079,"_draft":6,"_partial":6,"_locale":7,"slug":10,"teams":3080,"primaryTeam":3082,"firstName":3083,"lastName":3084,"prefixTitle":7,"suffixTitle":3085,"education":3086,"role":3091,"workingSince":3096,"inTheCompanySince":3097,"techSkills":3098,"skills":3137,"projects":3155,"contactDetails":3165,"_image":3169,"image":3170,"_id":3171,"_type":3172,"title":3173,"_source":3079,"_file":3174,"_stem":3175,"_extension":3172},"/employees/robert-juzak","employees",[3081,3082],"appDev","devOps","Robert","Juzak","B.Sc.",[3087],[3088,3089,3090],"Bachelor of Computer Science","Technische Universität Breslau","2016",[3092,3093,3094,3095],"softwareDeveloper","fullstackDeveloper","admin","consultant","2015","2018",[3099,3103,3105,3108,3111,3114,3116,3119,3122,3126,3129,3131,3134],{"name":3100,"level":3101,"icon":3102},"Docker","expert","/images/Docker.svg",{"name":3104,"level":3101},"GitLab",{"name":3106,"level":3101,"icon":3107},"Kubernetes","/images/Kubernetes.svg",{"name":3109,"level":3101,"icon":3110},"PHPUnit","/images/PHP-Unit.svg",{"name":3112,"level":3101,"icon":3113},"Portainer","/images/Portainer.svg",{"name":3115,"level":3101},"Sentry",{"name":3117,"level":3101,"icon":3118},"Sonarqube","/images/Sonarqube.svg",{"name":3120,"level":3101,"icon":3121},"Linux","/images/linux_os-mono.svg",{"name":3123,"level":3124,"icon":3125},"CSS","advanced","/images/css.svg",{"name":3127,"level":3124,"icon":3128},"HTML","/images/html.svg",{"name":3130,"level":3124},"PHP",{"name":3132,"level":3124,"icon":3133},"SQL","/images/SQL.svg",{"name":3135,"level":3124,"icon":3136},"VueJS","/images/vuejs.svg",[3138,3140,3142,3143,3145,3147,3149,3151,3153],{"name":3139,"level":3101},"CI/CD",{"name":3141,"level":3101},"qualityAssurance",{"name":3082,"level":3101},{"name":3144,"level":3101},"testDrivenBugfix",{"name":3146,"level":3101},"testDrivenDevelopment",{"name":3148,"level":3124},"accessibility",{"name":3150,"level":3124},"databases",{"name":3152,"level":3124},"linuxServerAdministration",{"name":3154,"level":3124},"softwareArchitect",[3156,3161,3163],{"project":3157,"position":3158},"Herole",[3159,3160],"Dev-Ops","Frontend Developer",{"project":3162,"position":3160},"Huawei-Calibration-aaS",{"project":3164,"position":3160},"Huawei-Inspect-3D",{"eMail":3166,"phone":3167,"visibility":3168},"robert.juzak@helmundwalter.de","+49 351 799 035 26","1","images/employees/Portraits/robert_juzak.webp","images/employees/Portraits/RobertJuzak_MS.webp","employees:employees:6.robert-juzak.json","json","Robert Juzak","employees/6.robert-juzak.json","employees/6.robert-juzak",[3177,3190],{"_path":3178,"_dir":3179,"_draft":6,"_partial":820,"_locale":7,"name":3180,"slug":3179,"text":3181,"hoverText":3182,"image":3183,"customer":3180,"tags":3184,"_id":3186,"_type":59,"title":3187,"_source":3043,"_file":3188,"_stem":3189,"_extension":59},"/en/portfolio/pixelx/_teaser","pixelx","PixelX","IT Security with Precision and Expertise","For PixelX, we conducted a targeted security analysis where, thanks to our deep technical understanding, we were able to identify a critical SQL injection vulnerability. With minimal time investment, we achieved maximum security gain.","/images/portfolio/pixelx/pixelx_secured.png",[3185,19],"security","common:en:portfolio:9010.pixelx:_teaser.yaml","Teaser","en/portfolio/9010.pixelx/_teaser.yaml","en/portfolio/9010.pixelx/_teaser",{"_path":3191,"_dir":3192,"_draft":6,"_partial":820,"_locale":7,"name":3193,"slug":3192,"text":3194,"hoverText":3195,"image":3196,"customer":3193,"tags":3197,"_id":3198,"_type":59,"title":3187,"_source":3043,"_file":3199,"_stem":3200,"_extension":59},"/en/portfolio/slimspots/_teaser","slimspots","SlimSpots","Processing large amounts of data in real-time","For SlimSpots, a global provider of ad marketing solutions, we developed a highly scalable infrastructure that enables the processing of trillions of data records in real-time.","/images/portfolio/slimspots/slim_spots_prtfolio.png",[3150,19],"common:en:portfolio:9020.slimspots:_teaser.yaml","en/portfolio/9020.slimspots/_teaser.yaml","en/portfolio/9020.slimspots/_teaser",{"_path":3048,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":3049,"description":3050,"author":3051,"image":3052,"releaseDate":3053,"blogCategories":3202,"articleTags":3203,"tags":3204,"body":3205,"_type":3041,"_id":3059,"_source":3043,"_file":3060,"_stem":3061,"_extension":3046},[14],[3056],[3058],{"type":21,"children":3206,"toc":4480},[3207,3213,3232,3238,3259,3271,3277,3302,3387,3390,3416,3496,3501,3507,3540,3564,3570,3592,3684,3687,3725,3731,3743,3768,3797,3803,3832,3843,3876,3882,3887,3898,3908,3918,3924,3950,4016,4077,4094,4118,4161,4167,4179,4403,4409,4441,4470],{"type":24,"tag":25,"props":3208,"children":3212},{"alt":3209,"aspect-ratio":3210,"height":28,"object-fit":29,"src":3211},"A woman with a prosthetic hand on her right arm is sitting at a laptop","1.7","/blog/digital-accessibility-with-prosthetic-hand.jpg",[],{"type":24,"tag":66,"props":3214,"children":3218},{"className":3215},[3216,3217],"text-right","text-caption",[3219],{"type":24,"tag":41,"props":3220,"children":3221},{},[3222],{"type":24,"tag":3223,"props":3224,"children":3225},"em",{},[3226],{"type":24,"tag":47,"props":3227,"children":3229},{"href":3228},"https://www.pexels.com/photo/a-woman-using-a-laptop-5614124/",[3230],{"type":38,"value":3231},"Photo by Anna Shvets",{"type":24,"tag":33,"props":3233,"children":3235},{"id":3234},"accessibility-will-become-mandatory-what-the-accessibility-empowerment-act-means-for-digital-services-from-2025",[3236],{"type":38,"value":3237},"Accessibility will become mandatory: What the Accessibility Empowerment Act means for digital services from 2025",{"type":24,"tag":41,"props":3239,"children":3240},{},[3241,3243,3249,3251,3257],{"type":38,"value":3242},"From 28 June 2025, the German Accessibility Empowerment Act (BFSG) will come into effect\n",{"type":24,"tag":47,"props":3244,"children":3246},{"href":3245},"https://www.bildungsserver.de/onlineressource.html?onlineressourcen_id=65777#:~:text=Am%2022,Bundesfachstelle%20Barrierefreiheit%20bietet%20auf%20dieser",[3247],{"type":38,"value":3248},"bildungsserver.de",{"type":38,"value":3250},"\n. This law obliges private companies for the first time to offer certain digital products and services in an accessible format\n",{"type":24,"tag":47,"props":3252,"children":3254},{"href":3253},"https://www.visionbites.de/blog/barrierefreie-websites-bfsg-bitv-20-oder-wcag#:~:text=Ab%20dem%2028,W3C%C2%A0in%20den%C2%A0Konformit%C3%A4tsstufen%20A%20und%20AA",[3255],{"type":38,"value":3256},"visionbites.de",{"type":38,"value":3258},".\nBut who does this affect specifically, what does \"accessible\" mean in this context – and how can you implement this without the costs skyrocketing? In this blog article, we would like to shed some light on the new requirements.",{"type":24,"tag":66,"props":3260,"children":3262},{"className":3261},[3216],[3263],{"type":24,"tag":41,"props":3264,"children":3265},{},[3266],{"type":24,"tag":3223,"props":3267,"children":3268},{},[3269],{"type":38,"value":3270},"Reading duration: approx. 15 minutes",{"type":24,"tag":477,"props":3272,"children":3274},{"id":3273},"who-does-the-law-affect-scope-of-application-from-july-2025",[3275],{"type":38,"value":3276},"Who does the law affect? – Scope of application from July 2025",{"type":24,"tag":41,"props":3278,"children":3279},{},[3280,3282,3286,3288,3294,3296,3299],{"type":38,"value":3281},"The BFSG implements the EU directive on accessibility requirements (European Accessibility Act, EAA) into German law. It comes into force on 28 June 2025\n",{"type":24,"tag":47,"props":3283,"children":3284},{"href":3245},[3285],{"type":38,"value":3248},{"type":38,"value":3287},"\n. From then on, the products and services mentioned therein must be provided barrier-free for consumers. However, not every web presence is automatically included! The law conclusively specifies the affected areas (§1 para. 2 and 3 BFSG)",{"type":24,"tag":47,"props":3289,"children":3291},{"href":3290},"https://www.bundesfachstelle-barrierefreiheit.de/SharedDocs/Downloads/DE/Externe-Veroeffentlichungen/bmas-leitlinien-bfsg.pdf?__blob=publicationFile#:~:text=des%20BFSG%20erf%C3%BCllen%20muss%2C%20findet,seine%20Produkte%20und%20Dienstleistungen%20freiwillig",[3292],{"type":38,"value":3293},"bundesfachstelle-barrierefreiheit.de",{"type":38,"value":3295},". From now on, the following digital services are subject to mandatory accessibility:\n",{"type":24,"tag":1673,"props":3297,"children":3298},{},[],{"type":24,"tag":1673,"props":3300,"children":3301},{},[],{"type":24,"tag":740,"props":3303,"children":3304},{},[3305,3337,3347,3357,3367,3377],{"type":24,"tag":744,"props":3306,"children":3307},{},[3308,3313,3315,3321,3323,3328,3330,3335],{"type":24,"tag":772,"props":3309,"children":3310},{},[3311],{"type":38,"value":3312},"Electronic commerce",{"type":38,"value":3314}," – in other words, online services that facilitate the conclusion of consumer contracts, e.g., online shops ",{"type":24,"tag":47,"props":3316,"children":3318},{"href":3317},"https://www.hwk-dresden.de/recht/aktuelle-themen/detail/barrierefreiheitsstaerkungsgesetz-barrierefreiheit-von-online-shops.html#:~:text=Betreiber%20eines%20Online,Erschwernis%20die%20Onlineangebote%20nutzen%20k%C3%B6nnen",[3319],{"type":38,"value":3320},"hwk-dresden.de",{"type":38,"value":3322},". (",{"type":24,"tag":772,"props":3324,"children":3325},{},[3326],{"type":38,"value":3327},"B2B shops",{"type":38,"value":3329},", which serve only business customers, are not covered by the mandatory requirement ",{"type":24,"tag":47,"props":3331,"children":3333},{"href":3332},"https://www.hwk-dresden.de/recht/aktuelle-themen/detail/barrierefreiheitsstaerkungsgesetz-barrierefreiheit-von-online-shops.html#:~:text=Ausnahmen%3A",[3334],{"type":38,"value":3320},{"type":38,"value":3336},".)",{"type":24,"tag":744,"props":3338,"children":3339},{},[3340,3345],{"type":24,"tag":772,"props":3341,"children":3342},{},[3343],{"type":38,"value":3344},"Consumer banking services",{"type":38,"value":3346}," – in particular, online banking websites and banking apps.",{"type":24,"tag":744,"props":3348,"children":3349},{},[3350,3355],{"type":24,"tag":772,"props":3351,"children":3352},{},[3353],{"type":38,"value":3354},"Telecommunication services",{"type":38,"value":3356}," – for example, phone and messaging apps.",{"type":24,"tag":744,"props":3358,"children":3359},{},[3360,3365],{"type":24,"tag":772,"props":3361,"children":3362},{},[3363],{"type":38,"value":3364},"E-books and their respective distribution platforms",{"type":38,"value":3366},".",{"type":24,"tag":744,"props":3368,"children":3369},{},[3370,3375],{"type":24,"tag":772,"props":3371,"children":3372},{},[3373],{"type":38,"value":3374},"Passenger transport services",{"type":38,"value":3376}," – for instance, digital ticket machines in public transport.",{"type":24,"tag":744,"props":3378,"children":3379},{},[3380,3385],{"type":24,"tag":772,"props":3381,"children":3382},{},[3383],{"type":38,"value":3384},"Mobile apps in passenger transport",{"type":38,"value":3386}," – such as apps from railway or airline companies.",{"type":24,"tag":1673,"props":3388,"children":3389},{},[],{"type":24,"tag":41,"props":3391,"children":3392},{},[3393,3395,3400,3402,3407,3409,3414],{"type":38,"value":3394},"Also, various ",{"type":24,"tag":772,"props":3396,"children":3397},{},[3398],{"type":38,"value":3399},"products",{"type":38,"value":3401}," must be barrier-free from 2025, including computers, smartphones, ticket and cash machines, or smart TVs\n",{"type":24,"tag":47,"props":3403,"children":3405},{"href":3404},"https://www.bundesfachstelle-barrierefreiheit.de/DE/Fachwissen/Produkte-und-Dienstleistungen/Barrierefreiheitsstaerkungsgesetz/barrierefreiheitsstaerkungsgesetz_node.html",[3406],{"type":38,"value":3293},{"type":38,"value":3408},".\nFor most of our customers (SMEs with web applications), it is especially crucial to understand that ",{"type":24,"tag":772,"props":3410,"children":3411},{},[3412],{"type":38,"value":3413},"your consumer-facing online service must be barrier-free by July 2025",{"type":38,"value":3415},", provided it falls into one of the above categories.",{"type":24,"tag":41,"props":3417,"children":3418},{},[3419,3421,3426,3428,3433,3435,3440,3442,3447,3452,3454,3459,3460,3465,3467,3472,3474,3479,3481,3486,3490,3495],{"type":38,"value":3420},"However, there is an ",{"type":24,"tag":3223,"props":3422,"children":3423},{},[3424],{"type":38,"value":3425},"exception",{"type":38,"value":3427}," for ",{"type":24,"tag":772,"props":3429,"children":3430},{},[3431],{"type":38,"value":3432},"micro-enterprises",{"type":38,"value":3434},"! Companies with ",{"type":24,"tag":772,"props":3436,"children":3437},{},[3438],{"type":38,"value":3439},"fewer than 10 employees and a maximum €2 million annual turnover",{"type":38,"value":3441}," are ",{"type":24,"tag":772,"props":3443,"children":3444},{},[3445],{"type":38,"value":3446},"exempt from the BFSG requirements if they provide services",{"type":24,"tag":47,"props":3448,"children":3450},{"href":3449},"https://www.bundesfachstelle-barrierefreiheit.de/DE/Fachwissen/Produkte-und-Dienstleistungen/Barrierefreiheitsstaerkungsgesetz/barrierefreiheitsstaerkungsgesetz_node.html#:~:text=Unter%20das%20Barrierefreiheitsst%C3%A4rkungsgesetz%20fallen%20Hersteller%2C,fallen%20jedoch%20unter%20das%20BFSG",[3451],{"type":38,"value":3293},{"type":38,"value":3453},".\nA mini start-up that operates an online shop does not necessarily have to retrofit formally\n",{"type":24,"tag":47,"props":3455,"children":3457},{"href":3456},"https://www.hwk-dresden.de/recht/aktuelle-themen/detail/barrierefreiheitsstaerkungsgesetz-barrierefreiheit-von-online-shops.html#:~:text=Beim%20Angebot%20von%20Dienstleistungen%20im,h%C3%B6chstens%202%20Millionen%20Euro%20bel%C3%A4uft",[3458],{"type":38,"value":3320},{"type":38,"value":386},{"type":24,"tag":772,"props":3461,"children":3462},{},[3463],{"type":38,"value":3464},"Caution:",{"type":38,"value":3466}," This exception applies ",{"type":24,"tag":772,"props":3468,"children":3469},{},[3470],{"type":38,"value":3471},"only to services",{"type":38,"value":3473},"! Micro-enterprises that ",{"type":24,"tag":772,"props":3475,"children":3476},{},[3477],{"type":38,"value":3478},"introduce products",{"type":38,"value":3480}," (e.g., hardware such as special reading devices) onto the market, ",{"type":24,"tag":772,"props":3482,"children":3483},{},[3484],{"type":38,"value":3485},"still fall under the BFSG",{"type":24,"tag":47,"props":3487,"children":3488},{"href":3449},[3489],{"type":38,"value":3293},{"type":24,"tag":47,"props":3491,"children":3493},{"href":3492},"https://www.hwk-dresden.de/recht/aktuelle-themen/detail/barrierefreiheitsstaerkungsgesetz-barrierefreiheit-von-online-shops.html#:~:text=bel%C3%A4uft",[3494],{"type":38,"value":3320},{"type":38,"value":3366},{"type":24,"tag":41,"props":3497,"children":3498},{},[3499],{"type":38,"value":3500},"And let's be honest – even if you are narrowly exempt from the requirement, it still pays off to implement accessibility voluntarily to rule out excluding potential customers and to be prepared for future requirements.",{"type":24,"tag":760,"props":3502,"children":3504},{"id":3503},"what-exactly-does-barrier-free-mean",[3505],{"type":38,"value":3506},"What exactly does \"barrier-free\" mean?",{"type":24,"tag":41,"props":3508,"children":3509},{},[3510,3512,3517,3519,3524,3526,3531,3533,3538],{"type":38,"value":3511},"According to the common definition, offers are barrier-free if they are findable, accessible, and usable for people with disabilities in the usual way, without particular difficulty, and basically without the help of others\n",{"type":24,"tag":47,"props":3513,"children":3515},{"href":3514},"https://www.hwk-dresden.de/recht/aktuelle-themen/detail/barrierefreiheitsstaerkungsgesetz-barrierefreiheit-von-online-shops.html#:~:text=Barrierefreiheit%20wird%20gew%C3%A4hrleistet%2C%20wenn%20Produkte,auffindbar%2C%20zug%C3%A4nglich%20und%20nutzbar%20sind",[3516],{"type":38,"value":3320},{"type":38,"value":3518},".\nIn the web area, this specifically means: for example, a website must also be operable via a screen reader (reading software) or solely with the keyboard; there must be no hurdles for visually impaired, hearing-impaired, motor or cognitively challenged people. Technically, the requirements in the ",{"type":24,"tag":3223,"props":3520,"children":3521},{},[3522],{"type":38,"value":3523},"BFSG",{"type":38,"value":3525}," are based on the European ",{"type":24,"tag":3223,"props":3527,"children":3528},{},[3529],{"type":38,"value":3530},"Standard EN 301 549",{"type":38,"value":3532},", which in turn refers to the ",{"type":24,"tag":3223,"props":3534,"children":3535},{},[3536],{"type":38,"value":3537},"Web Content Accessibility Guidelines (WCAG) 2.1",{"type":38,"value":3539}," at level AA.",{"type":24,"tag":41,"props":3541,"children":3542},{},[3543,3545,3550,3552,3556,3558,3563],{"type":38,"value":3544},"This means, if you fulfill the success criteria of WCAG 2.1 AA, you are safe. Public bodies are already familiar with these standards from the ",{"type":24,"tag":3223,"props":3546,"children":3547},{},[3548],{"type":38,"value":3549},"BITV 2.0 (Barrierefreie-Informationstechnik-Verordnung)",{"type":38,"value":3551},", which has been applicable to public authority websites since 2018 – there, additional content in easy language and sign language is also required.\nFor private providers, the ",{"type":24,"tag":3223,"props":3553,"children":3554},{},[3555],{"type":38,"value":3523},{"type":38,"value":3557}," essentially calls for ",{"type":24,"tag":772,"props":3559,"children":3560},{},[3561],{"type":38,"value":3562},"WCAG 2.1 AA",{"type":38,"value":3366},{"type":24,"tag":33,"props":3565,"children":3567},{"id":3566},"what-deadlines-and-consequences-apply-transition-periods-and-penalties",[3568],{"type":38,"value":3569},"What deadlines and consequences apply? - Transition periods and penalties",{"type":24,"tag":41,"props":3571,"children":3572},{},[3573,3578,3580,3585,3586,3589],{"type":24,"tag":772,"props":3574,"children":3575},{},[3576],{"type":38,"value":3577},"Key date 28.06.2025:",{"type":38,"value":3579}," From this date, new products and services must be compliant. However, the law provides for a few transition periods. It is important to know that ",{"type":24,"tag":772,"props":3581,"children":3582},{},[3583],{"type":38,"value":3584},"existing contracts and systems are given partial extensions",{"type":38,"value":82},{"type":24,"tag":1673,"props":3587,"children":3588},{},[],{"type":24,"tag":1673,"props":3590,"children":3591},{},[],{"type":24,"tag":740,"props":3593,"children":3594},{},[3595,3644,3666],{"type":24,"tag":744,"props":3596,"children":3597},{},[3598,3603,3605,3610,3612,3617,3619,3622,3628,3631,3636,3638,3643],{"type":24,"tag":772,"props":3599,"children":3600},{},[3601],{"type":38,"value":3602},"Ongoing services:",{"type":38,"value":3604}," If a long-term contract was concluded ",{"type":24,"tag":772,"props":3606,"children":3607},{},[3608],{"type":38,"value":3609},"before 28.06.2025",{"type":38,"value":3611}," and it is continued without changes, the provider has until ",{"type":24,"tag":772,"props":3613,"children":3614},{},[3615],{"type":38,"value":3616},"27.06.2030",{"type":38,"value":3618}," to make the service accessible",{"type":24,"tag":1673,"props":3620,"children":3621},{},[],{"type":24,"tag":47,"props":3623,"children":3625},{"href":3624},"https://www.bfsg-barrierefreiheitsstaerkungsgesetz.de/#:~:text=Laut%20BMAS%20gilt%20die%20%C3%9Cbergangsfrist,und%20nur%20in%20zwei%20F%C3%A4llen",[3626],{"type":38,"value":3627},"bfsg-barrierefreiheitsstaerkungsgesetz.de",{"type":24,"tag":1673,"props":3629,"children":3630},{},[],{"type":24,"tag":3223,"props":3632,"children":3633},{},[3634],{"type":38,"value":3635},"Example:",{"type":38,"value":3637}," An online banking system that has been in operation for years and is used by existing customers should be converted by 2030 at the latest – ",{"type":24,"tag":772,"props":3639,"children":3640},{},[3641],{"type":38,"value":3642},"but new offers must be accessible immediately from 2025",{"type":38,"value":3366},{"type":24,"tag":744,"props":3645,"children":3646},{},[3647,3652,3654,3659,3661,3665],{"type":24,"tag":772,"props":3648,"children":3649},{},[3650],{"type":38,"value":3651},"Older technology in use:",{"type":38,"value":3653}," If a service uses a product that was already ",{"type":24,"tag":772,"props":3655,"children":3656},{},[3657],{"type":38,"value":3658},"in use before June 2025",{"type":38,"value":3660},"\n(e.g., an existing self-service terminal), the deadline until 2030 also applies\n",{"type":24,"tag":47,"props":3662,"children":3663},{"href":3624},[3664],{"type":38,"value":3627},{"type":38,"value":3366},{"type":24,"tag":744,"props":3667,"children":3668},{},[3669,3674,3676,3679],{"type":24,"tag":772,"props":3670,"children":3671},{},[3672],{"type":38,"value":3673},"Self-Service Terminals:",{"type":38,"value":3675}," The law allows 15\nyears transition time for ATMs, ticket machines & similar that already exist. These may continue to be used until 2040 before they must be replaced or retrofitted",{"type":24,"tag":1673,"props":3677,"children":3678},{},[],{"type":24,"tag":47,"props":3680,"children":3682},{"href":3681},"https://www.bundesfachstelle-barrierefreiheit.de/DE/Fachwissen/Produkte-und-Dienstleistungen/Barrierefreiheitsstaerkungsgesetz/barrierefreiheitsstaerkungsgesetz_node.html#:~:text=F%C3%BCr%20einige%20Produkte%20und%20Dienstleistungen,eine%20%C3%9Cbergangsfrist%20von%2015%20Jahren",[3683],{"type":38,"value":3293},{"type":24,"tag":1673,"props":3685,"children":3686},{},[],{"type":24,"tag":41,"props":3688,"children":3689},{},[3690,3695,3697,3702,3704,3709,3711,3716,3718,3723],{"type":24,"tag":772,"props":3691,"children":3692},{},[3693],{"type":38,"value":3694},"Important:",{"type":38,"value":3696}," However, as soon as a provider ",{"type":24,"tag":772,"props":3698,"children":3699},{},[3700],{"type":38,"value":3701},"significantly revises an existing service",{"type":38,"value":3703}," or closes a ",{"type":24,"tag":772,"props":3705,"children":3706},{},[3707],{"type":38,"value":3708},"new contract",{"type":38,"value":3710},"\nwith a consumer ",{"type":24,"tag":772,"props":3712,"children":3713},{},[3714],{"type":38,"value":3715},"after June 2025",{"type":38,"value":3717},", the current parts must be accessible – so you can't\ndemand another 5 years extension for updates\n",{"type":24,"tag":47,"props":3719,"children":3721},{"href":3720},"https://www.bfsg-barrierefreiheitsstaerkungsgesetz.de/#:~:text=match%20at%20L720%20gr%C3%B6%C3%9Feren%20Updates,sie%20m%C3%BCssen%20sofort%20barrierefrei%20sein",[3722],{"type":38,"value":3627},{"type":38,"value":3724},".\nThe transition periods are intended as a grace period for old stocks, not as a loophole for prolongation.",{"type":24,"tag":477,"props":3726,"children":3728},{"id":3727},"control-and-sanctions",[3729],{"type":38,"value":3730},"Control and Sanctions",{"type":24,"tag":41,"props":3732,"children":3733},{},[3734,3736,3741],{"type":38,"value":3735},"Compliance is checked by market supervision authorities. In the event of violations, there are first warnings to improve and finally severe measures. In extreme cases, the authority can order that a non-accessible online service is taken off the market or shut down\n",{"type":24,"tag":47,"props":3737,"children":3739},{"href":3738},"https://www.bundesfachstelle-barrierefreiheit.de/SharedDocs/Downloads/DE/Externe-Veroeffentlichungen/bmas-leitlinien-bfsg.pdf?__blob=publicationFile#:~:text=Kommt%20der%20Dienstleistungserbringer%20dieser%20Aufforderung,so%20ergreift%20die%20Markt%C3%BCberwachungsbeh%C3%B6rde%20die",[3740],{"type":38,"value":3293},{"type":38,"value":3742},"!",{"type":24,"tag":41,"props":3744,"children":3745},{},[3746,3748,3752,3754,3759,3761,3766],{"type":38,"value":3747},"Additionally, fines can be levied – the ",{"type":24,"tag":3223,"props":3749,"children":3750},{},[3751],{"type":38,"value":3523},{"type":38,"value":3753}," proposes amounts ",{"type":24,"tag":772,"props":3755,"children":3756},{},[3757],{"type":38,"value":3758},"up to 100,000 Euros",{"type":38,"value":3760}," depending on the violation\n",{"type":24,"tag":47,"props":3762,"children":3764},{"href":3763},"https://www.bundesfachstelle-barrierefreiheit.de/SharedDocs/Downloads/DE/Externe-Veroeffentlichungen/bmas-leitlinien-bfsg.pdf?__blob=publicationFile#:~:text=Bu%C3%9Fgeld%20von%20bis%20zu%20100,innen%20und%20Verb%C3%A4nde",[3765],{"type":38,"value":3293},{"type":38,"value":3767},".\nAlso, consumers and associations have rights - they can criticize deficiencies and (similar to AGG violations) exert legal pressure if necessary. Therefore, the issue should be taken seriously. Those who continue as before from 2025 risk damage to their image, complaints, and in the worst case loss of sales.",{"type":24,"tag":41,"props":3769,"children":3770},{},[3771,3773,3778,3780,3783,3788,3790,3795],{"type":38,"value":3772},"In addition to the duty of accessibility, the law also requires companies to produce bureaucratic proofs. For each product or service, a declaration of conformity or technical documentation must be created, describing how the requirements are met\n",{"type":24,"tag":47,"props":3774,"children":3776},{"href":3775},"https://www.bfsg-barrierefreiheitsstaerkungsgesetz.de/#:~:text=F%C3%BCr%20jedes%20Produkt%20und%20jede,wie%20die%20Barrierefreiheitsanforderungen%20erf%C3%BCllt%20werden",[3777],{"type":38,"value":3627},{"type":38,"value":3779},".\nService providers must also easily provide information (e.g. on the website or in terms and conditions) and indicate which market surveillance authority is responsible",{"type":24,"tag":1673,"props":3781,"children":3782},{},[],{"type":24,"tag":47,"props":3784,"children":3786},{"href":3785},"https://www.bfsg-barrierefreiheitsstaerkungsgesetz.de/#:~:text=Dienstleister%20m%C3%BCssen%20Informationen%20%C3%BCber%20ihre,werden%20und%20folgende%20Elemente%20enthalten",[3787],{"type":38,"value":3627},{"type":38,"value":3789},".\nIn practice, this should run analogously to the official accessibility statement which is already known from public websites – a section ",{"type":24,"tag":772,"props":3791,"children":3792},{},[3793],{"type":38,"value":3794},"\"Accessibility Statement\"",{"type":38,"value":3796}," with information about the implementation status, contact options for feedback and a reference to the enforcement office.",{"type":24,"tag":33,"props":3798,"children":3800},{"id":3799},"plan-for-accessibility-early-vs-implement-it-later-the-cost-comparison",[3801],{"type":38,"value":3802},"Plan for accessibility early vs. implement it later - the cost comparison",{"type":24,"tag":41,"props":3804,"children":3805},{},[3806,3808,3813,3815,3820,3822,3825,3831],{"type":38,"value":3807},"A frequently heard concern is: ",{"type":24,"tag":3223,"props":3809,"children":3810},{},[3811],{"type":38,"value":3812},"\"Will it not become incredibly expensive?\"",{"type":38,"value":3814},"\nThe good news is, if you consider accessibility from the start, the additional effort is significantly reduced.\nA study on Barrier-free Building found that a building planned to be barrier-free from the beginning only causes about 1% additional costs\n",{"type":24,"tag":47,"props":3816,"children":3818},{"href":3817},"https://www.bundesfachstelle-barrierefreiheit.de/SharedDocs/Kurzmeldungen/DE/barrierefreies-bauen-neubau-verursacht-kaum-mehrkosten.html#:~:text=Die%20Studie%20von%20Terrogon%20und,durch%20einen%20Umbau%20zu%20realisieren",[3819],{"type":38,"value":3293},{"type":38,"value":3821},"\n– and the same is true for software projects. Designing control functions to be barrier-free from the start is basically no more complex than developing them with barriers",{"type":24,"tag":1673,"props":3823,"children":3824},{},[],{"type":24,"tag":47,"props":3826,"children":3828},{"href":3827},"https://www.aktion-mensch.de/inklusion/barrierefreiheit/barrierefreie-website/kosten-barrierefreie-website#:~:text=Denken%20Sie%20Barrierefreiheit%20von%20Anfang,mit",[3829],{"type":38,"value":3830},"aktion-mensch.de",{"type":38,"value":3366},{"type":24,"tag":41,"props":3833,"children":3834},{},[3835],{"type":24,"tag":3223,"props":3836,"children":3837},{},[3838],{"type":24,"tag":772,"props":3839,"children":3840},{},[3841],{"type":38,"value":3842},"Whether a developer codes a contact form to be accessible or with unnecessary barriers hardly makes a difference, as long as the end goal is known!",{"type":24,"tag":41,"props":3844,"children":3845},{},[3846,3848,3853,3855,3860,3862,3867,3869,3874],{"type":38,"value":3847},"The right mindset in the team is key. If ",{"type":24,"tag":772,"props":3849,"children":3850},{},[3851],{"type":38,"value":3852},"UX designers",{"type":38,"value":3854},", ",{"type":24,"tag":772,"props":3856,"children":3857},{},[3858],{"type":38,"value":3859},"developers",{"type":38,"value":3861},", and ",{"type":24,"tag":772,"props":3863,"children":3864},{},[3865],{"type":38,"value":3866},"editors",{"type":38,"value":3868}," are trained and know from the start what matters, ",{"type":24,"tag":3223,"props":3870,"children":3871},{},[3872],{"type":38,"value":3873},"barrier-free websites",{"type":38,"value":3875}," will almost develop themselves. Many measures don't cost extra. For example, using well-planned heading structures and alternative texts from the start only requires a bit of attention but no additional budget!",{"type":24,"tag":477,"props":3877,"children":3879},{"id":3878},"accessibility-usually-becomes-expensive-when-it-has-to-be-added-afterwards",[3880],{"type":38,"value":3881},"Accessibility usually becomes expensive when it has to be added afterwards.",{"type":24,"tag":41,"props":3883,"children":3884},{},[3885],{"type":38,"value":3886},"Suddenly, you discover that adjustments are needed in multiple places: images without alt text, poor color combinations in the design, interactive components that only work with a mouse, videos without subtitles, PDF documents without tags, etc. Each of these barriers requires analysis, design changes, further development, and testing – in short: additional project iterations which could have been avoided. The later in the development process these changes are made, the higher the cost. Experiences in IT (also from our own projects) show that fixing mistakes later on is multiple times more expensive than preventing them. It's the same with accessibility: \"Shift Left\" is the motto – start early in the process.",{"type":24,"tag":41,"props":3888,"children":3889},{},[3890],{"type":24,"tag":3223,"props":3891,"children":3892},{},[3893],{"type":24,"tag":772,"props":3894,"children":3895},{},[3896],{"type":38,"value":3897},"If accessibility is an integral part of the project, the additional effort remains nominal –\nbut maintaining and retrofitting afterward can become quite expensive.",{"type":24,"tag":41,"props":3899,"children":3900},{},[3901,3906],{"type":24,"tag":772,"props":3902,"children":3903},{},[3904],{"type":38,"value":3905},"An example from practice:",{"type":38,"value":3907}," A medium-sized company had its existing online shop checked for accessibility.\nMore than 50 individual problems were found, from missing form labels to unusable dropdown menus. The fixes required several developer sprints and sometimes major frontend restructuring – the cost: high four-digit figures. If these standards had been complied with from the start, almost none of these points would have arisen.\nAdditionally, there were opportunity costs, i.e., other features could not be developed during the revision.",{"type":24,"tag":41,"props":3909,"children":3910},{},[3911,3916],{"type":24,"tag":772,"props":3912,"children":3913},{},[3914],{"type":38,"value":3915},"Our tip:",{"type":38,"value":3917}," Plan for accessibility from the beginning in new projects! The costs are manageable and\ncontribute to a better user experience for everyone!",{"type":24,"tag":33,"props":3919,"children":3921},{"id":3920},"how-to-make-it-barrier-free-tests-and-support-for-companies",[3922],{"type":38,"value":3923},"How to make it barrier-free: Tests and Support for Companies",{"type":24,"tag":41,"props":3925,"children":3926},{},[3927,3929,3934,3936,3941,3943,3948],{"type":38,"value":3928},"If you're now thinking ",{"type":24,"tag":3223,"props":3930,"children":3931},{},[3932],{"type":38,"value":3933},"“All well and good, but how do I actually determine if my website is accessible – and who will help me?”",{"type":38,"value":3935}," - don't worry, you don't have to reinvent the wheel. There are tried and tested ",{"type":24,"tag":772,"props":3937,"children":3938},{},[3939],{"type":38,"value":3940},"testing procedures",{"type":38,"value":3942}," and many ",{"type":24,"tag":772,"props":3944,"children":3945},{},[3946],{"type":38,"value":3947},"experts",{"type":38,"value":3949},", who assist companies on the path to accessibility.",{"type":24,"tag":41,"props":3951,"children":3952},{},[3953,3958,3960,3965,3967,3972,3974,3979,3981,3986,3988,3993,3995,4000,4002,4007,4009,4014],{"type":24,"tag":772,"props":3954,"children":3955},{},[3956],{"type":38,"value":3957},"1. Self-check with tools:",{"type":38,"value":3959}," A good first step is a simple self-test. There are ",{"type":24,"tag":772,"props":3961,"children":3962},{},[3963],{"type":38,"value":3964},"free testing tools",{"type":38,"value":3966}," available, with which you can identify typical problems. Popular ones are, for example, the ",{"type":24,"tag":772,"props":3968,"children":3969},{},[3970],{"type":38,"value":3971},"WAVE Accessibility Checker",{"type":38,"value":3973}," (browser extension) or ",{"type":24,"tag":772,"props":3975,"children":3976},{},[3977],{"type":38,"value":3978},"axe DevTools",{"type":38,"value":3980},", as well as ",{"type":24,"tag":772,"props":3982,"children":3983},{},[3984],{"type":38,"value":3985},"Google Lighthouse",{"type":38,"value":3987}," (integrated in the Chrome browser). These tools analyze the website code and report, for example, missing alt texts, insufficient contrasts or forms without labels. It's important to know, however, that while automated tests find many ",{"type":24,"tag":772,"props":3989,"children":3990},{},[3991],{"type":38,"value":3992},"technical",{"type":38,"value":3994}," barriers, they don't find everything and not everything they find is meaningful. Some criteria - such as ",{"type":24,"tag":3223,"props":3996,"children":3997},{},[3998],{"type":38,"value":3999},"whether alt texts make logical sense",{"type":38,"value":4001}," or ",{"type":24,"tag":3223,"props":4003,"children":4004},{},[4005],{"type":38,"value":4006},"whether the operation sequence is logical",{"type":38,"value":4008}," - can ",{"type":24,"tag":772,"props":4010,"children":4011},{},[4012],{"type":38,"value":4013},"only be assessed by human testers",{"type":38,"value":4015},". Nevertheless, such a tool check is worth it. Within a few minutes, you can get a rough overview of quite obvious problem areas.",{"type":24,"tag":41,"props":4017,"children":4018},{},[4019,4024,4026,4031,4033,4041,4043,4047,4049,4054,4056,4061,4063,4068,4070,4075],{"type":24,"tag":772,"props":4020,"children":4021},{},[4022],{"type":38,"value":4023},"2. Expert Audit (BITV-Test):",{"type":38,"value":4025}," For a reliable result, a ",{"type":24,"tag":772,"props":4027,"children":4028},{},[4029],{"type":38,"value":4030},"manual inspection report",{"type":38,"value":4032}," by specialists is recommended. In Germany, the ",{"type":24,"tag":3223,"props":4034,"children":4035},{},[4036],{"type":24,"tag":772,"props":4037,"children":4038},{},[4039],{"type":38,"value":4040},"BITV-Test",{"type":38,"value":4042}," has been established as the standard procedure. This test currently includes around 60 test steps, which are adapted to the ",{"type":24,"tag":3223,"props":4044,"children":4045},{},[4046],{"type":38,"value":3562},{"type":38,"value":4048}," and the legal requirements (",{"type":24,"tag":3223,"props":4050,"children":4051},{},[4052],{"type":38,"value":4053},"EN 301 549",{"type":38,"value":4055},"). It is carried out by trained auditors – many of them offer this service. The result is a detailed report that shows the strengths and weaknesses of the website and provides a percentage rating. For small websites, the effort is often in the range of a few person-days. According to ",{"type":24,"tag":3223,"props":4057,"children":4058},{},[4059],{"type":38,"value":4060},"Aktion Mensch",{"type":38,"value":4062},", the cost for a complete expert analysis varies between ",{"type":24,"tag":772,"props":4064,"children":4065},{},[4066],{"type":38,"value":4067},"2,500 and 10,000 Euros",{"type":38,"value":4069},", depending on the volume (from simple page to complex online store)\n",{"type":24,"tag":47,"props":4071,"children":4073},{"href":4072},"https://www.aktion-mensch.de/inklusion/barrierefreiheit/barrierefreie-website/kosten-barrierefreie-website#:~:text=Mehr%20Budget%20brauchen%20Sie%20f%C3%BCr,000%20Euro%20rechnen",[4074],{"type":38,"value":3830},{"type":38,"value":4076},".\nThis is money well spent as you receive a clear to-do list to become legally compliant.",{"type":24,"tag":41,"props":4078,"children":4079},{},[4080,4085,4087,4092],{"type":24,"tag":772,"props":4081,"children":4082},{},[4083],{"type":38,"value":4084},"3. User Feedback:",{"type":38,"value":4086}," Nothing replaces the practical test with real users. Ideally, a barrier-free site should be tried out by people with different disabilities – e.g. a blind user with a screen reader, someone with visual impairment and magnification software, someone with a motor impairment only using a keyboard, etc. These tests can be organized through specialized service providers or you can ask volunteers from your own environment. The findings are incredibly valuable. For instance, you can see where operation is difficult or confusing. Often this also reveals a general benefit for all (keyword ",{"type":24,"tag":3223,"props":4088,"children":4089},{},[4090],{"type":38,"value":4091},"Usability",{"type":38,"value":4093},"). For example, if a senior with tremor cannot tap the small dropdown, it is probably not optimally solved for many others as well – here, a simplified UI can make a huge difference.",{"type":24,"tag":41,"props":4095,"children":4096},{},[4097,4102,4104,4109,4111,4116],{"type":24,"tag":772,"props":4098,"children":4099},{},[4100],{"type":38,"value":4101},"4. Support from agencies and consultants:",{"type":38,"value":4103}," If the know-how is lacking in-house, do not hesitate to engage ",{"type":24,"tag":772,"props":4105,"children":4106},{},[4107],{"type":38,"value":4108},"external professionals",{"type":38,"value":4110},". There are consulting firms and agencies (like ours) with expertise in the field or even a focus on digital accessibility. Look for ",{"type":24,"tag":772,"props":4112,"children":4113},{},[4114],{"type":38,"value":4115},"experience and qualification",{"type":38,"value":4117}," when choosing. Good service providers will prioritize with you what needs to be done, and they can also train your developers to ensure accessibility is sustainably anchored in the process.",{"type":24,"tag":41,"props":4119,"children":4120},{},[4121,4125,4127,4132,4134,4139,4141,4146,4148,4153,4155,4160],{"type":24,"tag":772,"props":4122,"children":4123},{},[4124],{"type":38,"value":3915},{"type":38,"value":4126}," Start with a ",{"type":24,"tag":772,"props":4128,"children":4129},{},[4130],{"type":38,"value":4131},"simple self-test",{"type":38,"value":4133}," to get a feel. Then, if necessary, get offers for a professional audit. The ",{"type":24,"tag":772,"props":4135,"children":4136},{},[4137],{"type":38,"value":4138},"Knappschaft-Bahn-See",{"type":38,"value":4140}," or the ",{"type":24,"tag":3223,"props":4142,"children":4143},{},[4144],{"type":38,"value":4145},"Federal Specialist Agency for Accessibility",{"type":38,"value":4147}," (a governmental agency, supported by KBS), offers a lot of ",{"type":24,"tag":772,"props":4149,"children":4150},{},[4151],{"type":38,"value":4152},"information and webinars",{"type":38,"value":4154},", which especially make it easier for e-commerce companies to get started\n",{"type":24,"tag":47,"props":4156,"children":4158},{"href":4157},"https://www.bundesfachstelle-barrierefreiheit.de/DE/Fachwissen/Produkte-und-Dienstleistungen/Barrierefreiheitsstaerkungsgesetz/barrierefreiheitsstaerkungsgesetz_node.html#:~:text=Die%20Bundesfachstelle%20Barrierefreiheit%20hat%20speziell,Reihe%20BFSG%202025",[4159],{"type":38,"value":3293},{"type":38,"value":3366},{"type":24,"tag":33,"props":4162,"children":4164},{"id":4163},"misunderstandings-special-cases-and-myths-about-the-bfsg",[4165],{"type":38,"value":4166},"Misunderstandings, special cases and “myths” about the BFSG",{"type":24,"tag":41,"props":4168,"children":4169},{},[4170,4172,4177],{"type":38,"value":4171},"Several ",{"type":24,"tag":772,"props":4173,"children":4174},{},[4175],{"type":38,"value":4176},"theories and uncertainties",{"type":38,"value":4178}," are circulating ahead of the coming into force that we would like to address here:",{"type":24,"tag":740,"props":4180,"children":4181},{},[4182,4274,4350],{"type":24,"tag":744,"props":4183,"children":4184},{},[4185,4187,4192,4194,4199,4201,4205,4207,4212,4214,4219,4221,4225,4227,4232,4234,4239,4241,4245,4247,4252,4254,4259,4261,4265,4267,4272],{"type":38,"value":4186},"\"",{"type":24,"tag":772,"props":4188,"children":4189},{},[4190],{"type":38,"value":4191},"By 2025, all websites have to be accessible.",{"type":38,"value":4193},"\" – ",{"type":24,"tag":3223,"props":4195,"children":4196},{},[4197],{"type":38,"value":4198},"Not exactly.",{"type":38,"value":4200}," It is true that the ",{"type":24,"tag":3223,"props":4202,"children":4203},{},[4204],{"type":38,"value":3523},{"type":38,"value":4206}," will cover many private\nweb offers, but only ",{"type":24,"tag":772,"props":4208,"children":4209},{},[4210],{"type":38,"value":4211},"certain categories",{"type":38,"value":4213},". A purely informational company website without an\nonline shop, for instance, that does not conclude contracts with consumers, is not ",{"type":24,"tag":772,"props":4215,"children":4216},{},[4217],{"type":38,"value":4218},"directly covered",{"type":38,"value":4220}," by the law\n",{"type":24,"tag":47,"props":4222,"children":4223},{"href":3290},[4224],{"type":38,"value":3293},{"type":38,"value":4226},".\nBut that doesn't mean you should ignore it! Accessibility can bring competitive advantages and the legislature may ",{"type":24,"tag":772,"props":4228,"children":4229},{},[4230],{"type":38,"value":4231},"expand",{"type":38,"value":4233}," its scope in the future.\nFor public websites of authorities, there has been an obligation (",{"type":24,"tag":3223,"props":4235,"children":4236},{},[4237],{"type":38,"value":4238},"BITV 2.0",{"type":38,"value":4240},") for years - the ",{"type":24,"tag":3223,"props":4242,"children":4243},{},[4244],{"type":38,"value":3523},{"type":38,"value":4246}," now closes\nthe big gap in the ",{"type":24,"tag":772,"props":4248,"children":4249},{},[4250],{"type":38,"value":4251},"private sector",{"type":38,"value":4253}," for consumer offers. ",{"type":24,"tag":772,"props":4255,"children":4256},{},[4257],{"type":38,"value":4258},"Our advice:",{"type":38,"value":4260}," If your website is not currently covered\nby ",{"type":24,"tag":3223,"props":4262,"children":4263},{},[4264],{"type":38,"value":3523},{"type":38,"value":4266},", take this opportunity to voluntarily implement accessibility. This will improve your image and\nprepare you in case ",{"type":24,"tag":772,"props":4268,"children":4269},{},[4270],{"type":38,"value":4271},"all websites",{"type":38,"value":4273}," should be covered soon.",{"type":24,"tag":744,"props":4275,"children":4276},{},[4277,4278,4283,4284,4289,4291,4296,4298,4303,4307,4309,4318,4320,4324,4326,4331,4333,4338,4342,4344,4348],{"type":38,"value":4186},{"type":24,"tag":772,"props":4279,"children":4280},{},[4281],{"type":38,"value":4282},"Small businesses are exempted – this will not affect us.",{"type":38,"value":4193},{"type":24,"tag":3223,"props":4285,"children":4286},{},[4287],{"type":38,"value":4288},"Beware:",{"type":38,"value":4290}," The ",{"type":24,"tag":772,"props":4292,"children":4293},{},[4294],{"type":38,"value":4295},"micro-enterprise rule",{"type":38,"value":4297},"\n(less than 10 employees, \u003C2 Mio € turnover) applies ",{"type":24,"tag":3223,"props":4299,"children":4300},{},[4301],{"type":38,"value":4302},"only to service providers",{"type":24,"tag":47,"props":4304,"children":4305},{"href":3449},[4306],{"type":38,"value":3293},{"type":38,"value":4308},".\nAs soon as your company exceeds this threshold - as many small medium-sized companies do - you ",{"type":24,"tag":772,"props":4310,"children":4311},{},[4312,4314],{"type":38,"value":4313},"must\ncomply with the ",{"type":24,"tag":3223,"props":4315,"children":4316},{},[4317],{"type":38,"value":3523},{"type":38,"value":4319}," if you operate relevant offers. An online retailer with 15 employees, for example, is\ndefinitely obligated. The ",{"type":24,"tag":3223,"props":4321,"children":4322},{},[4323],{"type":38,"value":3523},{"type":38,"value":4325}," also applies if you formally qualify as a micro-enterprise, but have a\n",{"type":24,"tag":772,"props":4327,"children":4328},{},[4329],{"type":38,"value":4330},"physical sales channel",{"type":38,"value":4332}," (product) in the BFSG area, then the exception ",{"type":24,"tag":772,"props":4334,"children":4335},{},[4336],{"type":38,"value":4337},"does not apply",{"type":24,"tag":47,"props":4339,"children":4340},{"href":3492},[4341],{"type":38,"value":3320},{"type":38,"value":4343},".\nSo check accurately if you are really exempted. In most cases,\nmore ",{"type":24,"tag":772,"props":4345,"children":4346},{},[4347],{"type":38,"value":3432},{"type":38,"value":4349}," like one-man online shops are exempted. For growth-oriented start-ups and SMEs, this\nissue is indeed relevant.",{"type":24,"tag":744,"props":4351,"children":4352},{},[4353,4354,4359,4361,4366,4368,4373,4375,4380,4382,4387,4389,4394,4396,4401],{"type":38,"value":4186},{"type":24,"tag":772,"props":4355,"children":4356},{},[4357],{"type":38,"value":4358},"We would like to, but it's not economically viable.",{"type":38,"value":4360},"\" – The law includes a clause on\n",{"type":24,"tag":772,"props":4362,"children":4363},{},[4364],{"type":38,"value":4365},"disproportionate burden",{"type":38,"value":4367},"! If meeting the requirements poses an ",{"type":24,"tag":3223,"props":4369,"children":4370},{},[4371],{"type":38,"value":4372},"unbearable",{"type":38,"value":4374}," financial risk,\nyou can refer to this in exceptional cases\n",{"type":24,"tag":47,"props":4376,"children":4378},{"href":4377},"https://www.bundesfachstelle-barrierefreiheit.de/SharedDocs/Downloads/DE/Externe-Veroeffentlichungen/bmas-leitlinien-bfsg.pdf?__blob=publicationFile#:~:text=Einhaltung%20der%20Barrierefreiheitsanforderungen%20eine%20unverh%C3%A4ltnism%C3%A4%C3%9Fige,oder%20mehrere%20der%20Barrierefreiheitsanforderungen%20dieses",[4379],{"type":38,"value":3293},{"type":38,"value":4381},".\nBut be careful – the hurdles are high. You need to prepare a ",{"type":24,"tag":772,"props":4383,"children":4384},{},[4385],{"type":38,"value":4386},"detailed documentation",{"type":38,"value":4388}," according to certain criteria\nand review it regularly (at least every 5 years). In addition, you need to inform the market surveillance authority and provide all facts upon request.\nFor the vast majority of companies, however, accessibility is likely to be ",{"type":24,"tag":772,"props":4390,"children":4391},{},[4392],{"type":38,"value":4393},"reasonable",{"type":38,"value":4395},", as it also opens up\n",{"type":24,"tag":772,"props":4397,"children":4398},{},[4399],{"type":38,"value":4400},"additional customer groups",{"type":38,"value":4402}," in the long term.",{"type":24,"tag":33,"props":4404,"children":4406},{"id":4405},"conclusion-understand-accessibility-as-an-opportunity",[4407],{"type":38,"value":4408},"Conclusion: Understand accessibility as an opportunity",{"type":24,"tag":41,"props":4410,"children":4411},{},[4412,4414,4418,4420,4425,4427,4432,4434,4439],{"type":38,"value":4413},"Instead of seeing the ",{"type":24,"tag":3223,"props":4415,"children":4416},{},[4417],{"type":38,"value":3523},{"type":38,"value":4419}," only as a burdensome obligation, it is worth recognizing the ",{"type":24,"tag":772,"props":4421,"children":4422},{},[4423],{"type":38,"value":4424},"potentials",{"type":38,"value":4426},": About 10\nmillion people in Germany live with a recognized disability – a huge market segment. This includes many\nolder people with dwindling sensory abilities, temporarily restricted persons (broken arm, etc.) and users with\nsituational handicaps (blinding sunlight on the mobile phone, loud surroundings, …). ",{"type":24,"tag":772,"props":4428,"children":4429},{},[4430],{"type":38,"value":4431},"An accessible offer reaches\nmore customers and is often more comfortable for all users.",{"type":38,"value":4433}," Many accessibility principles are simply ",{"type":24,"tag":3223,"props":4435,"children":4436},{},[4437],{"type":38,"value":4438},"best\npractices",{"type":38,"value":4440}," for good web design (clear structure, meaningful links, sufficient contrast, etc.). Companies that lead the way\nhere, can profile themselves with an inclusive image and simultaneously minimize legal risks.",{"type":24,"tag":41,"props":4442,"children":4443},{},[4444,4446,4454,4456,4461,4463,4468],{"type":38,"value":4445},"The ",{"type":24,"tag":772,"props":4447,"children":4448},{},[4449],{"type":24,"tag":3223,"props":4450,"children":4451},{},[4452],{"type":38,"value":4453},"Accessibility Strengthening Act",{"type":38,"value":4455}," may initially appear to be another compliance hurdle. However, with the right\npartner and approach, it can be managed – without your budget exploding or your team getting desperate. ",{"type":24,"tag":772,"props":4457,"children":4458},{},[4459],{"type":38,"value":4460},"We\nare happy to support",{"type":38,"value":4462}," you in setting the course early so that your web project is not only legally compliant,\nbut provides a real added value for ",{"type":24,"tag":3223,"props":4464,"children":4465},{},[4466],{"type":38,"value":4467},"all",{"type":38,"value":4469}," users!",{"type":24,"tag":41,"props":4471,"children":4472},{},[4473,4478],{"type":24,"tag":772,"props":4474,"children":4475},{},[4476],{"type":38,"value":4477},"Note:",{"type":38,"value":4479}," This article was also generated with the support of AI (model: GPT-4).",{"title":7,"searchDepth":85,"depth":85,"links":4481},[4482,4485,4488,4491,4492,4493],{"id":3234,"depth":85,"text":3237,"children":4483},[4484],{"id":3273,"depth":98,"text":3276},{"id":3566,"depth":85,"text":3569,"children":4486},[4487],{"id":3727,"depth":98,"text":3730},{"id":3799,"depth":85,"text":3802,"children":4489},[4490],{"id":3878,"depth":98,"text":3881},{"id":3920,"depth":85,"text":3923},{"id":4163,"depth":85,"text":4166},{"id":4405,"depth":85,"text":4408},{"_path":3063,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":3064,"description":3065,"author":3051,"image":3052,"releaseDate":3066,"blogCategories":4495,"articleTags":4496,"tags":4497,"body":4498,"_type":3041,"_id":3071,"_source":3043,"_file":3072,"_stem":3073,"_extension":3046},[3068],[3056],[3058],{"type":21,"children":4499,"toc":5976},[4500,4505,4511,4532,4540,4595,4607,4610,4613,4619,4655,4671,4699,4709,4724,4730,4780,4796,4876,4888,4897,5121,5133,5142,5255,5290,5312,5427,5438,5476,5506,5512,5530,5535,5616,5622,5838,5844,5860,5883,5898,5904,5914,5919,5925,5965,5971],{"type":24,"tag":25,"props":4501,"children":4504},{"alt":4502,"aspect-ratio":3210,"height":28,"object-fit":29,"src":4503},"Fictional draft of a warning letter from the market surveillance authority with the description \"Non-compliance with accessibility requirements.\"","/blog/Abmahnung-Barrierefreiheitsstaerkungsgesetz.png",[],{"type":24,"tag":33,"props":4506,"children":4508},{"id":4507},"accessibility-becomes-mandatory-what-the-german-accessibility-strengthening-act-means-for-digital-services-from-2025",[4509],{"type":38,"value":4510},"Accessibility Becomes Mandatory: What the German Accessibility Strengthening Act Means for Digital Services from 2025",{"type":24,"tag":41,"props":4512,"children":4513},{},[4514,4519,4521,4530],{"type":24,"tag":772,"props":4515,"children":4516},{},[4517],{"type":38,"value":4518},"Accessibility has been mandatory for many digital products and services since mid-2025.",{"type":38,"value":4520},"\nWe already explained this in our article \"Accessibility Will Be a Recommendation – and a Requirement.\"\nBeyond technical implementation, it's important to note that an\n",{"type":24,"tag":47,"props":4522,"children":4524},{"href":4523},"https://helmundwalter.de/blog/accessibility-will-be-recommended?utm_source=chatgpt.com",[4525],{"type":24,"tag":772,"props":4526,"children":4527},{},[4528],{"type":38,"value":4529},"Accessibility Statement (AS)",{"type":38,"value":4531},"\nis legally required, and incorrect formulation can lead to warnings or regulatory pressure.",{"type":24,"tag":41,"props":4533,"children":4534},{},[4535],{"type":24,"tag":772,"props":4536,"children":4537},{},[4538],{"type":38,"value":4539},"Contents of this blog post:",{"type":24,"tag":740,"props":4541,"children":4542},{},[4543,4555,4560,4570,4580,4590],{"type":24,"tag":744,"props":4544,"children":4545},{},[4546,4548,4553],{"type":38,"value":4547},"Why an ",{"type":24,"tag":772,"props":4549,"children":4550},{},[4551],{"type":38,"value":4552},"Accessibility Statement according to BFSG",{"type":38,"value":4554}," is legally required",{"type":24,"tag":744,"props":4556,"children":4557},{},[4558],{"type":38,"value":4559},"What this statement must contain",{"type":24,"tag":744,"props":4561,"children":4562},{},[4563,4568],{"type":24,"tag":772,"props":4564,"children":4565},{},[4566],{"type":38,"value":4567},"A proposal for a possible accessibility statement",{"type":38,"value":4569}," / AS",{"type":24,"tag":744,"props":4571,"children":4572},{},[4573,4575],{"type":38,"value":4574},"Brief explanation of where you should ",{"type":24,"tag":772,"props":4576,"children":4577},{},[4578],{"type":38,"value":4579},"customize the statement individually and truthfully to your service",{"type":24,"tag":744,"props":4581,"children":4582},{},[4583,4588],{"type":24,"tag":772,"props":4584,"children":4585},{},[4586],{"type":38,"value":4587},"Our experience with legal consultation",{"type":38,"value":4589}," on formulation",{"type":24,"tag":744,"props":4591,"children":4592},{},[4593],{"type":38,"value":4594},"What consequences non-compliance may have",{"type":24,"tag":66,"props":4596,"children":4598},{"className":4597},[3216],[4599],{"type":24,"tag":41,"props":4600,"children":4601},{},[4602],{"type":24,"tag":3223,"props":4603,"children":4604},{},[4605],{"type":38,"value":4606},"Reading time: approx. 15 minutes",{"type":24,"tag":1673,"props":4608,"children":4609},{},[],{"type":24,"tag":1690,"props":4611,"children":4612},{},[],{"type":24,"tag":33,"props":4614,"children":4616},{"id":4615},"what-is-the-bfsg-and-accessibility-statement-about",[4617],{"type":38,"value":4618},"What is the BFSG and Accessibility Statement About?",{"type":24,"tag":41,"props":4620,"children":4621},{},[4622,4623,4629,4631,4640,4642,4647,4649,4653],{"type":38,"value":4445},{"type":24,"tag":47,"props":4624,"children":4626},{"href":4625},"https://bfsg-gesetz.de",[4627],{"type":38,"value":4628},"German Accessibility Strengthening Act (BFSG)",{"type":38,"value":4630}," requires digital offerings such as online shops, banking apps, or booking portals to be accessibly designed since June 28, 2025.\nThis follows the EU-wide ",{"type":24,"tag":47,"props":4632,"children":4634},{"href":4633},"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",[4635],{"type":24,"tag":772,"props":4636,"children":4637},{},[4638],{"type":38,"value":4639},"European Accessibility Act (EAA)",{"type":38,"value":4641}," and the ",{"type":24,"tag":772,"props":4643,"children":4644},{},[4645],{"type":38,"value":4646},"EN 301 549 standard",{"type":38,"value":4648},", which usually defines ",{"type":24,"tag":772,"props":4650,"children":4651},{},[4652],{"type":38,"value":3562},{"type":38,"value":4654}," as the technical target. Micro-enterprises with fewer than 10 employees and less than\n2 million € annual turnover are exempt.",{"type":24,"tag":41,"props":4656,"children":4657},{},[4658,4660,4669],{"type":38,"value":4659},"According to ",{"type":24,"tag":47,"props":4661,"children":4663},{"href":4662},"https://bfsg-gesetz.de/anlage-3/",[4664],{"type":24,"tag":772,"props":4665,"children":4666},{},[4667],{"type":38,"value":4668},"§ 14 BFSG and Annex 3",{"type":38,"value":4670},", providers must publish an accessibility statement that contains the following points:",{"type":24,"tag":740,"props":4672,"children":4673},{},[4674,4679,4684,4689,4694],{"type":24,"tag":744,"props":4675,"children":4676},{},[4677],{"type":38,"value":4678},"General description of the digital service",{"type":24,"tag":744,"props":4680,"children":4681},{},[4682],{"type":38,"value":4683},"Compliance status of accessibility requirements (e.g., WCAG, EN 301 549)",{"type":24,"tag":744,"props":4685,"children":4686},{},[4687],{"type":38,"value":4688},"Contact options of the service provider for feedback on barriers",{"type":24,"tag":744,"props":4690,"children":4691},{},[4692],{"type":38,"value":4693},"Market surveillance authority as the responsible control body",{"type":24,"tag":744,"props":4695,"children":4696},{},[4697],{"type":38,"value":4698},"Optional information: Date of last review, review methodology, feedback mechanism",{"type":24,"tag":41,"props":4700,"children":4701},{},[4702,4707],{"type":24,"tag":772,"props":4703,"children":4704},{},[4705],{"type":38,"value":4706},"There is no official template for the accessibility statement.",{"type":38,"value":4708},"\nTo our current knowledge, none is planned either.",{"type":24,"tag":41,"props":4710,"children":4711},{},[4712],{"type":24,"tag":772,"props":4713,"children":4714},{},[4715,4717,4722],{"type":38,"value":4716},"Therefore, we will discuss below what such an\n",{"type":24,"tag":3223,"props":4718,"children":4719},{},[4720],{"type":38,"value":4721},"Accessibility Statement",{"type":38,"value":4723}," could look like.",{"type":24,"tag":33,"props":4725,"children":4727},{"id":4726},"our-template-for-your-as",[4728],{"type":38,"value":4729},"Our Template for Your AS",{"type":24,"tag":4731,"props":4732,"children":4736},"div",{"className":4733},[4734,4735],"doc-sheet","doc-sheet__border-top",[4737],{"type":24,"tag":4731,"props":4738,"children":4741},{"className":4739},[4740],"doc-sheet__section",[4742,4749,4774],{"type":24,"tag":4743,"props":4744,"children":4746},"h1",{"id":4745},"accessibility-information",[4747],{"type":38,"value":4748},"Accessibility Information",{"type":24,"tag":41,"props":4750,"children":4751},{},[4752,4754,4758,4760,4765,4767,4772],{"type":38,"value":4753},"We commit to implementing the requirements of the ",{"type":24,"tag":772,"props":4755,"children":4756},{},[4757],{"type":38,"value":4628},{"type":38,"value":4759}," as well as the underlying ",{"type":24,"tag":772,"props":4761,"children":4762},{},[4763],{"type":38,"value":4764},"EU Directive (EU) 2019/882 on accessibility requirements for products and services",{"type":38,"value":4766},". Our goal is to design our digital offerings – especially web applications and online services – so that they are ",{"type":24,"tag":772,"props":4768,"children":4769},{},[4770],{"type":38,"value":4771},"accessibly available",{"type":38,"value":4773}," to all people, regardless of individual abilities or technical assistive devices.",{"type":24,"tag":33,"props":4775,"children":4777},{"id":4776},"service-description",[4778],{"type":38,"value":4779},"Service Description",{"type":24,"tag":4731,"props":4781,"children":4790},{"className":4782},[4783,4784,4785,4786,4787,4788,4789],"mt-8","mb-5","pl-0","pr-0","pt-5","pb-5","pa-sm-5",[4791],{"type":24,"tag":41,"props":4792,"children":4793},{},[4794],{"type":38,"value":4795},"You must individually adapt this part to your digital service.\nWe have provided an example for a classic online shop at this point.",{"type":24,"tag":4731,"props":4797,"children":4800},{"className":4798},[4734,4799],"doc-sheet__border-sides",[4801],{"type":24,"tag":4731,"props":4802,"children":4804},{"className":4803},[4740],[4805,4817,4857],{"type":24,"tag":41,"props":4806,"children":4807},{},[4808,4810,4815],{"type":38,"value":4809},"Our online shop enables users to\n",{"type":24,"tag":772,"props":4811,"children":4812},{},[4813],{"type":38,"value":4814},"obtain information about products, digitally select and purchase products",{"type":38,"value":4816},".\nThe goods are each offered on their own product page with description, price, and\npossibly available variants such as size or color.",{"type":24,"tag":41,"props":4818,"children":4819},{},[4820,4822,4827,4829,4834,4836,4841,4843,4848,4850,4855],{"type":38,"value":4821},"The desired products can be added to a ",{"type":24,"tag":772,"props":4823,"children":4824},{},[4825],{"type":38,"value":4826},"virtual shopping cart",{"type":38,"value":4828},".\nAfter selecting all items, the ordering process leads through the ",{"type":24,"tag":772,"props":4830,"children":4831},{},[4832],{"type":38,"value":4833},"checkout area",{"type":38,"value":4835},",\nwhere a ",{"type":24,"tag":772,"props":4837,"children":4838},{},[4839],{"type":38,"value":4840},"delivery address",{"type":38,"value":4842}," and possibly different ",{"type":24,"tag":772,"props":4844,"children":4845},{},[4846],{"type":38,"value":4847},"billing address",{"type":38,"value":4849},"\nmust be entered, and a ",{"type":24,"tag":772,"props":4851,"children":4852},{},[4853],{"type":38,"value":4854},"payment method",{"type":38,"value":4856}," must be selected.",{"type":24,"tag":41,"props":4858,"children":4859},{},[4860,4862,4867,4869,4874],{"type":38,"value":4861},"After successful ordering,\n",{"type":24,"tag":772,"props":4863,"children":4864},{},[4865],{"type":38,"value":4866},"order confirmation and shipping confirmations are sent via email",{"type":38,"value":4868}," to the email address\nprovided during ordering.\n",{"type":24,"tag":772,"props":4870,"children":4871},{},[4872],{"type":38,"value":4873},"Redirection to third-party services",{"type":38,"value":4875}," for processing payments may occur.\nWe have limited influence on the design and technical execution of these services.",{"type":24,"tag":66,"props":4877,"children":4879},{"className":4878},[3216],[4880],{"type":24,"tag":41,"props":4881,"children":4882},{},[4883],{"type":24,"tag":3223,"props":4884,"children":4885},{},[4886],{"type":38,"value":4887},"Adapt to individual service",{"type":24,"tag":4731,"props":4889,"children":4891},{"className":4890},[4783,4784,4785,4786,4787,4788,4789],[4892],{"type":24,"tag":41,"props":4893,"children":4894},{},[4895],{"type":38,"value":4896},"You don't necessarily need to provide the following part.\nHowever, it clarifies your previous efforts and measures, as well as your commitment\nin the area of accessibility, and offers a point of contact beyond the\nmarket surveillance authority.",{"type":24,"tag":4731,"props":4898,"children":4900},{"className":4899},[4734,4799],[4901],{"type":24,"tag":4731,"props":4902,"children":4904},{"className":4903},[4740],[4905,4911,4923,4935,4974,4985,4991,5029,5035,5047,5055,5095],{"type":24,"tag":33,"props":4906,"children":4908},{"id":4907},"accessibility-status",[4909],{"type":38,"value":4910},"Accessibility Status",{"type":24,"tag":41,"props":4912,"children":4913},{},[4914,4916,4921],{"type":38,"value":4915},"Our website and digital services are continuously adapted to applicable\n",{"type":24,"tag":772,"props":4917,"children":4918},{},[4919],{"type":38,"value":4920},"accessibility standards (e.g., WCAG 2.1 AA and EN 301 549)",{"type":38,"value":4922},".\nWe actively pursue the goal of identifying, reducing, and ultimately completely eliminating existing barriers.",{"type":24,"tag":41,"props":4924,"children":4925},{},[4926,4928,4933],{"type":38,"value":4927},"Despite all care, ",{"type":24,"tag":772,"props":4929,"children":4930},{},[4931],{"type":38,"value":4932},"temporary or partial barriers",{"type":38,"value":4934}," may occur in individual cases.\nThis can particularly happen:",{"type":24,"tag":740,"props":4936,"children":4937},{},[4938,4950,4962],{"type":24,"tag":744,"props":4939,"children":4940},{},[4941,4943,4948],{"type":38,"value":4942},"due to ongoing ",{"type":24,"tag":772,"props":4944,"children":4945},{},[4946],{"type":38,"value":4947},"editorial or technical revisions",{"type":38,"value":4949}," of individual content and pages,",{"type":24,"tag":744,"props":4951,"children":4952},{},[4953,4955,4960],{"type":38,"value":4954},"due to ",{"type":24,"tag":772,"props":4956,"children":4957},{},[4958],{"type":38,"value":4959},"different interpretations",{"type":38,"value":4961}," of technical accessibility requirements,",{"type":24,"tag":744,"props":4963,"children":4964},{},[4965,4967,4972],{"type":38,"value":4966},"or with ",{"type":24,"tag":772,"props":4968,"children":4969},{},[4970],{"type":38,"value":4971},"complex functionalities",{"type":38,"value":4973}," for which no completely accessible solution is yet available.",{"type":24,"tag":41,"props":4975,"children":4976},{},[4977,4979,4984],{"type":38,"value":4978},"We continuously work to identify such deviations and\ndevelop solutions to enable all users ",{"type":24,"tag":772,"props":4980,"children":4981},{},[4982],{"type":38,"value":4983},"low-threshold and equivalent access",{"type":38,"value":3366},{"type":24,"tag":477,"props":4986,"children":4988},{"id":4987},"last-review",[4989],{"type":38,"value":4990},"Last Review",{"type":24,"tag":41,"props":4992,"children":4993},{},[4994,4996,5001,5003,5008,5010,5015,5017,5021,5023,5027],{"type":38,"value":4995},"The last exemplary accessibility review took place on ",{"type":24,"tag":3223,"props":4997,"children":4998},{},[4999],{"type":38,"value":5000},"[Date of last review]",{"type":38,"value":5002},"\nby ",{"type":24,"tag":3223,"props":5004,"children":5005},{},[5006],{"type":38,"value":5007},"[Enter company – an external company is better here]",{"type":38,"value":5009},".\nA ",{"type":24,"tag":772,"props":5011,"children":5012},{},[5013],{"type":38,"value":5014},"selection of representative pages and functions",{"type":38,"value":5016}," was examined for compliance\nwith the requirements of ",{"type":24,"tag":772,"props":5018,"children":5019},{},[5020],{"type":38,"value":3562},{"type":38,"value":5022}," and ",{"type":24,"tag":772,"props":5024,"children":5025},{},[5026],{"type":38,"value":4053},{"type":38,"value":5028},".\nNot all content or pages were individually tested.\nThe selection was based on usage frequency and central functionalities\nof our online offering.",{"type":24,"tag":33,"props":5030,"children":5032},{"id":5031},"feedback-and-contact",[5033],{"type":38,"value":5034},"Feedback and Contact",{"type":24,"tag":41,"props":5036,"children":5037},{},[5038,5040,5045],{"type":38,"value":5039},"Should you notice ",{"type":24,"tag":772,"props":5041,"children":5042},{},[5043],{"type":38,"value":5044},"barriers",{"type":38,"value":5046}," when visiting our digital offerings,\nwe ask you to inform us.\nEvery hint helps us better understand existing weaknesses and improve them in a targeted manner.",{"type":24,"tag":41,"props":5048,"children":5049},{},[5050],{"type":24,"tag":772,"props":5051,"children":5052},{},[5053],{"type":38,"value":5054},"Contact for accessibility feedback:",{"type":24,"tag":41,"props":5056,"children":5057},{},[5058,5063,5066,5071,5074,5079,5082,5087,5090],{"type":24,"tag":3223,"props":5059,"children":5060},{},[5061],{"type":38,"value":5062},"[Name or department]",{"type":24,"tag":1673,"props":5064,"children":5065},{},[],{"type":24,"tag":3223,"props":5067,"children":5068},{},[5069],{"type":38,"value":5070},"[Company]",{"type":24,"tag":1673,"props":5072,"children":5073},{},[],{"type":24,"tag":3223,"props":5075,"children":5076},{},[5077],{"type":38,"value":5078},"[Address, optional]",{"type":24,"tag":1673,"props":5080,"children":5081},{},[],{"type":24,"tag":3223,"props":5083,"children":5084},{},[5085],{"type":38,"value":5086},"[Email address]",{"type":24,"tag":1673,"props":5088,"children":5089},{},[],{"type":24,"tag":3223,"props":5091,"children":5092},{},[5093],{"type":38,"value":5094},"[Phone number, optional]",{"type":24,"tag":41,"props":5096,"children":5097},{},[5098,5100,5105,5107,5112,5114,5119],{"type":38,"value":5099},"We assure you that we will ",{"type":24,"tag":772,"props":5101,"children":5102},{},[5103],{"type":38,"value":5104},"editorially and technically review",{"type":38,"value":5106}," incoming feedback as quickly as possible and, if possible, ",{"type":24,"tag":772,"props":5108,"children":5109},{},[5110],{"type":38,"value":5111},"remedy",{"type":38,"value":5113}," it within a reasonable timeframe.\nShould a short-term technical solution not be possible, we will work with you to find ",{"type":24,"tag":772,"props":5115,"children":5116},{},[5117],{"type":38,"value":5118},"alternative access routes or supporting measures",{"type":38,"value":5120}," to still enable you to use the service.",{"type":24,"tag":66,"props":5122,"children":5124},{"className":5123},[3216],[5125],{"type":24,"tag":41,"props":5126,"children":5127},{},[5128],{"type":24,"tag":3223,"props":5129,"children":5130},{},[5131],{"type":38,"value":5132},"optional",{"type":24,"tag":4731,"props":5134,"children":5136},{"className":5135},[4783,4784,4785,4786,4787,4788,4789],[5137],{"type":24,"tag":41,"props":5138,"children":5139},{},[5140],{"type":38,"value":5141},"The following part is important again, as the market surveillance authority must be named here\nand you should refer to the currently valid Terms and Conditions, which may close possible gaps in the\ndescription of the service or product.",{"type":24,"tag":4731,"props":5143,"children":5145},{"className":5144},[4734,4799],[5146],{"type":24,"tag":4731,"props":5147,"children":5149},{"className":5148},[4740],[5150,5156,5173,5192,5197,5208,5214,5219],{"type":24,"tag":33,"props":5151,"children":5153},{"id":5152},"additional-information",[5154],{"type":38,"value":5155},"Additional Information",{"type":24,"tag":41,"props":5157,"children":5158},{},[5159,5161,5166,5168],{"type":38,"value":5160},"Please note that the use of our digital services and all associated\nfunctions is additionally subject to our ",{"type":24,"tag":772,"props":5162,"children":5163},{},[5164],{"type":38,"value":5165},"General Terms and Conditions (GTC)",{"type":38,"value":5167},".\nThese GTC regulate, among other things, contract conclusion, payment processing, and\ndelivery. In case of contradictions or deviations, the GTC in their\ncurrent version apply, insofar as they do not restrict or override accessibility requirements.\nAn accessible version of our GTC is available here: ",{"type":24,"tag":3223,"props":5169,"children":5170},{},[5171],{"type":38,"value":5172},"[Link to GTC]",{"type":24,"tag":41,"props":5174,"children":5175},{},[5176,5178,5183,5185,5190],{"type":38,"value":5177},"We understand accessibility not as a one-time measure, but as an\n",{"type":24,"tag":772,"props":5179,"children":5180},{},[5181],{"type":38,"value":5182},"ongoing process",{"type":38,"value":5184},". Therefore, our content and systems are regularly reviewed\nand revised. In individual cases, this may temporarily lead to\n",{"type":24,"tag":772,"props":5186,"children":5187},{},[5188],{"type":38,"value":5189},"limitations in accessibility",{"type":38,"value":5191},". We ask for your understanding.",{"type":24,"tag":41,"props":5193,"children":5194},{},[5195],{"type":38,"value":5196},"For further information on the German Accessibility Strengthening Act, we refer to\nthe responsible national enforcement agency:",{"type":24,"tag":41,"props":5198,"children":5199},{},[5200,5206],{"type":24,"tag":47,"props":5201,"children":5203},{"href":5202},"https://www.bundesfachstelle-barrierefreiheit.de",[5204],{"type":38,"value":5205},"German Federal Agency for Accessibility",{"type":38,"value":5207}," (Operated by: Knappschaft-Bahn-See)",{"type":24,"tag":477,"props":5209,"children":5211},{"id":5210},"responsible-market-surveillance-authority",[5212],{"type":38,"value":5213},"Responsible Market Surveillance Authority",{"type":24,"tag":41,"props":5215,"children":5216},{},[5217],{"type":38,"value":5218},"Market Surveillance Authority of the States for Accessibility of Products and\nServices (MLBF) in Magdeburg, Saxony-Anhalt.",{"type":24,"tag":41,"props":5220,"children":5221},{},[5222,5227,5230,5232,5235,5237,5240,5242,5245,5248,5250,5253],{"type":24,"tag":772,"props":5223,"children":5224},{},[5225],{"type":38,"value":5226},"MLBF (under establishment)",{"type":24,"tag":1673,"props":5228,"children":5229},{},[],{"type":38,"value":5231},"\nc/o Ministry of Labor, Social Affairs, Health and Equal Opportunities Saxony-Anhalt",{"type":24,"tag":1673,"props":5233,"children":5234},{},[],{"type":38,"value":5236},"\nP.O. Box 39 11 55",{"type":24,"tag":1673,"props":5238,"children":5239},{},[],{"type":38,"value":5241},"\n39135 Magdeburg",{"type":24,"tag":1673,"props":5243,"children":5244},{},[],{"type":24,"tag":1673,"props":5246,"children":5247},{},[],{"type":38,"value":5249},"\nPhone: 0391 567 6970",{"type":24,"tag":1673,"props":5251,"children":5252},{},[],{"type":38,"value":5254},"\nEmail: MLBF(at)ms.sachsen-anhalt.de.",{"type":24,"tag":4731,"props":5256,"children":5261},{"className":5257},[5258,5259,5260],"hint","hint--warning","mt-5",[5262],{"type":24,"tag":41,"props":5263,"children":5264},{},[5265,5269,5272,5274,5281,5283,5288],{"type":24,"tag":772,"props":5266,"children":5267},{},[5268],{"type":38,"value":4477},{"type":24,"tag":1673,"props":5270,"children":5271},{},[],{"type":38,"value":5273},"\nAccording to ",{"type":24,"tag":3223,"props":5275,"children":5276},{},[5277],{"type":24,"tag":47,"props":5278,"children":5279},{"href":4662},[5280],{"type":38,"value":4662},{"type":38,"value":5282}," §1 c,\n\"",{"type":24,"tag":3223,"props":5284,"children":5285},{},[5286],{"type":38,"value":5287},"a description of how the service fulfills the relevant accessibility requirements\nlisted in the regulation to be issued pursuant to §3 paragraph 2;",{"type":38,"value":5289},"\"\nshould be included – i.e., a precise description of how the service was designed to be accessible.",{"type":24,"tag":4731,"props":5291,"children":5295},{"className":5292},[5293,4784,4785,4786,4787,4788,4789,5294],"mt-0","pt-0",[5296,5302,5307],{"type":24,"tag":477,"props":5297,"children":5299},{"id":5298},"example-of-a-description-of-concrete-measures",[5300],{"type":38,"value":5301},"Example of a Description of Concrete Measures",{"type":24,"tag":41,"props":5303,"children":5304},{},[5305],{"type":38,"value":5306},"Below is an example of concrete measures as we typically provide and implement\nas an agency for our clients in projects.",{"type":24,"tag":41,"props":5308,"children":5309},{},[5310],{"type":38,"value":5311},"These measures would need to be truthfully and individually adapted to your measures.",{"type":24,"tag":4731,"props":5313,"children":5316},{"className":5314},[4734,5315],"doc-sheet__border-bottom",[5317],{"type":24,"tag":4731,"props":5318,"children":5320},{"className":5319},[4740],[5321,5327,5332,5338,5343,5349,5354,5360,5365,5371,5376,5382,5387,5393,5398,5404,5422],{"type":24,"tag":33,"props":5322,"children":5324},{"id":5323},"concrete-implementation-of-accessibility-requirements",[5325],{"type":38,"value":5326},"Concrete Implementation of Accessibility Requirements",{"type":24,"tag":41,"props":5328,"children":5329},{},[5330],{"type":38,"value":5331},"To fulfill legal accessibility requirements, the following technical\nand design measures have been implemented:",{"type":24,"tag":477,"props":5333,"children":5335},{"id":5334},"technical-structure-and-semantics",[5336],{"type":38,"value":5337},"Technical Structure and Semantics",{"type":24,"tag":41,"props":5339,"children":5340},{},[5341],{"type":38,"value":5342},"The HTML structures of our website correspond to the semantic purpose of the respective\ncontent and interaction elements. Additionally, ARIA markups were used to make complex\nfunctionalities and their status accessible to assistive technologies.",{"type":24,"tag":477,"props":5344,"children":5346},{"id":5345},"content-design-and-editorial-measures",[5347],{"type":38,"value":5348},"Content Design and Editorial Measures",{"type":24,"tag":41,"props":5350,"children":5351},{},[5352],{"type":38,"value":5353},"Editorially responsible persons have been trained in the correct use of text structures\nand hierarchical heading levels. When creating content, attention is paid to\nclear, understandable language. Complex matters are presented in a structured manner\nand organized with subheadings. Link texts are meaningfully formulated and clearly\ndescribe the destination of the link. Lists and other structuring HTML elements are\nstrategically used to clarify content structure. Tables are provided with appropriate\nheadings and descriptions to make their content and structure understandable.",{"type":24,"tag":477,"props":5355,"children":5357},{"id":5356},"visual-design-and-responsive-design",[5358],{"type":38,"value":5359},"Visual Design and Responsive Design",{"type":24,"tag":41,"props":5361,"children":5362},{},[5363],{"type":38,"value":5364},"In color design, attention was paid to high-contrast presentation according to\nWCAG Level AA. Information is not conveyed exclusively through visual\nproperties such as color, shape, or position, but supplemented by additional\ntextual or structural hints. The website is responsively designed\nand usable on various output devices. Text size can be adjusted using browser zoom\nto at least 200% without loss of functionality. Navigation and\ncontrol elements are consistently designed and positioned in comparable locations.",{"type":24,"tag":477,"props":5366,"children":5368},{"id":5367},"text-alternatives-media-and-time-based-content",[5369],{"type":38,"value":5370},"Text Alternatives, Media and Time-based Content",{"type":24,"tag":41,"props":5372,"children":5373},{},[5374],{"type":38,"value":5375},"Provisions have been made for all images and graphics so that users can\ncreate meaningful alternative texts when creating content or mark pure\ndecorative graphics with empty alternative texts.\nVideo content, insofar as it is under our control, is provided with subtitles.\nTime-controlled displays or automatic notifications have been avoided.\nIf such elements are necessary for functional reasons, they can be paused and\ncontrolled by users.\nContent that might require attention does not blink or flash.",{"type":24,"tag":477,"props":5377,"children":5379},{"id":5378},"navigation-and-operation",[5380],{"type":38,"value":5381},"Navigation and Operation",{"type":24,"tag":41,"props":5383,"children":5384},{},[5385],{"type":38,"value":5386},"The website is fully keyboard operable. The keyboard focus is always clearly\nvisible and follows a logical order corresponding to the page structure.\nUnnecessary focus movement within a page as well as unintended\nreset when reloading pages are avoided to prevent context and\norientation loss.",{"type":24,"tag":477,"props":5388,"children":5390},{"id":5389},"forms-and-input",[5391],{"type":38,"value":5392},"Forms and Input",{"type":24,"tag":41,"props":5394,"children":5395},{},[5396],{"type":38,"value":5397},"In all forms, clear label assignments to the corresponding form and\ncontrol elements are provided.\nError and status messages are presented clearly and accessibly\nto facilitate operation and understanding of inputs.",{"type":24,"tag":477,"props":5399,"children":5401},{"id":5400},"additional-measures",[5402],{"type":38,"value":5403},"Additional Measures",{"type":24,"tag":740,"props":5405,"children":5406},{},[5407,5412,5417],{"type":24,"tag":744,"props":5408,"children":5409},{},[5410],{"type":38,"value":5411},"Automatic page redirections without user interaction have been avoided.",{"type":24,"tag":744,"props":5413,"children":5414},{},[5415],{"type":38,"value":5416},"Click and touch targets have sufficient minimum size for easy operation.",{"type":24,"tag":744,"props":5418,"children":5419},{},[5420],{"type":38,"value":5421},"In linear navigation through assistive technologies, content follows a meaningful and understandable order.",{"type":24,"tag":41,"props":5423,"children":5424},{},[5425],{"type":38,"value":5426},"These measures ensure a high degree of compatibility with common assistive\ntechnologies and enable equivalent use of our digital services for\npeople with different abilities.",{"type":24,"tag":66,"props":5428,"children":5430},{"className":5429},[3216],[5431],{"type":24,"tag":41,"props":5432,"children":5433},{},[5434],{"type":24,"tag":3223,"props":5435,"children":5436},{},[5437],{"type":38,"value":4887},{"type":24,"tag":4731,"props":5439,"children":5442},{"className":5440},[5258,5441],"hint--info",[5443,5449,5460],{"type":24,"tag":33,"props":5444,"children":5446},{"id":5445},"possible-short-version",[5447],{"type":38,"value":5448},"Possible Short Version:",{"type":24,"tag":41,"props":5450,"children":5451},{},[5452,5454,5458],{"type":38,"value":5453},"We design our digital offerings according to the\n",{"type":24,"tag":772,"props":5455,"children":5456},{},[5457],{"type":38,"value":4628},{"type":38,"value":5459}," and applicable standards\n(e.g., WCAG 2.1 AA) to be accessible and continuously expand this accessibility.",{"type":24,"tag":41,"props":5461,"children":5462},{},[5463,5464,5469,5471],{"type":38,"value":4927},{"type":24,"tag":772,"props":5465,"children":5466},{},[5467],{"type":38,"value":5468},"temporary or technical limitations",{"type":38,"value":5470}," may occasionally occur.\nWe welcome feedback on barriers and strive for quick\nsolutions. ",{"type":24,"tag":3223,"props":5472,"children":5473},{},[5474],{"type":38,"value":5475},"[Here's the link to complete accessibility information](LINK)",{"type":24,"tag":4731,"props":5477,"children":5479},{"className":5478},[5258,5259],[5480,5492],{"type":24,"tag":41,"props":5481,"children":5482},{},[5483,5487,5490],{"type":24,"tag":772,"props":5484,"children":5485},{},[5486],{"type":38,"value":4477},{"type":24,"tag":1673,"props":5488,"children":5489},{},[],{"type":38,"value":5491},"\nDo not incorporate the AS/IBE into the GTC, as this might influence other\n\"legal transactions.\"\nInstead, place an individual \"Accessibility\" link in the footer\nthat refers to the \"Accessibility Information\" as a standalone page.",{"type":24,"tag":5493,"props":5494,"children":5495},"blockquote",{},[5496],{"type":24,"tag":41,"props":5497,"children":5498},{},[5499,5500,5505],{"type":38,"value":4186},{"type":24,"tag":3223,"props":5501,"children":5502},{},[5503],{"type":38,"value":5504},"The service provider indicates in relation to their service within the meaning of\n§ 1 paragraph 3 in their General Terms and Conditions or in another\nclearly perceptible way how they fulfill the accessibility requirements of\nthe regulation to be issued pursuant to § 3 paragraph 2.",{"type":38,"value":4186},{"type":24,"tag":33,"props":5507,"children":5509},{"id":5508},"our-experience-with-legal-consultation-on-this-topic",[5510],{"type":38,"value":5511},"Our Experience with Legal Consultation on This Topic",{"type":24,"tag":41,"props":5513,"children":5514},{},[5515,5517,5522,5523,5528],{"type":38,"value":5516},"It should be noted that among the legal advisors we have had contact with over time on this topic, there has been some discourse regarding the implementation of the measures described in the law. The distinction between a ",{"type":24,"tag":3223,"props":5518,"children":5519},{},[5520],{"type":38,"value":5521},"narrow",{"type":38,"value":5022},{"type":24,"tag":3223,"props":5524,"children":5525},{},[5526],{"type":38,"value":5527},"broad",{"type":38,"value":5529}," interpretation of accessibility requirements is primarily the starting point for the required level of detail and depth of described measures.",{"type":24,"tag":41,"props":5531,"children":5532},{},[5533],{"type":38,"value":5534},"Many law firms dealing with digital accessibility recommend:",{"type":24,"tag":740,"props":5536,"children":5537},{},[5538,5562,5573,5596,5606],{"type":24,"tag":744,"props":5539,"children":5540},{},[5541,5546,5548,5553,5555,5560],{"type":24,"tag":772,"props":5542,"children":5543},{},[5544],{"type":38,"value":5545},"Not integrating",{"type":38,"value":5547}," the AS ",{"type":24,"tag":772,"props":5549,"children":5550},{},[5551],{"type":38,"value":5552},"into the GTC",{"type":38,"value":5554},", but maintaining it as a ",{"type":24,"tag":772,"props":5556,"children":5557},{},[5558],{"type":38,"value":5559},"standalone, easily findable page",{"type":38,"value":5561}," – such as under /accessibility and then linking it in the website footer.",{"type":24,"tag":744,"props":5563,"children":5564},{},[5565,5566,5571],{"type":38,"value":4445},{"type":24,"tag":772,"props":5567,"children":5568},{},[5569],{"type":38,"value":5570},"AS must explicitly refer to the GTC",{"type":38,"value":5572}," (e.g., to close explanatory gaps in business activities, etc.)",{"type":24,"tag":744,"props":5574,"children":5575},{},[5576,5581,5583,5588,5589,5594],{"type":24,"tag":772,"props":5577,"children":5578},{},[5579],{"type":38,"value":5580},"Avoid legally binding assurances",{"type":38,"value":5582}," (",{"type":24,"tag":3223,"props":5584,"children":5585},{},[5586],{"type":38,"value":5587},"\"complete accessibility\"",{"type":38,"value":3854},{"type":24,"tag":3223,"props":5590,"children":5591},{},[5592],{"type":38,"value":5593},"\"guaranteed conformity\"",{"type":38,"value":5595},") if these cannot be fulfilled 100%",{"type":24,"tag":744,"props":5597,"children":5598},{},[5599,5604],{"type":24,"tag":772,"props":5600,"children":5601},{},[5602],{"type":38,"value":5603},"Name a contact person for feedback",{"type":38,"value":5605}," – preferably with email address and optionally phone number",{"type":24,"tag":744,"props":5607,"children":5608},{},[5609,5614],{"type":24,"tag":772,"props":5610,"children":5611},{},[5612],{"type":38,"value":5613},"Specifically:",{"type":38,"value":5615}," To avoid being caught in warning campaigns, the corresponding legal text should be adopted almost verbatim. This reduces the risk of being targeted for omissions in the statement during (semi-)automatic reviews (copy or cite BFSG Annex 3)",{"type":24,"tag":477,"props":5617,"children":5619},{"id":5618},"a-possible-additional-formulation-for-improved-defense-against-warnings",[5620],{"type":38,"value":5621},"A Possible Additional Formulation for Improved Defense Against Warnings",{"type":24,"tag":4731,"props":5623,"children":5626},{"className":5624},[4734,5625],"doc-sheet__border-all",[5627],{"type":24,"tag":4731,"props":5628,"children":5630},{"className":5629},[4740],[5631,5637,5642,5685,5691,5696,5734,5772,5778,5783,5789,5794,5827],{"type":24,"tag":33,"props":5632,"children":5634},{"id":5633},"service-design-for-accessible-access",[5635],{"type":38,"value":5636},"Service Design for Accessible Access",{"type":24,"tag":41,"props":5638,"children":5639},{},[5640],{"type":38,"value":5641},"Our digital service has been designed to enable people with\nvarious limitations equivalent use.\nWe base this on the following principles:",{"type":24,"tag":740,"props":5643,"children":5644},{},[5645,5650,5655,5660,5665,5670,5675,5680],{"type":24,"tag":744,"props":5646,"children":5647},{},[5648],{"type":38,"value":5649},"High-contrast user interface design",{"type":24,"tag":744,"props":5651,"children":5652},{},[5653],{"type":38,"value":5654},"Providing information on multiple perception levels (text-based, auditory, visual)",{"type":24,"tag":744,"props":5656,"children":5657},{},[5658],{"type":38,"value":5659},"Alternative content for visual or auditory media",{"type":24,"tag":744,"props":5661,"children":5662},{},[5663],{"type":38,"value":5664},"Operation of all functions via keyboard",{"type":24,"tag":744,"props":5666,"children":5667},{},[5668],{"type":38,"value":5669},"Support for screen readers and comparable assistive technologies",{"type":24,"tag":744,"props":5671,"children":5672},{},[5673],{"type":38,"value":5674},"Avoiding time-critical interactions without accessible alternatives",{"type":24,"tag":744,"props":5676,"children":5677},{},[5678],{"type":38,"value":5679},"Using simple language and understandable content",{"type":24,"tag":744,"props":5681,"children":5682},{},[5683],{"type":38,"value":5684},"Intuitive navigation and logically structured content",{"type":24,"tag":477,"props":5686,"children":5688},{"id":5687},"general-accessible-information-provision",[5689],{"type":38,"value":5690},"General Accessible Information Provision",{"type":24,"tag":41,"props":5692,"children":5693},{},[5694],{"type":38,"value":5695},"Information about our services is conveyed to users so that they:",{"type":24,"tag":740,"props":5697,"children":5698},{},[5699,5704,5709,5714,5719,5724,5729],{"type":24,"tag":744,"props":5700,"children":5701},{},[5702],{"type":38,"value":5703},"can be perceived through multiple user senses (e.g., visually and/or auditorily),",{"type":24,"tag":744,"props":5705,"children":5706},{},[5707],{"type":38,"value":5708},"are provided in an easily findable way for users,",{"type":24,"tag":744,"props":5710,"children":5711},{},[5712],{"type":38,"value":5713},"are written in an understandable manner,",{"type":24,"tag":744,"props":5715,"children":5716},{},[5717],{"type":38,"value":5718},"are available in a universal text format (font, size, contrasts, spacing) to enable conversions to assistive output forms,",{"type":24,"tag":744,"props":5720,"children":5721},{},[5722],{"type":38,"value":5723},"are designed with easily readable font size, appropriate typography, and sufficient contrast and spacing,",{"type":24,"tag":744,"props":5725,"children":5726},{},[5727],{"type":38,"value":5728},"provide alternative textual descriptions for non-text content,",{"type":24,"tag":744,"props":5730,"children":5731},{},[5732],{"type":38,"value":5733},"are digitally designed to function consistently, accessibly, intuitively, and stably.",{"type":24,"tag":41,"props":5735,"children":5736},{},[5737,5739,5744,5745,5750,5751,5756,5757,5762,5764,5770],{"type":38,"value":5738},"Both our web offerings, digital services, and mobile applications\nfollow these principles.\nThe design consistently follows the principles of\n",{"type":24,"tag":772,"props":5740,"children":5741},{},[5742],{"type":38,"value":5743},"Perceivability",{"type":38,"value":3854},{"type":24,"tag":772,"props":5746,"children":5747},{},[5748],{"type":38,"value":5749},"Operability",{"type":38,"value":3854},{"type":24,"tag":772,"props":5752,"children":5753},{},[5754],{"type":38,"value":5755},"Understandability",{"type":38,"value":3861},{"type":24,"tag":772,"props":5758,"children":5759},{},[5760],{"type":38,"value":5761},"Robustness",{"type":38,"value":5763},"\n(according to ",{"type":24,"tag":47,"props":5765,"children":5767},{"href":5766},"https://www.barrierefreiheit-dienstekonsolidierung.bund.de/Webs/PB/DE/gesetze-und-richtlinien/wcag/wcag-artikel.html",[5768],{"type":38,"value":5769},"WCAG criteria",{"type":38,"value":5771},").",{"type":24,"tag":477,"props":5773,"children":5775},{"id":5774},"accessibility-of-supporting-services",[5776],{"type":38,"value":5777},"Accessibility of Supporting Services",{"type":24,"tag":41,"props":5779,"children":5780},{},[5781],{"type":38,"value":5782},"When additional support services such as support hotlines, training offerings, or\ntechnical consulting are provided, we ensure that these services also\nmake accessibility information and compatibility accessible through accessible means.",{"type":24,"tag":477,"props":5784,"children":5786},{"id":5785},"functional-requirements-for-special-limitations",[5787],{"type":38,"value":5788},"Functional Requirements for Special Limitations",{"type":24,"tag":41,"props":5790,"children":5791},{},[5792],{"type":38,"value":5793},"Our services consider the following accessible interaction forms\nfor users:",{"type":24,"tag":740,"props":5795,"children":5796},{},[5797,5802,5807,5812,5817,5822],{"type":24,"tag":744,"props":5798,"children":5799},{},[5800],{"type":38,"value":5801},"For visual limitations: at least one option without visual elements and one that functions independently of color distinction.",{"type":24,"tag":744,"props":5803,"children":5804},{},[5805],{"type":38,"value":5806},"For people with hearing limitations: at least one usage option without sound and one with adjustable audio functions.",{"type":24,"tag":744,"props":5808,"children":5809},{},[5810],{"type":38,"value":5811},"For vocally limited users: at least one operating variant without voice input.",{"type":24,"tag":744,"props":5813,"children":5814},{},[5815],{"type":38,"value":5816},"For motor-limited users: at least one operating form without complex movement sequences or muscle strength, as well as an option for limited reach.",{"type":24,"tag":744,"props":5818,"children":5819},{},[5820],{"type":38,"value":5821},"For people with cognitive limitations: user-friendly structures, reduced complexity where possible, and supportive hints.",{"type":24,"tag":744,"props":5823,"children":5824},{},[5825],{"type":38,"value":5826},"For all accessibility functions: User privacy is maintained.",{"type":24,"tag":41,"props":5828,"children":5829},{},[5830,5832,5836],{"type":38,"value":5831},"These measures are oriented toward the requirements of the\n",{"type":24,"tag":772,"props":5833,"children":5834},{},[5835],{"type":38,"value":4628},{"type":38,"value":5837}," and have been integrated into our technical and\ndesign processes to ensure the most comprehensive accessibility possible.",{"type":24,"tag":33,"props":5839,"children":5841},{"id":5840},"what-are-the-consequences-without-an-as",[5842],{"type":38,"value":5843},"What Are the Consequences Without an AS?",{"type":24,"tag":41,"props":5845,"children":5846},{},[5847,5849,5858],{"type":38,"value":5848},"Without a valid and verifiable statement, according to ",{"type":24,"tag":47,"props":5850,"children":5852},{"href":5851},"https://bfsg-gesetz.de/37-bfsg/",[5853],{"type":24,"tag":772,"props":5854,"children":5855},{},[5856],{"type":38,"value":5857},"§ 37 BFSG",{"type":38,"value":5859},", the following can happen:",{"type":24,"tag":740,"props":5861,"children":5862},{},[5863,5868,5873,5878],{"type":24,"tag":744,"props":5864,"children":5865},{},[5866],{"type":38,"value":5867},"Operating or distribution ban (of the respective services or products)",{"type":24,"tag":744,"props":5869,"children":5870},{},[5871],{"type":38,"value":5872},"Fines up to 100,000 euros (depending on the violation)",{"type":24,"tag":744,"props":5874,"children":5875},{},[5876],{"type":38,"value":5877},"Formal objection by market surveillance",{"type":24,"tag":744,"props":5879,"children":5880},{},[5881],{"type":38,"value":5882},"Warnings from competitors or consumer organizations",{"type":24,"tag":41,"props":5884,"children":5885},{},[5886,5888,5896],{"type":38,"value":5887},"This is particularly relevant\n",{"type":24,"tag":772,"props":5889,"children":5890},{},[5891],{"type":24,"tag":3223,"props":5892,"children":5893},{},[5894],{"type":38,"value":5895},"because any institution, company, or natural person can alert inspection bodies to a violation of the BFSG",{"type":38,"value":5897},". Thus, it can be assumed\nthat at least your competition will pay close attention to this!",{"type":24,"tag":33,"props":5899,"children":5901},{"id":5900},"conclusion-clarity-protects-against-warnings",[5902],{"type":38,"value":5903},"Conclusion - Clarity Protects Against Warnings",{"type":24,"tag":41,"props":5905,"children":5906},{},[5907,5908,5912],{"type":38,"value":4445},{"type":24,"tag":772,"props":5909,"children":5910},{},[5911],{"type":38,"value":4721},{"type":38,"value":5913}," is only a small part of your digital service but with great impact.\nThose who take it seriously and individually tailor it to their own service show not only legal compliance,\nbut also respect toward all users. It also protects against legal pitfalls and economic damage.",{"type":24,"tag":41,"props":5915,"children":5916},{},[5917],{"type":38,"value":5918},"If you need support in creating or formulating one, please contact us.\nWe help create accessible web applications and show how you can meaningfully\nimplement legal requirements.",{"type":24,"tag":760,"props":5920,"children":5922},{"id":5921},"legal-notice",[5923],{"type":38,"value":5924},"Legal Notice",{"type":24,"tag":41,"props":5926,"children":5927},{},[5928,5930,5938,5939,5944,5946,5951,5952,5957,5959,5963],{"type":38,"value":5929},"This blog post ",{"type":24,"tag":772,"props":5931,"children":5932},{},[5933],{"type":24,"tag":3223,"props":5934,"children":5935},{},[5936],{"type":38,"value":5937},"does not constitute legal advice",{"type":38,"value":5022},{"type":24,"tag":772,"props":5940,"children":5941},{},[5942],{"type":38,"value":5943},"does not replace legal review of your accessibility statement",{"type":38,"value":5945},". The contained formulations and hints have been carefully researched, but make ",{"type":24,"tag":772,"props":5947,"children":5948},{},[5949],{"type":38,"value":5950},"no claim to completeness",{"type":38,"value":4001},{"type":24,"tag":772,"props":5953,"children":5954},{},[5955],{"type":38,"value":5956},"legal binding",{"type":38,"value":5958},". For actual implementation according to ",{"type":24,"tag":772,"props":5960,"children":5961},{},[5962],{"type":38,"value":3523},{"type":38,"value":5964}," and applicable regulations, legal review in individual cases is recommended.",{"type":24,"tag":760,"props":5966,"children":5968},{"id":5967},"note-on-creating-this-post",[5969],{"type":38,"value":5970},"Note on Creating This Post",{"type":24,"tag":41,"props":5972,"children":5973},{},[5974],{"type":38,"value":5975},"This post was also created and translated with the help of AI OpenAI GPT-4 (2024-06, Model: GPT-4o). The basis was editorial research, personal experiences, legal sources, and a company template. Final editing and professional approval were done by the article author and accessibility officer Dr.-Ing. Jens Bornschein.",{"title":7,"searchDepth":85,"depth":85,"links":5977},[5978,5979,5980,5983,5984,5987,5988],{"id":4507,"depth":85,"text":4510},{"id":4615,"depth":85,"text":4618},{"id":4726,"depth":85,"text":4729,"children":5981},[5982],{"id":5298,"depth":98,"text":5301},{"id":5445,"depth":85,"text":5448},{"id":5508,"depth":85,"text":5511,"children":5985},[5986],{"id":5618,"depth":98,"text":5621},{"id":5840,"depth":85,"text":5843},{"id":5900,"depth":85,"text":5903},{"_path":5990,"_dir":3079,"_draft":6,"_partial":6,"_locale":7,"slug":3051,"teams":5991,"primaryTeam":3081,"firstName":5992,"lastName":5993,"prefixTitle":5994,"suffixTitle":7,"executiveRole":5995,"education":5996,"role":6004,"workingSince":6003,"inTheCompanySince":6000,"techSkills":6007,"skills":6029,"projects":6041,"contactDetails":6047,"certifications":6050,"image":6056,"_id":6057,"_type":3172,"title":6058,"_source":3079,"_file":6059,"_stem":6060,"_extension":3172},"/employees/jens-bornschein",[3081],"Jens","Bornschein","Dr. Ing.","Projektmanager | Consultant",[5997,6001],[5998,5999,6000],"Doktor-Ingenieur der Informatik","TU Dresden","2020",[6002,5999,6003],"Diplom-Medieninformatiker (TU)","2010",[6005,3092,3093,6006,3148,3095],"projectManager","UI/UX",[6008,6009,6012,6013,6014,6016,6018,6021,6024,6027],{"name":3130,"level":3101},{"name":6010,"level":3101,"icon":6011},"C#","/images/csharp.svg",{"name":3123,"level":3124,"icon":3125},{"name":3127,"level":3124,"icon":3128},{"name":6015,"level":3124,"icon":3136},"Vue.js",{"name":6017,"level":3124},"Java",{"name":6019,"level":3101,"icon":6020},"Adobe Photoshop","/images/adobeps-logo.svg",{"name":6022,"level":3101,"icon":6023},"Adobe Illustrator","/images/adobeai-logo.svg",{"name":6025,"level":3124,"icon":6026},"Adobe XD","/images/adobexd-logo.svg",{"name":6028,"level":3124},"Gitlab",[6030,6032,6033,6034,6036,6038,6039],{"name":6031,"level":3101},"projectManagement",{"name":3148,"level":3101},{"name":6006,"level":3101},{"name":6035,"level":3124},"consulting",{"name":6037,"level":3124},"scrum",{"name":3154,"level":3124},{"name":6040,"level":3124},"training",[6042,6045],{"project":6043,"position":6044},"Montagespezis","project manager",{"project":6046,"position":6044},"Vipr",{"eMail":6048,"phone":6049,"visibility":3168},"jens.bornschein@helmundwalter.de","+49 351 799 035 24",[6051],{"image":6052,"link":6053,"title":6054,"pdf":6055},"/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","Jens Bornschein","employees/5.jens-bornschein.json","employees/5.jens-bornschein",1782284057125]