<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Akashdeep Dhar on Medium]]></title>
        <description><![CDATA[Stories by Akashdeep Dhar on Medium]]></description>
        <link>https://medium.com/@t0xic0der?source=rss-4d38c5c53dd3------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Stories by Akashdeep Dhar on Medium</title>
            <link>https://medium.com/@t0xic0der?source=rss-4d38c5c53dd3------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 23 Jun 2026 07:35:38 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@t0xic0der/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Simply Accessible Container Performance Monitoring with SuperVisor]]></title>
            <link>https://t0xic0der.medium.com/simply-accessible-container-performance-monitoring-with-supervisor-7fb47f925f3b?source=rss-4d38c5c53dd3------2</link>
            <guid isPermaLink="false">https://medium.com/p/7fb47f925f3b</guid>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[containers]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[docker]]></category>
            <dc:creator><![CDATA[Akashdeep Dhar]]></dc:creator>
            <pubDate>Wed, 03 Mar 2021 08:05:38 GMT</pubDate>
            <atom:updated>2021-03-04T16:20:38.212Z</atom:updated>
            <content:encoded><![CDATA[<h3>Observability of containers</h3><p>Containerization is an awesome next-step forward when it comes to deploying services and applications reliably without needing to worry about the intricacies of adding dependencies and configuring environments. One can easily deploy, utilize, upgrade and remove these with just a few lines of commands and the unintrusiveness nature of the containers is almost very rewarding for the sysadmins — now that they do not have to worry about taking care of the residual configurations!</p><p>Although observability of such containers is an entirely different story, due to the fact that every container is a disjoint system in its own right with a lot of configuration variables to consider, performance statistics to study and execution histories to read through. Having all such complexities to think about could potentially lead to the creation of a very convoluted tool that may make system monitoring look overwhelming to the users — that is something I tried to address with this service of mine.</p><p>The earliest commit made to this project was about three months ago, but it has been something I have been conceptualizing forever. SuperVisor is a combination of two services — the first is a <strong>driver service</strong> which monitors the container station system deeply and dispatches metrics, while the second is a <strong>frontend service</strong> which takes up the metrics served by the former and parses them in an interactive and functional dashboard.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-8JWtH4trUz_6qM8lDQ2lA.png" /><figcaption>Your personalized dashboard for monitoring your container stations</figcaption></figure><h3><strong>How do I set it up at my end?</strong></h3><p>You would really want to take it for a spin if you liked what you saw above. Setting up SuperVisor on a Docker station is literally as easy as following the provided three steps in sequence.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*x6SeHKBIVF3XQ3MykGjXMA.gif" /><figcaption>Here’s an animated follow-up about how you can set up the <strong>driver service</strong> at your end</figcaption></figure><p><strong>Step #1</strong><br>Run the following commands to start up the <strong>driver service</strong> and take a note of sync URI,<em> </em>termsocket URI and passcode carefully.</p><pre>docker run -d \<br>  --restart unless-stopped \<br>  --name supervisor-driver-service \<br>  -p 8888:8888 \<br>  -p 6969:6969 \<br>  -v /var/run/docker.sock:/var/run/docker.sock \<br>  t0xic0der/supervisor-driver-service:v1.1.0b-amd64</pre><pre>docker logs supervisor-driver-service</pre><pre> ,---.                    .    ,o               <br> `---..   .,---.,---.,---.|    |.,---.,---.,---.<br>     ||   ||   ||---&#39;|     \  / |`---.|   ||    <br> `---&#39;`---&#39;|---&#39;`---&#39;`      `&#39;  ``---&#39;`---&#39;`    <br>           |<br> * Driver Service v1.1.0-beta<br> * IP version        : 4<br> * <strong>Passcode</strong>          : 6097A8C00A2BC97C<br> * <strong>Sync URI</strong>          : http://0.0.0.0:8888/<br> * <strong>TermSocket URI</strong>    : http://0.0.0.0:6969/<br> * Monitor service   : Psutil v5.8.0<br> * Container service : DockerPy v4.4.1<br> * WebSocket service : Terminado v0.9.2<br> * Endpoint service  : Falcon v2.0.0<br> * HTTP server       : Werkzeug v1.0.1<br> * Running on http://0.0.0.0:8888/ (Press CTRL+C to quit)<br> * TermSocket started on port 6969</pre><p><strong>Step #2<br></strong>Run the following command to start up the <strong>frontend</strong> <strong>service</strong> and head over to http://&lt;HOSTNAME&gt;:9696/using a browser of your choice.</p><pre>docker run -d \<br>  --restart unless-stopped \<br>  --name supervisor-frontend-service \<br>  -p 9696:9696 \<br>  t0xic0der/supervisor-frontend-service:v1.1.0b-amd64</pre><p><strong>Step #3<br></strong>Now enter the sync URI, termsocket URI and passcode which you acquired from the first step and enter them in the login page to get started. Do not copy the ones provided above as they are here just for representation.</p><p>You will be welcomed by the dashboard page which lists all the available containers, images, networks and volumes. From there on, I would recommend exploring further to see what SuperVisor is capable of!</p><h3>In action</h3><p>Here are some screenshots which might convince you to give it a try if you are not already 😁</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fnDCy2YNBxjZ2YlIm0fLxQ.png" /><figcaption>Container listing with a variety of options to analyze, study and inspect them</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8KdHV5-0VlzQVuIUMlRO1Q.png" /><figcaption>Not just it monitors containers but it also monitors the system on which they run</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6mJKWaWxpcT2zkUrfcWcWw.png" /><figcaption>Know about the entire revision history of an image without going to the registry</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9cg5bYfk4arDH-pEykMmQg.png" /><figcaption>Granular process-state control for the container station system</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8DlE96V3KGP31YkP9dBH0Q.png" /><figcaption>Dynamically loading log display for containers with one-second refresh rate</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*q6oOftVLiaKBtEtgsjpy5A.png" /><figcaption>Diagnose containers throughout by attaching a console as a web-terminal</figcaption></figure><h3>Epilogue</h3><p>Find the <strong>frontend service</strong> here <a href="https://hub.docker.com/r/t0xic0der/supervisor-frontend-service">https://hub.docker.com/r/t0xic0der/supervisor-frontend-service</a> and the <strong>driver service</strong> here <a href="https://hub.docker.com/r/t0xic0der/supervisor-driver-service">https://hub.docker.com/r/t0xic0der/supervisor-driver-service</a> — images would be actively published here on every release.</p><p>As this is a beta testing release, bugs would be actively sorted out and features would be constantly added in — so criticisms, praise, advice and everything else are most welcome! If you like what you saw here, please go ahead and star these repositories to show your support and motivate me <a href="https://github.com/t0xic0der/supervisor-frontend-service/">https://github.com/t0xic0der/supervisor-frontend-service/</a> and <a href="https://github.com/t0xic0der/supervisor-driver-service/">https://github.com/t0xic0der/supervisor-driver-service/</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7fb47f925f3b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Project Sanctuary]]></title>
            <link>https://t0xic0der.medium.com/project-sanctuary-5fd4bf8f86b6?source=rss-4d38c5c53dd3------2</link>
            <guid isPermaLink="false">https://medium.com/p/5fd4bf8f86b6</guid>
            <category><![CDATA[anonymous]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[messaging]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[privacy]]></category>
            <dc:creator><![CDATA[Akashdeep Dhar]]></dc:creator>
            <pubDate>Thu, 16 Apr 2020 08:57:48 GMT</pubDate>
            <atom:updated>2020-06-12T05:48:16.560Z</atom:updated>
            <content:encoded><![CDATA[<h3>Sanctuary — A secure synchronous lightweight chatroom with zero logging and total transience</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xcVVRNY0jlKzaafx.png" /></figure><h3>Imagine situations when…</h3><ul><li>You want to send evidence to the human resource department about workplace harassment but you run the risk of losing your job if you are discovered doing so!</li><li>You have lost all your communication equipment on a secret mission though you need to dispatch a directive securely to your units without anybody else taking a peek!</li><li>You are talking to your sweetheart and suddenly their phone is snatched away — There is probably no way for you to get rid of all conversations from both the sides!</li></ul><h3>TL;DR</h3><p>I have created a secure synchronous lightweight chatroom web application with the following features -</p><ul><li>Provides real-time conversation using synchronous sockets</li><li>Zero logging or data storage to minimize vulnerabilities</li><li>No-frills alias and password-protected chatroom creation</li><li>Refresh, close tab, logout or purge chatroom to cover tracks</li><li>Transient chatrooms stay valid for 60 minutes before auto-purge</li><li>Complete support for HTML5 formatting tags in conversations</li><li>Lightweight and responsive so usable across multiple devices</li><li>State-of-the-art chatroom user session management</li></ul><h3>You can find the repository here</h3><p><a href="https://github.com/astrosonic/sanctuary">Sanctuary by t0xic0der</a></p><h3>Using stuffs like</h3><ul><li><strong>Socket.IO</strong> for <em>real-time, bidirectional and event-based communication</em></li><li><strong>Flask</strong> for <em>web backbone, complex scalability and WSGI layer</em></li><li><strong>Hashing techniques</strong> for <em>password protection, identification and authentication</em></li></ul><h3>Why would I need a tool like this?</h3><ul><li>There are not many no-frills messaging applications out there.</li><li>All platforms gather your data and footprints are recorded.</li><li>Most platforms would want you to register at their platform first.</li><li>Application would also require resources for installation.</li><li>All conversations are mostly logged in remote servers.</li><li>Cryptography used in encrypting your messages is not reliable.</li><li>There is no way to maintain anonymity during conversations.</li></ul><h3>Okay, I’m listening…</h3><p>Glad that you are listening!</p><p>I have created a platform hosting lightweight and protected chatrooms for secure synchronous conversations where no data is logged and there is total transience. Using synchronous sockets, I was able to provide for real-time messaging. There are less chances of impending vulnerabilities or risks on data breach as literally nothing is being stored. Being a web application, it does not require any kind of offline installation.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/0*SgEZrFxrbi29Qg-T.png" /><figcaption>The no-frills nature of the web app can be alluring. Easy way in and easy way out.</figcaption></figure><p>The no-frills nature of it requires you to provide just an alias — a false identity — and a chatroom name and password to get started. Just enter a secure password of your own and you will be granted with a chatroom link. The chatroom can exist for as long as 60 minutes before self-destructing. You can of course prematurely purge it!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/0*bgC6SIU5R_mRz8tj.png" /><figcaption>Here’s a chatroom created with a not-so creative name. The joining ID is important though.</figcaption></figure><p>When the chatroom is created, all you need to do is share the link and the password to it with your allies so that they can roll in for some secure conversation. They can join, chat and leave anytime within the valid duration as many times as they want. As there can be many chatrooms with the same name, special care has been taken to distinguish between them.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/0*uSbux-IW1w2De7qE.png" /><figcaption>When joining a chatroom, the user will be told about it so they will know exactly what they are joining.</figcaption></figure><p>Now, that you have joined the room — you can chat with the participated members. To spice things up, I have added full support to HTML5 tags so you can extend your experience by sharing images, videos and documents using them. The following can be done from within the chatroom to maintain total safety.</p><ul><li>You can <strong>refresh the page</strong> to get rid of all messages at your end while staying in the chatroom.</li><li>You can <strong>logout from the room</strong> to get rid of all messages at your end while leaving the chatroom.</li><li>You can <strong>purge the chatroom</strong> to get rid of all messages from all the ends while kicking everyone from the chatroom.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/0*A_MRoq-giS9MlZH_.png" /><figcaption>This is the chatroom — It supports HTML5 tags natively so go figure!</figcaption></figure><p>You can of course logout from the room if you are done with your part of the conversation but this would remove all the conversations only from your end. Once this action is performed, the session is invalidated and you cannot backtrack your way to the chatroom unless you decide to log back in again to continue.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/0*qhz1SMwQxLV70gar.png" /><figcaption>When you logout, literally no residual information about this session is left behind.</figcaption></figure><p>On <em>chatroom purge</em>, all conversations are removed from all the ends and every participant is removed from the chatroom. The chatroom is then destroyed — meaning that nobody else can join the chatroom henceforth. This capability is given to every participant as there is no telling that which side can be compromised.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/0*BEDALPc_pNhxqXO4.png" /><figcaption>Once a chatroom is purged from an end — all records and session information from all ends are removed.</figcaption></figure><p>Well, there would always exist people who like to indulge in the monkey business of finding their way into expired and invalidated sessions. With the state-of-the-art session management system and user-chatroom bind, I was able to create a robust and secure protection for the chatrooms. This is how it would show up when you do the undone.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/0*gNr3i2OwVoaFuARI.png" /><figcaption>Try as hard as you want — You cannot find your way into any invalidated or expired session.</figcaption></figure><h3>What are your future plans?</h3><p>I am planning to build myself a gaming PC — fully equipped with twin RTX2080Tis and get into the streaming business full-time because ….</p><h3>Hold on! I am asking about the future of this project</h3><p>Oh my bad!</p><p>The project is currently in its infancy. Bugs are discovered and fixed everyday. New feature requests are made and worked upon continually. It would be sometime before this thing becomes production ready but that definitely does not mean you cannot try it. In fact I would encourage you to do so.</p><p>If you end up liking my work, I would ask you give stars to it and fork it so that you can contribute to the development of the project. This project has been free and it will always be.</p><h3>You can find the repository here</h3><p><a href="https://github.com/astrosonic/sanctuary">Sanctuary by t0xic0der</a></p><p><em>Originally published at </em><a href="https://dev.to/t0xic0der/sanctuary-a-secure-synchronous-lightweight-chatroom-with-zero-logging-and-total-transience-f8k"><em>https://dev.to</em></a><em> on April 16, 2020.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5fd4bf8f86b6" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>