<?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>DEV Community: Jihed Kdiss</title>
    <description>The latest articles on DEV Community by Jihed Kdiss (@0xjio).</description>
    <link>https://dev.to/0xjio</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%2F882894%2F0c574935-53bf-41c3-8e8f-a3cdab85fa93.jpg</url>
      <title>DEV Community: Jihed Kdiss</title>
      <link>https://dev.to/0xjio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/0xjio"/>
    <language>en</language>
    <item>
      <title>Host your own CTF for free 💸 (CTFd Setup Guide)</title>
      <dc:creator>Jihed Kdiss</dc:creator>
      <pubDate>Wed, 20 Mar 2024 01:54:36 +0000</pubDate>
      <link>https://dev.to/0xjio/host-your-own-ctf-for-free-ctfd-setup-guide-4jbp</link>
      <guid>https://dev.to/0xjio/host-your-own-ctf-for-free-ctfd-setup-guide-4jbp</guid>
      <description>&lt;h2&gt;
  
  
  Backstory
&lt;/h2&gt;

&lt;p&gt;During the last weekend, a small cyber security club at my town organized their first online CTF competition. I offered to take care of the infrastructure since I've been tinkering with &lt;a href="https://ctfd.io/" rel="noopener noreferrer"&gt;CTFd&lt;/a&gt; for a couple of weeks and surprisingly everything went well! (Except two server outages that didn't last long 😁) That's why I'm here sharing with you the process of how I set up, configured, and monitored a CTF platform that handled &lt;strong&gt;150+ users&lt;/strong&gt; simultaneously totally &lt;strong&gt;FOR FREE&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%2Fao750f69bweyvonmjb5z.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%2Fao750f69bweyvonmjb5z.png" alt="Statistics" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Roadmap 🛣️
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create and configure a Linux VM on the cloud&lt;/li&gt;
&lt;li&gt;Deploy CTFd using docker-compose&lt;/li&gt;
&lt;li&gt;Set up CTFd Admin Panel and settings&lt;/li&gt;
&lt;li&gt;Get a domain name and link it with the VM&lt;/li&gt;
&lt;li&gt;Enable HTTPS by generating a certificate&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ Before we start make sure you have the &lt;a href="https://education.github.com/pack" rel="noopener noreferrer"&gt;GitHub Student Pack&lt;/a&gt; since it's the only way to have all these perks for free. Make sure also to link &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;Microsoft Azure&lt;/a&gt; to your GitHub Student account.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  First step: Linux VM on the cloud! ☁️
&lt;/h2&gt;

&lt;p&gt;This step is fairly simple. You just create a new instance/resource/linode/machine/VM whatever your provider calls it. In my case I made an Ubuntu Server VM on Microsoft Azure portal.&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%2Fmbebfp4zb24k1bk3vhz3.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%2Fmbebfp4zb24k1bk3vhz3.png" alt="Azure Portal" width="800" height="813"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚠️ The most important things during this step are:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose a strong SSH password and keep it to yourself&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;inbound ports&lt;/strong&gt; 80 and 443 for HTTP and HTTPS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you finish this process, you'll have SSH access to your VM. It's time for a quick &lt;code&gt;apt update &amp;amp;&amp;amp; apt upgrade&lt;/code&gt; followed by a nice &lt;code&gt;apt install docker.io docker-compose&lt;/code&gt;. At this point you're ready for step 2!&lt;/p&gt;




&lt;h2&gt;
  
  
  Second step: Deploying CTFd with docker 🐋
&lt;/h2&gt;

&lt;p&gt;We start by cloning the CTFd github repo: &lt;code&gt;git clone https://github.com/CTFd/CTFd.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then, you could add one of the themes in &lt;a href="https://github.com/CTFd/themes" rel="noopener noreferrer"&gt;this repository&lt;/a&gt; to your &lt;code&gt;themes&lt;/code&gt; folder to make your CTF shine in fashion! ✨&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%2F6qhcg3ilam1l2pna8lrq.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%2F6qhcg3ilam1l2pna8lrq.png" alt="CTFd theme" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, go on and build your docker image by running:&lt;br&gt;
&lt;code&gt;sudo docker-compose up&lt;/code&gt;. It will take some time but by the end of it, you will have CTFd up and running.&lt;/p&gt;




&lt;h2&gt;
  
  
  Third step: setting up the admin panel 👔
&lt;/h2&gt;

&lt;p&gt;This process is pretty straight-forward. Navigate to your VM IP in your browser and you'll be welcomed by this:&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%2Fhbuqaw2t8dw3zi85mofq.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%2Fhbuqaw2t8dw3zi85mofq.png" alt="CTFd Setup" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All you gotta do is follow the onscreen instructions and you'll be ready to go. Don't forget to select the theme you uploaded in step 2.&lt;/p&gt;




