<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: ANISH ARAZ</title>
    <description>The latest articles on Forem by ANISH ARAZ (@anisharaz).</description>
    <link>https://forem.com/anisharaz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2122367%2Fcf870990-a5dc-481e-8b98-56e306a7a1f0.jpg</url>
      <title>Forem: ANISH ARAZ</title>
      <link>https://forem.com/anisharaz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/anisharaz"/>
    <language>en</language>
    <item>
      <title>Terminal setup for speed &amp; ease</title>
      <dc:creator>ANISH ARAZ</dc:creator>
      <pubDate>Sat, 03 Jan 2026 07:40:09 +0000</pubDate>
      <link>https://forem.com/anisharaz/terminal-setup-for-speed-ease-4nd2</link>
      <guid>https://forem.com/anisharaz/terminal-setup-for-speed-ease-4nd2</guid>
      <description>&lt;p&gt;You, yes you, I'm talking to you my friend. You spend a significant amount of time in terminals typing and running various commands, which sometimes can be time-consuming if the right tools are not used.&lt;/p&gt;

&lt;p&gt;Therefore, open up your terminal and follow along to set up your terminal for easy use and faster command execution. (You will never regret this setup)&lt;/p&gt;

&lt;p&gt;I have a video on it for someone who enjoys watching. &lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/fT3-hg5Jnk0"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h2&gt;
  
  
  This is the comparison image of before and after.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F616exlbv2uctry2t99o8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F616exlbv2uctry2t99o8.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Syntax highlighting, so mistakes pop up before running&lt;/li&gt;
&lt;li&gt;auto-suggestion for quickly running previous commands&lt;/li&gt;
&lt;li&gt;better search tool for searching through your files, previous commands, available command options and more.&lt;/li&gt;
&lt;li&gt;alias to long commands to you can quickly run commands, for eg, &lt;code&gt;dk&lt;/code&gt; for &lt;code&gt;docker&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Install Zsh if you are on bash or something else.&lt;br&gt;
Link to install instruction &lt;a href="https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH" rel="noopener noreferrer"&gt;https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install &lt;code&gt;ohh-my-zsh&lt;/code&gt;, a framework for managing awesome tooling in zsh. Link: &lt;a href="https://ohmyz.sh/#install" rel="noopener noreferrer"&gt;https://ohmyz.sh/#install&lt;/a&gt;&lt;br&gt;
It will ask you to use it as the default. Just press Y and enter, then you will be in the zsh shell, where we can start customising it.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Spicing up
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Install the &lt;code&gt;auto-suggestion&lt;/code&gt; and &lt;code&gt;syntax highlighting&lt;/code&gt; plugin&lt;br&gt;
Link: &lt;a href="https://gist.github.com/n1snt/454b879b8f0b7995740ae04c5fb5b7df#install-plugins" rel="noopener noreferrer"&gt;https://gist.github.com/n1snt/454b879b8f0b7995740ae04c5fb5b7df#install-plugins&lt;/a&gt;&lt;br&gt;
It has 4 plugins, but for now just copy and paste the commands for the first 2, i.e &lt;code&gt;auto-suggestion&lt;/code&gt; and &lt;code&gt;syntax highlighting&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In your home directory, you will find &lt;code&gt;.zshrc&lt;/code&gt; file. Open it and search for plugins. &lt;code&gt;plugins = (git)&lt;/code&gt;. just add and make it &lt;code&gt;plugins = (git zsh-autosuggestions zsh-syntax-highlighting)&lt;/code&gt;. and you are all set. Just restart your terminal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install fzf - it is a search tool that zsh uses. LInk: &lt;a href="https://github.com/junegunn/fzf?tab=readme-ov-file#installation" rel="noopener noreferrer"&gt;https://github.com/junegunn/fzf?tab=readme-ov-file#installation&lt;/a&gt;&lt;br&gt;
after installation, again open &lt;code&gt;.zshrc&lt;/code&gt; and add &lt;code&gt;source &amp;lt;(fzf --zsh)&lt;/code&gt; just below this line &lt;code&gt;source $ZSH/oh-my-zsh.sh&lt;/code&gt;. Now you can use &lt;code&gt;ctrl + r&lt;/code&gt; after a terminal restart to search previous commands.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One more cherry on top, &lt;a href="https://github.com/Aloxaf/fzf-tab" rel="noopener noreferrer"&gt;https://github.com/Aloxaf/fzf-tab&lt;/a&gt; , i leave this for you to explore and figure out. You are welcome!!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And there you have a better terminal with 5 min of setup. Cheers!! 2026&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>What is a file?</title>
      <dc:creator>ANISH ARAZ</dc:creator>
      <pubDate>Tue, 25 Nov 2025 10:56:33 +0000</pubDate>
      <link>https://forem.com/anisharaz/what-is-a-file-4lm0</link>
      <guid>https://forem.com/anisharaz/what-is-a-file-4lm0</guid>
      <description>&lt;p&gt;if you are a visual learner and want some practical learning here is the video&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/6DV1vep7BK0"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h2&gt;
  
  
  Simple question, what is a computer file? eg. image,pdf,docs etc.
&lt;/h2&gt;

&lt;p&gt;When you think of a file on your computer, you probably imagine documents, pictures, videos, or maybe some code files. But what is a file really? At its core, a file is just a collection of tiny pieces of data called bytes stored on your hard drive or SSD. These bytes are made up of zeros and ones, and it’s the way these bytes are put together and read that makes one file a photo and another a song or a text document.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpzrdus59uegfrl21ms3s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpzrdus59uegfrl21ms3s.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  If every file is a sequence of bytes, how do they differ?
&lt;/h2&gt;

&lt;p&gt;It all depends on how a program reads those bytes. For example, a text editor sees the bytes as letters and words. An image viewer sees those same bytes as pixels that come together to form a picture. This “reading” is called encoding, and different file types have different rules for how bytes turn into something meaningful.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Magic Numbers
&lt;/h2&gt;

&lt;p&gt;Here’s a cool trick your computer uses to know what kind of file it’s dealing with a file’s "magic number." It’s a special set of bytes right at the very start of every file, kind of like a fingerprint. This helps your computer instantly recognize if a file is a PDF, a PNG image, or something else, no matter what the file is named.&lt;/p&gt;

&lt;p&gt;So, renaming a file from “mypic.png” to “mypic.pdf” doesn’t actually change the file. Inside, it’s still an image, and programs will get confused if you try to open it like a PDF.&lt;/p&gt;

&lt;p&gt;Find out more here &lt;a href="https://en.wikipedia.org/wiki/List_of_file_signatures" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/List_of_file_signatures&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Do File Extensions Matter Then?
&lt;/h2&gt;

&lt;p&gt;File extensions, the .txt, .jpg, .pdf parts are like labels that help your operating system decide which app should open the file. They don’t actually change the file’s content, but they guide your computer on where to send the file when you double-click it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happens If You Open a File the Wrong Way?
&lt;/h2&gt;

&lt;p&gt;If you try to open a picture file with a text editor, you’ll see a bunch of weird, jumbled characters. That’s because the text editor is trying to read image data as if it were text. On the other hand, your image viewer knows exactly how to make sense of those bytes and shows you the photo beautifully.&lt;/p&gt;

&lt;p&gt;In simple terms, a computer file is just a string of bytes, and the magic lies in how computers and programs read and understand those bytes. The combination of magic numbers and file extensions helps your computer know exactly what to do with each file.&lt;/p&gt;

&lt;p&gt;I post about useful topics on X , see you✌️: &lt;a href="https://x.com/AnishAraz" rel="noopener noreferrer"&gt;https://x.com/AnishAraz&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>learning</category>
      <category>computerscience</category>
      <category>developer</category>
    </item>
    <item>
      <title>How ads are so relevant to what you search: A complete look at HTTP cookies 🍪.</title>
      <dc:creator>ANISH ARAZ</dc:creator>
      <pubDate>Sat, 05 Apr 2025 15:19:19 +0000</pubDate>
      <link>https://forem.com/anisharaz/how-ads-are-so-relevant-they-use-http-cookies-but-how-4cdj</link>
      <guid>https://forem.com/anisharaz/how-ads-are-so-relevant-they-use-http-cookies-but-how-4cdj</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR for non-technical people
