personal-website/posts/trojan-on-traefik/index.html

135 lines
27 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>Hosting Trojan-GFW with Traefik &#183; baalajimaestro</title><meta name=title content="Hosting Trojan-GFW with Traefik &#183; baalajimaestro"><meta name=description content="For those who don&rsquo;t know what trojan-gfw is, please google up.
I searched far and wide on the internet, but there isn&rsquo;t any proper document or article that guided me to it.
I managed to self-host it, so I&rsquo;ll share the steps with you.
What you need: # Traefik (obviously) A domain (obviously) Certbot installed on the host A snakeoil caddy server (preferably some valid server) Let&rsquo;s get started,
Connect to your server over SSH and then let&rsquo;s issue a certificate for the trojan to work Change the domain name to whatever your VPN would be hosted on"><link rel=canonical href=https://baalajimaestro.me/posts/trojan-on-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="Hosting Trojan-GFW with Traefik"><meta property="og:description" content="For those who don&rsquo;t know what trojan-gfw is, please google up.
I searched far and wide on the internet, but there isn&rsquo;t any proper document or article that guided me to it.
I managed to self-host it, so I&rsquo;ll share the steps with you.
What you need: # Traefik (obviously) A domain (obviously) Certbot installed on the host A snakeoil caddy server (preferably some valid server) Let&rsquo;s get started,
Connect to your server over SSH and then let&rsquo;s issue a certificate for the trojan to work Change the domain name to whatever your VPN would be hosted on"><meta property="og:type" content="article"><meta property="og:url" content="https://baalajimaestro.me/posts/trojan-on-traefik/"><meta property="article:section" content="posts"><meta property="article:published_time" content="2021-12-04T21:24:00+05:30"><meta property="article:modified_time" content="2021-12-04T21:24:00+05:30"><meta name=twitter:card content="summary"><meta name=twitter:title content="Hosting Trojan-GFW with Traefik"><meta name=twitter:description content="For those who don&rsquo;t know what trojan-gfw is, please google up.
I searched far and wide on the internet, but there isn&rsquo;t any proper document or article that guided me to it.
I managed to self-host it, so I&rsquo;ll share the steps with you.
What you need: # Traefik (obviously) A domain (obviously) Certbot installed on the host A snakeoil caddy server (preferably some valid server) Let&rsquo;s get started,
Connect to your server over SSH and then let&rsquo;s issue a certificate for the trojan to work Change the domain name to whatever your VPN would be hosted on"><script type=application/ld+json>[{"@context":"https://schema.org","@type":"Article","articleSection":"Blog","name":"Hosting Trojan-GFW with Traefik","headline":"Hosting Trojan-GFW with Traefik","abstract":"For those who don\u0026rsquo;t know what trojan-gfw is, please google up.\nI searched far and wide on the internet, but there isn\u0026rsquo;t any proper document or article that guided me to it.\nI managed to self-host it, so I\u0026rsquo;ll share the steps with you.\nWhat you need: # Traefik (obviously) A domain (obviously) Certbot installed on the host A snakeoil caddy server (preferably some valid server) Let\u0026rsquo;s get started,\nConnect to your server over SSH and then let\u0026rsquo;s issue a certificate for the trojan to work Change the domain name to whatever your VPN would be hosted on","inLanguage":"en","url":"https:\/\/baalajimaestro.me\/posts\/trojan-on-traefik\/","author":{"@type":"Person","name":"baalajimaestro"},"copyrightYear":"2021","dateCreated":"2021-12-04T21:24:00\u002b05:30","datePublished":"2021-12-04T21:24:00\u002b05:30","dateModified":"2021-12-04T21:24:00\u002b05:30","mainEntityOfPage":"true","wordCount":"536"}]</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/trojan-on-traefik/>Hosting Trojan-GFW with 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">Hosting Trojan-GFW with 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="2021-12-04 21:24:00 +0530 +0530">4 December 2021</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"><p>For those who don&rsquo;t know what trojan-gfw is, please google up.</p><p>I searched far and wide on the internet, but there isn&rsquo;t any proper document or article that guided me to it.</p><p>I managed to self-host it, so I&rsquo;ll share the steps with you.</p><h3 id=what-you-need class="relative group">What you need: <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=#what-you-need aria-label=Anchor>#</a></span></h3><ul><li>Traefik (obviously)</li><li>A domain (obviously)</li><li>Certbot installed on the host</li><li>A snakeoil caddy server (preferably some valid server)</li></ul><p>Let&rsquo;s get started,</p><p>Connect to your server over SSH and then let&rsquo;s issue a certificate for the trojan to work
Change the domain name to whatever your VPN would be hosted on</p><pre tabindex=0><code>sudo certbot certonly \
--standalone \
-m baalajimaestro@computer4u.com \
-d something.baalajimaestro.me
</code></pre><p>Once you get the certificate issued, let&rsquo;s start off working on the config for trojan-go</p><pre tabindex=0><code>{
&#34;run_type&#34;: &#34;server&#34;,
&#34;local_addr&#34;: &#34;0.0.0.0&#34;,
&#34;local_port&#34;: 443,
&#34;remote_addr&#34;: &#34;trojan-caddy&#34;,
&#34;remote_port&#34;: 80,
&#34;log_level&#34;: 2,
&#34;log_file&#34;: &#34;&#34;,
&#34;password&#34;: [
&#34;somethingsupersecret&#34;
],
&#34;disable_http_check&#34;: false,
&#34;udp_timeout&#34;: 60,
&#34;ssl&#34;: {
&#34;verify&#34;: true,
&#34;verify_hostname&#34;: true,
&#34;cert&#34;: &#34;/etc/trojan/cert.pem&#34;,
&#34;key&#34;: &#34;/etc/trojan/private.key&#34;,
&#34;key_password&#34;: &#34;&#34;,
&#34;cipher&#34;: &#34;&#34;,
&#34;curves&#34;: &#34;&#34;,
&#34;prefer_server_cipher&#34;: false,
&#34;sni&#34;: &#34;something.baalajimaestro.me&#34;,
&#34;alpn&#34;: [
&#34;http/1.1&#34;
],
&#34;session_ticket&#34;: true,
&#34;reuse_session&#34;: true,
&#34;plain_http_response&#34;: &#34;&#34;,
&#34;fallback_addr&#34;: &#34;&#34;,
&#34;fallback_port&#34;: 0,
&#34;fingerprint&#34;: &#34;firefox&#34;
},
&#34;tcp&#34;: {
&#34;no_delay&#34;: true,
&#34;keep_alive&#34;: true,
&#34;prefer_ipv4&#34;: true
},
&#34;router&#34;: {
&#34;enabled&#34;: false,
&#34;bypass&#34;: [],
&#34;proxy&#34;: [],
&#34;block&#34;: [],
&#34;default_policy&#34;: &#34;proxy&#34;,
&#34;domain_strategy&#34;: &#34;as_is&#34;,
&#34;geoip&#34;: &#34;$PROGRAM_DIR$/geoip.dat&#34;,
&#34;geosite&#34;: &#34;$PROGRAM_DIR$/geosite.dat&#34;
},
&#34;websocket&#34;: {
&#34;enabled&#34;: true,
&#34;path&#34;: &#34;/socketplug&#34;,
&#34;host&#34;: &#34;something.baalajimaestro.me&#34;
},
&#34;shadowsocks&#34;: {
&#34;enabled&#34;: false,
&#34;method&#34;: &#34;AES-128-GCM&#34;,
&#34;password&#34;: &#34;&#34;
},
&#34;transport_plugin&#34;: {
&#34;enabled&#34;: false,
&#34;type&#34;: &#34;&#34;,
&#34;command&#34;: &#34;&#34;,
&#34;plugin_option&#34;: &#34;&#34;,
&#34;arg&#34;: [],
&#34;env&#34;: []
},
&#34;forward_proxy&#34;: {
&#34;enabled&#34;: false,
&#34;proxy_addr&#34;: &#34;&#34;,
&#34;proxy_port&#34;: 0,
&#34;username&#34;: &#34;&#34;,
&#34;password&#34;: &#34;&#34;
},
&#34;mysql&#34;: {
&#34;enabled&#34;: false,
&#34;server_addr&#34;: &#34;localhost&#34;,
&#34;server_port&#34;: 3306,
&#34;database&#34;: &#34;&#34;,
&#34;username&#34;: &#34;&#34;,
&#34;password&#34;: &#34;&#34;,
&#34;check_rate&#34;: 60
},
&#34;api&#34;: {
&#34;enabled&#34;: false,
&#34;api_addr&#34;: &#34;&#34;,
&#34;api_port&#34;: 0,
&#34;ssl&#34;: {
&#34;enabled&#34;: false,
&#34;key&#34;: &#34;&#34;,
&#34;cert&#34;: &#34;&#34;,
&#34;verify_client&#34;: false,
&#34;client_cert&#34;: []
}
}
}
</code></pre><h3 id=what-changes-do-you-need class="relative group">What changes do you need? <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=#what-changes-do-you-need aria-label=Anchor>#</a></span></h3><ul><li>The password field, generate a pretty strong password that someone cannot guess.</li><li>sni and WebSocket host, to whatever domain you chose earlier</li></ul><p>The rest of the configuration should be fine, if you need to tweak anything feel free to look into trojan-gfw docs.</p><p>Spin up a snakeoil caddyserver so that trojan can proxy to it whenever it detects non-trojan traffic.</p><pre tabindex=0><code>docker run -d --restart unless-stopped \
--name trojan-caddy \
--network docker-network \
caddy:alpine
</code></pre><p>Now, for trojan itself, check to see the paths for the certificate, and the config and your HostSNI is edited properly to match your domain.</p><pre tabindex=0><code>docker run -d --restart unless-stopped \
--name trojan-go \
--network docker-network \
-v /home/baalajimaestro/dockerhome/trojan/config.json:/etc/trojan/config.json \
-v /etc/letsencrypt/live/something.baalajimaestro.me/fullchain.pem:/etc/trojan/cert.pem \
-v /etc/letsencrypt/live/something.baalajimaestro.me/privkey.pem:/etc/trojan/private.key \
-l traefik.enable=true \
-l traefik.tcp.routers.trojan-gfw.rule=&#39;HostSNI(`something.baalajimaestro.me`)&#39; \
-l traefik.tcp.routers.trojan-gfw.tls.passthrough=&#34;true&#34; \
-l traefik.tcp.services.trojan-gfw.loadbalancer.server.port=&#34;443&#34; \
p4gefau1t/trojan-go /etc/trojan/config.json
</code></pre><p>Now if you visit something.baalajimaestro.me, you should see Caddy&rsquo;s welcome page.
Ensure you point it to rather some valid page instead of the congratulations page of caddy, so that your ISP doesn&rsquo;t grow sus of you transferring a huge amount of data to a &ldquo;Congratulations&rdquo; page.</p><h3 id=how-does-this-work class="relative group">How does this work? <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=#how-does-this-work aria-label=Anchor>#</a></span></h3><p>We are doing a TLS passthrough on traefik so that it lets trojan handle the TLS itself for the proxy domain.</p><h3 id=places-to-improve class="relative group">Places to improve: <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=#places-to-improve aria-label=Anchor>#</a></span></h3><ul><li>Put it behind a CDN (I used Cloudflare), so that the connection latency improves much better and someone doesn&rsquo;t get your server IP.</li></ul></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/trojan-on-traefik/&amp;quote=Hosting%20Trojan-GFW%20with%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/trojan-on-traefik/&amp;text=Hosting%20Trojan-GFW%20with%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/trojan-on-traefik/&amp;resubmit=true&amp;title=Hosting%20Trojan-GFW%20with%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/trojan-on-traefik/&amp;title=Hosting%20Trojan-GFW%20with%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/trojan-on-traefik/&amp;subject=Hosting%20Trojan-GFW%20with%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/trojan-on-traefik/&amp;text=Hosting%20Trojan-GFW%20with%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/trojan-on-traefik/&amp;t=Hosting%20Trojan-GFW%20with%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/google-analytics-bad/><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">Google Analytics, the bad guy behind bad PageSpeed Scores</span>
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400"><time datetime="2021-10-22 10:41:41 +0530 +0530">22 October 2021</time></span></span></a></span>
<span><a class="group flex text-right" href=/posts/when-and-why-traefik/><span class="flex flex-col"><span class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500">When and Why to use Traefik?</span>
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400"><time datetime="2022-08-09 21:24:00 +0530 +0530">9 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>