&lt;h2&gt;
  
  
  Fourth step: Link the domain name! 🌐
&lt;/h2&gt;

&lt;p&gt;Believe it or not, this is the easiest step in this guide. After claiming your preferred domain name from &lt;a href="https://www.namecheap.com/" rel="noopener noreferrer"&gt;namecheap&lt;/a&gt; or any other provider that gives free domains to students, all you need to do is add these records in your DNS settings.&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%2F1ujguyaeoml2yt19kcwr.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%2F1ujguyaeoml2yt19kcwr.png" alt="DNS Settings" width="784" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! Now instead of typing the IP in the address bar, you can type your new domain name instead 💫&lt;/p&gt;




&lt;h2&gt;
  
  
  Final step: Enabling HTTPS
&lt;/h2&gt;

&lt;p&gt;This article right &lt;a href="https://dev.to/roeeyn/how-to-setup-your-ctfd-platform-with-https-and-ssl-3fda"&gt;here&lt;/a&gt; contains a well-explained guide on how to generate a SSL certificate and configure it with your domain name and server. By the end of it you'll have a nice shiny green lock 🔒 next to your domain name.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;And that's how you host your own CTF for free! 💸&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Author:&lt;/strong&gt; Jihed Kdiss • &lt;strong&gt;My website:&lt;/strong&gt; &lt;a href="https://jihedkdiss.tn" rel="noopener noreferrer"&gt;jihedkdiss.tn&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Feel free to contact me in case you run into some trouble.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>cloud</category>
      <category>docker</category>
      <category>azure</category>
    </item>
    <item>
      <title>How to create a portfolio website for free?</title>
      <dc:creator>Jihed Kdiss</dc:creator>
      <pubDate>Sun, 26 Jun 2022 10:55:45 +0000</pubDate>
      <link>https://dev.to/0xjio/how-to-create-a-portfolio-website-for-free-4d0a</link>
      <guid>https://dev.to/0xjio/how-to-create-a-portfolio-website-for-free-4d0a</guid>
      <description>&lt;p&gt;As an aspiring developer or designer 😎 you'll have to &lt;strong&gt;showcase your great projects&lt;/strong&gt; for hiring managers &amp;amp; recruiters through your portfolio. In today's article I'll show you how to create &lt;strong&gt;your very own portfolio&lt;/strong&gt; and publish it &lt;strong&gt;FOR FREE&lt;/strong&gt;! 🤩&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Have a look at &lt;strong&gt;&lt;a href="https://jihedkdiss.netlify.app" rel="noopener noreferrer"&gt;my own Portfolio website&lt;/a&gt;&lt;/strong&gt; to get an idea of what yours will look like after you complete the tutorial! 😉&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Design your portfolio website
&lt;/h2&gt;

&lt;p&gt;In the first step you'll have to either design your website &lt;strong&gt;from scratch&lt;/strong&gt; or &lt;strong&gt;edit a template&lt;/strong&gt;. Feel free to work with any technology you'd like and any libraries you want. &lt;em&gt;Be creative!&lt;/em&gt; 👨‍💻&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tip: Many websites out there provide free templates for any kind of website. You'll find a hand-made list at the end. &lt;em&gt;If you're curious&lt;/em&gt;, I used &lt;a href="https://html5up.net/" rel="noopener noreferrer"&gt;HTML5UP&lt;/a&gt; for &lt;a href="https://jihedkdiss.netlify.app" rel="noopener noreferrer"&gt;my website&lt;/a&gt;. 🌟&lt;/p&gt;
&lt;/blockquote&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%2Fxxdpifqfdui1zcg3tv6p.jpeg" 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%2Fxxdpifqfdui1zcg3tv6p.jpeg" alt="Multiverse template by html5up.net" width="800" height="622"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this process, you'll have to gather your &lt;strong&gt;open source projects&lt;/strong&gt;, clients case studies and any other works you've done that involve your professional skills. Make sure to write a little description of each project and insert a link to it if it's a website or &lt;strong&gt;GitHub repository&lt;/strong&gt;. Your portfolio is also the best place to put links to all your social media accounts and give an insight of your education, career and social life. 🤓&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tip: &lt;em&gt;Best work comes first!&lt;/em&gt; No need to fill it up with meaningless projects. &lt;strong&gt;Recruiters prefer quality over quantity&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Host your website
&lt;/h2&gt;

