[{"data":1,"prerenderedAt":894},["Reactive",2],{"blog/umami-portainer-traefik":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"draft":6,"external":6,"categories":10,"date":12,"body":13,"_type":888,"_id":889,"_source":890,"_file":891,"_stem":892,"_extension":893},"/blog/umami-portainer-traefik","blog",false,"","Umami + Portainer + Traefik = ❤️‍🔥","Hosting Umami with Portainer and Exposing with Traefik",[11],"Tinkering","2024-03-15T00:00:00.000Z",{"type":14,"children":15,"toc":885},"root",[16,24,29,36,41,63,87,94,874,879],{"type":17,"tag":18,"props":19,"children":20},"element","p",{},[21],{"type":22,"value":23},"text","Hit some hurdles with self-hosting Umami with Portainer and exposing it properly\nwith Traefik... so just sharing the recipe and some tips!",{"type":17,"tag":18,"props":25,"children":26},{},[27],{"type":22,"value":28},"This will assume you have a working Traefik + Portainer setup. You will find\nseveral tutorials on how to make that work 😅.",{"type":17,"tag":30,"props":31,"children":33},"h3",{"id":32},"tips",[34],{"type":22,"value":35},"Tips",{"type":17,"tag":18,"props":37,"children":38},{},[39],{"type":22,"value":40},"Make sure you properly configure CORS middleware - besides the origin, everything else should do fine.",{"type":17,"tag":18,"props":42,"children":43},{},[44,46,53,55,61],{"type":22,"value":45},"For me, ",{"type":17,"tag":47,"props":48,"children":50},"code",{"className":49},[],[51],{"type":22,"value":52},"existing_network",{"type":22,"value":54}," is a bridge network where traefik is configured and from where it receives all the trafik.\nConsidering we are connecting to the Postgre instance through a different network (umami), ",{"type":17,"tag":47,"props":56,"children":58},{"className":57},[],[59],{"type":22,"value":60},"traefik.docker.network",{"type":22,"value":62}," is very\nimportant for traefik to know from which network to listen for requests.",{"type":17,"tag":18,"props":64,"children":65},{},[66,68,77,79,85],{"type":22,"value":67},"In case you are trying to collect analytics from a Nuxt site using ",{"type":17,"tag":69,"props":70,"children":74},"a",{"href":71,"rel":72},"https://github.com/ijkml/nuxt-umami",[73],"nofollow",[75],{"type":22,"value":76},"nuxt-umami",{"type":22,"value":78}," make\nsure you configure it with ",{"type":17,"tag":47,"props":80,"children":82},{"className":81},[],[83],{"type":22,"value":84},"version: 2",{"type":22,"value":86},".",{"type":17,"tag":88,"props":89,"children":91},"h4",{"id":90},"docker-composeyml",[92],{"type":22,"value":93},"docker-compose.yml",{"type":17,"tag":95,"props":96,"children":100},"pre",{"className":97,"code":98,"language":99,"meta":7,"style":7},"language-yaml shiki shiki-themes github-dark","version: \"3.7\"\nservices:\n  umami:\n    image: ghcr.io/umami-software/umami:postgresql-latest\n    environment:\n      - TRACKER_SCRIPT_NAME=getinfo\n      - APP_SECRET=random_string\n      - DATABASE_URL=${DATABASE_URL}\n      - DATABASE_TYPE=${DATABASE_TYPE}\n      - HASH_SALT=${HASH_SALT}\n      - POSTGRES_DB=${POSTGRES_DB}\n      - POSTGRES_USER=${POSTGRES_USER}\n      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}\n    ports:\n      - 33000:3000\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.docker.network=existing_network\"\n      - \"traefik.constraint-label=existing_network\"\n      - \"traefik.http.routers.umami.rule=Host(`\u003Cyour domain>`)\"\n      - \"traefik.http.routers.umami.priority=3\"\n      - \"traefik.http.services.umami.loadbalancer.server.port=3000\"\n      - \"traefik.http.routers.umami.middlewares=traefik-https-redirect,umami_cors\"\n      - \"traefik.http.routers.umami.tls=true\"\n      - \"traefik.http.routers.umami.tls.certresolver=\u003Cyour-resolver>\"\n      - \"traefik.http.middlewares.umami_cors.headers.accesscontrolallowmethods=GET,OPTIONS,PUT\"\n      - \"traefik.http.middlewares.umami_cors.headers.accesscontrolallowheaders=*\"\n      - \"traefik.http.middlewares.umami_cors.headers.accesscontrolalloworiginlist=https://tere.ro\"\n      - \"traefik.http.middlewares.umami_cors.headers.accesscontrolmaxage=100\"\n      - \"traefik.http.middlewares.umami_cors.headers.addvaryheader=true\"\n    networks:\n      - umami\n      - existing_network\n    depends_on:\n      - db\n    restart: always\n  db:\n    image: postgres:15-alpine\n    environment:\n      - DATABASE_URL=${DATABASE_URL}\n      - DATABASE_TYPE=${DATABASE_TYPE}\n      - HASH_SALT=${HASH_SALT}\n      - POSTGRES_DB=${POSTGRES_DB}\n      - POSTGRES_USER=${POSTGRES_USER}\n      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}\n    networks:\n      - umami\n    volumes:\n      - db:/var/lib/postgresql/data\n    restart: always\nvolumes:\n  db:\nnetworks:\n  existing_network:\n    external: true\n  umami:\n    external: false\n","yaml",[101],{"type":17,"tag":47,"props":102,"children":103},{"__ignoreMap":7},[104,128,142,155,173,186,200,213,226,239,252,265,278,291,304,317,330,343,356,369,382,395,408,421,434,447,460,473,486,499,512,525,538,551,564,577,595,608,625,637,649,661,673,685,697,709,721,733,746,759,775,788,800,813,826,845,857],{"type":17,"tag":105,"props":106,"children":109},"span",{"class":107,"line":108},"line",1,[110,116,122],{"type":17,"tag":105,"props":111,"children":113},{"style":112},"--shiki-default:#85E89D",[114],{"type":22,"value":115},"version",{"type":17,"tag":105,"props":117,"children":119},{"style":118},"--shiki-default:#E1E4E8",[120],{"type":22,"value":121},": ",{"type":17,"tag":105,"props":123,"children":125},{"style":124},"--shiki-default:#9ECBFF",[126],{"type":22,"value":127},"\"3.7\"\n",{"type":17,"tag":105,"props":129,"children":131},{"class":107,"line":130},2,[132,137],{"type":17,"tag":105,"props":133,"children":134},{"style":112},[135],{"type":22,"value":136},"services",{"type":17,"tag":105,"props":138,"children":139},{"style":118},[140],{"type":22,"value":141},":\n",{"type":17,"tag":105,"props":143,"children":145},{"class":107,"line":144},3,[146,151],{"type":17,"tag":105,"props":147,"children":148},{"style":112},[149],{"type":22,"value":150},"  umami",{"type":17,"tag":105,"props":152,"children":153},{"style":118},[154],{"type":22,"value":141},{"type":17,"tag":105,"props":156,"children":158},{"class":107,"line":157},4,[159,164,168],{"type":17,"tag":105,"props":160,"children":161},{"style":112},[162],{"type":22,"value":163},"    image",{"type":17,"tag":105,"props":165,"children":166},{"style":118},[167],{"type":22,"value":121},{"type":17,"tag":105,"props":169,"children":170},{"style":124},[171],{"type":22,"value":172},"ghcr.io/umami-software/umami:postgresql-latest\n",{"type":17,"tag":105,"props":174,"children":176},{"class":107,"line":175},5,[177,182],{"type":17,"tag":105,"props":178,"children":179},{"style":112},[180],{"type":22,"value":181},"    environment",{"type":17,"tag":105,"props":183,"children":184},{"style":118},[185],{"type":22,"value":141},{"type":17,"tag":105,"props":187,"children":189},{"class":107,"line":188},6,[190,195],{"type":17,"tag":105,"props":191,"children":192},{"style":118},[193],{"type":22,"value":194},"      - ",{"type":17,"tag":105,"props":196,"children":197},{"style":124},[198],{"type":22,"value":199},"TRACKER_SCRIPT_NAME=getinfo\n",{"type":17,"tag":105,"props":201,"children":203},{"class":107,"line":202},7,[204,208],{"type":17,"tag":105,"props":205,"children":206},{"style":118},[207],{"type":22,"value":194},{"type":17,"tag":105,"props":209,"children":210},{"style":124},[211],{"type":22,"value":212},"APP_SECRET=random_string\n",{"type":17,"tag":105,"props":214,"children":216},{"class":107,"line":215},8,[217,221],{"type":17,"tag":105,"props":218,"children":219},{"style":118},[220],{"type":22,"value":194},{"type":17,"tag":105,"props":222,"children":223},{"style":124},[224],{"type":22,"value":225},"DATABASE_URL=${DATABASE_URL}\n",{"type":17,"tag":105,"props":227,"children":229},{"class":107,"line":228},9,[230,234],{"type":17,"tag":105,"props":231,"children":232},{"style":118},[233],{"type":22,"value":194},{"type":17,"tag":105,"props":235,"children":236},{"style":124},[237],{"type":22,"value":238},"DATABASE_TYPE=${DATABASE_TYPE}\n",{"type":17,"tag":105,"props":240,"children":242},{"class":107,"line":241},10,[243,247],{"type":17,"tag":105,"props":244,"children":245},{"style":118},[246],{"type":22,"value":194},{"type":17,"tag":105,"props":248,"children":249},{"style":124},[250],{"type":22,"value":251},"HASH_SALT=${HASH_SALT}\n",{"type":17,"tag":105,"props":253,"children":255},{"class":107,"line":254},11,[256,260],{"type":17,"tag":105,"props":257,"children":258},{"style":118},[259],{"type":22,"value":194},{"type":17,"tag":105,"props":261,"children":262},{"style":124},[263],{"type":22,"value":264},"POSTGRES_DB=${POSTGRES_DB}\n",{"type":17,"tag":105,"props":266,"children":268},{"class":107,"line":267},12,[269,273],{"type":17,"tag":105,"props":270,"children":271},{"style":118},[272],{"type":22,"value":194},{"type":17,"tag":105,"props":274,"children":275},{"style":124},[276],{"type":22,"value":277},"POSTGRES_USER=${POSTGRES_USER}\n",{"type":17,"tag":105,"props":279,"children":281},{"class":107,"line":280},13,[282,286],{"type":17,"tag":105,"props":283,"children":284},{"style":118},[285],{"type":22,"value":194},{"type":17,"tag":105,"props":287,"children":288},{"style":124},[289],{"type":22,"value":290},"POSTGRES_PASSWORD=${POSTGRES_PASSWORD}\n",{"type":17,"tag":105,"props":292,"children":294},{"class":107,"line":293},14,[295,300],{"type":17,"tag":105,"props":296,"children":297},{"style":112},[298],{"type":22,"value":299},"    ports",{"type":17,"tag":105,"props":301,"children":302},{"style":118},[303],{"type":22,"value":141},{"type":17,"tag":105,"props":305,"children":307},{"class":107,"line":306},15,[308,312],{"type":17,"tag":105,"props":309,"children":310},{"style":118},[311],{"type":22,"value":194},{"type":17,"tag":105,"props":313,"children":314},{"style":124},[315],{"type":22,"value":316},"33000:3000\n",{"type":17,"tag":105,"props":318,"children":320},{"class":107,"line":319},16,[321,326],{"type":17,"tag":105,"props":322,"children":323},{"style":112},[324],{"type":22,"value":325},"    labels",{"type":17,"tag":105,"props":327,"children":328},{"style":118},[329],{"type":22,"value":141},{"type":17,"tag":105,"props":331,"children":333},{"class":107,"line":332},17,[334,338],{"type":17,"tag":105,"props":335,"children":336},{"style":118},[337],{"type":22,"value":194},{"type":17,"tag":105,"props":339,"children":340},{"style":124},[341],{"type":22,"value":342},"\"traefik.enable=true\"\n",{"type":17,"tag":105,"props":344,"children":346},{"class":107,"line":345},18,[347,351],{"type":17,"tag":105,"props":348,"children":349},{"style":118},[350],{"type":22,"value":194},{"type":17,"tag":105,"props":352,"children":353},{"style":124},[354],{"type":22,"value":355},"\"traefik.docker.network=existing_network\"\n",{"type":17,"tag":105,"props":357,"children":359},{"class":107,"line":358},19,[360,364],{"type":17,"tag":105,"props":361,"children":362},{"style":118},[363],{"type":22,"value":194},{"type":17,"tag":105,"props":365,"children":366},{"style":124},[367],{"type":22,"value":368},"\"traefik.constraint-label=existing_network\"\n",{"type":17,"tag":105,"props":370,"children":372},{"class":107,"line":371},20,[373,377],{"type":17,"tag":105,"props":374,"children":375},{"style":118},[376],{"type":22,"value":194},{"type":17,"tag":105,"props":378,"children":379},{"style":124},[380],{"type":22,"value":381},"\"traefik.http.routers.umami.rule=Host(`\u003Cyour domain>`)\"\n",{"type":17,"tag":105,"props":383,"children":385},{"class":107,"line":384},21,[386,390],{"type":17,"tag":105,"props":387,"children":388},{"style":118},[389],{"type":22,"value":194},{"type":17,"tag":105,"props":391,"children":392},{"style":124},[393],{"type":22,"value":394},"\"traefik.http.routers.umami.priority=3\"\n",{"type":17,"tag":105,"props":396,"children":398},{"class":107,"line":397},22,[399,403],{"type":17,"tag":105,"props":400,"children":401},{"style":118},[402],{"type":22,"value":194},{"type":17,"tag":105,"props":404,"children":405},{"style":124},[406],{"type":22,"value":407},"\"traefik.http.services.umami.loadbalancer.server.port=3000\"\n",{"type":17,"tag":105,"props":409,"children":411},{"class":107,"line":410},23,[412,416],{"type":17,"tag":105,"props":413,"children":414},{"style":118},[415],{"type":22,"value":194},{"type":17,"tag":105,"props":417,"children":418},{"style":124},[419],{"type":22,"value":420},"\"traefik.http.routers.umami.middlewares=traefik-https-redirect,umami_cors\"\n",{"type":17,"tag":105,"props":422,"children":424},{"class":107,"line":423},24,[425,429],{"type":17,"tag":105,"props":426,"children":427},{"style":118},[428],{"type":22,"value":194},{"type":17,"tag":105,"props":430,"children":431},{"style":124},[432],{"type":22,"value":433},"\"traefik.http.routers.umami.tls=true\"\n",{"type":17,"tag":105,"props":435,"children":437},{"class":107,"line":436},25,[438,442],{"type":17,"tag":105,"props":439,"children":440},{"style":118},[441],{"type":22,"value":194},{"type":17,"tag":105,"props":443,"children":444},{"style":124},[445],{"type":22,"value":446},"\"traefik.http.routers.umami.tls.certresolver=\u003Cyour-resolver>\"\n",{"type":17,"tag":105,"props":448,"children":450},{"class":107,"line":449},26,[451,455],{"type":17,"tag":105,"props":452,"children":453},{"style":118},[454],{"type":22,"value":194},{"type":17,"tag":105,"props":456,"children":457},{"style":124},[458],{"type":22,"value":459},"\"traefik.http.middlewares.umami_cors.headers.accesscontrolallowmethods=GET,OPTIONS,PUT\"\n",{"type":17,"tag":105,"props":461,"children":463},{"class":107,"line":462},27,[464,468],{"type":17,"tag":105,"props":465,"children":466},{"style":118},[467],{"type":22,"value":194},{"type":17,"tag":105,"props":469,"children":470},{"style":124},[471],{"type":22,"value":472},"\"traefik.http.middlewares.umami_cors.headers.accesscontrolallowheaders=*\"\n",{"type":17,"tag":105,"props":474,"children":476},{"class":107,"line":475},28,[477,481],{"type":17,"tag":105,"props":478,"children":479},{"style":118},[480],{"type":22,"value":194},{"type":17,"tag":105,"props":482,"children":483},{"style":124},[484],{"type":22,"value":485},"\"traefik.http.middlewares.umami_cors.headers.accesscontrolalloworiginlist=https://tere.ro\"\n",{"type":17,"tag":105,"props":487,"children":489},{"class":107,"line":488},29,[490,494],{"type":17,"tag":105,"props":491,"children":492},{"style":118},[493],{"type":22,"value":194},{"type":17,"tag":105,"props":495,"children":496},{"style":124},[497],{"type":22,"value":498},"\"traefik.http.middlewares.umami_cors.headers.accesscontrolmaxage=100\"\n",{"type":17,"tag":105,"props":500,"children":502},{"class":107,"line":501},30,[503,507],{"type":17,"tag":105,"props":504,"children":505},{"style":118},[506],{"type":22,"value":194},{"type":17,"tag":105,"props":508,"children":509},{"style":124},[510],{"type":22,"value":511},"\"traefik.http.middlewares.umami_cors.headers.addvaryheader=true\"\n",{"type":17,"tag":105,"props":513,"children":515},{"class":107,"line":514},31,[516,521],{"type":17,"tag":105,"props":517,"children":518},{"style":112},[519],{"type":22,"value":520},"    networks",{"type":17,"tag":105,"props":522,"children":523},{"style":118},[524],{"type":22,"value":141},{"type":17,"tag":105,"props":526,"children":528},{"class":107,"line":527},32,[529,533],{"type":17,"tag":105,"props":530,"children":531},{"style":118},[532],{"type":22,"value":194},{"type":17,"tag":105,"props":534,"children":535},{"style":124},[536],{"type":22,"value":537},"umami\n",{"type":17,"tag":105,"props":539,"children":541},{"class":107,"line":540},33,[542,546],{"type":17,"tag":105,"props":543,"children":544},{"style":118},[545],{"type":22,"value":194},{"type":17,"tag":105,"props":547,"children":548},{"style":124},[549],{"type":22,"value":550},"existing_network\n",{"type":17,"tag":105,"props":552,"children":554},{"class":107,"line":553},34,[555,560],{"type":17,"tag":105,"props":556,"children":557},{"style":112},[558],{"type":22,"value":559},"    depends_on",{"type":17,"tag":105,"props":561,"children":562},{"style":118},[563],{"type":22,"value":141},{"type":17,"tag":105,"props":565,"children":567},{"class":107,"line":566},35,[568,572],{"type":17,"tag":105,"props":569,"children":570},{"style":118},[571],{"type":22,"value":194},{"type":17,"tag":105,"props":573,"children":574},{"style":124},[575],{"type":22,"value":576},"db\n",{"type":17,"tag":105,"props":578,"children":580},{"class":107,"line":579},36,[581,586,590],{"type":17,"tag":105,"props":582,"children":583},{"style":112},[584],{"type":22,"value":585},"    restart",{"type":17,"tag":105,"props":587,"children":588},{"style":118},[589],{"type":22,"value":121},{"type":17,"tag":105,"props":591,"children":592},{"style":124},[593],{"type":22,"value":594},"always\n",{"type":17,"tag":105,"props":596,"children":598},{"class":107,"line":597},37,[599,604],{"type":17,"tag":105,"props":600,"children":601},{"style":112},[602],{"type":22,"value":603},"  db",{"type":17,"tag":105,"props":605,"children":606},{"style":118},[607],{"type":22,"value":141},{"type":17,"tag":105,"props":609,"children":611},{"class":107,"line":610},38,[612,616,620],{"type":17,"tag":105,"props":613,"children":614},{"style":112},[615],{"type":22,"value":163},{"type":17,"tag":105,"props":617,"children":618},{"style":118},[619],{"type":22,"value":121},{"type":17,"tag":105,"props":621,"children":622},{"style":124},[623],{"type":22,"value":624},"postgres:15-alpine\n",{"type":17,"tag":105,"props":626,"children":628},{"class":107,"line":627},39,[629,633],{"type":17,"tag":105,"props":630,"children":631},{"style":112},[632],{"type":22,"value":181},{"type":17,"tag":105,"props":634,"children":635},{"style":118},[636],{"type":22,"value":141},{"type":17,"tag":105,"props":638,"children":640},{"class":107,"line":639},40,[641,645],{"type":17,"tag":105,"props":642,"children":643},{"style":118},[644],{"type":22,"value":194},{"type":17,"tag":105,"props":646,"children":647},{"style":124},[648],{"type":22,"value":225},{"type":17,"tag":105,"props":650,"children":652},{"class":107,"line":651},41,[653,657],{"type":17,"tag":105,"props":654,"children":655},{"style":118},[656],{"type":22,"value":194},{"type":17,"tag":105,"props":658,"children":659},{"style":124},[660],{"type":22,"value":238},{"type":17,"tag":105,"props":662,"children":664},{"class":107,"line":663},42,[665,669],{"type":17,"tag":105,"props":666,"children":667},{"style":118},[668],{"type":22,"value":194},{"type":17,"tag":105,"props":670,"children":671},{"style":124},[672],{"type":22,"value":251},{"type":17,"tag":105,"props":674,"children":676},{"class":107,"line":675},43,[677,681],{"type":17,"tag":105,"props":678,"children":679},{"style":118},[680],{"type":22,"value":194},{"type":17,"tag":105,"props":682,"children":683},{"style":124},[684],{"type":22,"value":264},{"type":17,"tag":105,"props":686,"children":688},{"class":107,"line":687},44,[689,693],{"type":17,"tag":105,"props":690,"children":691},{"style":118},[692],{"type":22,"value":194},{"type":17,"tag":105,"props":694,"children":695},{"style":124},[696],{"type":22,"value":277},{"type":17,"tag":105,"props":698,"children":700},{"class":107,"line":699},45,[701,705],{"type":17,"tag":105,"props":702,"children":703},{"style":118},[704],{"type":22,"value":194},{"type":17,"tag":105,"props":706,"children":707},{"style":124},[708],{"type":22,"value":290},{"type":17,"tag":105,"props":710,"children":712},{"class":107,"line":711},46,[713,717],{"type":17,"tag":105,"props":714,"children":715},{"style":112},[716],{"type":22,"value":520},{"type":17,"tag":105,"props":718,"children":719},{"style":118},[720],{"type":22,"value":141},{"type":17,"tag":105,"props":722,"children":724},{"class":107,"line":723},47,[725,729],{"type":17,"tag":105,"props":726,"children":727},{"style":118},[728],{"type":22,"value":194},{"type":17,"tag":105,"props":730,"children":731},{"style":124},[732],{"type":22,"value":537},{"type":17,"tag":105,"props":734,"children":736},{"class":107,"line":735},48,[737,742],{"type":17,"tag":105,"props":738,"children":739},{"style":112},[740],{"type":22,"value":741},"    volumes",{"type":17,"tag":105,"props":743,"children":744},{"style":118},[745],{"type":22,"value":141},{"type":17,"tag":105,"props":747,"children":749},{"class":107,"line":748},49,[750,754],{"type":17,"tag":105,"props":751,"children":752},{"style":118},[753],{"type":22,"value":194},{"type":17,"tag":105,"props":755,"children":756},{"style":124},[757],{"type":22,"value":758},"db:/var/lib/postgresql/data\n",{"type":17,"tag":105,"props":760,"children":762},{"class":107,"line":761},50,[763,767,771],{"type":17,"tag":105,"props":764,"children":765},{"style":112},[766],{"type":22,"value":585},{"type":17,"tag":105,"props":768,"children":769},{"style":118},[770],{"type":22,"value":121},{"type":17,"tag":105,"props":772,"children":773},{"style":124},[774],{"type":22,"value":594},{"type":17,"tag":105,"props":776,"children":778},{"class":107,"line":777},51,[779,784],{"type":17,"tag":105,"props":780,"children":781},{"style":112},[782],{"type":22,"value":783},"volumes",{"type":17,"tag":105,"props":785,"children":786},{"style":118},[787],{"type":22,"value":141},{"type":17,"tag":105,"props":789,"children":791},{"class":107,"line":790},52,[792,796],{"type":17,"tag":105,"props":793,"children":794},{"style":112},[795],{"type":22,"value":603},{"type":17,"tag":105,"props":797,"children":798},{"style":118},[799],{"type":22,"value":141},{"type":17,"tag":105,"props":801,"children":803},{"class":107,"line":802},53,[804,809],{"type":17,"tag":105,"props":805,"children":806},{"style":112},[807],{"type":22,"value":808},"networks",{"type":17,"tag":105,"props":810,"children":811},{"style":118},[812],{"type":22,"value":141},{"type":17,"tag":105,"props":814,"children":816},{"class":107,"line":815},54,[817,822],{"type":17,"tag":105,"props":818,"children":819},{"style":112},[820],{"type":22,"value":821},"  existing_network",{"type":17,"tag":105,"props":823,"children":824},{"style":118},[825],{"type":22,"value":141},{"type":17,"tag":105,"props":827,"children":829},{"class":107,"line":828},55,[830,835,839],{"type":17,"tag":105,"props":831,"children":832},{"style":112},[833],{"type":22,"value":834},"    external",{"type":17,"tag":105,"props":836,"children":837},{"style":118},[838],{"type":22,"value":121},{"type":17,"tag":105,"props":840,"children":842},{"style":841},"--shiki-default:#79B8FF",[843],{"type":22,"value":844},"true\n",{"type":17,"tag":105,"props":846,"children":848},{"class":107,"line":847},56,[849,853],{"type":17,"tag":105,"props":850,"children":851},{"style":112},[852],{"type":22,"value":150},{"type":17,"tag":105,"props":854,"children":855},{"style":118},[856],{"type":22,"value":141},{"type":17,"tag":105,"props":858,"children":860},{"class":107,"line":859},57,[861,865,869],{"type":17,"tag":105,"props":862,"children":863},{"style":112},[864],{"type":22,"value":834},{"type":17,"tag":105,"props":866,"children":867},{"style":118},[868],{"type":22,"value":121},{"type":17,"tag":105,"props":870,"children":871},{"style":841},[872],{"type":22,"value":873},"false\n",{"type":17,"tag":18,"props":875,"children":876},{},[877],{"type":22,"value":878},"🙏🏻",{"type":17,"tag":880,"props":881,"children":882},"style",{},[883],{"type":22,"value":884},"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);}",{"title":7,"searchDepth":130,"depth":130,"links":886},[887],{"id":32,"depth":144,"text":35},"markdown","content:blog:10.umami-portainer-traefik.md","content","blog/10.umami-portainer-traefik.md","blog/10.umami-portainer-traefik","md",1724422646755]