<?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: Nikhil Nepal</title>
    <description>The latest articles on Forem by Nikhil Nepal (@nikhnp).</description>
    <link>https://forem.com/nikhnp</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%2F2361085%2Fc7248d36-eaa1-4f45-9df6-53e39ff494f7.png</url>
      <title>Forem: Nikhil Nepal</title>
      <link>https://forem.com/nikhnp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nikhnp"/>
    <language>en</language>
    <item>
      <title>ChatGPT vs Gemini: Who can create better svg?</title>
      <dc:creator>Nikhil Nepal</dc:creator>
      <pubDate>Tue, 04 Nov 2025 08:34:04 +0000</pubDate>
      <link>https://forem.com/nikhnp/afraid-of-ai-taking-your-job-learn-svg-5c87</link>
      <guid>https://forem.com/nikhnp/afraid-of-ai-taking-your-job-learn-svg-5c87</guid>
      <description>&lt;p&gt;I am currently working on recreating the Google weather widget. I'm learning React, and creating a weather widget is a great project for beginners. The temperature graph that Google's weather widget has is something new, something that I couldn't find in any tutorial online and thus would have to do on my own. All in all, it's a simple project, and I can find tons of resources online if I get stuck but it also has something that I will have to work by myself.&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%2Fxmidljx0nti11ovsya4a.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%2Fxmidljx0nti11ovsya4a.png" alt="Google weather widget" width="705" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I immediately had a problem as soon as I began creating the layout. I don't like icons Google is using in the widget. Sure, it works for google, and their expressive design, but I personally find it too gaudy. I like minimal a little too much, I admit, so I would have to search for other icons.&lt;/p&gt;

&lt;p&gt;To create the weather widget, I am using OpenWeatherMap's API and they do provide their icons, which I prefer over Google's. They provide a png, however, and it looks really fuzzy when scaled up.&lt;/p&gt;

&lt;p&gt;I then started looking up icons, and came across this problem; I couldn't find consistent images. I then had the bright idea - Why not just ask AI? They can code fine. They should be able to knock out svgs, too, right?&lt;/p&gt;