&lt;/h2&gt;

&lt;p&gt;Ads use something called third-party cookies in your browser to track your activities. So to prevent it, just turn off third-party cookies in your browser settings.&lt;/p&gt;

&lt;p&gt;You might have encountered that some time you just searched something on Google, and it started appearing on the ads. This is all because they use HTTP cookies, so let's start exploring. This read is going to be focused on the anatomy of cookies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basics first
&lt;/h2&gt;

&lt;p&gt;1) What are HTTP cookies?&lt;br&gt;
A small data that can be stored on the client's browser, which is sent to the server in every request.&lt;/p&gt;

&lt;p&gt;2) What is the use of it?&lt;br&gt;
It is used to store auth tokens after login, personalized data like theme, language, and much more. Basically, you can store any data that the server can use to tailor the data returned to the client.&lt;/p&gt;
&lt;h3&gt;
  
  
  Most people know about the cookies and use of it, but there are some important nuance to it, like
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;What are the different purposes of attributes set on the cookies? For example, HttpOnly, Secure, Domain, and SameSite.&lt;/li&gt;
&lt;li&gt;How cookies behave in cross-site requests.&lt;/li&gt;
&lt;li&gt;What the heck are third-party cookies?&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  And the biggest question
&lt;/h3&gt;

&lt;p&gt;If I search for something on the internet, how does the ad provider come to know, and they start showing me related ads ?&lt;/p&gt;
&lt;h3&gt;
  
  
  Lets start
&lt;/h3&gt;

&lt;p&gt;Starting off, we need to understand the attributes set on the cookies.&lt;/p&gt;
&lt;h4&gt;
  
  
  1. &lt;em&gt;HttpOnly&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;Cookies are key-value pair data, e.g. foo=baar. These cookies are stored on browser and HttpOnly attribute defines if the cookies can be accessed using JavaScript or not.&lt;/p&gt;

&lt;p&gt;Set this cookie &lt;code&gt;auth_token = sjdsd8hjd7dhbshd&lt;/code&gt; on any website just for trial and set the &lt;code&gt;HttpOnly&lt;/code&gt; attribute to true. To see cookies using js just type &lt;code&gt;console.log(document.cookies)&lt;/code&gt; in the browser console. You will see all other cookies printed (if there are any) but not the cookie that you just set. Now again set the HttpOnly attribute to false, after which you can see it is printed on the console when you re-enter the &lt;code&gt;console.log(document.cookies)&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;Conclusion: HttpOnly cookies are sent with requests but cannot be accessed using JavaScript when HttpOnly is set to true.&lt;/p&gt;
&lt;h4&gt;
  
  
  2. &lt;em&gt;Secure&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;The &lt;code&gt;secure&lt;/code&gt; attribute is very simple. When it's true, the cookies are only sent in &lt;code&gt;https&lt;/code&gt; not in &lt;code&gt;http&lt;/code&gt; connection. If set to false, it will also be sent in an insecure &lt;code&gt;http&lt;/code&gt; connection. &lt;/p&gt;
&lt;h4&gt;
  
  
  3. &lt;em&gt;Domain&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;The domain attribute defines for which domain we are setting the cookies. The cookies can only be set for the same domain you are on right now. Websites are not allowed to set the cookies for other domains. For example,&lt;code&gt;https://dev.to&lt;/code&gt; cannot set cookies for &lt;code&gt;https://google.com&lt;/code&gt; while staying on &lt;code&gt;https://dev.to&lt;/code&gt;. You may see the cookies the browser inspect tool but as soon as you refres it will be gone because browser automatically rejects that.&lt;/p&gt;

&lt;p&gt;Another important thing: when you set a domain in the cookies, the cookies will be sent to any subdomain of that domain. For e.g. if you set the domain of the cookies to &lt;code&gt;example.com&lt;/code&gt; then the cookies will be shared with any subdomain of that domain, like &lt;code&gt;foo.example.com&lt;/code&gt;,  &lt;code&gt;baar.example.com&lt;/code&gt;. &lt;strong&gt;But&lt;/strong&gt; if you do not set the domain attribute, then the browser automatically sets it to the domain, e.g., &lt;code&gt;example.com&lt;/code&gt; in that case, the cookies are not shared on the subdomains.&lt;/p&gt;
&lt;h4&gt;
  
  
  4. &lt;em&gt;SameSite&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;This attribute has 3 possible values: &lt;code&gt;Strict&lt;/code&gt;, &lt;code&gt;Lax&lt;/code&gt;, &lt;code&gt;None&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lax&lt;/strong&gt; -&amp;gt; When you are redirected to the website from other website then the cookies will be included in the request.&lt;br&gt;
Example. You are on Instagram, and someone posts a link to a product on amazon.com. When you click on the link, the request is made to amazon.com, and the request will contain the cookie of amazon.com. So when you are logged in on amazon.com the cookies will be sent on redirect request from instagram and you can directly make the purchase since you auth cookies are present in the cookies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strict&lt;/strong&gt; -&amp;gt; Since we already understood &lt;code&gt;lax&lt;/code&gt; strict became simple to understand. When strict is set in the same-site attribute, then any redirect request will not contain the cookies. So although you are logged in on amazon.com, it will again ask you to log in because cookies were not sent in the redirect request as a result of setting strict in the same-site attribute.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;None&lt;/strong&gt; -&amp;gt; when same site is set to none, then it does not matter which website you are on; the request will include the cookies. Let's say you are on xyzmovies.com, and it contains an iframe of an ad provider. So any cookies set by ads in that iframe that has sameSite set to none will include the cookies in the request to the ad provider. Did you notice that although we are on different websites, the ads can have access to cookies and use those cookies set by the ad provider? Yes, this is the basis for answer to &lt;code&gt;how ads are relevent to our current search&lt;/code&gt;. One more thing to keep in mind that samesite can only be set to none when the connection is https. Browser doesnot allow to set samesite to none on a http connection.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffea5xbs9xutnjg7uqxsd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffea5xbs9xutnjg7uqxsd.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Next
&lt;/h2&gt;

&lt;p&gt;How do cookies behave in a cross-site request? Let's answer this question.&lt;/p&gt;

&lt;p&gt;Cross-site request means if you are on &lt;code&gt;example.com&lt;/code&gt; and you make a request at another domain, let's say &lt;code&gt;abc.com&lt;/code&gt; then it is called a cross-site request. When you are on &lt;code&gt;example.com&lt;/code&gt; and making a request to a subdomain of example.com (e.g., api.example.com), then it is also considered a cross-site request.&lt;/p&gt;