&lt;p&gt;After you're done with coding your website (which takes usually 3-5 days) it's time to get it online! You have many option in this step, you can for example upload it to GitHub and get a GitHub pages link, simply. 🤷🏻‍♂️&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tip: Name your GitHub repository &lt;strong&gt;username.github.io&lt;/strong&gt; and use your repository as host. 💫&lt;/p&gt;
&lt;/blockquote&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%2Fnp1wzoit4bd1x54tqz20.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%2Fnp1wzoit4bd1x54tqz20.png" alt="Netlify Dashboard" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Personally, I recommend &lt;a href="https://www.netlify.com/" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt; or &lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; for hosting &amp;amp; deployment. &lt;a href="https://jihedkdiss.netlify.app" rel="noopener noreferrer"&gt;My own portfolio&lt;/a&gt; is hosted on &lt;strong&gt;Netlify&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why to choose Netlify 🎯
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It provides VERY FAST deployment &lt;em&gt;(Really. It's very fast!)&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;100 GB of traffic monthly for free &lt;em&gt;(That's more than enough for a personal website)&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Loading speeds are great thanks to their CDN. ⚡️&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Tip: Netlify also provides &lt;strong&gt;FREE SSL Certificates&lt;/strong&gt; 🔒 for your website provided by Let's Encrypt. It takes a couple minutes to see the green lock on your website and it doesn't need configuration at all.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Get a free domain name! 💲
&lt;/h2&gt;

&lt;p&gt;The final step &lt;em&gt;(and maybe the most interesting)&lt;/em&gt; to creating your amazing portfolio website is setting your domain name!&lt;br&gt;
For this step we'll use the famous &lt;strong&gt;&lt;a href="https://www.freenom.com" rel="noopener noreferrer"&gt;Freenom&lt;/a&gt;&lt;/strong&gt;, a &lt;strong&gt;free domain provider&lt;/strong&gt; that allows you to choose from a range of free domains: &lt;strong&gt;.tk .ml .ga .cf&lt;/strong&gt; etc...&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%2Foysn7n7nf229qn7z3lsy.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%2Foysn7n7nf229qn7z3lsy.png" alt="Freenom Dashboard" width="800" height="548"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tip: This step is better explained with a video. Here is the best tutorial out there, fast and straight to the point. &lt;strong&gt;Make sure to follow step-by-step.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/3Uopc4AFjOY"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Link Netlify with your new domain name ✔️
&lt;/h2&gt;

&lt;p&gt;The steps to link your domain and host are pretty simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Add a custom domain&lt;/strong&gt; to your site on &lt;u&gt;Netlify dashboard&lt;/u&gt;.&lt;/li&gt;
&lt;li&gt;Go add Netlify's &lt;strong&gt;nameservers&lt;/strong&gt; to your domain name on &lt;u&gt;freenom's dashboard&lt;/u&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Verify DNS Configuration&lt;/strong&gt; on the bottom of the page to launch the auto SSL Configuration. 🔒&lt;/li&gt;
&lt;li&gt;Wait a couple minutes (up to 10 minutes) and come back, you'll see that &lt;strong&gt;your website is live&lt;/strong&gt; with a green lock!&lt;/li&gt;
&lt;li&gt;Congrats king/queen you did it! 👑&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Tip: You can follow this step-by-step video tutorial if you encounter any problem or need further clarifications.&lt;/p&gt;
&lt;/blockquote&gt;

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




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

&lt;p&gt;These are the steps you need to follow in order to get your portfolio website up and running. Thanks for your time and I hope to see all your portfolios in the comments section. Support me by sharing this article and following me on social media:&lt;br&gt;
&lt;a href="//github.com/jihedkdiss"&gt;GitHub&lt;/a&gt; / &lt;a href="//linkedin.com/in/jihedkdiss"&gt;LinkedIn&lt;/a&gt; / &lt;a href="//twitter.com/jiokdiss"&gt;Twitter&lt;/a&gt; / &lt;a href="//facebook.com/jiokdiss"&gt;Facebook&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fun fact: This is my first post here I hope you guys love it :)&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Free templates for your websites 🆓
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://html5up.net/" rel="noopener noreferrer"&gt;html5up.net&lt;/a&gt;&lt;/strong&gt; HTML5 Templates that are fully responsive and easy to customize.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://themefisher.com/free-bootstrap-templates" rel="noopener noreferrer"&gt;ThemeFisher&lt;/a&gt;&lt;/strong&gt; Free Bootstrap Templates for a variety of uses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://bootstrapmade.com/bootstrap-portfolio-templates/" rel="noopener noreferrer"&gt;BootstrapMade&lt;/a&gt;&lt;/strong&gt; Website templates for creative agency, design and photography.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>career</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
