personal-website/posts/when-and-why-traefik/index.html

10 lines
24 KiB
HTML

<!doctype html><html lang=en dir=ltr class=scroll-smooth data-default-appearance=dark data-auto-appearance=true><head><meta charset=utf-8><meta http-equiv=content-language content="en"><meta name=viewport content="width=device-width,initial-scale=1"><meta name=theme-color content="rgb(255,255,255)"><meta http-equiv=x-ua-compatible content="ie=edge"><title>When and Why to use Traefik? &#183; baalajimaestro</title><meta name=title content="When and Why to use Traefik? &#183; baalajimaestro"><meta name=description content="Why use Traefik? # If you have seen me around in chats, I have been a heavy advocate of traefik over any other reverse proxy. I want you to use it as well for your deployments, if its suitable. Lemme dive into the pros of traefik over other reverse proxies first:
Traefik is fully docker-native, can pick configuration directly when you attach a few docker labels to your containers No sort of reload or restart is required for it to pick your newly put config No need to mess with files for 99% of your configuration."><link rel=canonical href=https://baalajimaestro.me/posts/when-and-why-traefik/><link type=text/css rel=stylesheet href=/css/main.bundle.min.a6debbb9c2752cfaaf987cbf5014fd1df44fb95b3494591ae67b7f8b99579a03.css integrity="sha256-pt67ucJ1LPqvmHy/UBT9HfRPuVs0lFka5nt/i5lXmgM="><script type=text/javascript src=/js/appearance.min.022d0ebc3b46a335eb1c7ef79b7f2de143d7cd5156d433638592ef1ce5f8554e.js integrity="sha256-Ai0OvDtGozXrHH73m38t4UPXzVFW1DNjhZLvHOX4VU4="></script>
<link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/favicon-16x16.png><link rel=manifest href=/site.webmanifest><meta property="og:title" content="When and Why to use Traefik?"><meta property="og:description" content="Why use Traefik? # If you have seen me around in chats, I have been a heavy advocate of traefik over any other reverse proxy. I want you to use it as well for your deployments, if its suitable. Lemme dive into the pros of traefik over other reverse proxies first:
Traefik is fully docker-native, can pick configuration directly when you attach a few docker labels to your containers No sort of reload or restart is required for it to pick your newly put config No need to mess with files for 99% of your configuration."><meta property="og:type" content="article"><meta property="og:url" content="https://baalajimaestro.me/posts/when-and-why-traefik/"><meta property="article:section" content="posts"><meta property="article:published_time" content="2022-08-09T21:24:00+05:30"><meta property="article:modified_time" content="2022-08-09T21:24:00+05:30"><meta name=twitter:card content="summary"><meta name=twitter:title content="When and Why to use Traefik?"><meta name=twitter:description content="Why use Traefik? # If you have seen me around in chats, I have been a heavy advocate of traefik over any other reverse proxy. I want you to use it as well for your deployments, if its suitable. Lemme dive into the pros of traefik over other reverse proxies first:
Traefik is fully docker-native, can pick configuration directly when you attach a few docker labels to your containers No sort of reload or restart is required for it to pick your newly put config No need to mess with files for 99% of your configuration."><script type=application/ld+json>[{"@context":"https://schema.org","@type":"Article","articleSection":"Blog","name":"When and Why to use Traefik?","headline":"When and Why to use Traefik?","abstract":"Why use Traefik? # If you have seen me around in chats, I have been a heavy advocate of traefik over any other reverse proxy. I want you to use it as well for your deployments, if its suitable. Lemme dive into the pros of traefik over other reverse proxies first:\nTraefik is fully docker-native, can pick configuration directly when you attach a few docker labels to your containers No sort of reload or restart is required for it to pick your newly put config No need to mess with files for 99% of your configuration.","inLanguage":"en","url":"https:\/\/baalajimaestro.me\/posts\/when-and-why-traefik\/","author":{"@type":"Person","name":"baalajimaestro"},"copyrightYear":"2022","dateCreated":"2022-08-09T21:24:00\u002b05:30","datePublished":"2022-08-09T21:24:00\u002b05:30","dateModified":"2022-08-09T21:24:00\u002b05:30","mainEntityOfPage":"true","wordCount":"469"}]</script><meta name=author content="baalajimaestro"><script>var _paq=window._paq=window._paq||[];_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),function(){e="https://counter.baalajimaestro.me/",_paq.push(["setTrackerUrl",e+"86eff12f2496"]),_paq.push(["setSiteId","1"]);var e,n=document,t=n.createElement("script"),s=n.getElementsByTagName("script")[0];t.async=!0,t.src=e+"dd168412e25a.js",s.parentNode.insertBefore(t,s)}()</script><script>window.location.hostname!=="baalajimaestro.me"&&window.location.hostname!=="www.baalajimaestro.me"&&window.location.replace("https://baalajimaestro.me"+window.location.pathname)</script></head><body class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"><div id=the-top class="absolute flex self-center"><a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" href=#main-content><span class="font-bold pe-2 text-primary-600 dark:text-primary-400">&darr;</span>Skip to main content</a></div><header class="py-6 font-semibold text-neutral-900 dark:text-neutral print:hidden sm:py-10"><nav class="flex items-start justify-between sm:items-center"><div class="flex flex-row items-center"><a class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2" rel=me href=/>baalajimaestro</a></div><ul class="flex list-none flex-col ltr:text-right rtl:text-left sm:flex-row"><li class="group mb-1 sm:mb-0 sm:me-7 sm:last:me-0.5"><a href=/about/ title="About Me"><span class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2">About</span></a></li><li class="group mb-1 sm:mb-0 sm:me-7 sm:last:me-0.5"><a href=/posts/ title=Blog><span class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2">Blog</span></a></li><li class="group mb-1 sm:mb-0 sm:me-7 sm:last:me-0.5"><a href=/contact/ title="Contact Me"><span class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2">Contact</span></a></li></ul></nav></header><div class="relative flex flex-col grow"><main id=main-content class=grow><article><header class=max-w-prose><ol class="text-sm text-neutral-500 dark:text-neutral-400 print:hidden"><li class="inline hidden"><a class="hover:underline decoration-neutral-300 dark:underline-neutral-600" href=/>baalajimaestro</a><span class="px-1 text-primary-500">/</span></li><li class=inline><a class="hover:underline decoration-neutral-300 dark:underline-neutral-600" href=/posts/>Blog</a><span class="px-1 text-primary-500">/</span></li><li class="inline hidden"><a class="hover:underline decoration-neutral-300 dark:underline-neutral-600" href=/posts/when-and-why-traefik/>When and Why to use Traefik?</a><span class="px-1 text-primary-500">/</span></li></ol><h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">When and Why to use Traefik?</h1><div class="mt-8 mb-12 text-base text-neutral-500 dark:text-neutral-400 print:hidden"><div class="flex flex-row flex-wrap items-center"><time datetime="2022-08-09 21:24:00 +0530 +0530">9 August 2022</time><span class="px-2 text-primary-500">&#183;</span><span title="Reading time">3 mins</span></div></div></header><section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row"><div class="min-w-0 min-h-0 max-w-prose grow"><h2 id=why-use-traefik class="relative group">Why use Traefik? <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style=text-decoration-line:none!important href=#why-use-traefik aria-label=Anchor>#</a></span></h2><p>If you have seen me around in chats, I have been a heavy advocate of traefik over any other reverse proxy. I want you to use it as well for your deployments, if its suitable. Lemme dive into the pros of traefik over other reverse proxies first:</p><ul><li>Traefik is fully docker-native, can pick configuration directly when you attach a few docker labels to your containers</li><li>No sort of reload or restart is required for it to pick your newly put config</li><li>No need to mess with files for 99% of your configuration. Almost everything can be handled from labels.</li><li>Automatic SSL, though Caddy does offer it, this is a one-up over NGINX</li><li>Hassle-free redirections from HTTP to HTTPS</li></ul><h2 id=when-to-deploy-traefik-in-your-infra class="relative group">When to deploy Traefik in your infra? <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style=text-decoration-line:none!important href=#when-to-deploy-traefik-in-your-infra aria-label=Anchor>#</a></span></h2><p>As listed above, traefik shines only when it is in a full docker infrastructure. Some people might find it really hard to move their infrastructure to full docker from a traditional server deployments. I have seen multiple people have issues when traefik was deployed into a traditional server deployment. Traefik can easily turn into a nightmare if you are not very familar with docker-based deployments.</p><p>I would suggest deploying Traefik only if you are fully comfortable with moving your infrastructure to docker, or you already have it like that.</p><h2 id=nginx-vs-traefik-vs-caddy-performance class="relative group">NGINX vs Traefik vs Caddy Performance <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style=text-decoration-line:none!important href=#nginx-vs-traefik-vs-caddy-performance aria-label=Anchor>#</a></span></h2><p>Lets put these webservers on a head-on with a NodeJS webserver, and use bombardier to measure the requests they can handle per second. All of these were run on dockernet to provide an fair playing field.</p><p>This was all plotted to figure out how these webservers stand.</p><p><a href=https://github.com/hentaiOS-Infrastructure/loadbalancer-benchmark/ target=_blank rel="noreferrer noopener">Data</a> used with permission from raphielscape</p><p><figure><img class="mx-auto my-0 rounded-md" src=/posts/when-and-why-traefik/bench1.webp alt="RPS Benchmark of Reverse Proxies" loading=lazy></figure></p><p><figure><img class="mx-auto my-0 rounded-md" src=/posts/when-and-why-traefik/bench2.webp alt="Memory Benchmark of Reverse Proxies" loading=lazy></figure></p><p>You might be expecting NGINX to lead the front, but its request processing rate is pretty abyssmal compared to what people might think of it.</p><p>Traefik, Caddy and Apache lead the front with 8000rps each, and NGINX holds a mere 2000rps.</p><p>You might be as well surprised how apache held almost equal to traefik and caddy. Infact better than NGINX, while the outside world thinks otherwise. These graphs are only taking 4000 concurrent connections into consideration. Apache crashed when we tried to load it with anything more than 4000 :)</p><h2 id=closing-thoughts class="relative group">Closing Thoughts <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style=text-decoration-line:none!important href=#closing-thoughts aria-label=Anchor>#</a></span></h2><p>You should deploy traefik or caddy depending on your workload. Do note, while caddy and traefik and doing almost head-on with nearly equivalent scores, Caddy still does not have support for DNS validation or certain other features like forward auth, which traefik excels in.</p><p>Also another issue with traefik being, it cannot serve static files, or serve php. So with traefik, you will need to have caddy bridging you with these needs.</p><p>Avoid NGINX as much as possible, unless your workload needs a feature that isn&rsquo;t there on both of these, due to how well it performs.</p></div></section><footer class="pt-8 max-w-prose print:hidden"><div class=flex><img class="!mb-0 !mt-0 me-4 h-24 w-24 rounded-full" width=96 height=96 alt=baalajimaestro src=/logo_hud38acf383e8b0ec59a144c7188a6b106_63924_192x192_fill_q75_h2_box_center_2.webp loading=lazy><div class=place-self-center><div class="text-[0.6rem] uppercase leading-3 text-neutral-500 dark:text-neutral-400">Author</div><div class="font-semibold leading-6 text-neutral-800 dark:text-neutral-300">baalajimaestro</div><div class="text-2xl sm:text-lg"></div></div></div><section class="flex flex-row flex-wrap justify-center pt-4 text-xl"><a class="m-1 inline-block min-w-[2.4rem] rounded bg-neutral-300 p-1 text-center text-neutral-700 hover:bg-primary-500 hover:text-neutral dark:bg-neutral-700 dark:text-neutral-300 dark:hover:bg-primary-400 dark:hover:text-neutral-800" href="https://www.facebook.com/sharer/sharer.php?u=https://baalajimaestro.me/posts/when-and-why-traefik/&amp;quote=When%20and%20Why%20to%20use%20Traefik?" title="Share on Facebook" aria-label="Share on Facebook" target=_blank rel="noopener noreferrer"><span class="relative inline-block align-text-bottom px-1 icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentcolor" d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14.0 55.52 4.84 55.52 4.84v61h-31.28c-30.8.0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"/></svg></span></a><a class="m-1 inline-block min-w-[2.4rem] rounded bg-neutral-300 p-1 text-center text-neutral-700 hover:bg-primary-500 hover:text-neutral dark:bg-neutral-700 dark:text-neutral-300 dark:hover:bg-primary-400 dark:hover:text-neutral-800" href="https://twitter.com/intent/tweet/?url=https://baalajimaestro.me/posts/when-and-why-traefik/&amp;text=When%20and%20Why%20to%20use%20Traefik?" title="Tweet on Twitter" aria-label="Tweet on Twitter" target=_blank rel="noopener noreferrer"><span class="relative inline-block align-text-bottom px-1 icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentcolor" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645.0 138.72-105.583 298.558-298.558 298.558-59.452.0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055.0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421.0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391.0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04.0-57.828 46.782-104.934 104.934-104.934 30.213.0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg></span></a><a class="m-1 inline-block min-w-[2.4rem] rounded bg-neutral-300 p-1 text-center text-neutral-700 hover:bg-primary-500 hover:text-neutral dark:bg-neutral-700 dark:text-neutral-300 dark:hover:bg-primary-400 dark:hover:text-neutral-800" href="https://reddit.com/submit/?url=https://baalajimaestro.me/posts/when-and-why-traefik/&amp;resubmit=true&amp;title=When%20and%20Why%20to%20use%20Traefik?" title="Submit to Reddit" aria-label="Submit to Reddit" target=_blank rel="noopener noreferrer"><span class="relative inline-block align-text-bottom px-1 icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentcolor" d="M201.5 305.5c-13.8.0-24.9-11.1-24.9-24.6.0-13.8 11.1-24.9 24.9-24.9 13.6.0 24.6 11.1 24.6 24.9.0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4.0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8.0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7.0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9.0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5.0 52.6 59.2 95.2 132 95.2 73.1.0 132.3-42.6 132.3-95.2.0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6.0-2.2-2.2-6.1-2.2-8.3.0-2.5 2.5-2.5 6.4.0 8.6 22.8 22.8 87.3 22.8 110.2.0 2.5-2.2 2.5-6.1.0-8.6-2.2-2.2-6.1-2.2-8.3.0zm7.7-75c-13.6.0-24.6 11.1-24.6 24.9.0 13.6 11.1 24.6 24.6 24.6 13.8.0 24.9-11.1 24.9-24.6.0-13.8-11-24.9-24.9-24.9z"/></svg></span></a><a class="m-1 inline-block min-w-[2.4rem] rounded bg-neutral-300 p-1 text-center text-neutral-700 hover:bg-primary-500 hover:text-neutral dark:bg-neutral-700 dark:text-neutral-300 dark:hover:bg-primary-400 dark:hover:text-neutral-800" href="https://www.linkedin.com/shareArticle?mini=true&amp;url=https://baalajimaestro.me/posts/when-and-why-traefik/&amp;title=When%20and%20Why%20to%20use%20Traefik?" title="Share on LinkedIn" aria-label="Share on LinkedIn" target=_blank rel="noopener noreferrer"><span class="relative inline-block align-text-bottom px-1 icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentcolor" d="M416 32H31.9C14.3 32 0 46.5.0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6.0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3.0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2.0 38.5 17.3 38.5 38.5.0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6.0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2.0 79.7 44.3 79.7 101.9V416z"/></svg></span></a><a class="m-1 inline-block min-w-[2.4rem] rounded bg-neutral-300 p-1 text-center text-neutral-700 hover:bg-primary-500 hover:text-neutral dark:bg-neutral-700 dark:text-neutral-300 dark:hover:bg-primary-400 dark:hover:text-neutral-800" href="mailto:?body=https://baalajimaestro.me/posts/when-and-why-traefik/&amp;subject=When%20and%20Why%20to%20use%20Traefik?" title="Send via email" aria-label="Send via email" target=_blank rel="noopener noreferrer"><span class="relative inline-block align-text-bottom px-1 icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentcolor" d="M207.8 20.73c-93.45 18.32-168.7 93.66-187 187.1-27.64 140.9 68.65 266.2 199.1 285.1 19.01 2.888 36.17-12.26 36.17-31.49l1e-4-.6631c0-15.74-11.44-28.88-26.84-31.24-84.35-12.98-149.2-86.13-149.2-174.2.0-102.9 88.61-185.5 193.4-175.4 91.54 8.869 158.6 91.25 158.6 183.2v16.16c0 22.09-17.94 40.05-40 40.05s-40.01-17.96-40.01-40.05v-120.1c0-8.847-7.161-16.02-16.01-16.02l-31.98.0036c-7.299.0-13.2 4.992-15.12 11.68-24.85-12.15-54.24-16.38-86.06-5.106-38.75 13.73-68.12 48.91-73.72 89.64-9.483 69.01 43.81 128 110.9 128 26.44.0 50.43-9.544 69.59-24.88 24 31.3 65.23 48.69 109.4 37.49C465.2 369.3 496 324.1 495.1 277.2V256.3c0-149.2-133.9-265.632-287.3-235.57zM239.1 304.3c-26.47.0-48-21.56-48-48.05s21.53-48.05 48-48.05 48 21.56 48 48.05-20.6 48.05-48 48.05z"/></svg></span></a><a class="m-1 inline-block min-w-[2.4rem] rounded bg-neutral-300 p-1 text-center text-neutral-700 hover:bg-primary-500 hover:text-neutral dark:bg-neutral-700 dark:text-neutral-300 dark:hover:bg-primary-400 dark:hover:text-neutral-800" href="https://telegram.me/share/url?url=https://baalajimaestro.me/posts/when-and-why-traefik/&amp;text=When%20and%20Why%20to%20use%20Traefik?" title aria-label target=_blank rel="noopener noreferrer"><span class="relative inline-block align-text-bottom px-1 icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg></span></a><a class="m-1 inline-block min-w-[2.4rem] rounded bg-neutral-300 p-1 text-center text-neutral-700 hover:bg-primary-500 hover:text-neutral dark:bg-neutral-700 dark:text-neutral-300 dark:hover:bg-primary-400 dark:hover:text-neutral-800" href="https://news.ycombinator.com/submitlink?u=https://baalajimaestro.me/posts/when-and-why-traefik/&amp;t=When%20and%20Why%20to%20use%20Traefik?" title aria-label target=_blank rel="noopener noreferrer"><span class="relative inline-block align-text-bottom px-1 icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentcolor" stroke="none"><path d="M0 24V0h24v24H0zM6.951 5.896l4.112 7.708v5.064h1.583v-4.972l4.148-7.799h-1.749l-2.457 4.875c-.372.745-.688 1.434-.688 1.434s-.297-.708-.651-1.434L8.831 5.896h-1.88z"/></svg></span></a></section><div class=pt-8><hr class="border-dotted border-neutral-300 dark:border-neutral-600"><div class="flex justify-between pt-3"><span><a class="group flex" href=/posts/trojan-on-traefik/><span class="me-2 text-neutral-700 transition-transform group-hover:-translate-x-[2px] group-hover:text-primary-600 dark:text-neutral dark:group-hover:text-primary-400"><span class="ltr:inline rtl:hidden">&larr;</span><span class="ltr:hidden rtl:inline">&rarr;</span></span>
<span class="flex flex-col"><span class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500">Hosting Trojan-GFW with Traefik</span>
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400"><time datetime="2021-12-04 21:24:00 +0530 +0530">4 December 2021</time></span></span></a></span>
<span><a class="group flex text-right" href=/posts/telegram-let-down-community/><span class="flex flex-col"><span class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500">Telegram let down its users</span>
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400"><time datetime="2022-08-20 07:24:00 +0530 +0530">20 August 2022</time></span></span>
<span class="ms-2 text-neutral-700 transition-transform group-hover:-translate-x-[2px] group-hover:text-primary-600 dark:text-neutral dark:group-hover:text-primary-400"><span class="ltr:inline rtl:hidden">&rarr;</span><span class="ltr:hidden rtl:inline">&larr;</span></span></a></span></div></div></footer></article><div class="pointer-events-none absolute bottom-0 end-0 top-[100vh] w-12"><a href=#the-top class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 backdrop-blur hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400" aria-label="Scroll to top" title="Scroll to top">&uarr;</a></div></main><footer class="py-10 print:hidden"><nav class="pb-4 text-base font-medium text-neutral-500 dark:text-neutral-400"><ul class="flex list-none flex-col sm:flex-row"><li class="group mb-1 ltr:text-right rtl:text-left sm:mb-0 sm:me-7 sm:last:me-0"><a href=https://git.baalajimaestro.me/baalajimaestro/personal-website/ title><span class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2">Source Code</span></a></li><li class="group mb-1 ltr:text-right rtl:text-left sm:mb-0 sm:me-7 sm:last:me-0"><a href=https://links.baalajimaestro.me title><span class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2">Socials/Portfolio</span></a></li><li class="group mb-1 ltr:text-right rtl:text-left sm:mb-0 sm:me-7 sm:last:me-0"><a href=https://paypal.me/baalajimaestro title><span class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2">Donate Me</span></a></li><li class="group mb-1 ltr:text-right rtl:text-left sm:mb-0 sm:me-7 sm:last:me-0"><a href=/posts/index.xml title><span class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2">RSS</span></a></li></ul></nav><div class="flex items-center justify-between"><div><p class="text-sm text-neutral-500 dark:text-neutral-400">© 2023 Maestro Creativescape.</p><p class="text-xs text-neutral-500 dark:text-neutral-400">Powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" href=https://gohugo.io/ target=_blank rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" href=https://git.io/hugo-congo target=_blank rel="noopener noreferrer">Congo</a></p></div></div></footer></div></body></html>