&lt;p&gt;When you make a cross-site request, the cookies associated with that domain (abc.com) will not be included automatically. You need to include the cookies. In the Fetch API, you can do it this way.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fetch("https://abc.com",{
   credentials: 'include',
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;But&lt;/strong&gt; still it will not work because browser &lt;code&gt;CORS&lt;/code&gt; policy block including cookies in a cross-site request unless the cross-site server has these two headers set, and remember, the allowed origin must be specific; &lt;code&gt;*&lt;/code&gt; is not allowed; the browser will again block the request if the allowed origin is &lt;code&gt;*&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Ensure these 2 points when you need to make cross-site request with cookies
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The website you are requesting must set the allow credential headers, and the allowed origin must match the origin you are trying to request from.&lt;/li&gt;
&lt;li&gt;Your request must set the credentials to 'include'&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Now the answering main question.
&lt;/h2&gt;

&lt;p&gt;How does the ad provider come to know your search, and how do they start showing related ads ?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The answer is by using the third-party cookies&lt;/em&gt;&lt;br&gt;
Let's take an example of Google Ads. Imagine when you visit some e-commerce site searching for a laptop and that e-commerce site contains the ad from Google. The ad can set cookies on the browser with the &lt;code&gt;SameSite&lt;/code&gt; property to &lt;code&gt;None&lt;/code&gt;. That means the cookies of that ad provider will be sent no matter the website you are on. When you visit some other website that also contains the ads from the same provider, here it is: Google Ads. Then again, the request to the ad server will be made using the cookies it set earlier, and it will figure out that this same client visited the e-commerce site to buy a laptop, so let's show ads related to laptops.&lt;/p&gt;
&lt;h3&gt;
  
  
  How to prevent it ?
&lt;/h3&gt;

&lt;p&gt;Simply blocking any third-party cookies on the browser. Some browsers by default block 3rd-party cookies, and in some you need to enable them.&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;If you are a developer, set the cookies attribute mindfully to prevent cookie-related attacks.&lt;br&gt;
And if you don't want the ads to track you, then block 3rd-party cookies.&lt;/p&gt;

&lt;p&gt;I keep posting useful content on Twitter. Lets connect &lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://x.com/AnishAraz" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;x.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>api</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>If you own a domain, you need to setup ....</title>
      <dc:creator>ANISH ARAZ</dc:creator>
      <pubDate>Wed, 05 Mar 2025 06:12:44 +0000</pubDate>
      <link>https://forem.com/anisharaz/if-you-own-a-domain-you-need-to-setup--5377</link>
      <guid>https://forem.com/anisharaz/if-you-own-a-domain-you-need-to-setup--5377</guid>
      <description>&lt;p&gt;&lt;strong&gt;Cloudflare has a free plan account, and it provides a lot of features in the free plan. If you already use Cloudflare, do not worry; I assure you will find this blog useful; if not, you surely will.&lt;/strong&gt; If you need help in any of the cloudflare setup contact me on &lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://x.com/AnishAraz" rel="noopener noreferrer"&gt;
      x.com
    &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Features to use.
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Use a cloudflare tunnel to host your website from your local infrastructure.&lt;/li&gt;
&lt;li&gt;Use cloudflare for your domain to protect from DDoS attack and Hide real server IP&lt;/li&gt;
&lt;li&gt;Create an email address from your domain. eg &lt;a href="mailto:admin@example.com"&gt;admin@example.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;and a lot more...&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create a Cloudflare account.&lt;/li&gt;
&lt;li&gt;Change your domain nameserver to cloudflare. and DONE&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;We shall talk about 2 specific things in this blog. Tunnel and How Cloudflare Protects from DDoS Attack and Hides Real Server IP.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloudflare Tunnel
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq3d73kaj8jsqe2n3gj4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq3d73kaj8jsqe2n3gj4.png" alt=" " width="800" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cloudflare connects to your infrastructure from their infrastructure using &lt;code&gt;TCP Tunnel&lt;/code&gt; technology. So you do not need a public IP address, just your infrastructure should be connected to the internet, and it will work.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cloudflare have very clear docs for getting started&lt;/code&gt; check it out.&lt;br&gt;
&lt;a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/" rel="noopener noreferrer"&gt;https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Protection from DDoS attacks and hiding real server IP.
&lt;/h2&gt;

&lt;p&gt;Cloudflare uses a TCP proxy server, which receives requests from clients and forwards the request to the real server. It forwards requests and responses back and forth, hiding the real ip of the server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5527wip6fh2hn66a3gn2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5527wip6fh2hn66a3gn2.png" alt=" " width="638" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When creating the DNS record remember to turn on this proxy button and you will be good to go&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnjx8kdkhmv1yqprs58n3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnjx8kdkhmv1yqprs58n3.png" alt=" " width="800" height="121"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Clonclusion
&lt;/h2&gt;

&lt;p&gt;Cloudflare is awesome and free; make use of it. If you need any setup help in any part, react me out on twitter &lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://x.com/AnishAraz" rel="noopener noreferrer"&gt;
      x.com
    &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>devops</category>
      <category>learning</category>
      <category>architecture</category>
    </item>
    <item>
      <title>You need a Personal remote workbench. Use Github Codespace.</title>
      <dc:creator>ANISH ARAZ</dc:creator>
      <pubDate>Mon, 03 Mar 2025 15:53:49 +0000</pubDate>
      <link>https://forem.com/anisharaz/you-need-a-personal-remote-workbench-use-github-codespace-2619</link>
      <guid>https://forem.com/anisharaz/you-need-a-personal-remote-workbench-use-github-codespace-2619</guid>
      <description>&lt;h2&gt;
  
  
  Everyone loves free stuff.
&lt;/h2&gt;

&lt;p&gt;Would you not want to have a computer in the cloud that is always ready to login and work from anywhere?&lt;/p&gt;

&lt;p&gt;Yes, this is what github codespaces provide. It is useful in many other different ways, but let's talk about this interesting use case.So simple enough, codespaces are computers in the cloud, which allows you to login remotely from anywhere and start working in them. You can use VScode to access the codespace and work on your project on the codespace computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enough background, Lets get right into it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frgyx8cthspde3hab3zty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frgyx8cthspde3hab3zty.png" alt=" " width="800" height="99"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github free account provides you free codespace where you have 120 core hours that means &lt;code&gt;NUMBER OF CORES x HOURS OF USES = CORES HOURS&lt;/code&gt;. Lets say you picked a codespace with a spec of 2 core that means you have &lt;code&gt;120/2 = 60 hours&lt;/code&gt; of uses time per month. It renews every month and the good part is that if you keep the codespace turned off when not required it will not add up in cores hour.&lt;/p&gt;

&lt;p&gt;Next thing, Lets talk about the storage. codespaces provide 15gb of storage that means you can have a total of 15 gbs of file stored in that codespace but, The storage counts even of the codespaces are turned off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finally
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzv7oitl0khbv3hmnyeph.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzv7oitl0khbv3hmnyeph.png" alt=" " width="800" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mine limit is higher because I have a pro account provided by the GitHub student program. Get yourself a codespace. Do not worry about the storage used because it will not allow you to store more than what is allowed. Keep checking the amount of CPU time used and left in the billing section of your github account and enjoy the remote workbench from anywhere.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjdo3l3lfqo75ofx5vexn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjdo3l3lfqo75ofx5vexn.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get your codespace here : &lt;a href="https://github.com/codespaces" rel="noopener noreferrer"&gt;https://github.com/codespaces&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use this vs code extension to easily connect to codespace&lt;br&gt;
: &lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  On Twitter, I keep posting about technology and tools. Will sure give you a follow-back
&lt;/h3&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://x.com/AnishAraz" rel="noopener noreferrer"&gt;
      x.com
    &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>devops</category>
      <category>learning</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The simplest Docker image you can ever imagin!</title>
      <dc:creator>ANISH ARAZ</dc:creator>
      <pubDate>Thu, 06 Feb 2025 04:41:45 +0000</pubDate>
      <link>https://forem.com/anisharaz/the-simplest-docker-image-you-can-ever-imagin-1acm</link>
      <guid>https://forem.com/anisharaz/the-simplest-docker-image-you-can-ever-imagin-1acm</guid>
      <description>&lt;h2&gt;
  
  
  This is the 4-line code for the simplest Docker image. BUT
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;What is this &lt;code&gt;FROM scratch&lt;/code&gt; ?&lt;/li&gt;
&lt;li&gt;Do we need a base image like &lt;code&gt;ubuntu&lt;/code&gt; or &lt;code&gt;alpine&lt;/code&gt; ?&lt;/li&gt;
&lt;li&gt;What are the benefits of doing this ?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;let's answer these all questions !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj1vgz6mnn6rca3gnhcof.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj1vgz6mnn6rca3gnhcof.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Lets clear the basics first
&lt;/h2&gt;

&lt;p&gt;Running a Docker container means running the single application inside the Docker container. The single application is nothing but a process inside the host machine.&lt;/p&gt;

&lt;p&gt;We use different base images, like &lt;code&gt;ubuntu&lt;/code&gt; and &lt;code&gt;alpine&lt;/code&gt; Because these images contain the files and dependencies which our application may require to run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ever wondered how the base images are made?
&lt;/h2&gt;

&lt;p&gt;Every Docker image starts with an empty image called &lt;code&gt;scratch&lt;/code&gt; which is empty inside, meaning it has nothing inside it. The files and folders required are copied inside it.&lt;br&gt;
Let's take an example of the base image 'ubuntu`.&lt;/p&gt;
&lt;h3&gt;
  
  
  linux directory example
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbvdnnr6bbj3c33voqtuu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbvdnnr6bbj3c33voqtuu.jpg" alt=" " width="686" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;all the directory structure are created and all the required files are copied inside the &lt;code&gt;scratch&lt;/code&gt; image and finally base image &lt;code&gt;ubuntu&lt;/code&gt; is created.&lt;/p&gt;

&lt;p&gt;so, &lt;code&gt;ubuntu&lt;/code&gt; base image is nothing but a file &amp;amp; directory structures copied inside a &lt;code&gt;scratch&lt;/code&gt; image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;If your application requires nothing else than your application binary, then you can just copy the binary inside the &lt;code&gt;scratch&lt;/code&gt; base image and it will work.&lt;/em&gt;&lt;/strong&gt; and this is what we are doing in the 4-line docker image file.&lt;/p&gt;
&lt;h2&gt;
  
  
  Answering the question.
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;What is this &lt;code&gt;FROM scratch&lt;/code&gt; ?&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ans&lt;/strong&gt;: scratch is a keyword in docker which tells docker that you are starting an empty image and you will copy files as required and nothing else than that.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Do we need a base image like &lt;code&gt;ubuntu&lt;/code&gt; or &lt;code&gt;alpine&lt;/code&gt; ?&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ans&lt;/strong&gt;: if your application doesnot depends on any files or programs inside these image than you donot require them, you can just start from &lt;code&gt;scratch&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;What are the benefits of doing this ?&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ans&lt;/strong&gt;: It minimizes the image size as much as possible. Additionally, since your Docker image includes only the necessary components, it reduces the risk of security vulnerabilities.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Things to remember
&lt;/h2&gt;

&lt;p&gt;When you write your application in compiled languages like &lt;code&gt;C&lt;/code&gt; &lt;code&gt;Rust&lt;/code&gt;, &lt;code&gt;Golang&lt;/code&gt; you must compile it into a &lt;code&gt;static binary&lt;/code&gt;. Static binary refers to a binary of your application that does not require anything from the operating system and contains all the dependencies required by it. This allows the application to run independently. &lt;a href="https://en.wikipedia.org/wiki/Static_build" rel="noopener noreferrer"&gt;Read more here&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;You can use &lt;code&gt;scratch&lt;/code&gt; to create image of your application which will be super simplified, containing only the required components and nothing else which makes your image smaller and less prone to security issues.&lt;/p&gt;
&lt;h3&gt;
  
  
  Stay in touch where i keep posting technology related stuff
&lt;/h3&gt;

&lt;p&gt;X.com : &lt;a href="https://x.com/anisharaz" rel="noopener noreferrer"&gt;https://x.com/anisharaz&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Read Next
&lt;/h3&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/anisharaz" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2122367%2Fcf870990-a5dc-481e-8b98-56e306a7a1f0.jpg" alt="anisharaz"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/anisharaz/a-look-inside-dns-its-working-ada" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Understanding DNS 0 to 1 | A clear approach&lt;/h2&gt;
      &lt;h3&gt;ANISH ARAZ ・ Feb 5&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#learning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#linux&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#architecture&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>docker</category>
      <category>devops</category>
      <category>learning</category>
      <category>linux</category>
    </item>
    <item>
      <title>Understanding DNS 0 to 1 | A clear approach</title>
      <dc:creator>ANISH ARAZ</dc:creator>
      <pubDate>Wed, 05 Feb 2025 13:27:56 +0000</pubDate>
      <link>https://forem.com/anisharaz/a-look-inside-dns-its-working-ada</link>
      <guid>https://forem.com/anisharaz/a-look-inside-dns-its-working-ada</guid>
      <description>&lt;h2&gt;
  
  
  If you are a visual learner, I already have a video on this topic.
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/w5FOlGaA188"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  For the ones who love reading, let's start from the basics.
&lt;/h2&gt;

&lt;p&gt;Any websites you visit on the internet have an address, which are called IP addresses. You make a request to the server's IP address, expecting a response. &lt;br&gt;
As the websites on the internet grew, remembering the IP addresses of all servers was very hard, so DNS was introduced.&lt;/p&gt;
&lt;h2&gt;
  
  
  DNS, i.e. Domain Name System
&lt;/h2&gt;

&lt;p&gt;The DNS system maps friendly, easy-to-remember names to the IP address of the server so you do not need to remember IP addresses (eg. 192.168.254.23).&lt;/p&gt;

&lt;p&gt;So if you visit &lt;a href="https://dev.to"&gt;https://dev.to&lt;/a&gt; your computer is actually making a request to the server IP address, which is translated from domain to IP by DNS.&lt;/p&gt;
&lt;h2&gt;
  
  
  Is it that simple?
&lt;/h2&gt;

&lt;p&gt;The simple task of translating a name to IP becomes complex and requires a reliable system if all the computers on the internet are making requests for it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Using this image, we will start understanding each step.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0yxaoljjr6zedymrx8gr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0yxaoljjr6zedymrx8gr.png" alt=" " width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Browser
&lt;/h2&gt;

&lt;p&gt;when you visit a website, your browser is making a dns request to stub resolver to get the ip address of the website server.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is a stub resolver?
&lt;/h2&gt;

&lt;p&gt;Stub resolver is an operating system component that is used to make DNS requests for applications running on a computer. You can think of it as a library, which helps the applications running in the operating system to make DNS requests. For the DNS server, STUB resolver acts as a client, which is making DNS requests.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is a DNS recursive resolver?
&lt;/h2&gt;

&lt;p&gt;Getting the IP address of a domain involves making requests to multiple servers, which is done by a recursive resolver for us. Since it makes multiple requests repeatedly, hence its name is recursive resolver.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm22wpnjwhs4l1cmghbfj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm22wpnjwhs4l1cmghbfj.png" alt=" " width="800" height="178"&gt;&lt;/a&gt; The domain name is divided into 2 parts The part after ‘.’ is called a top-level domain TLD, and the part before the ‘.’ is called DOMAIN. Domain name to IP address is a record, and the records of the domain are held on a server, which are called authorative name servers.&lt;/p&gt;

&lt;p&gt;So the authoritative name servers ip address, which actually holds the record for all domain with '.com' TLD, is held on another server called the TLD server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomw6kp7jx4fiwbwbpwcz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomw6kp7jx4fiwbwbpwcz.png" alt=" " width="687" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So it states that for every different TLD, for example ‘.me’ ‘.com’ '.xyz', there will be different TLD servers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzkkf2094gpu3mbvisj5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzkkf2094gpu3mbvisj5.png" alt=" " width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The DNS recursive resolver has the domain, and it knows the TLD of the domain to be queried. So it must know the location of the TLD server, and since there are multiple TLD servers. The IP address of the TLD server is provided by another server called a root name server.&lt;/p&gt;
&lt;h2&gt;
  
  
  Request flow
&lt;/h2&gt;

&lt;p&gt;So the first request that a recursive resolver makes is to a root name server to find out what the IP address of the TLD server is. The second request it makes to the TLD server is to get the IP of the authoritative name server of that particular domain. The final request is made to the authoritative name server, and it returns the IP address of that domain, and then the resolver returns the IP to the STUB resolver, and finally your browser can make a request to that particular IP and get the consent of the website.&lt;/p&gt;
&lt;h2&gt;
  
  
  See In action
&lt;/h2&gt;

&lt;p&gt;Use the &lt;code&gt;dig&lt;/code&gt; command on linux (if you are on windows or mac, search for similar command) to see the process of requests by recursive resolver&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dig +trace blockx3.xyz&lt;/code&gt; This command will produce result something like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.18.30-0ubuntu0.24.04.2-Ubuntu &amp;lt;&amp;lt;&amp;gt;&amp;gt; +trace blockx3.xyz
;; global options: +cmd
.                       513851  IN      NS      a.root-servers.net.
.                       513851  IN      NS      b.root-servers.net.
.                       513851  IN      NS      c.root-servers.net.
.                       513851  IN      NS      d.root-servers.net.
.                       513851  IN      NS      e.root-servers.net.
.                       513851  IN      NS      f.root-servers.net.
.                       513851  IN      NS      g.root-servers.net.
.                       513851  IN      NS      h.root-servers.net.
.                       513851  IN      NS      i.root-servers.net.
.                       513851  IN      NS      j.root-servers.net.
.                       513851  IN      NS      k.root-servers.net.
.                       513851  IN      NS      l.root-servers.net.
.                       513851  IN      NS      m.root-servers.net.
.                       513851  IN      RRSIG   NS 8 0 518400 20250218050000 20250205040000 26470 . CY4QrS4dmuSrVo3HMfnNphtwmQ+TCGObgDI6figtrGbNWiOvEu8XCO9i 2qgYVpSDBJPWl1hqh2Iy66BB0ZWW9gXuzw4cTnv+QqmbjCfnTcFSxDIV poKAAWhkWFqVRb7G+hQzLe01uhHwoqzeMT5i1VYSAPvzR/irtl+QI7BS uAO6pjWIGMIzT6pC3FZdc2fPK4aeSEhzqh51E1vvWJG4UWL398FP5JOj 921ih2nwxfcgzAq2CtnXeE7VxutWpq1PsNs/Rf0khkolffVpqhoVC+nq 1IQdyPdPVusVCCsB0P170nFl6HB3kddqCPfB4xYDe+8AdZ/OyqeoexnH ii6waQ==
;; Received 525 bytes from 1.1.1.1#53(1.1.1.1) in 9 ms

;; UDP setup with 2001:500:2d::d#53(2001:500:2d::d) for blockx3.xyz failed: network unreachable.
;; no servers could be reached
;; UDP setup with 2001:500:2d::d#53(2001:500:2d::d) for blockx3.xyz failed: network unreachable.
;; no servers could be reached
;; UDP setup with 2001:500:2d::d#53(2001:500:2d::d) for blockx3.xyz failed: network unreachable.
xyz.                    172800  IN      NS      x.nic.xyz.
xyz.                    172800  IN      NS      y.nic.xyz.
xyz.                    172800  IN      NS      z.nic.xyz.
xyz.                    172800  IN      NS      generationxyz.nic.xyz.
xyz.                    86400   IN      DS      3599 8 2 B9733869BC84C86BB59D102BA5DA6B27B2088552332A39DCD54BC4E8 D66B0499
xyz.                    86400   IN      DS      18130 8 2 5AA5961266594CCEAC50949A99219FE004F130E1864A427143E9FF2E 641CAC6F
xyz.                    86400   IN      RRSIG   DS 8 1 86400 20250218050000 20250205040000 26470 . cvKzs7LpC+sJLTzxPeaCgJhaHmGefPv4ujvMQXdzC+TXcMussJwQeaHw 8SUarW+1D8W2hPDLvu6xd3pukH4e+T7ay/VPmAznF9dQLyz7BNUUVSKi 8F1/G3ZOeCbf97IwGQ9FxuRjyN5B1NzLr6Y/kLDEis9zFcb0RF9v2wPV loMHJYiPxaTr8SYV2Hbwf2p7ubbM6OJlaneJBnrZTRjgxYRqZ9vXnAx+ gc52G7Kp0I4Ldi+YXYEHXrEDUXjBS04Ttt8uLLSuVlaHoVROSvoa/rVI uaN0HhXtjkekEzgAPeNuO7839Av9ozJloFOPOWYiJT+ANuxA05nSr8YU 7KfjRw==
;; Received 679 bytes from 192.58.128.30#53(j.root-servers.net) in 0 ms

;; UDP setup with 2a04:2b00:13cc::1:42#53(2a04:2b00:13cc::1:42) for blockx3.xyz failed: network unreachable.
;; UDP setup with 2a04:2b00:13ff::42#53(2a04:2b00:13ff::42) for blockx3.xyz failed: network unreachable.
;; UDP setup with 2001:67c:13cc::1:42#53(2001:67c:13cc::1:42) for blockx3.xyz failed: network unreachable.
;; UDP setup with 2a04:2b00:13ee::42#53(2a04:2b00:13ee::42) for blockx3.xyz failed: network unreachable.
;; UDP setup with 2a04:2b00:13cc::1:42#53(2a04:2b00:13cc::1:42) for blockx3.xyz failed: network unreachable.
;; UDP setup with 2a04:2b00:13ff::42#53(2a04:2b00:13ff::42) for blockx3.xyz failed: network unreachable.
;; UDP setup with 2001:67c:13cc::1:42#53(2001:67c:13cc::1:42) for blockx3.xyz failed: network unreachable.
;; UDP setup with 2a04:2b00:13ee::42#53(2a04:2b00:13ee::42) for blockx3.xyz failed: network unreachable.
blockx3.xyz.            3600    IN      NS      dion.ns.cloudflare.com.
blockx3.xyz.            3600    IN      NS      nataly.ns.cloudflare.com.
2tjms8vm0h8n7j9e748d19gpnujm0emj.xyz. 900 IN NSEC3 1 1 0 - 2TJP61HRH0BQP2HJ34JUU7VA1J23PCRO NS SOA RRSIG DNSKEY NSEC3PARAM
6s3p73q4afrm6vqrcuod60pb1g734kqp.xyz. 900 IN NSEC3 1 1 0 - 6S62PHU98JJSL59927DFT1P49TPLDQ8P NS DS RRSIG
2tjms8vm0h8n7j9e748d19gpnujm0emj.xyz. 900 IN RRSIG NSEC3 8 2 900 20250220025356 20250121012356 65206 xyz. lBGYS4VdleLIc2G1kte18ziguj1enpLCL8ZGn+Bxdjf2h5os3rlaQo28 nd0w2ytj+Z7nGD3n+vjWQmTerScHkaggzHtFgAOUjTl/wSKD/vWqvR4W 6uOi69dC835D9T9qRTbnuSkLdWCnE9WMhA1Q3+JfMDBSlaPK1mz++NgU sF8=
6s3p73q4afrm6vqrcuod60pb1g734kqp.xyz. 900 IN RRSIG NSEC3 8 2 900 20250226025354 20250127012354 65206 xyz. YOKi1x3DISv0rQ/zZclUsv7loYDXW//TCpfqBbfx7IzLqdjFeVWLWoCP VcSolF3JlQTBP2sGz5xZ1g7h/KYl82ytlphsd/URN3Flbg9lMe1Bcr9u E++R5/Dvr/U8rPrcIM2on4mwBXjTvS3GcxD88ashEYu8uZUMoPQsCjP/ i6w=
;; Received 610 bytes from 194.169.218.42#53(x.nic.xyz) in 149 ms

blockx3.xyz.            300     IN      A       104.21.45.168
blockx3.xyz.            300     IN      A       172.67.217.3
;; Received 72 bytes from 172.64.33.156#53(dion.ns.cloudflare.com) in 29 ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  The steps
&lt;/h2&gt;
&lt;h3&gt;
  
  
  STEP 1: A request is made to the root name server to find the address of TLD servers.
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.                       513851  IN      NS      a.root-servers.net.
.                       513851  IN      NS      b.root-servers.net.
.                       513851  IN      NS      c.root-servers.net.
.                       513851  IN      NS      d.root-servers.net.
.                       513851  IN      NS      e.root-servers.net.
.                       513851  IN      NS      f.root-servers.net.
.                       513851  IN      NS      g.root-servers.net.
.                       513851  IN      NS      h.root-servers.net.
.                       513851  IN      NS      i.root-servers.net.
.                       513851  IN      NS      j.root-servers.net.
.                       513851  IN      NS      k.root-servers.net.
.                       513851  IN      NS      l.root-servers.net.
.                       513851  IN      NS      m.root-servers.net.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 2: second request is made to TLD server to find the address of authoritative name server.
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;xyz.                    172800  IN      NS      x.nic.xyz.
xyz.                    172800  IN      NS      y.nic.xyz.
xyz.                    172800  IN      NS      z.nic.xyz.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 3: final request is made to authoritative name server to find the ip address of the website
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;blockx3.xyz.            3600    IN      NS      dion.ns.cloudflare.com.
blockx3.xyz.            3600    IN      NS      nataly.ns.cloudflare.com.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now finally the ip address is returned to our computers.&lt;/p&gt;
&lt;h3&gt;
  
  
  Are your dns query secured ?
&lt;/h3&gt;

&lt;p&gt;dns request can be seen by any one of you are on open network and if you are not using secure dns. Check the video to setup a secured private DNS server for yourself.&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Now you know how the DNS is resolved.A developer or devops engineer or any field in IT require you to know the basics of technology we are using. I keep posting about the technologies on my twitter.&lt;/p&gt;
&lt;h2&gt;
  
  
  Social links
&lt;/h2&gt;

&lt;p&gt;X.com : &lt;a href="https://x.com/anisharaz" rel="noopener noreferrer"&gt;https://x.com/anisharaz&lt;/a&gt;&lt;br&gt;
Github.com : &lt;a href="https://github.com/anisharaz" rel="noopener noreferrer"&gt;https://github.com/anisharaz&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Next read
&lt;/h2&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/anisharaz" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2122367%2Fcf870990-a5dc-481e-8b98-56e306a7a1f0.jpg" alt="anisharaz"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/anisharaz/a-look-inside-docker-its-working-14f9" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;A Look Inside Docker &amp;amp; Its working.&lt;/h2&gt;
      &lt;h3&gt;ANISH ARAZ ・ Jan 23&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#docker&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#learning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#linux&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#architecture&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



</description>
      <category>learning</category>
      <category>linux</category>
      <category>architecture</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How does Docker work internally?</title>
      <dc:creator>ANISH ARAZ</dc:creator>
      <pubDate>Thu, 23 Jan 2025 09:37:01 +0000</pubDate>
      <link>https://forem.com/anisharaz/a-look-inside-docker-its-working-14f9</link>
      <guid>https://forem.com/anisharaz/a-look-inside-docker-its-working-14f9</guid>
      <description>&lt;h2&gt;
  
  
  To make it easy, I have already made a video on it. If you are a visual learner, you may watch the video.
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/vfxpv82jmDw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  For those who like to read, let's start from here.
&lt;/h2&gt;

&lt;p&gt;Before starting the inner workings of Docker, let's clear the basics first.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Docker?
&lt;/h2&gt;

&lt;p&gt;It is a tool that is used to run containers and build images. It gives us CLI + API as well to work with containers programmatically. Apart from software, Docker have made multiple standards around container technology, which is governed by &lt;a href="https://opencontainers.org/about/overview/" rel="noopener noreferrer"&gt;OCI&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What are containers?
&lt;/h2&gt;

&lt;p&gt;Containers are the isolated entities that contain the application and its dependencies along with configuration that can easily run on a container host. for example. MySQL database container. Using the MySQL container, you can easily and quickly start the MySQL server without messing with dependencies on the actual host because the container comes along with all the things required for MySQL to function properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Images?
&lt;/h2&gt;

&lt;p&gt;Images are the blueprints that define what the container should contain and how the container should function. Using images, a container is started because all the required files and configuration are present inside the image.&lt;/p&gt;

&lt;h2&gt;
  
  
  The flow of docker command to start the container
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkgxg0t9ig1gvh55r4m3j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkgxg0t9ig1gvh55r4m3j.png" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker CLI
&lt;/h2&gt;

&lt;p&gt;It is a simple client that translates our Docker command into an API request. The API request is then sent to the Docker Daemon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker daemon
&lt;/h2&gt;

&lt;p&gt;It is a background process that is listening for the API call, &amp;amp; it is responsible for interpreting the call and instructing its component to take action in the described way. So basically when you run Docker, it means you are running the docker daemon (background process in linux are called daemons)&lt;/p&gt;

&lt;h2&gt;
  
  
  ContainerD
&lt;/h2&gt;

&lt;p&gt;It is called the container runtime interface. It takes the instruction for container creation and management. Along with container actions, it also manages the image management. When we call, &lt;code&gt;docker pull image_name&lt;/code&gt; containerD is invoked by the Docker daemon, and it starts pulling the image and stores and manages it.&lt;/p&gt;

&lt;h2&gt;
  
  
  RUNC
&lt;/h2&gt;

&lt;p&gt;ContainerD is not all alone when it comes to creating &amp;amp; managing containers. At a very low level, containers are made using 2 features of Linux called &lt;code&gt;NameSpaces&lt;/code&gt; &amp;amp; &lt;code&gt;C-Groups&lt;/code&gt;. The creation &amp;amp; management of namespaces &amp;amp; c-groups is handled by &lt;code&gt;runc&lt;/code&gt; that is why it is called as &lt;code&gt;low level container runtime&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. What are Namespaces?
&lt;/h3&gt;

&lt;p&gt;Namespaces are the feature of the Linux kernel that allows it to isolate a running process. For example, if the process is in example_namespaces, then it can only see and communicate with other processes in example_namespaces. There are different types of namespaces for different tasks. You can use &lt;a href="https://harsh05.medium.com/understanding-namespaces-in-docker-0bbcf7697775" rel="noopener noreferrer"&gt;this&lt;/a&gt; article for learning about namespaces in detail.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. What is C-Groups?
&lt;/h3&gt;

&lt;p&gt;Cgroups are also the feature of the Linux kernel that allows it to allocate precise hardware resources to a running process. Resources like the CPU, RAM, storage, network I/O and more. For example, if 512MB of RAM is allocated to a particular process, then it cannot use more than that because C-Group is present to limit it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are specifications?
&lt;/h2&gt;

&lt;p&gt;There are standards on how to use images and run the containers. These specifications are made to ensure the container technology is functioning in the same manner on any system. Either it be a desktop or raspberry Pi , Ubuntu or Arch does not matter; the container will function the same because of the standards. &lt;br&gt;
These standards are made by &lt;a href="https://opencontainers.org/about/overview/" rel="noopener noreferrer"&gt;OCI&lt;/a&gt;. OCI is launched by Docker.&lt;/p&gt;

&lt;p&gt;You can view the specification by running a command &lt;code&gt;runc spec&lt;/code&gt;. It will generate a &lt;code&gt;config.json&lt;/code&gt; file, and it consist of an example specification file that can be used by Docker to start containers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside the container
&lt;/h2&gt;

&lt;p&gt;Containers are supposed to run a single application inside it. The application can run multiple child process inside the container. But every process running inside the container is running on the host. There is nothing in between the process and kernel of the host. This is what makes it different from a virtual machine, which uses a &lt;code&gt;hypervisor&lt;/code&gt; in between.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftizv4gkhkppx2hc64u33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftizv4gkhkppx2hc64u33.png" alt=" " width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above image, you can clearly see the process of the container being named with the &lt;code&gt;ID&lt;/code&gt; of the containers. The process in highlight and the ID of the container are the same. So you may ask, Where is the isolation then? The isolation is created by &lt;code&gt;Namespaces&lt;/code&gt; &amp;amp; &lt;code&gt;C-Groups&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The containers are fast because the process inside the container is running on the same host machine and is only separated by using namespaces &amp;amp; cgroups. &lt;/p&gt;

&lt;h2&gt;
  
  
  My social Links
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://x.com/AnishAraz" rel="noopener noreferrer"&gt;X Profile&lt;/a&gt; On X I keep posting about technologies &amp;amp; programming-related information.&lt;/p&gt;

&lt;h3&gt;
  
  
  Drop a comment if you have any questions !
&lt;/h3&gt;

</description>
      <category>docker</category>
      <category>learning</category>
      <category>linux</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Dev.to on your own domain xyz.com.</title>
      <dc:creator>ANISH ARAZ</dc:creator>
      <pubDate>Tue, 14 Jan 2025 10:04:16 +0000</pubDate>
      <link>https://forem.com/anisharaz/devto-on-your-own-domain-xyzcom-1di3</link>
      <guid>https://forem.com/anisharaz/devto-on-your-own-domain-xyzcom-1di3</guid>
      <description>&lt;p&gt;Disclaimer: This post is only meant for educational purposes &amp;amp; nothing else.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Z1U21rFYpTo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;In the video you can see I am able to access the dev.to website on my own test domain. That is possible because of reverse proxy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reverse Proxy
&lt;/h2&gt;

&lt;p&gt;A server that sits between a client and an actual server and routes requests from clients to the actual server is called a reverse proxy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gz7f2yi0s8q2xewsrul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gz7f2yi0s8q2xewsrul.png" alt="proxy" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the real world, it is almost 100% certain that any website you are visiting or any request you are making in a browser will go through a reverse proxy. You might have heard about load balancers, which are also a type of reverse proxy that routes your request to multiple available servers behind.&lt;/p&gt;

&lt;p&gt;Same reverse proxy we are using here to route requests on our domain to the real dev.to domain. Reverse proxies are very useful pieces of software, and if you are a developer, you should know this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use cases
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Protect the real address of actual servers.&lt;/li&gt;
&lt;li&gt;Route requests in microservice architecture.&lt;/li&gt;
&lt;li&gt;Secure your servers behind one single HTTPS server (reverse proxy).&lt;/li&gt;
&lt;li&gt;Load Balancers.&lt;/li&gt;
&lt;li&gt;Apart from these use cases, the sky is your limit.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Reverse proxy can route requests based on domain name. So you can host multiple applications on the same server and just route according to the domain name using a reverse proxy. You will realize the power once you understand reverse proxies.&lt;/p&gt;

&lt;h2&gt;
  
  
  The nginx config used
&lt;/h2&gt;

&lt;p&gt;One of the most popular reverse proxies is &lt;a href="https://nginx.org/" rel="noopener noreferrer"&gt;nginx&lt;/a&gt;. Let's see how we can use it as I did in the video at the top.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
    listen 443 ssl;
    server_name test.aaraz.me;
    ssl_certificate /etc/nginx/conf.d/Certs/aaraz.me/aaraz_ca_certificate.pem;
    ssl_certificate_key /etc/nginx/conf.d/Certs/aaraz.me/aaraz_origin_private.pem;
    proxy_http_version 1.1;
    add_header X-Served-By $host;
    proxy_set_header X-Forwarded-Scheme $scheme;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    location / {
        resolver 1.1.1.1;
        proxy_set_header Host 'dev.to';
        proxy_pass https://dev.to$request_uri;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It looks complicated, but you can copy and paste most of the things. The &lt;code&gt;server_name&lt;/code&gt; is the domain you want to use. The SSL thing going around is the basic setup with Cloudflare. You can learn about it &lt;a href="https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/full-strict/" rel="noopener noreferrer"&gt;HERE&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  location / {
&lt;/h3&gt;

&lt;p&gt;The most important part of the setup is this location block in the config. It says when any request comes on domain &lt;code&gt;test.aaraz.me&lt;/code&gt; send it to &lt;code&gt;https://dev.to&lt;/code&gt;. Websites can block requests when they come from a different domain, so we are using &lt;code&gt;proxy_set_header&lt;/code&gt; to set the origin domain of the request to be &lt;code&gt;dev.to&lt;/code&gt;. This makes the dev.to server think the requests are coming from their domain, &amp;amp; this is what makes the whole setup work.&lt;/p&gt;
&lt;h2&gt;
  
  
  Want to implement yourself?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Get a domain and a server.&lt;/li&gt;
&lt;li&gt;Set up nginx on the server and point the domain to the server.&lt;/li&gt;
&lt;li&gt;use the nginx config provided above by changing these values with your own&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;server_name&lt;/li&gt;
&lt;li&gt;ssl_certificate&lt;/li&gt;
&lt;li&gt;ssl_certificate_key&lt;/li&gt;
&lt;li&gt;proxy_set_header&lt;/li&gt;
&lt;li&gt;proxy_pass&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  My social links.
&lt;/h2&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://x.com/AnishAraz" rel="noopener noreferrer"&gt;
      x.com
    &lt;/a&gt;
&lt;/div&gt;



&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://github.com/anisharaz" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F105302254%3Fv%3D4%3Fs%3D400" height="460" class="m-0" width="460"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://github.com/anisharaz" rel="noopener noreferrer" class="c-link"&gt;
          anisharaz (Anish Araz) · GitHub
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          anisharaz has 18 repositories available. Follow their code on GitHub.
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.githubassets.com%2Ffavicons%2Ffavicon.svg" width="32" height="32"&gt;
        github.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>backend</category>
      <category>devops</category>
      <category>tutorial</category>
      <category>learning</category>
    </item>
    <item>
      <title>Cloud Without VM | Is it possible?</title>
      <dc:creator>ANISH ARAZ</dc:creator>
      <pubDate>Fri, 10 Jan 2025 11:27:36 +0000</pubDate>
      <link>https://forem.com/anisharaz/cloud-without-vm-is-it-possible-5e75</link>
      <guid>https://forem.com/anisharaz/cloud-without-vm-is-it-possible-5e75</guid>
      <description>&lt;h2&gt;
  
  
  What is cloud &amp;amp; cloud computing?
&lt;/h2&gt;

&lt;p&gt;Cloud is a platform where we rent and use infrastructure. Eg. google cloud, aws cloud and more. Infrastructure can be compute, storage, clusters, and much more.&lt;br&gt;
Cloud computing is a practice of making the resources available all the time, with flexibility, redundancy, and pay-per-use.&lt;/p&gt;
&lt;h2&gt;
  
  
  What are VMs?
&lt;/h2&gt;

&lt;p&gt;VMs are the technology that allows us to divide one physical machine into smaller, isolated virtual machines on the same physical machine and use them independently.It is used because setting up a whole computer is very costly compared to creating a VM. And it gives us the flexibility on dividing the resources for the VMs, e.g., RAM &amp;amp; storage.&lt;/p&gt;
&lt;h2&gt;
  
  
  If not VMs, then what else to use?
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Ans: Use Containers
&lt;/h3&gt;
&lt;h2&gt;
  
  
  containers
&lt;/h2&gt;

&lt;p&gt;Containers are another technology that allows us to isolate an application and resources required by it at the kernel level. It is the feature of Linux. It uses CGROUP &amp;amp; NAMESPACES of Linux to create an isolated environment for the application.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why containers?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Faster&lt;/li&gt;
&lt;li&gt;Resource efficient&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What is the problem then?
&lt;/h2&gt;

&lt;p&gt;Containers run a single process inside it. That single process can spin up its child process. The control of processes inside the container is handled by the application that is used in the container.For example, the MySQL container has the main process of MySQL, and it manages all the child processes that it creates.&lt;br&gt;
Unlike Linux systems, where init is the main process that creates all other processes, there is nothing as such in containers. And that is perfect because containers are made for single applications and their isolation. But we need something like initd for containers that can manage the process inside them; then it can start to behave like a VM.&lt;/p&gt;
&lt;h2&gt;
  
  
  supervisor
&lt;/h2&gt;

&lt;p&gt;It is a process control system similar to initd in Linux. I tried using it as the main process in the container, which would further allow us to run and manage other child processes.&lt;/p&gt;

&lt;p&gt;I tried using this to build a container image that can behave like a VM.&lt;br&gt;
here is the Dockerfile&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM ubuntu:25.04
RUN apt update &amp;amp;&amp;amp; apt install -y supervisor
ENTRYPOINT [ "/usr/bin/supervisord", "-n" ]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It is written in Python and sometimes gets unstable at handling its job.&lt;/p&gt;
&lt;h2&gt;
  
  
  This is where I started to build a cloud that actually uses container technology as the main compute infrastructure in the cloud, replacing the VM technology.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7evpm5ond6865mpxw2a1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7evpm5ond6865mpxw2a1.png" alt="overview" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is not live yet, but it is open source. You may come along to build it or just give a star to the repo at best.This project is built with an aim to replace VMs with containers in a cloud environment. Instead of provisioning a compute instance using VMs, this proof of concept uses container technology for compute instances. Additionally, the project focuses on delivering a user-friendly and intuitive experience for its users.&lt;/p&gt;
&lt;h2&gt;
  
  
  Architecture of the system
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F7625c1f4-296d-4974-a252-89c482c26b7c" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F7625c1f4-296d-4974-a252-89c482c26b7c" alt="Untitled-2024-06-23-1246" width="4814" height="2178"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Architecture of SSH proxy
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsrg74zysngmupdxtkn2t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsrg74zysngmupdxtkn2t.png" alt="ssh_proxy" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Github Repo
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/anisharaz" rel="noopener noreferrer"&gt;
        anisharaz
      &lt;/a&gt; / &lt;a href="https://github.com/anisharaz/CaaS" rel="noopener noreferrer"&gt;
        CaaS
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Cloud provider with container replacing virtual machines. You can rent compute units for hosting your applications.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CaaS (Container As A Service)&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;This project is build with an aim to replace VMs with containers in a cloud environment. Instead of provisioning a compute instance using VMs, this proof-of-concept uses container technology for compute instance. Additionally, the project focuses on delivering a user-friendly and intuitive experience for its users.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Technologies Used&lt;/h2&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Ansible&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;Nextjs&lt;/li&gt;
&lt;li&gt;Shad-cn UI &amp;amp; Tailwind CSS&lt;/li&gt;
&lt;li&gt;Websockets&lt;/li&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;SSH Tunnels&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/105302254/404268127-96a9255a-8a2d-4365-acbe-babb8abd4730.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTIyMzU4NTAsIm5iZiI6MTc1MjIzNTU1MCwicGF0aCI6Ii8xMDUzMDIyNTQvNDA0MjY4MTI3LTk2YTkyNTVhLThhMmQtNDM2NS1hY2JlLWJhYmI4YWJkNDczMC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwNzExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDcxMVQxMjA1NTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00NDI3OTVjZjliM2I4NWZmYjU2YTg2MGJmMWQ1M2Y0YTZkNDdlN2Q5NGVlZmJjN2ZmNTdhNzQ3NjY0YTg2ZjczJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.OqZ5L7rbG2VmBkt2G0EpWa1i2TSin6VsyyIFVvy5vPs"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F105302254%2F404268127-96a9255a-8a2d-4365-acbe-babb8abd4730.png%3Fjwt%3DeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTIyMzU4NTAsIm5iZiI6MTc1MjIzNTU1MCwicGF0aCI6Ii8xMDUzMDIyNTQvNDA0MjY4MTI3LTk2YTkyNTVhLThhMmQtNDM2NS1hY2JlLWJhYmI4YWJkNDczMC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwNzExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDcxMVQxMjA1NTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00NDI3OTVjZjliM2I4NWZmYjU2YTg2MGJmMWQ1M2Y0YTZkNDdlN2Q5NGVlZmJjN2ZmNTdhNzQ3NjY0YTg2ZjczJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.OqZ5L7rbG2VmBkt2G0EpWa1i2TSin6VsyyIFVvy5vPs" alt="Untitled-2024-06-23-1246"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/105302254/404267448-7494d168-b900-4050-89a2-0240182d775d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTIyMzU4NTAsIm5iZiI6MTc1MjIzNTU1MCwicGF0aCI6Ii8xMDUzMDIyNTQvNDA0MjY3NDQ4LTc0OTRkMTY4LWI5MDAtNDA1MC04OWEyLTAyNDAxODJkNzc1ZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwNzExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDcxMVQxMjA1NTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wYzgxZDViYWFjZDMzMDdmNzIwYTJiMmViNzUwMmNjMDk4MThjZDNjYjMxMmQxYmJiMjA1OTkyMjcxYjZlOWY5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.cZKJ7RFKuUZYDSMuzUyj3qpTajd68TX1jhP7BHajnP8"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F105302254%2F404267448-7494d168-b900-4050-89a2-0240182d775d.png%3Fjwt%3DeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTIyMzU4NTAsIm5iZiI6MTc1MjIzNTU1MCwicGF0aCI6Ii8xMDUzMDIyNTQvNDA0MjY3NDQ4LTc0OTRkMTY4LWI5MDAtNDA1MC04OWEyLTAyNDAxODJkNzc1ZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwNzExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDcxMVQxMjA1NTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wYzgxZDViYWFjZDMzMDdmNzIwYTJiMmViNzUwMmNjMDk4MThjZDNjYjMxMmQxYmJiMjA1OTkyMjcxYjZlOWY5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.cZKJ7RFKuUZYDSMuzUyj3qpTajd68TX1jhP7BHajnP8" alt="Untitled-2024-06-23-1246"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/105302254/420336949-c0e8474f-9c31-48ed-8149-07a91edbf89c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTIyMzU4NTAsIm5iZiI6MTc1MjIzNTU1MCwicGF0aCI6Ii8xMDUzMDIyNTQvNDIwMzM2OTQ5LWMwZTg0NzRmLTljMzEtNDhlZC04MTQ5LTA3YTkxZWRiZjg5Yy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwNzExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDcxMVQxMjA1NTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT05N2VmNGM4OTRhZTdlODgzZjY3ZGE2OTU5ZmM1YzUzMmNlMjUwZjgwY2UzMTExMjAyNzFiNGY1NjE2M2NjMGQ3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.VX8Vdtp7aZ0xrV8IlbJnp5b3fYNKAZ3Dt_WbSrEZUAo"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F105302254%2F420336949-c0e8474f-9c31-48ed-8149-07a91edbf89c.png%3Fjwt%3DeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTIyMzU4NTAsIm5iZiI6MTc1MjIzNTU1MCwicGF0aCI6Ii8xMDUzMDIyNTQvNDIwMzM2OTQ5LWMwZTg0NzRmLTljMzEtNDhlZC04MTQ5LTA3YTkxZWRiZjg5Yy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwNzExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDcxMVQxMjA1NTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT05N2VmNGM4OTRhZTdlODgzZjY3ZGE2OTU5ZmM1YzUzMmNlMjUwZjgwY2UzMTExMjAyNzFiNGY1NjE2M2NjMGQ3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.VX8Vdtp7aZ0xrV8IlbJnp5b3fYNKAZ3Dt_WbSrEZUAo" alt="Untitled-2024-06-23-1246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-alert markdown-alert-note"&gt;
&lt;p class="markdown-alert-title"&gt;Note&lt;/p&gt;
&lt;p&gt;Setting Up the prject &lt;a href="https://caas.aaraz.me/documentation/projectsetup" rel="nofollow noopener noreferrer"&gt;GUIDE&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-alert markdown-alert-warning"&gt;
&lt;p class="markdown-alert-title"&gt;Warning&lt;/p&gt;
&lt;p&gt;Full Documentation of this project is under development.&lt;/p&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/anisharaz/CaaS" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;&lt;a href="https://x.com/AnishAraz" rel="noopener noreferrer"&gt;X Profile&lt;/a&gt; &lt;a href="https://github.com/anisharaz/" rel="noopener noreferrer"&gt;Github Profile&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>webdev</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