&lt;p&gt;So, I asked ChatGPT and Gemini, the two AI I most frequently use. Here's the prompt I provided both of them:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;I am making a weather app, and want a bunch of svgs for the&lt;/code&gt; &lt;code&gt;various weathers. I am going to provide you the weather conditions,&lt;/code&gt; &lt;code&gt;and I want you to provide me the corresponding svg code&lt;/code&gt; &lt;code&gt;(one for day and one for night). Please remember all the svg should&lt;/code&gt; &lt;code&gt;have the same design language, and should work together with&lt;/code&gt; &lt;code&gt;one another. I have povided you with the colours I want to use,&lt;/code&gt; &lt;code&gt;and the idea I have for how it should look.&lt;/code&gt; &lt;br&gt;
&lt;code&gt;For all the svgs, I want you to use a 100x100 svg size and use these colours:&lt;/code&gt; &lt;br&gt;
&lt;code&gt;1. Orange (For the sun, and thunderbolts): (#FF8547)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;2. Black (For the Moon, Dark clouds, Rain, Snow, and Mist): (#210F04)&lt;/code&gt; &lt;br&gt;
&lt;code&gt;3. White (For the Clouds, Moon spots, and accents(when needed))&lt;/code&gt; &lt;br&gt;
&lt;code&gt;4. Gray (Accent colour (when needed)): (#626C66)&lt;/code&gt; &lt;br&gt;
&lt;code&gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Here are the weather conditions:&lt;/code&gt; &lt;br&gt;
&lt;code&gt;1. Clear sky - Day (Sun only) , Night [Moon only]&lt;/code&gt;&lt;br&gt;
&lt;code&gt;2. Few clouds - Day (Sun behind clouds), Night (Moon behind clouds)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;3. Scattered clouds - Day and night (Some clouds)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;4. Broken clouds - Day and night (Light and dark clouds)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;5. Shower rain - Day and night (Light and dark clouds with rain)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;6. Rain - Day (Sun behind cloud and rain), Night (Moon behind cloud and rain)&lt;/code&gt; &lt;br&gt;
&lt;code&gt;7. Thunderstorms - Day and night (Dark and light cloud behind thunder)&lt;/code&gt; &lt;br&gt;
&lt;code&gt;8. Snow - Day and night (Snow)&lt;/code&gt; &lt;br&gt;
&lt;code&gt;9. Mist - Day and night (Mist)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I used Gemini 2.5 Pro and ChatGPT(Didn't show model info). ChatGPT seems to just show the output while Gemini just shows the code. I have pasted the code in codepen, and taken screenshots, then posted here for Gemini. Here's what they provided:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clear Sky (Day)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2Fthm0iwsmm6llk3yqxvjx.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%2Fthm0iwsmm6llk3yqxvjx.png" alt="Chatgpt clear sky - day" width="800" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini : &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%2Fejg1g4tphx4g84wn37q5.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%2Fejg1g4tphx4g84wn37q5.png" alt="Gemini clear sky - day" width="362" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clear Sky (Night)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2Fb2ye7wwj9wdm1cbcbjyr.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%2Fb2ye7wwj9wdm1cbcbjyr.png" alt="Chatgpt clear sky - night" width="800" height="664"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini : &lt;code&gt;Didn't Work&lt;/code&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%2F9q7fl86pp7e93d015tpm.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%2F9q7fl86pp7e93d015tpm.png" alt="Gemini clear sky - night" width="800" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Few Clouds - Day &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2Fjqjw1q0bnezudrdbzysi.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%2Fjqjw1q0bnezudrdbzysi.png" alt="Chatgpt few clouds - day" width="800" height="713"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini : &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%2Fni2zr4d840tlruy3xkg4.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%2Fni2zr4d840tlruy3xkg4.png" alt="Gemini few clouds - day" width="419" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Few Clouds - Night&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2Ffasagy1fbgh3ao0n8v52.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%2Ffasagy1fbgh3ao0n8v52.png" alt="Chatgpt few clouds - night" width="800" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini : &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%2F2gbvlcr2rxwbdpxsgozp.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%2F2gbvlcr2rxwbdpxsgozp.png" alt="Gemini few clouds - night" width="419" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scattered Clouds - Day &amp;amp; Night&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2Fb70ty9r1z1ze32mk4re1.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%2Fb70ty9r1z1ze32mk4re1.png" alt="Chatgpt scattered clouds" width="800" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini : &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%2Ffbi34afaplr893pq39m8.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%2Ffbi34afaplr893pq39m8.png" alt="Gemini scattered clouds" width="439" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Broken clouds - Day &amp;amp; Night&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2F6rovh42oglxtg0z7h5eb.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%2F6rovh42oglxtg0z7h5eb.png" alt="Chatgpt broken clouds" width="800" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini : &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%2Foj00xbclmisbf2krnnti.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%2Foj00xbclmisbf2krnnti.png" alt="Gemini broken clouds" width="439" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Shower Rain - Day &amp;amp; Night&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2Fbkj2v9d64bxf98ib5ue4.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%2Fbkj2v9d64bxf98ib5ue4.png" alt="Chatgpt shower rain" width="800" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini : &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%2Fgcaz517szsdez3epltfh.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%2Fgcaz517szsdez3epltfh.png" alt="Gemini shower rain" width="618" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rain - Day&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2Fgrttr9q5vm9e5j5rwsqz.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%2Fgrttr9q5vm9e5j5rwsqz.png" alt="Chatgpt rain - day" width="800" height="705"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini : &lt;code&gt;Didn't Work&lt;/code&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%2Fpmte3qqqe1k84ku7dp16.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%2Fpmte3qqqe1k84ku7dp16.png" alt="Gemini rain - day" width="544" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rain - Night&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2F3sbzdqdxug6xttaw3azj.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%2F3sbzdqdxug6xttaw3azj.png" alt="Chatgpt rain - night" width="800" height="610"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini : &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%2Fz1awlnzs683zksy0zhzd.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%2Fz1awlnzs683zksy0zhzd.png" alt="Gemini rain - night" width="544" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Thunderstorms - Day &amp;amp; Night&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2Fsgemxiahb6reu60hm1v9.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%2Fsgemxiahb6reu60hm1v9.png" alt="Chatgpt thunderstorms" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini : &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%2Fuqtsjgwrznaxiqqknxv9.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%2Fuqtsjgwrznaxiqqknxv9.png" alt="Gemini thunderstorms" width="544" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Snow - Day &amp;amp; Night&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2Fulvgte1nq8x0242874mg.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%2Fulvgte1nq8x0242874mg.png" alt="Chatgpt snow" width="800" height="632"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini : &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%2Fotwqv57bbmrruv4gb83s.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%2Fotwqv57bbmrruv4gb83s.png" alt="Gemini snow" width="544" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Mist - Day &amp;amp; Night&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chatgpt :&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%2Fqx3k4lwiisx637wibvj7.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%2Fqx3k4lwiisx637wibvj7.png" alt="Chatgpt mist" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini :&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%2Fir04if08vjyfbiwnhhut.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%2Fir04if08vjyfbiwnhhut.png" alt="Gemini mist" width="544" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The results I obtained surprised me somewhat. In all the coding tasks I've performed before, I have liked ChatGPT more. This time however, there is a clear winner. Except for the clear night sky and scattered clouds, the icons that Gemini provided are just plain better. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>react</category>
      <category>frontend</category>
    </item>
    <item>
      <title>I abandoned Google Docs for this open-source alternative. It may be what you need, too.</title>
      <dc:creator>Nikhil Nepal</dc:creator>
      <pubDate>Mon, 07 Jul 2025 16:32:04 +0000</pubDate>
      <link>https://forem.com/nikhnp/i-abandoned-google-docs-for-this-open-source-alternative-it-may-be-what-you-need-too-3jod</link>
      <guid>https://forem.com/nikhnp/i-abandoned-google-docs-for-this-open-source-alternative-it-may-be-what-you-need-too-3jod</guid>
      <description>&lt;p&gt;Towards the end of January, I had set a goal: write and publish at least four articles a month. I wanted to make writing a habit, and also document my experiences. It’s July now, and it has already been six months since I set the goal. In all that time, I have managed to write a grand total of two articles: ‘&lt;a href="https://dev.to/nikhnp/free-uptime-kuma-no-credit-cards-and-with-gui-82h"&gt;Free Uptime Kuma&lt;/a&gt;’ and ‘&lt;a href="https://dev.to/nikhnp/best-web-hosting-deal-i-ever-got-5yr-5epj"&gt;Best Web Hosting @ $5/yr&lt;/a&gt;’.&lt;/p&gt;

&lt;p&gt;Life happened, towards the beginning of February. And then some more of life happened. &lt;/p&gt;

&lt;p&gt;When things settled, I had forgotten my goal of writing and documenting my journey. It was only a few weeks ago that I remembered my goal of writing an article a week. And, when I sat down to write - after six whole months - I came across an old frustration of mine. I cannot, for the life of me, write in Google Docs. Don’t get me wrong, Google Docs is a great tool and it does every single thing I would want from a word processor. The problem is that when I sit down to write, type &lt;a href="//docs.new"&gt;docs.new&lt;/a&gt; into the searchbar, and begin to write - I get stuck. I cannot express what it is I want to write. As I sit there, facing the blinding pure-white (why?) screen, trying to write what I think - my mind just stops thinking altogether.&lt;/p&gt;

&lt;p&gt;I traced this mental roadblock to one key issue: it’s got too many options. Google Docs, by being this swiss-knife of online documents, was giving me a headache. It’s my problem, I know. I get overwhelmed way too easily when I get presented with too many options. And Google Docs is literally packed full of options. It can do almost anything, which, ironically, is the problem for me.&lt;/p&gt;

&lt;p&gt;If I wanted to write and achieve my goal of four articles a month, I was going to have to get off Google Docs and choose something else to write on. It wasn’t going to be Word, or Calibre, or any other feature ridden word processors. My ideal writing tool, it had to be clean, minimal, and light. And since I sometimes write from my phone, it needed to have a mobile-friendly interface - web-based; I hate having to install mobile apps.&lt;/p&gt;

&lt;p&gt;And so my hunt began. I was going to set up this software in a VPS and back it up to Borgbase with Restic. I wanted the software of choice to have a docker image; it would be simple to set up, back up, and if it wasn’t to my liking, remove. I also wanted some organization built-in, like the ability to group various articles or have some hierarchy. Finally, the ability to share articles was also needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. DumbPad
&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%2Fe9r8hb7q5tgkf0yq13d7.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%2Fe9r8hb7q5tgkf0yq13d7.png" alt="DumbPad Interface" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What I like about Dumbpad is its bare-bones nature, much like its other DumbWare companions. If you need nothing more than a space to write, Dumbpad is perfect. It offers basic markdown support, dark/light mode, search functionality, autosave, and the ability to switch between different pads from a dropdown menu. It has no database and stores files as a simple txt file in the backend, but that’s all it truly needs. Honestly, even though I have decided Dumbpad isn’t for me and moved all my files elsewhere, a part of me still wants to switch to this stupidly simple notepad. &lt;/p&gt;

&lt;p&gt;Ultimately, it was a little too simple for my taste. While not limiting, it lacked some nice-to-have features. More importantly, it offers no way of organizing, or sharing the file, which led me to choose another software. But the entire DumbWare collection, with its bare-bones approach, is pretty compelling.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Flatnotes
&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%2Fc6jy8o42442o67rjqddl.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%2Fc6jy8o42442o67rjqddl.png" alt="Flatnotes Interface" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Flatnotes, on paper, sounds exactly like what I want. It’s simple, clean, and minimal. Its structure is also familiar, consisting of two components: an index page, and the notes themselves. The index page lists all my notes, while the notes contain - well - the notes, like how Google Docs is organized.&lt;/p&gt;

&lt;p&gt;Flatnotes is a simple markdown editor, and contains no database. Similar to DumbPad, it saves files directly to your server, though in .md format. It supports most features you would need from a note editor; you can write in Markdown and preview it, or use WYSIWYG (What You See Is What You Get) mode. However, I find the note editor’s design is more complex than necessary. It features two navigation bars: one for the logo, a button to create a new note, and the main menu; and another for the note’s title along with options to delete, save and edit. It also has two toggles: one to switch between Markdown Editor and Preview, and another for Markdown and WYSIWYG. In my opinion, the navigation bars could be combined into one and the toggles could be placed in the dropdown menu to reduce the visual clutter.&lt;/p&gt;

&lt;p&gt;I also would have greatly appreciated an autosave functionality. Additionally, you also cannot share documents with users who don’t have an account. Flatnotes also lacks any organizational features whatsoever, which I believe would make it infinitely better. The ability to create folders/groups, and share would make Flatnotes perfect. &lt;/p&gt;

&lt;h2&gt;
  
  
  3. Standard Notes
&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%2Fihs9455tm5h9ojhlz386.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%2Fihs9455tm5h9ojhlz386.png" alt="Standard Notes Interface" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have been suggested Standard Notes many times before, and I installed it on my vps to try it out. However, a quick look at the interface was enough to make me say ‘nope.’ Visually, Standard Notes appears incredibly complex, and I was looking for something simple, and minimal - even at the cost of some features. Standard Notes is as far away from what I want as a note editor could get. &lt;/p&gt;

&lt;p&gt;Furthermore, I am not the target audience for its primary selling point: a secure, end-to-end encrypted notetaking. Standard Notes is also quite limiting without a subscription, as most of its advanced features are locked behind a paywall. For free, you can access just the plain text editor.&lt;/p&gt;

&lt;p&gt;Having heard so much about Standard Notes, I had certain expectations even before testing it. After testing it out, my opinion is that Standard Notes isn’t a sound financial choice for me, especially as I am looking for a minimal solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Etherpad
&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%2F8t3jd7wjpawjwwlin1xi.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%2F8t3jd7wjpawjwwlin1xi.png" alt="Etherpad Interface" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Etherpad is exactly what I need from an editor. It's clean, simple, and stunning. It has just one horizontal bar with all the options, and that's it. That's all that's required. When I sit down with Etherpad open, I can zone in and write. &lt;/p&gt;

&lt;p&gt;Behind its minimalism, Etherpad is far more complex than others featured on this list. For one, it’s a collaborative editor, complete with features like chat and author colours. You also get a complete history of all changes, and can precisely see who made what changes. It also features tons of plugins, making it incredibly flexible and capable of a wide variety of tasks while being resource efficient.&lt;/p&gt;

&lt;p&gt;Despite its strengths, I have significant concerns with Etherpad. The first is organization. I find it incredibly frustrating why document editors lack organizational features. Like all editors featured before, Etherpad has no organization built into it. Etherpad looks and functions great, is minimal, and allows me to truly concentrate on writing, but the lack of organization is clearly a downer.&lt;/p&gt;

&lt;p&gt;If organization were its only flaw, I would have made peace with it. I would have played around with names, and built an workaround - if not for another glaring problem. I couldn’t, for all my tech-chops, create a Docker container for Etherpad that I could back up. I  spent a significant amount of time trying to get Etherpad to work - far more time than I probably should have. But ultimately, I dropped Etherpad with a heavy, and frustrated heart. &lt;/p&gt;

&lt;h2&gt;
  
  
  1. Docmost
&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%2Fi2yeg5e5n7v8otq00fok.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%2Fi2yeg5e5n7v8otq00fok.png" alt="Docmost Interface" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Organization. That’s what immediately impressed me about Docmost. It has so much organization that I could talk about it all day! The first level of organization is called a ‘space,’ which acts like a folder. You can create as many spaces as you like, so you could, for instance, create a space for work, or for whatever you’re currently doing. I’ve set up spaces for ‘Articles,’ ‘Quick Notes,’ and ‘Work’. &lt;/p&gt;

&lt;p&gt;Inside each space are ‘pages,’ which is where you write your notes. That’s not all. You can create sub-pages, pages with lower hierarchy, and not just one - you can create as many sub-pages as you want. This allows for an absurd level of organization: I can create a page for ‘Articles’ (like this one), then sub-pages for ‘Dumbpad,’ ‘Flatnotes,’ and ‘Etherpad,’ and even sub-sub-pages to detail the various problems I encountered with Etherpad. &lt;/p&gt;

&lt;p&gt;Docmost also boasts all the features you’d expect from a note editor. It’s a collaborative markdown editor which can easily share articles, track who made what changes and so on. The mobile editor is great, too, and I can work on the articles from both my laptop and my phone. Similar to Etherpad, I can review every change with Page History. Docmost supports adding images, tables, videos, and plenty of other elements, ensuring you won’t be left wanting in the features department.&lt;/p&gt;

&lt;p&gt;Visually, Docmost looks clean, simple, and elegant. The writing interface contains a collapsible sidebar on the left, which contains a list of all pages, and buttons for search, settings, and overview (home). On the top of the page, there are two navigation bars 😩, though it’s not as intrusive as Flatnotes’ navigation bars. I am not a fan of how much space the title takes up in mobile, but I can just scroll past it - so it doesn’t hinder writing in any way.&lt;/p&gt;




&lt;p&gt;I worked on this article for a far longer time than planned. My goal, to write and document my journey, is something I wanted to focus on properly. I tested more software than I have written about here; the ones featured are those that elicited a reaction from me (whether good or bad) or were suggested to me.&lt;/p&gt;

&lt;p&gt;Docmost ended up being the software I chose to write with, primarily for the organization it offers, which, when I started searching for the apps, I didn’t even think I needed. Docmost also checks all the boxes for what I need: it’s got a great design, allows me to share documents and collect feedback, is stupidly simple to set up and get working, and accomplishes all this with minimal resource usage. That feeling I used to get, sitting down in front of Google Docs, I don’t get that when I sit down to write in front of Docmost.&lt;/p&gt;

&lt;p&gt;After today, I’m going to publish regularly. I want to be consistent and put out content that helps others. All of my articles will be about software, with the majority being FOSS - as they are more approachable for someone with minimal resources, like myself. If you would like to support my journey, please do interact with the post.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://nikhilnepal.com.np" rel="noopener noreferrer"&gt;Me&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Best Web Hosting Deal I Ever Got @$5/yr</title>
      <dc:creator>Nikhil Nepal</dc:creator>
      <pubDate>Sat, 08 Feb 2025 06:02:56 +0000</pubDate>
      <link>https://forem.com/nikhnp/best-web-hosting-deal-i-ever-got-5yr-5epj</link>
      <guid>https://forem.com/nikhnp/best-web-hosting-deal-i-ever-got-5yr-5epj</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;You saw the title and the thumbnail, so you already know this is a pretty sweet deal. However, while it is a great offer - it’s not the best web hosting deal for everyone. &lt;br&gt;
Who’s it best for? If you’re hosting a small single site or multiple small sites that fit within the 10 GB storage limit. The offer is phenomenal for Wordpress, especially for a small business, and great for hosting hobby Node.js or Python apps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I am part of these forums called LowEndTalk and LowEndSpirit, and I browse them constantly. And by constantly, I mean multiple times a day, every single day.&lt;br&gt;
What for? Well, as their names suggest, they feature low-cost deals on VPS, dedicated servers, and web hosting - the whole package. I don't splurge often, but sometimes, I get so tempted - so very tempted - that I can’t restrain myself.&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%2Fsm4f9lqxhg455il5h2gs.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%2Fsm4f9lqxhg455il5h2gs.png" alt="Limits of the best web hosting deal" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This deal from HostBrr is one such deal. I mean, just look at what it includes - &lt;strong&gt;unlimited domains, emails, databases&lt;/strong&gt; — unlimited everything, really — except storage. Limited to 10 GB storage, this DirectAdmin offer is great - especially considering it &lt;strong&gt;costs just $5/yr&lt;/strong&gt;. The cost alone makes this an too-good-to-pass-up offer. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you’d like to check out the offers:&lt;br&gt;
10 GB DirectAdmin Shared Web Hosting: &lt;a href="https://my.hostbrr.com/order/main/packages/directadmin/?group_id=36&amp;amp;a=NzkxNQ==" rel="noopener noreferrer"&gt;@$5/yr&lt;/a&gt; (affiliate)&lt;br&gt;
10 GB cPanel Shared Web Hosting: &lt;a href="https://my.hostbrr.com/order/main/packages/cpanel/?group_id=46&amp;amp;a=NzkxNQ==" rel="noopener noreferrer"&gt;@$10/yr&lt;/a&gt; (affiliate)&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%2Fz7zlky76iqmvdqi459e8.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%2Fz7zlky76iqmvdqi459e8.png" alt="Litespeed server advantages" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What makes it greater still - and the best web hosting deal I’ve gotten - is that these are run on &lt;strong&gt;LiteSpeed Enterprise servers&lt;/strong&gt;. LiteSpeed Enterprise servers come with recurring quic.cloud credits, which can be used for CDN, image optimization, and more. And if you host Wordpress websites, like I do, that monthly credits makes a great difference.&lt;/p&gt;

&lt;p&gt;Now, we’re going to use the monthly recurring quic.cloud credits to speed up our Wordpress site with the LiteSpeed Cache plugin and quic.cloud CDN - all for free. &lt;br&gt;
Since most shared hosting runs on LiteSpeed servers, the following steps aren’t just for these servers; &lt;strong&gt;they might help optimize your Wordpress installation as well&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%2F4yctn7nmrxtf2yzhhrii.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%2F4yctn7nmrxtf2yzhhrii.png" alt="Installing litespeed cache" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Making use of the quic.cloud integration in Wordpress is incredibly simple. All you need to do is &lt;strong&gt;install the LiteSpeed Cache plugin&lt;/strong&gt; from your Wordpress dashboard. The LiteSpeed Cache plugin is excellent at caching Wordpress websites, and for the most part, is the only caching plugin you’ll ever need.&lt;/p&gt;

&lt;p&gt;After you &lt;strong&gt;install and activate the plugin&lt;/strong&gt;, navigate to the LiteSpeed Cache Settings. You’re going to need a &lt;strong&gt;Domain Key&lt;/strong&gt; going forward. &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%2F4rzaurgy5gbo2z1biqxm.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%2F4rzaurgy5gbo2z1biqxm.png" alt="Litespeed cache request domain key" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fortunately, getting a Domain Key is a breeze. Simply navigate to the &lt;strong&gt;General tab&lt;/strong&gt; of the LiteSpeed Cache Settings, and &lt;strong&gt;Click on ‘Request Domain Key’&lt;/strong&gt;. A request will be submitted, and the Domain Key will be filled automatically if your shared hosting runs on LiteSpeed servers. Fetching the Domain Key shouldn’t take more than a few minutes. &lt;/p&gt;

&lt;p&gt;After you have successfully received your Domain Key, navigate to the &lt;strong&gt;Presets tab&lt;/strong&gt; of the LiteSpeed Cache 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%2Foy12o5lj7sygetsrejrf.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%2Foy12o5lj7sygetsrejrf.png" alt="Litespeed cache presets" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The LiteSpeed Cache does everything you’d want from a caching plugin - &lt;strong&gt;Page Cache, Browser Cache, Image Optimization, Minification, Removing Unused CSS&lt;/strong&gt;. It’s pretty much the only caching plugin you’ll need. These features are conveniently grouped into presets, allowing you to choose how aggressive your Wordpress caching should be.&lt;/p&gt;

&lt;p&gt;I personally mostly use either the Advanced, the recommended preset, or Aggressive. Choose a preset based on the dynamic content of your Wordpress site. Since the website I’m currently working on has no dynamic content, I am going to choose Aggressive, and switch to Advanced if anything breaks.&lt;/p&gt;

&lt;p&gt;Now that the caching settings are configured, and the Domain Key has been obtained, it’s time to set up quic.cloud CDN. &lt;br&gt;
Simply &lt;strong&gt;navigate to the CDN tab&lt;/strong&gt; in the LiteSpeed Cache Settings, &lt;strong&gt;enable ‘QUIC.cloud CDN’&lt;/strong&gt; and &lt;strong&gt;click ‘Save Changes’&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%2F202gydj1uxhyuhhlji2k.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%2F202gydj1uxhyuhhlji2k.png" alt="litespeed cache turn on cdn" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The changes you’ll make to your Wordpress installation are almost complete. Now, we’re going to create a quic.cloud account, and link your Wordpress installation to it. This will allow you to track analytics, change CDN settings, and such.&lt;/p&gt;

&lt;p&gt;Navigate to the &lt;strong&gt;‘General’ tab&lt;/strong&gt; in the LiteSpeed Cache plugin settings. There, where you previously clicked ‘Request Domain Key’, you should now see another button labeled &lt;strong&gt;‘Link to QUIC.cloud’&lt;/strong&gt;. Click this button to proceed.&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%2Fgembav4uvf30hzdzdp0o.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%2Fgembav4uvf30hzdzdp0o.png" alt="litespeed cache link to quick-cloud" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After clicking the button, you’ll be prompted to log in to quic.cloud. If you don’t have an account, create one first.&lt;br&gt;
Once you’ve successfully logged in to quic.cloud, &lt;strong&gt;click the ‘Link to QUIC.cloud’&lt;/strong&gt; button from your Wordpress dashboard. You’ll be redirected to quic.cloud, and a popup will ask you to &lt;strong&gt;link your domain to your account&lt;/strong&gt;. &lt;strong&gt;Click ‘Yes’&lt;/strong&gt; and &lt;strong&gt;then ‘Continue’&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You should now see the quic.cloud dashboard.&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%2Fr6z0e39jckduzny5rm9i.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%2Fr6z0e39jckduzny5rm9i.png" alt="quick-cloud dashboard" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should see your connected domain in the dashboard with the status ‘OK’. Click on your domain. &lt;br&gt;
In the ‘Services Overview’ section, everything except the CDN should have the status ‘OK’. This means the LiteSpeed Cache plugin is working as expected. &lt;/p&gt;

&lt;p&gt;Now, let’s set up the CDN for your website. &lt;strong&gt;Click on the ‘CDN’ link&lt;/strong&gt;, then in the CDN Overview section, &lt;strong&gt;click ‘Enable CDN’&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%2F5u3biqn90ag6kwgk2688.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%2F5u3biqn90ag6kwgk2688.png" alt="quick-cloud enable cdn" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To enable the CDN, you’ll be asked to either &lt;strong&gt;use a CNAME record&lt;/strong&gt; to point your domain to quic.cloud or &lt;strong&gt;switch your DNS provider to quic.cloud&lt;/strong&gt; entirely. &lt;br&gt;
If your current DNS provider supports &lt;strong&gt;CNAME Flattening&lt;/strong&gt;, you can use a CNAME record for the CDN. If not, you’ll need to use quic.cloud DNS instead.&lt;/p&gt;

&lt;p&gt;My DNS provider, Cloudflare, supports CNAME flattening, so I’ll use a CNAME record to point my domain to quic.cloud.&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%2Fq71sdf7ig1g0c85z4c3m.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%2Fq71sdf7ig1g0c85z4c3m.png" alt="quick-cloud enable cname records" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will now be provided with a CNAME record, which you need to use to &lt;strong&gt;update the CNAME for your root domain&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%2F4jz8kyw2kx8pjwxssyhc.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%2F4jz8kyw2kx8pjwxssyhc.png" alt="quick-cloud cname record details" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since I’m using Cloudflare, I’ll head over to Cloudflare and update the DNS records.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Type = CNAME&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Name = YOURDOMAIN&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Target = PASTE FROM QUIC.CLOUD&lt;/code&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%2Fjzvua72c6r837qpv4db4.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%2Fjzvua72c6r837qpv4db4.png" alt="Add cname records to cloudflare" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After adding the DNS records, go back to the quic.cloud dashboard. It will take a short while for quic.cloud to verify the DNS changes.&lt;br&gt;
Once the DNS has been verified, your website will start being cached and served from &lt;a href="https://www.quic.cloud/cdn-network/" rel="noopener noreferrer"&gt;82 quic.cloud edge servers around the world&lt;/a&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%2F9pg9jndgeew2hryv2q0l.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%2F9pg9jndgeew2hryv2q0l.png" alt="quick-cloud domain verified" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’re now almost done! &lt;br&gt;
Navigate to the &lt;strong&gt;‘CDN Config’ tab&lt;/strong&gt; in the quic.cloud panel, then go to ‘Connection’, and &lt;strong&gt;turn on ‘Enable QUIC Backend’&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%2Flmuc71rkugg84h8d10v8.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%2Flmuc71rkugg84h8d10v8.png" alt="quick-cloud cache settings" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ve now successfully enabled the LiteSpeed Cache plugin, and configured the quic.cloud CDN to make your site quicker throughout the world.&lt;/p&gt;

&lt;p&gt;You can verify if the CDN is performing properly using tools like KeyCDN.&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%2Foc0hxvcz92fer1tnvgbt.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%2Foc0hxvcz92fer1tnvgbt.png" alt="website global speeds" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last week’s post, &lt;a href="https://dev.to/nikhnp/free-uptime-kuma-no-credit-cards-and-with-gui-82h"&gt;Free Uptime Kuma&lt;/a&gt;, was the first piece of writing I ever published online. And in that post, I mentioned that I would be writing and publishing two posts per week. However, after working on this post, I’ve had to re-evaluate my goals.&lt;br&gt;
At my current pace, writing and publishing two posts per week isn’t realistic, especially since I want what I write - what I share with the world - to be the best it can be. I want to feel satisfied with what I’ve written.&lt;br&gt;
So, for now, I’m revising my goals: I will focus on writing one post per week and gradually increase to two posts by the end of February. I’ll aim to reach that goal before the last week, but until then, my focus will be on publishing one quality post per week.&lt;/p&gt;

&lt;p&gt;I write about tech, open source, and such. If you’d like to support my writing journey, please give me a follow. Thanks.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://nikhilnepal.com.np" rel="noopener noreferrer"&gt;Me&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>wordpress</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>website</category>
    </item>
    <item>
      <title>Free Uptime Kuma: No Credit Cards, and with GUI</title>
      <dc:creator>Nikhil Nepal</dc:creator>
      <pubDate>Thu, 30 Jan 2025 06:50:05 +0000</pubDate>
      <link>https://forem.com/nikhnp/free-uptime-kuma-no-credit-cards-and-with-gui-82h</link>
      <guid>https://forem.com/nikhnp/free-uptime-kuma-no-credit-cards-and-with-gui-82h</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Uptime Robot is a solid choice, if you’re looking for a paid solution. Hetrixtools has a better free tier, and a solid alternative.&lt;/p&gt;

&lt;p&gt;I settled for Uptime Kuma with Koyeb + iDrive. It’s a hassle, but a one-time hassle that will save me some bucks for, well, however long until the companies decide to terminate their free tier. So, yayy!!&lt;br&gt;
Pikapods is an alternative for free Uptime Kuma, but only for a limited time. Quite hassle free though.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Uptime monitoring is an essential service for everyone with anything hosted on the internet. When what you’re hosting is entirely virtual, uptime monitors provide a sense of relief and security; you know things are fine and get alerted when they aren’t.&lt;br&gt;
For the longest time, I relied on Uptime Robot, one of my favourite uptime monitoring services to date. However, Uptime Robot has increasingly restricted its free plan, and I felt it was high time that I actively started looking for an alternative.&lt;/p&gt;

&lt;p&gt;Free Uptime Monitors are a dime a dozen on the internet, and there are great alternatives to Uptime Robot - like HetrixTools. However, the free tier is, well, free and pretty restrictive on all uptime monitoring services. &lt;br&gt;
Also, since I laid eyes on Uptime Kuma, an open-source uptime monitoring tool, I haven’t been keen on other uptime monitoring tools. Uptime Kuma is absolutely beautiful and really lightweight, so I wanted to see if I could host Uptime Kuma for free to migrate my ten-something uptime monitors.&lt;/p&gt;

&lt;p&gt;Here’s what I was looking for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hosting Uptime Kuma should be free&lt;/li&gt;
&lt;li&gt;Everything should be manageable with a GUI&lt;/li&gt;
&lt;li&gt;No Credit Card required&lt;/li&gt;
&lt;li&gt;And optionally, hosted on my own domain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And so, I began my search for an alternative to Uptime Robot. Whatever solution I found, it had to meet the few criterias: it needed to host Uptime Kuma for free, be manageable via GUI, and not require a credit card on file. Hosting Uptime Kuma on my own domain was optional; I could very easily set up a redirect.&lt;/p&gt;

&lt;p&gt;If I could find a suitable option, great. Otherwise, I was going to migrate over to HetrixTools.&lt;/p&gt;

&lt;p&gt;My search for free uptime Kuma hinged on finding a service that offered compute for free, without requiring a credit card on file. Since I don’t have a credit card and cannot access one either, Amazon’s AWS, Google’s GCP, and Oracle’s OCI were all out. With both a credit card requirement and a CLI access required, so was Fly.io.&lt;/p&gt;

&lt;h3&gt;The, sort of, alternative&lt;/h3&gt;

&lt;p&gt;Pikapods was one service that I found which offers free hosting for Uptime Kuma, though only for a limited time. They provide a $5 welcome credit, and with Uptime Kuma costing around $1.5/month, I could host it for around three months. Still, it was not what I was hoping for.&lt;/p&gt;

&lt;h3&gt;Koyeb + iDrive e2&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%2Fjluh3nf8nnt3qiya82hq.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%2Fjluh3nf8nnt3qiya82hq.png" alt="Free Compute at Koyeb" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ultimately, I stumbled upon Koyeb and their Starter plan. The good news: Koyeb is probably the only serverless platform out there that doesn’t require a credit card on file. &lt;br&gt;
The bad news: they have an aggressive abuse prevention system, meaning they ban people from the platform quite readily. &lt;br&gt;
Also, Koyeb doesn’t allow Volumes or any form of persistent storage on its free tier, so some additional steps are needed - like using iDrive e2 for storage. &lt;br&gt;
On the bright side, Koyeb seems serious about keeping the free tier for the foreseeable future, which is reassuring. [&lt;a href="https://www.koyeb.com/blog/sustaining-free-compute-in-a-hostile-environment" rel="noopener noreferrer"&gt;Koyeb’s article&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, I signed up to Koyeb.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Koyeb’s aggressive abuse prevention caught me as well - I, too, fell under the ban hammer. However, writing a well-meaning email to one of their monitored addresses successfully lifted my ban. If the metaphorical ban hammer crashes down on you too, I suggest writing an email explaining your intended use case. In my case, I wrote that I wanted to use the free compute to host an Uptime Kuma instance.&lt;br&gt;
Alternatively, you could also add a credit card to your account to avoid potential issues. &lt;/p&gt;

&lt;p&gt;With the ban issue resolved, it was time to install Uptime Kuma. Fortunately Koyeb makes it quite simple. They have multiple different apps, called one-click apps, that makes it really convenient. Uptime Kuma is one of those one-click apps. &lt;/p&gt;

&lt;p&gt;You can find Uptime Kuma under &lt;strong&gt;Services&lt;/strong&gt;, by clicking &lt;strong&gt;‘More one-click apps’&lt;/strong&gt;. &lt;br&gt;
Please note that you cannot use the default Uptime Kuma instance - you must use Koyeb’s one click app. It is discussed below.&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%2F5bzjd1vtt5kq8lje7x6u.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%2F5bzjd1vtt5kq8lje7x6u.png" alt="Koyeb Dashboard" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, search for &lt;strong&gt;Uptime Kuma&lt;/strong&gt;, and click &lt;strong&gt;‘Deploy’&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%2Fdti1nqbblmo4svtcieqs.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%2Fdti1nqbblmo4svtcieqs.png" alt="Deploy Uptime Kuma" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, please be sure to select the Free Instance, as Koyeb will automatically choose a paid plan. You will need to manually switch to the free instance.&lt;/p&gt;

&lt;p&gt;After clicking &lt;strong&gt;‘Deploy’&lt;/strong&gt;, Koyeb will bring up an menu - one that highlights a limitation of this process, and an additional hoop we need to jump through to get the app running.&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%2F2afv2p3a80qdf2gq4r2g.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%2F2afv2p3a80qdf2gq4r2g.png" alt="Environment Variables shows Litestream" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;strong&gt;Environment Variables&lt;/strong&gt; section, you will see that seven variables are required. Clicking on the section shows variables with Litestream in their name.&lt;/p&gt;

&lt;p&gt;The Uptime Kuma installation on Koyeb uses &lt;strong&gt;Litestream&lt;/strong&gt; - or, in other words, requires an S3 compatible bucket. While Koyeb does provide storage through a feature they call Volumes, these &lt;strong&gt;Volumes cannot be attached to a Free Instance&lt;/strong&gt;. &lt;br&gt;
That's why only the Koyeb one-click app can be used. The Koyeb one-click app takes this limitation into account and utilizes Litestream to make Uptime Kuma work with any S3 compatible provider. Luckily, there are some providers that offer free S3 storage. &lt;/p&gt;

&lt;p&gt;I chose &lt;strong&gt;iDrive e2&lt;/strong&gt;. It’s quite easy to set up, and they offer a 10 GB free tier.&lt;/p&gt;

&lt;p&gt;After you sign up, iDrive will prompt you to choose a region where your bucket - and your Uptime Kuma installation - will be stored. Since Koyeb only allows free instances to be hosted in Frankfurt and Washington DC, I recommend hosting your buckets in a region close to either Frankfurt or Washington DC. &lt;/p&gt;

&lt;p&gt;In my case, I chose to host both my Koyeb instance, and the iDrive bucket in Frankfurt.&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%2F60sztchqnv4lnsc5crmn.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%2F60sztchqnv4lnsc5crmn.png" alt="iDrive Choose Region" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, &lt;strong&gt;create a bucket&lt;/strong&gt; and give it a name. Keep it short and simple. I’m naming mine &lt;code&gt;uptimekuma&lt;/code&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%2Fsqh72zkcyli6rcio47ec.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%2Fsqh72zkcyli6rcio47ec.png" alt="iDrive Create Bucket" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, go to &lt;strong&gt;‘Access Keys’&lt;/strong&gt; and click &lt;strong&gt;‘Create Access Keys’&lt;/strong&gt; to create keys for your newly created Bucket. I named my key, &lt;code&gt;UptimeKumaKey&lt;/code&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%2Ffhuxweu7rmkvr5fko8rs.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%2Ffhuxweu7rmkvr5fko8rs.png" alt="iDrive Create Access Key" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll then see the details of your access key in the bottom right corner. Please keep in mind that &lt;strong&gt;‘Access Key ID’ and ‘Secret Access Key’ are sensitive&lt;/strong&gt; information.&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%2F7p714h8w6hhpslpn7lvv.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%2F7p714h8w6hhpslpn7lvv.png" alt="iDrive Access Key Details" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you just need to plug in these values to your Koyeb instance as follows:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;LITESTREAM_ACCESS_KEY_ID = PASTE ACCESS KEY ID FROM IDRIVE&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;LITESTREAM_SECRET_ACCESS_KEY = PASTE SECRET ACCESS KEY FROM IDRIVE&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;LITESTREAM_URL = PASTE THE ENDPOINT FROM IDRIVE&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;LITESTREAM_BUCKET = PASTE BUCKET NAME FROM IDRIVE&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;LITESTREAM_PATH = LEAVE AS IS&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;LITESTREAM_REGION = PASTE THE REGION FROM IDRIVE&lt;/code&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%2Fkdoadis1ak97waoelfqe.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%2Fkdoadis1ak97waoelfqe.png" alt="Environment Variables for Koyeb" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once all Environment Variables are filled in, click &lt;strong&gt;‘Deploy’&lt;/strong&gt;. It should only take a short while for Koyeb to build Uptime Kuma, and deploy it.&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%2Fo272fsr9dlp8tn0wsuzz.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%2Fo272fsr9dlp8tn0wsuzz.png" alt="Uptime Kuma deployed for free on Koyeb" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the from Koyeb dashboard, you will see the public URL where your Uptime Kuma instance is hosted. Follow the URL and create a user account.&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%2Ftpzknjgek5i3klx963hd.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%2Ftpzknjgek5i3klx963hd.png" alt="Uptime Kuma welcome screen" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Uptime Kuma instance is now fully installed. You can now add your own websites to be monitored. Happy monitoring!&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%2F7snrewuhxqdygt4v8diu.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%2F7snrewuhxqdygt4v8diu.png" alt="Uptime Kuma shows website down" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the first ever online content I have written. I have made it my goal to write two posts every week. The posts are going to be about tech, open source, and such. If you'd like to support me on my writing journey, please give me a follow. Thanks.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://nikhilnepal.com.np" rel="noopener noreferrer"&gt;Me&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
