<?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:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Ravi Shah's Blog]]></title><description><![CDATA[Posts about hardware, software, vintage tech, cars, and more!]]></description><link>https://blog.yeetpc.com/</link><image><url>https://blog.yeetpc.com/favicon.png</url><title>Ravi Shah&apos;s Blog</title><link>https://blog.yeetpc.com/</link></image><generator>Ghost 3.42</generator><lastBuildDate>Mon, 01 Jun 2026 07:10:08 GMT</lastBuildDate><atom:link href="https://blog.yeetpc.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Building a K-Line (ISO 9141) Sequential Shift Indicator]]></title><description><![CDATA[I designed and developed a K-Line sequential shift indicator, with a custom PCB and full plug-and-play functionality as tested on my Mazda Miata.]]></description><link>https://blog.yeetpc.com/k-line-iso-9141-shift-indicator/</link><guid isPermaLink="false">669e70f0cc656600013c6345</guid><category><![CDATA[Automotive]]></category><category><![CDATA[Car]]></category><category><![CDATA[Miata]]></category><category><![CDATA[Hardware]]></category><category><![CDATA[Software]]></category><category><![CDATA[OBDII]]></category><category><![CDATA[K-Line]]></category><category><![CDATA[Motorsports]]></category><category><![CDATA[ISO 9141]]></category><category><![CDATA[Controls]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Wed, 24 Jul 2024 04:46:37 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2024/07/IMG_2402---Copy.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2024/07/IMG_2402---Copy.jpg" alt="Building a K-Line (ISO 9141) Sequential Shift Indicator"><p><a href="https://drive.google.com/file/d/1h4sEP5iF2pkmRt12-wAFUMqSv9QvsOz3/view">Read full technical report (PDF)</a></p><p>Although it's been a while since I last posted, I wanted to share a project I've been working on over the summer, the K-Line Sequential Shift Indicator. For those unfamiliar with motorsports, many track cars have a gear-shift indicator, which is comprised of a set of lights mounted on the dashboard or steering wheel, directly in the driver’s line of sight. These lights illuminate based on the engine speed (RPM) of the car and are extremely useful for knowing when to shift gears in high-pressure situations.</p><p>Although my 1996 Mazda Miata is far from a track car, I wanted to add a shift indicator to my dashboard (maybe it’ll actually be useful on the backroads). However, every product I found online was either incompatible with my Miata’s older K-Line (ISO 9141) protocol or required splicing the tachometer wires, which I wasn’t willing to do. So, I decided to design my own.</p><p>After much prototyping and debugging, I developed a K-Line shift indicator, with a custom PCB and full plug-and-play functionality as tested on my Miata.</p><p>You can read a full technical report of my project <a href="https://drive.google.com/file/d/1h4sEP5iF2pkmRt12-wAFUMqSv9QvsOz3/view?usp=drive_link">here</a>. It expands on my development and learning process throughout the design, assembly, and testing phases. Additionally, you can watch videos of the <a href="https://drive.google.com/file/d/1yGfBQFOaLi5DHMowFaSR_DUKHt-pPL1-/view?usp=sharing">startup sequence</a> and the <a href="https://drive.google.com/file/d/1uUzjxnDBYHzpRwuf0LmYo11RxKfqu849/view?usp=sharing">device in action</a>.</p><p>Finally, the GitHub repository with all project files, including schematics, PCB, CAD models, and code, is available <a href="https://github.com/Rav4s/diy-shift-indicator">here</a>. I had a lot of fun working on this project, and I gained many new electrical, computer, and mechanical engineering skills which will be invaluable in future projects. As always, thanks for reading!</p>]]></content:encoded></item><item><title><![CDATA[Replacing a Broken Lug Stud on my 1998 Civic Project]]></title><description><![CDATA[What seemed like a small repair turned into a much bigger one: replacing the wheel hub, bearing, and CV axles!]]></description><link>https://blog.yeetpc.com/replacing-a-broken-lug-stud-on-my-1998-civic-project/</link><guid isPermaLink="false">625c96fcf1d29d0001a95669</guid><category><![CDATA[Automotive]]></category><category><![CDATA[Car]]></category><category><![CDATA[Civic]]></category><category><![CDATA[Guide]]></category><category><![CDATA[Rebuild]]></category><category><![CDATA[Repair]]></category><category><![CDATA[Salvage]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Tue, 19 Jul 2022 05:14:53 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2022/07/4032-3024-max-1.jpeg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2022/07/4032-3024-max-1.jpeg" alt="Replacing a Broken Lug Stud on my 1998 Civic Project"><p>After I finished cleaning up the car and doing general repairs/maintenance, I started looking at what else I needed to pass the state inspection. Everything from the brakes to the lights looked just fine, until I got to checking the wheels: I found that the front passenger side wheel was missing a lug nut because the stud had sheared off. Little did I know that this small repair would lead to a lot more front-end work before I could get everything ready to drive.</p><p>This looked like it would be pretty easy to fix, I'd just have to hammer the old stud out of the hub and press the new one in. I couldn't be that hard, right? <em>Wrong.</em></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2022/07/image-5.png" class="kg-image" alt="Replacing a Broken Lug Stud on my 1998 Civic Project" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/07/image-5.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/07/image-5.png 1000w, https://blog.yeetpc.com/content/images/2022/07/image-5.png 1365w" sizes="(min-width: 720px) 720px"><figcaption>Lug stud removed from hub</figcaption></figure><p>I was able to get the old lug stud out by sawing off the head and hammering it with a 3 pound hammer, but there wasn't even close to enough space to insert a new stud. The steering knuckle had such little clearance that it was impossible to pull in a new stud, no matter the orientation of the wheel hub.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2022/04/image-6.png" class="kg-image" alt="Replacing a Broken Lug Stud on my 1998 Civic Project" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/image-6.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/image-6.png 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/image-6.png 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/image-6.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>Wheel hub with one stud removed</figcaption></figure><p>At this point, it seemed that I'd have to replace the entire wheel bearing and hub assembly just for this one lug stud. So, I set out finding parts, and two disastrous Rockauto order screw-ups later, I had a compatible <a href="https://www.rockauto.com/en/moreinfo.php?pk=11840445&amp;jsn=14">wheel bearing and hub assembly</a> on my hands.</p><p>In order to install it, I had to remove the entire steering knuckle, starting with the outermost part, the axle nut. This nut was stuck on so tight that no amount of WD-40 would loosen it. I ended up having to heat it up using Mapp gas and candle wax, which seeps inside the threads. Using this method, I was able to remove it using a large socket and a cheater bar.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2022/07/image.png" class="kg-image" alt="Replacing a Broken Lug Stud on my 1998 Civic Project" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/07/image.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/07/image.png 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/07/image.png 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/07/image.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>Axle nut removed from knuckle</figcaption></figure><p>Then I removed the upper and lower ball joints and the knuckle came off fully. This revealed that the CV axle boot was fully torn, so I'd have to replace that as well. I ended up removing the driver's side axle as well, since it was also in bad shape.</p><p>Finally, to remove the old wheel hub and bearing from the steering knuckle, I secured the knuckle above ground and hammered out the bearing using an axle nut socket.</p><p>I started re-installation with the CV axles, which I replaced with <a href="https://www.amazon.com/GSP-NCV36516-Axle-Shaft-Assembly/dp/B001B09XJC#customerReviews">new GSP axles</a> that fit perfectly. Both sides slotted in easily, and I used straps to keep them out of the way when reattaching the knuckles.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2022/07/image-1.png" class="kg-image" alt="Replacing a Broken Lug Stud on my 1998 Civic Project" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/07/image-1.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/07/image-1.png 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/07/image-1.png 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/07/image-1.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>New GSP axle installed</figcaption></figure><p>To install the new wheel bearing and hub in the knuckle, I first put the new parts in the freezer so they'd shrink slightly and become easier to install. Then, I greased both parts with wheel bearing grease. After this, I used a <a href="https://www.amazon.com/gp/product/B01FLVOAZI/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;psc=1">wheel bearing press</a> to press the bearing into the knuckle and the hub into the bearing. <a href="https://www.youtube.com/watch?v=fe_WtKIKlYA">ChrisFix's video</a> helped out a ton with this part.</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.yeetpc.com/content/images/2022/07/3024-4032-max.jpeg" width="2000" height="2667" alt="Replacing a Broken Lug Stud on my 1998 Civic Project" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/07/3024-4032-max.jpeg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/07/3024-4032-max.jpeg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/07/3024-4032-max.jpeg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/07/3024-4032-max.jpeg 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.yeetpc.com/content/images/2022/07/4032-3024-max.jpeg" width="2000" height="1500" alt="Replacing a Broken Lug Stud on my 1998 Civic Project" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/07/4032-3024-max.jpeg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/07/4032-3024-max.jpeg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/07/4032-3024-max.jpeg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/07/4032-3024-max.jpeg 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>New wheel bearing and hub installation</figcaption></figure><p>Finally, I reinstalled the knuckle, along with the brake rotor, caliper, and pads. After putting the wheel back on and letting the car down, I torqued down the new axle nut and the new lug nuts.</p><p>What was originally a small repair to meet state inspection rules turned into a weeks-long process replacing the CV axles, wheel bearing and wheel hub, along with disassembling much of the front suspension. While it might have been a time-consuming job, I learned quite a lot from it and my Civic was finally ready to pass inspection!</p><p>I hope you enjoyed reading this post! If you'd like to read more about my journey in restoring this salvage car, you can find all my <a href="https://blog.yeetpc.com/rebuilding-a-salvage-1998-honda-civic/">other posts here</a>. I've also worked on a lot of <a href="https://projects.yeetpc.com/">other engineering projects</a>, if you'd like to check those out as well. Thanks for reading and have a great day!</p>]]></content:encoded></item><item><title><![CDATA[Overhauling My 1998 Honda Civic Interior]]></title><description><![CDATA[I bought this Civic with a nasty interior suffering from years of neglect. Read how I stripped and restored it to great condition.]]></description><link>https://blog.yeetpc.com/overhauling-my-1998-honda-civic-interior/</link><guid isPermaLink="false">625b3c5cf1d29d0001a955a0</guid><category><![CDATA[Automotive]]></category><category><![CDATA[Car]]></category><category><![CDATA[Civic]]></category><category><![CDATA[Guide]]></category><category><![CDATA[Honda]]></category><category><![CDATA[Repair]]></category><category><![CDATA[Rebuild]]></category><category><![CDATA[Salvage]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Sun, 17 Apr 2022 22:20:08 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2022/04/20210709_133258.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2022/04/20210709_133258.jpg" alt="Overhauling My 1998 Honda Civic Interior"><p>After repairing the brakes on my Civic and washing the exterior, I quickly changed the oil and replaced a few bulbs that had gone out. Then, I decided to clean up the inside, which had become disgusting due to years of neglect. Almost every aspect of the interior was filthy, including the seats, carpets, dash, and trunk.</p><p>I began cleaning by stripping all the interior components, using an <a href="https://www.youtube.com/watch?v=wD7aJDVPNwU">excellent tutorial by Refine Movement</a>. I started with the trunk liner, which was in such a bad state from being soaked in standing water for who knows how long that I threw it away immediately.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2022/04/image-3.png" class="kg-image" alt="Overhauling My 1998 Honda Civic Interior" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/image-3.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/image-3.png 1000w, https://blog.yeetpc.com/content/images/2022/04/image-3.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>Trunk with liner removed</figcaption></figure><p>Then, I moved on to removing all the seats, starting with the back seats. These are easily removed by folding them forward and removing a few bolts, as pictured below. Once the bolts are off, lift up the seat and pull it out through the door. Make sure you place these in a place where you'll find them easily again once it's time to re-install the seats.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.yeetpc.com/content/images/2022/04/20210709_121844.jpg" width="2000" height="1500" alt="Overhauling My 1998 Honda Civic Interior" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/20210709_121844.jpg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/20210709_121844.jpg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/20210709_121844.jpg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/20210709_121844.jpg 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.yeetpc.com/content/images/2022/04/20210709_121849-1.jpg" width="2000" height="1500" alt="Overhauling My 1998 Honda Civic Interior" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/20210709_121849-1.jpg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/20210709_121849-1.jpg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/20210709_121849-1.jpg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/20210709_121849-1.jpg 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>The front seats were even easier to remove, and each one just has four bolts before you can take it out. One of the bolts on each seat is under a cover, so you'll have to pry this off first. Also, the driver's side seat has a weight sensor for the airbag, which you need to disconnect before pulling the seat out of the car.</p><p>Then you can start removing the carpet by prying it out of various trim pieces and slowly pulling off the adhesive. Once the carpet is unstuck, you'll have to make a small cut under the dashboard to separate it from the center console area. Then you can pull it out fully.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2022/04/image-4.png" class="kg-image" alt="Overhauling My 1998 Honda Civic Interior" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/image-4.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/image-4.png 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/image-4.png 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/image-4.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>Floor exposed without the carpet</figcaption></figure><p>One I got the carpet out, I could see that it was absolutely nasty. It was covered in dark spots and gunk, which caused the car to look and smell really bad. You could buy a brand new carpet at this point, but it's difficult to cut and mold exactly to your specific car.</p><p>So, I decided to pressure wash the carpet with laundry detergent to hopefully remove some of the larger stains, as you can see below.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.yeetpc.com/content/images/2022/04/20210711_172946.jpg" width="2000" height="1500" alt="Overhauling My 1998 Honda Civic Interior" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/20210711_172946.jpg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/20210711_172946.jpg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/20210711_172946.jpg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/20210711_172946.jpg 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.yeetpc.com/content/images/2022/04/20210711_182932.jpg" width="2000" height="1500" alt="Overhauling My 1998 Honda Civic Interior" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/20210711_182932.jpg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/20210711_182932.jpg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/20210711_182932.jpg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/20210711_182932.jpg 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>After this, I did multiple passes with a Bissell carpet cleaner in order to get the deeper stains out of the carpet. This worked really well, and the final product ended up looking great!</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.yeetpc.com/content/images/2022/04/-s33hlv.jpg" width="2000" height="944" alt="Overhauling My 1998 Honda Civic Interior" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/-s33hlv.jpg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/-s33hlv.jpg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/-s33hlv.jpg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/-s33hlv.jpg 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.yeetpc.com/content/images/2022/04/20210712_104732.jpg" width="2000" height="2667" alt="Overhauling My 1998 Honda Civic Interior" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/20210712_104732.jpg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/20210712_104732.jpg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/20210712_104732.jpg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/20210712_104732.jpg 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>Before putting the carpet back in, I scrubbed down each of the seats and the various trim pieces I removed as well. Then, I refitted the carpet in the car and slid it underneath the side/door pieces. I also reinstalled the center console. Finally, I installed the front and rear seats, finishing off the interior restoration.</p><figure class="kg-card kg-image-card"><img src="https://blog.yeetpc.com/content/images/2022/04/20210716_131037.jpg" class="kg-image" alt="Overhauling My 1998 Honda Civic Interior" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/20210716_131037.jpg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/20210716_131037.jpg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/20210716_131037.jpg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/20210716_131037.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>I hope you enjoyed reading this post! If you'd like to read more about my journey in restoring this salvaged EK Civic, you can find all my <a href="https://blog.yeetpc.com/rebuilding-a-salvage-1998-honda-civic/">other posts here</a>. Also, I have a lot of <a href="https://projects.yeetpc.com/">other engineering projects</a>, if you'd like to check those out as well. Thanks for reading and have an awesome day!</p>]]></content:encoded></item><item><title><![CDATA[Brakes, Brakes, Brakes!]]></title><description><![CDATA[I found my Honda Civic's brake pads and fluid in very bad condition, so I replaced them and fixed the brake system]]></description><link>https://blog.yeetpc.com/brakes-brakes-brakes/</link><guid isPermaLink="false">61b5779f5d3fbc0001565192</guid><category><![CDATA[Automotive]]></category><category><![CDATA[Car]]></category><category><![CDATA[Civic]]></category><category><![CDATA[Guide]]></category><category><![CDATA[Honda]]></category><category><![CDATA[Installation]]></category><category><![CDATA[Rebuild]]></category><category><![CDATA[Repair]]></category><category><![CDATA[Salvage]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Sat, 16 Apr 2022 21:36:34 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2022/04/20210609_155255.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2022/04/20210609_155255.jpg" alt="Brakes, Brakes, Brakes!"><p>When I first drove this car, the first thing I noticed was the extremely loud brakes, which sounded like the pads were worn down quite a bit. So, I decided to take a look at the brakes and replace the pads if needed.</p><p>I put the car on jack stands and removed both front wheels, exposing the brakes. The rotors on both sides looked slightly worn down, but still okay enough to keep using.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2022/04/RUID03e8842ad1dc43d882a1be40653dcf1c.jpg" class="kg-image" alt="Brakes, Brakes, Brakes!" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/RUID03e8842ad1dc43d882a1be40653dcf1c.jpg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/RUID03e8842ad1dc43d882a1be40653dcf1c.jpg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/RUID03e8842ad1dc43d882a1be40653dcf1c.jpg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/RUID03e8842ad1dc43d882a1be40653dcf1c.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption>Wheel removed from rotor</figcaption></figure><p>I removed the caliper bolts and flipped up the calipers. Then, I slid off the brake pads, which were worn all the way down to the metal! Not very safe, indeed.</p><figure class="kg-card kg-image-card"><img src="https://blog.yeetpc.com/content/images/2022/04/RUIDa058bbab589a47fa8587a40109ff96e3-1.jpg" class="kg-image" alt="Brakes, Brakes, Brakes!" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/RUIDa058bbab589a47fa8587a40109ff96e3-1.jpg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/RUIDa058bbab589a47fa8587a40109ff96e3-1.jpg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/RUIDa058bbab589a47fa8587a40109ff96e3-1.jpg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/RUIDa058bbab589a47fa8587a40109ff96e3-1.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>I then proceeded to install new <a href="https://www.autozone.com/brakes-and-traction-control/brake-pads/p/duralast-semi-metallic-brake-pads-mkd465a/350170_0_0">Duralast ceramic pads</a>, which should last pretty long with good stopping power.</p><p>I didn't have a c-clamp on hand, so I used a flathead screwdriver to push the caliper piston back into place, draining some brake fluid in the process. Then, I slid the calipers back over the pads and rotors and tightened down the bolts. Finally, I put both front wheels back on.</p><figure class="kg-card kg-image-card"><img src="https://blog.yeetpc.com/content/images/2022/04/RUIDbcf3adb26c3a49b5a2f4904494ecc537.jpg" class="kg-image" alt="Brakes, Brakes, Brakes!" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/RUIDbcf3adb26c3a49b5a2f4904494ecc537.jpg 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/RUIDbcf3adb26c3a49b5a2f4904494ecc537.jpg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/RUIDbcf3adb26c3a49b5a2f4904494ecc537.jpg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/RUIDbcf3adb26c3a49b5a2f4904494ecc537.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>I drove the car around a little, and the squealing noises had gone away completely! However, the brake pedal was feeling a bit spongy and the parking brake light showed up even when it wasn't engaged. This was because I drained a bit of brake fluid, letting air into the system.</p><p>To remove the air, I decided to bleed the entire brake system. I bought a <a href="https://www.autozone.com/test-scan-and-specialty-tools/brake-bleeder/p/oemtools-one-man-brake-bleeder-kit/46839_0_0">one man brake bleeder</a> and <a href="https://www.autozone.com/brake-and-power-steering-fluid-additives/brake-fluid/p/autozone-dot-3-brake-fluid-32-ounce/21052_0_0">DOT 3 brake fluid</a> from Autozone. I then followed <a href="https://www.youtube.com/watch?v=n1NvtUwfRJc">ChrisFix's tutorial</a> to bleed all four brakes and fill the system with brand new fluid.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2022/04/image-1.png" class="kg-image" alt="Brakes, Brakes, Brakes!" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/image-1.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/image-1.png 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/image-1.png 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/image-1.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>One man brake bleeder attached to a rear drum brake</figcaption></figure><p>The old fluid looked like it came out of a warzone, but the color improved gradually and eventually new brake fluid ran through all of the brake lines.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2022/04/image.png" class="kg-image" alt="Brakes, Brakes, Brakes!" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/image.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/image.png 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/image.png 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/image.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>Old brake fluid</figcaption></figure><p>I tested the brakes and the pedal felt nice and firm, with the parking brake light gone as well. This brake repair was a success!</p><p>To celebrate, I gave the car a good wash, which it probably hadn't seen for the last few years.</p><figure class="kg-card kg-image-card"><img src="https://blog.yeetpc.com/content/images/2022/04/image-2.png" class="kg-image" alt="Brakes, Brakes, Brakes!" srcset="https://blog.yeetpc.com/content/images/size/w600/2022/04/image-2.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2022/04/image-2.png 1000w, https://blog.yeetpc.com/content/images/size/w1600/2022/04/image-2.png 1600w, https://blog.yeetpc.com/content/images/size/w2400/2022/04/image-2.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>I hope you enjoyed reading this post! If you'd like to read more about my journey in restoring this salvage car, you can find all my <a href="https://blog.yeetpc.com/rebuilding-a-salvage-1998-honda-civic/">other posts here</a>. Also, I have a lot of <a href="https://projects.yeetpc.com/">other projects</a>, so feel free to check those out as well. Thanks for reading!</p>]]></content:encoded></item><item><title><![CDATA[Fixing a blank screen on my Thinkpad X220 Tablet]]></title><description><![CDATA[My Thinkpad X220's screen went black and wouldn't display anything. I fixed it by replacing one of the display fuses.]]></description><link>https://blog.yeetpc.com/fixing-a-blank-screen-on-my-thinkpad-x220-tablet/</link><guid isPermaLink="false">61accc73a7f2550001e90b86</guid><category><![CDATA[Guide]]></category><category><![CDATA[Hardware]]></category><category><![CDATA[Laptop]]></category><category><![CDATA[Thinkpad]]></category><category><![CDATA[Repair]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Sun, 05 Dec 2021 21:00:18 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2021/12/20211124_170400.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2021/12/20211124_170400.jpg" alt="Fixing a blank screen on my Thinkpad X220 Tablet"><p>A couple weeks ago, my Thinkpad's screen went black and wouldn't display anything. I tried rebooting a few times, but the symptoms continued: the brightness was working, but it refused to show anything on the screen. I investigated further by connecting to an external display, which worked fine. This told me that the issue couldn't be the GPU, and was probably one of the few display fuses.</p><p>I found a list of which fuses to check on a forum thread, and I checked the three most commonly-blown ones: F1, F2, and F6. I found that F1 and F2 were fine, but F6 was blown. Using the information on the motherboard, I was able to find out the specs of the fuse: F6 is a 0.5A 32V 0603 fuse located next to the leftmost display connector.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/12/fuse.jpg" class="kg-image" alt="Fixing a blank screen on my Thinkpad X220 Tablet" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/12/fuse.jpg 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/12/fuse.jpg 1000w, https://blog.yeetpc.com/content/images/size/w1600/2021/12/fuse.jpg 1600w, https://blog.yeetpc.com/content/images/size/w2400/2021/12/fuse.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption>Location of fuse (yellow circle) on motherboard</figcaption></figure><p>I ordered a few off of <a href="https://www.mouser.com/ProductDetail/bourns/sf-0603fp050m-2/?qs=fAHHVMwC%252bbjmUEdZYoiM2w%3D%3D&amp;countrycode=US&amp;currencycode=USD">Mouser Electronics</a> and they arrived by the end of the week. After soldering a new fuse in place, the display sprang to life once more!</p><figure class="kg-card kg-image-card"><img src="https://blog.yeetpc.com/content/images/2021/12/image-4.png" class="kg-image" alt="Fixing a blank screen on my Thinkpad X220 Tablet" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/12/image-4.png 600w, https://blog.yeetpc.com/content/images/2021/12/image-4.png 768w" sizes="(min-width: 720px) 720px"></figure><p>I reassembled the whole laptop, and now my X220 Tablet is fully working again. If you're experiencing similar problems with the display, chances are this simple fix will solve your issues. Also, you can find my original post about buying this laptop <a href="https://blog.yeetpc.com/adventures-in-buying-upgrading-a-thinkpad-x220-tablet/">here</a>. Thanks for reading!</p>]]></content:encoded></item><item><title><![CDATA[Background: My 1998 Honda Civic]]></title><description><![CDATA[I bought my 1998 Honda Civic EX as a project car to rebuild over the summer. Find out all about it in this blog post!]]></description><link>https://blog.yeetpc.com/background-my-1998-honda-civic-ex/</link><guid isPermaLink="false">61a0204aa7f2550001e90a9a</guid><category><![CDATA[Automotive]]></category><category><![CDATA[Honda]]></category><category><![CDATA[Salvage]]></category><category><![CDATA[Rebuild]]></category><category><![CDATA[Civic]]></category><category><![CDATA[Car]]></category><category><![CDATA[Background]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Fri, 26 Nov 2021 00:34:03 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2021/11/20210607_164124.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2021/11/20210607_164124.jpg" alt="Background: My 1998 Honda Civic"><p>When searching for a project car, I had a few things in mind. First, it had to be cheap, since I had a pretty tight budget. Next, it had to be relatively safe: it couldn't just be something that would explode into pieces in a crash. Finally, I had to be able to repair it within a reasonable timeframe.</p><p>Taking these requirements into consideration, I scoured the internet for a car that I could buy. I eventually settled on a salvage titled 1998 Honda Civic EX that I found on OfferUp. I was able to get the price down to $600 and had it towed to my house.</p><p>I initially found a few problems with the car, which I thought could be solved pretty easily:</p><!--kg-card-begin: markdown--><ul>
<li>The brakes were extremely loud, probably because the pads were completely worn down</li>
<li>A few lights were out</li>
<li>One of the lug nuts was missing</li>
<li>And it looked (and smelled) like 💩</li>
</ul>
<!--kg-card-end: markdown--><p>In the next few posts, you'll see how I fixed each of these problems, and what additional issues I found in the process!</p>]]></content:encoded></item><item><title><![CDATA[Rebuilding a Salvage 1998 Honda Civic]]></title><description><![CDATA[<p>Over the summer, I purchased and rebuilt a 1998 Honda Civic EX. This series will go into detail about everything I fixed, modified, and messed up 🤪. Hope y'all enjoy!</p><!--kg-card-begin: markdown--><ul>
<li><a href="https://blog.yeetpc.com/background-my-1998-honda-civic-ex/">Some background about the car</a></li>
<li><a href="https://blog.yeetpc.com/brakes-brakes-brakes/">Repairing the brake system</a></li>
<li><a href="https://blog.yeetpc.com/overhauling-my-1998-honda-civic-interior/">Overhauling the interior</a></li>
<li><a href="https://blog.yeetpc.com/replacing-a-broken-lug-stud-on-my-1998-civic-project/">Replacing much of the front-end</a></li>
</ul>
<!--kg-card-end: markdown-->]]></description><link>https://blog.yeetpc.com/rebuilding-a-salvage-1998-honda-civic/</link><guid isPermaLink="false">61a01e70a7f2550001e90a76</guid><category><![CDATA[Automotive]]></category><category><![CDATA[Car]]></category><category><![CDATA[Civic]]></category><category><![CDATA[Honda]]></category><category><![CDATA[Rebuild]]></category><category><![CDATA[Repair]]></category><category><![CDATA[Salvage]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Thu, 25 Nov 2021 20:34:00 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2021/12/20211128_165829.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2021/12/20211128_165829.jpg" alt="Rebuilding a Salvage 1998 Honda Civic"><p>Over the summer, I purchased and rebuilt a 1998 Honda Civic EX. This series will go into detail about everything I fixed, modified, and messed up 🤪. Hope y'all enjoy!</p><!--kg-card-begin: markdown--><ul>
<li><a href="https://blog.yeetpc.com/background-my-1998-honda-civic-ex/">Some background about the car</a></li>
<li><a href="https://blog.yeetpc.com/brakes-brakes-brakes/">Repairing the brake system</a></li>
<li><a href="https://blog.yeetpc.com/overhauling-my-1998-honda-civic-interior/">Overhauling the interior</a></li>
<li><a href="https://blog.yeetpc.com/replacing-a-broken-lug-stud-on-my-1998-civic-project/">Replacing much of the front-end</a></li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[How to Self-host Every Part of your Website]]></title><description><![CDATA[Learn why and how to self-host every single part of your website or web app, including a comments system, website analytics, DDoS Protection, and more!]]></description><link>https://blog.yeetpc.com/how-to-self-host-every-part-of-your-website/</link><guid isPermaLink="false">61a83dfba7f2550001e90b0a</guid><category><![CDATA[Guide]]></category><category><![CDATA[Hardening]]></category><category><![CDATA[Hardware]]></category><category><![CDATA[Installation]]></category><category><![CDATA[Linux]]></category><category><![CDATA[NginX]]></category><category><![CDATA[Security]]></category><category><![CDATA[Self-hosting]]></category><category><![CDATA[Server]]></category><category><![CDATA[Software]]></category><category><![CDATA[Web]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Thu, 04 Feb 2021 03:31:00 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2021/12/Server.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2021/12/Server.jpg" alt="How to Self-host Every Part of your Website"><p>In this blog post, I'll show you why (and how) to self-host every part of your website or web app. Let's get started!</p><!--kg-card-begin: markdown--><h1 id="introtoselfhosting">Intro to Self-hosting</h1>
<!--kg-card-end: markdown--><p>In 2021, it's very easy to create a website or web app and host it on a platform that manages everything for you. The inherent problem with this is that you have little to no control over where your data is stored and how it is handled by the hosting company. To take control of your data and your website's configuration, you can host it on your own computer, in your own house or office. This also allows you to get around many of the restrictions set by hosting companies, such as limits on CPUs, RAM, storage, and network bandwidth.</p><p>There are a lot of important concepts involved with self-hosting, and this guide will only scratch the surface of many of those. To get a better understanding of these concepts, I recommend checking out the <a href="https://www.reddit.com/r/selfhosted" rel="noopener noreferrer">r/selfhosted subreddit</a> and its associated <a href="http://wiki.r-selfhosted.com/" rel="noopener noreferrer">wiki</a>.</p><!--kg-card-begin: markdown--><h1 id="aserver">A Server</h1>
<!--kg-card-end: markdown--><p>The first thing you'll need to host a website or a web app is a server that can run a web server such as Apache or Nginx. All you need to set up a server is a spare computer that you can keep plugged in 24/7, an ethernet cord, and a monitor. After you have the hardware, you can move on to installing an operating system. If you're a beginner to servers and Linux operating systems, I would recommend Ubuntu 20.04 or 18.04 LTS. To install Ubuntu Server, you can watch my <a href="https://youtu.be/DgHX982EeJo?t=83">video guide</a>, which demonstrates how to download and install Ubuntu Server, along with finding your server's IP address, installing updates, and setting up a firewall. You can stop the video at 8:30, after the firewall is set up.</p><!--kg-card-begin: markdown--><h1 id="accessingyourserverovertheinternet">Accessing your Server Over the Internet</h1>
<!--kg-card-end: markdown--><p>Now that your server is up and running, we have to expose it to the internet. To do this, you can set up port forwarding on your router or modem. First, visit your router's IP address and login with your username and password. Then, click on Advanced, and then Port Forwarding (the menus may be a little different depending on the router's model). After this, add a port forwarding rule for port 80 and port 443 of your server's IP, as you can see below.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/12/image.png" class="kg-image" alt="How to Self-host Every Part of your Website" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/12/image.png 600w, https://blog.yeetpc.com/content/images/2021/12/image.png 733w" sizes="(min-width: 720px) 720px"><figcaption>Port Forwarding Rules</figcaption></figure><p>Now, your server should be opened to the Internet on ports 80 and 443 of your public IP address.</p><p>The last thing you need to do is to purchase a domain name from a registrar such as GoDaddy or Google Domains, and add DNS records pointing to your server's public IP address (search "what is my ip" to find this). Below is an example using CloudFlare's DNS.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/12/image-1.png" class="kg-image" alt="How to Self-host Every Part of your Website" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/12/image-1.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/12/image-1.png 1000w, https://blog.yeetpc.com/content/images/2021/12/image-1.png 1280w" sizes="(min-width: 720px) 720px"><figcaption>Cloudflare DNS Records</figcaption></figure><p>The two main records to add are the A record, which points your domain name to your public IP, and the CNAME record, which maps the www subdomain to your domain name.</p><!--kg-card-begin: markdown--><h1 id="installingnginx">Installing Nginx</h1>
<!--kg-card-end: markdown--><p>Once you have your domain name set up, we can go ahead and install a web server software, such as Apache or Nginx. I would recommend using Nginx, because it functions well as both a web server and a <a href="https://en.wikipedia.org/wiki/Reverse_proxy" rel="noopener noreferrer">reverse proxy server</a>, which we'll be utilizing later in this guide. To set up Nginx, follow along with my <a href="https://blog.yeetpc.com/how-to-set-up-an-nginx-reverse-proxy-with-ssl-on-ubuntu-server-20-04-lts/">Nginx Reverse Proxy Guide.</a></p><p>Once you have Nginx set up and you can visit your website from your domain name, we can move on to some other common services you may want to self-host as well.</p><!--kg-card-begin: markdown--><h1 id="analytics">Analytics</h1>
<!--kg-card-end: markdown--><p>Once you get a relatively high number of users visiting your website(s), you may want to track how they interact with various pages and where they're coming from. To collect and analyze these metrics, many website owners will choose a service such as Google Analytics. The problem with this is that Google now has access to your user's data, including their IP address, their device manufacturer, their screen resolution, and a myriad of other metrics. Google can choose to share this data with a third party or use it to track users across sites and display personalized ads. This can become a liability for you and can frustrate your users.</p><p>Luckily, there are many self-hosted, privacy-respecting analytics platforms that provide very similar functionality to GA. Some of these are <a href="https://matomo.org/" rel="noopener noreferrer">Matomo (formerly Piwik)</a>, <a href="https://plausible.io/" rel="noopener noreferrer">Plausible</a>, and <a href="https://umami.is/" rel="noopener noreferrer">Umami</a>. For this site, I use Matomo, since it matches (and, in some cases, exceeds) the functionality of GA.</p><p>To install Matomo, follow their <a href="https://matomo.org/docs/installation/" rel="noopener noreferrer">comprehensive installation guide</a>.</p><p>After you've installed it, you'll be able to transparently track the activity of users on your website.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/12/image-2.png" class="kg-image" alt="How to Self-host Every Part of your Website" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/12/image-2.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/12/image-2.png 1000w, https://blog.yeetpc.com/content/images/2021/12/image-2.png 1366w" sizes="(min-width: 720px) 720px"><figcaption>Track your visitors' behavior with Matomo Analytics</figcaption></figure><!--kg-card-begin: markdown--><h1 id="commentingsystem">Commenting System</h1>
<!--kg-card-end: markdown--><p>To engage with your site's visitors and answer any of their questions, you'll want to have a commenting system/plugin. When I first started this website, I was using Disqus, a free commenting system. The problem with Disqus is that they sell the info of your site's visitors to advertising companies, and it slows down your site significantly.</p><p>A self-hosted alternative to Disqus is <a href="https://commento.io/" rel="noopener noreferrer">Commento</a>, which doesn't track users or sell their info, and is very lightweight. Commento also allows you to customize the CSS and features built-in spam detection. You'll find Commento running on my site below.</p><p>Before installing Commento, add a CNAME record for the subdomain "commento." Then, add a reverse proxy config for Commento using <a href="https://github.com/Rav4s/NginX-Config-Files/blob/main/subdomain-proxy.conf" rel="noopener noreferrer">this sample file</a>.</p><p>The best way to install Commento is by using Docker-compose. To do this, create a docker-compose.yml file with the following contents. (Make sure to change the COMMENTO_PORT and COMMENTO_ORIGIN to the port and subdomain name you want to use.) Then, type "sudo docker-compose up -d" to start the containers.</p><pre><code>version: '3'

services:
  server:
    image: registry.gitlab.com/commento/commento:SET_VERSION
    ports:
      - 8080:8080
    environment:
      COMMENTO_ORIGIN: http://commento.example.com:8080
      COMMENTO_PORT: 8080
      COMMENTO_POSTGRES: postgres://postgres:postgres@db:5432/commento?sslmode=disable
    depends_on:
      - db
  db:
    image: postgres
    environment:
      POSTGRES_DB: commento
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    volumes:
      - postgres_data_volume:/var/lib/postgresql/data

volumes:
  postgres_data_volume:</code></pre><p>After the containers are up, visit <a href="https://commento.yourdomain.com/">https://commento.yourdomain.com</a> to access Commento. Create an account in the dashboard and register your domain name. After this, add the following script tag on each page where you'd like Commento to load.</p><pre><code>&lt;div id="commento"&gt;&lt;/div&gt;
&lt;script defer
  src="http://commento.example.com/js/commento.js"&gt;
&lt;/script&gt;</code></pre><p>If you go to that page on your site, you should now see the comments box.</p><!--kg-card-begin: markdown--><h1 id="cdnddosprotection">CDN &amp; DDoS Protection</h1>
<!--kg-card-end: markdown--><p>During the process of self-hosting your services, you might be afraid of an attacker trying to DDoS your website or hack it in some other way. Unlike major cloud providers, which have a very large amount of bandwidth, your home or office network likely has a much smaller amount. This means that even a small DDoS attack could cripple your entire network and cause a large outage.</p><p>To prevent malicious visitors from DDoS'ing your site, you can implement a CDN (content delivery network) like CloudFlare. CloudFlare hides your origin server's IP address and routes your traffic through their servers instead. It also uses cached versions of your webpages, which can help greatly with load times. Another advantage of their CDN is that your page will load just as quickly across the world as it will in the same city as your server.</p><p>To use CloudFlare's CDN, visit their <a href="https://dash.cloudflare.com/sign-up" rel="noopener noreferrer">website</a> to sign up for a free or paid account and enroll your site.</p><!--kg-card-begin: markdown--><h1 id="astatuspage">A Status Page</h1>
<!--kg-card-end: markdown--><p>If you're providing a service to your web app's users, you might want to have some sort of a status page that can notify your users of planned and unplanned outages. A few status page softwares that you can self-host include <a href="https://statping.com/" rel="noopener noreferrer">Statping</a>, <a href="https://cachethq.io/" rel="noopener noreferrer">Cachet</a>, and <a href="https://staytus.co/" rel="noopener noreferrer">Staytus</a>. I personally use Statping for <a href="https://status.yeetpc.com/" rel="noopener noreferrer">my statuspage</a>, but you can use whichever one fits your use case. For whichever status page software you use, you should make sure to host it on a separate server from the ones you're monitoring. That way, when your server goes down, it doesn't take down the status page as well.</p><p>To install Statping on your server, you can use the docker command below.</p><pre><code>sudo docker run -it -p 8080:8080 statping/statping</code></pre><p>Statping will start on port 8080 of your server. To set it up, visit <a href="http://serverip:8080/">http://serverip:8080</a> and follow the installation steps. Statping will automatically monitor the services you add, and you can configure alerting rules for email, Telegram messages, and much more. Visit the <a href="https://github.com/statping/statping/wiki" rel="noopener noreferrer">Statping Github</a> to learn more about advanced configuration.</p><p>The last thing you'll want to do is to add a reverse proxy config for your status page. To do this, add a CNAME DNS record for the "status" subdomain. Then, add a reverse proxy config for the status page using <a href="https://github.com/Rav4s/NginX-Config-Files/blob/main/subdomain-proxy.conf" rel="noopener noreferrer">this sample file</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/12/image-3.png" class="kg-image" alt="How to Self-host Every Part of your Website" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/12/image-3.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/12/image-3.png 1000w, https://blog.yeetpc.com/content/images/2021/12/image-3.png 1229w" sizes="(min-width: 720px) 720px"><figcaption>Monitor outages and send alerts using Statping</figcaption></figure><p>In this post, you've learned how to self host many of the major components of a website/webapp, which means you're no longer tied to large corporations, and your users can have more trust in your services.</p><p>Well, that's all for this post. If you liked reading, make sure to check out my other posts about self-hosting, such as <a href="https://blog.yeetpc.com/creating-a-dashboard-for-your-home-servers-using-homer/">Creating a Dashboard for Your Home Servers using Homer</a>, and <a href="https://blog.yeetpc.com/5-great-ways-to-make-your-linux-server-more-secure/">Hardening your Linux Server</a>. Or, you can check out something completely unrelated like <a href="https://blog.yeetpc.com/uses-for-an-imac-g5-in-2020/">Using an iMac G5 in 2020</a>. If you have any questions or comments, be sure to leave your thoughts down below. See y'all next time!</p>]]></content:encoded></item><item><title><![CDATA[Creating a Dashboard for Your Home Servers using Homer]]></title><description><![CDATA[Learn how to create a dashboard for your home servers with Homer, using Docker.]]></description><link>https://blog.yeetpc.com/creating-a-dashboard-for-your-home-servers-using-homer/</link><guid isPermaLink="false">61a01b34a7f2550001e90a21</guid><category><![CDATA[Guide]]></category><category><![CDATA[Installation]]></category><category><![CDATA[Linux]]></category><category><![CDATA[NginX]]></category><category><![CDATA[Server]]></category><category><![CDATA[Software]]></category><category><![CDATA[Web]]></category><category><![CDATA[Self-hosting]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Wed, 13 Jan 2021 23:24:00 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2021/11/dashboard.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2021/11/dashboard.png" alt="Creating a Dashboard for Your Home Servers using Homer"><p>In this blog post, I'll show you how to install and configure a great dashboard called <a href="https://github.com/bastienwirtz/homer" rel="noopener noreferrer">Homer</a>, which allows you to easily access all of your home servers and the services they're running.</p><!--kg-card-begin: markdown--><h1 id="whatishomer">What is Homer?</h1>
<!--kg-card-end: markdown--><p>Homer is a simple, easy-to-configure dashboard which allows you to have quick access to each of your services. You can organize your services by purpose, type, or what server they're hosted on.</p><!--kg-card-begin: markdown--><h1 id="installinghomer">Installing Homer</h1>
<!--kg-card-end: markdown--><p>The easiest way to install Homer is by using <a href="https://hub.docker.com/r/b4bz/homer" rel="noopener noreferrer">Docker</a>. To install using Docker, type the following command:</p><!--kg-card-begin: markdown--><pre><code>docker run -p 8080:8080 -v /your/local/assets/:/www/assets b4bz/homer:latest
</code></pre>
<!--kg-card-end: markdown--><p>You can change the port to something other than 8080 by using "yourport:8080" instead of "8080:8080". Make sure to also replace "/your/local/assets/" with the path you'd like to use for Homer's assets.</p><p>Once Homer is installed, you should be able to access it at <a href="http://serverip:8080/">http://serverip:8080</a>.</p><!--kg-card-begin: markdown--><h1 id="modifyingtheconfigfile">Modifying the Config File</h1>
<!--kg-card-end: markdown--><p>Once you've confirmed that it's running properly, we can begin modifying the configuration file to personalize our dashboard. To do this, open "/your/local/assets/config.yml" with a text editor, replacing "/your/local/assets" with the proper path to your assets directory.</p><p>The default config file will have something similar to what you see below:</p><!--kg-card-begin: markdown--><pre><code>---
# Homepage configuration
# See https://fontawesome.com/icons for icons options

title: &quot;Demo dashboard&quot;
subtitle: &quot;Homer&quot;
logo: &quot;logo.png&quot;
# icon: &quot;fas fa-skull-crossbones&quot; # Optional icon

header: true
footer: '
Created with ❤️ with bulma, vuejs &amp; font awesome // Fork me on 

' # set false if you want to hide it.

# Optional theme customization
theme: default
colors:
  light:
    highlight-primary: &quot;#3367d6&quot;
    highlight-secondary: &quot;#4285f4&quot;
    highlight-hover: &quot;#5a95f5&quot;
    background: &quot;#f5f5f5&quot;
    card-background: &quot;#ffffff&quot;
    text: &quot;#363636&quot;
    text-header: &quot;#ffffff&quot;
    text-title: &quot;#303030&quot;
    text-subtitle: &quot;#424242&quot;
    card-shadow: rgba(0, 0, 0, 0.1)
    link-hover: &quot;#363636&quot;
  dark:
    highlight-primary: &quot;#3367d6&quot;
    highlight-secondary: &quot;#4285f4&quot;
    highlight-hover: &quot;#5a95f5&quot;
    background: &quot;#131313&quot;
    card-background: &quot;#2b2b2b&quot;
    text: &quot;#eaeaea&quot;
    text-header: &quot;#ffffff&quot;
    text-title: &quot;#fafafa&quot;
    text-subtitle: &quot;#f5f5f5&quot;
    card-shadow: rgba(0, 0, 0, 0.4)
    link-hover: &quot;#ffdd57&quot;

# Optional message
message:
  #url: https://b4bz.io
  style: &quot;is-dark&quot; # See https://bulma.io/documentation/components/message/#colors for styling options.
  title: &quot;Demo !&quot;
  icon: &quot;fa fa-grin&quot;
  content: &quot;This is a dummy homepage demo. 
 Find more information on github.com/bastienwirtz/homer&quot;

# Optional navbar
# links: [] # Allows for navbar (dark mode, layout, and search) without any links
links:
  - name: &quot;Contribute&quot;
    icon: &quot;fab fa-github&quot;
    url: &quot;https://github.com/bastienwirtz/homer&quot;
    target: &quot;_blank&quot; # optional html a tag target attribute
  - name: &quot;Wiki&quot;
    icon: &quot;fas fa-book&quot;
    url: &quot;https://www.wikipedia.org/&quot;

# Services
# First level array represent a group.
# Leave only a &quot;items&quot; key if not using group (group name, icon &amp; tagstyle are optional, section separation will not be displayed).
services:
  - name: &quot;Applications&quot;
    icon: &quot;fas fa-cloud&quot;
    items:
      - name: &quot;Awesome app&quot;
        logo: &quot;assets/tools/sample.png&quot;
        subtitle: &quot;Bookmark example&quot;
        tag: &quot;app&quot;
        url: &quot;https://www.reddit.com/r/selfhosted/&quot;
        target: &quot;_blank&quot; # optional html a tag target attribute
      - name: &quot;Another one&quot;
        logo: &quot;assets/tools/sample2.png&quot;
        subtitle: &quot;Another application&quot;
        tag: &quot;app&quot;
        url: &quot;#&quot;
</code></pre>
<!--kg-card-end: markdown--><p>You can configure the theme colors, set messages, and add bookmarks under specific categories.</p><p>To change your theme colors, you can modify the color codes under the "colors" section of the configuration:</p><!--kg-card-begin: markdown--><pre><code>colors:
  light:
    highlight-primary: &quot;#3367d6&quot; &lt;--- Change these color codes
    highlight-secondary: &quot;#4285f4&quot;
    highlight-hover: &quot;#5a95f5&quot;
    background: &quot;#f5f5f5&quot;
    card-background: &quot;#ffffff&quot;
    text: &quot;#363636&quot;
    text-header: &quot;#ffffff&quot;
    text-title: &quot;#303030&quot;
    text-subtitle: &quot;#424242&quot;
    card-shadow: rgba(0, 0, 0, 0.1)
    link-hover: &quot;#363636&quot;
  dark:
    highlight-primary: &quot;#3367d6&quot;
    highlight-secondary: &quot;#4285f4&quot;
    highlight-hover: &quot;#5a95f5&quot;
    background: &quot;#131313&quot;
    card-background: &quot;#2b2b2b&quot;
    text: &quot;#eaeaea&quot;
    text-header: &quot;#ffffff&quot;
    text-title: &quot;#fafafa&quot;
    text-subtitle: &quot;#f5f5f5&quot;
    card-shadow: rgba(0, 0, 0, 0.4)
    link-hover: &quot;#ffdd57&quot;
</code></pre>
<!--kg-card-end: markdown--><p>Once you modify your theme colors, we can add actual content to the webpage. To do this, we can modify the section called "services." This section can contain groups, which have individual items. These items can be configured as bookmarks for your services, and they can have their own names, tags, and logos. For my configuration, I organized my services into groups based on which server they were running on.</p><!--kg-card-begin: markdown--><pre><code>services:
  - name: &quot;Applications&quot; # Name of your group
    icon: &quot;fas fa-cloud&quot; # Icon of your group
    items:
      - name: &quot;Awesome app&quot; # Name of the service
        logo: &quot;assets/tools/sample.png&quot; # Logo
        subtitle: &quot;Bookmark example&quot; # Subtitle
        tag: &quot;app&quot; # Tag
        url: &quot;https://www.reddit.com/r/selfhosted/&quot; # URL
        target: &quot;_blank&quot; # optional to open in a new tab
      - name: &quot;Another one&quot; # Add another service
        logo: &quot;assets/tools/sample2.png&quot; # Logo
        subtitle: &quot;Another application&quot; # Subtitle
        tag: &quot;app&quot; # Tag
        url: &quot;#&quot; # URL
</code></pre>
<!--kg-card-end: markdown--><p>To add a new group or service, simply copy and paste the previous one and edit the config values.</p><p>At this point, you might be wondering how to modify the default icons on Homer so each service can have a personalized icon. To do this, you have to place a file in the "/your/local/assets/tools/" directory. Since I don't have samba access to the folder I'm using for the assets, I had to devise a (sort of) hacky solution. To download the files directly to my server, I entered the assets directory and typed the following wget command for each logo, replacing the URL with the URL to the logos.</p><!--kg-card-begin: markdown--><pre><code>wget https://example.com/image.png
</code></pre>
<!--kg-card-end: markdown--><p>Once you have the logos, it's just a matter of changing these lines in the config under each group/item to match the file path.</p><!--kg-card-begin: markdown--><pre><code>logo: &quot;assets/tools/image.png&quot;
</code></pre>
<!--kg-card-end: markdown--><p>Once you're satisfied with your config, you can save and restart Docker using the command below:</p><!--kg-card-begin: markdown--><pre><code>sudo docker restart container_name_or_hash
</code></pre>
<!--kg-card-end: markdown--><p>Finally, navigate to <a href="http://serverip:8080/">http://serverip:8080/</a>, and you'll see your new Homer dashboard. Here's mine:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-37.png" class="kg-image" alt="Creating a Dashboard for Your Home Servers using Homer" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-37.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-37.png 854w" sizes="(min-width: 720px) 720px"><figcaption>My personal Homer dashboard</figcaption></figure><p>Well, that's all for this post. If you liked reading it, make sure to check out my other posts about servers, such as <a href="https://blog.yeetpc.com/how-to-set-up-an-nginx-reverse-proxy-with-ssl-on-ubuntu-server-20-04-lts/">Setting up an NginX Reverse Proxy</a>, and <a href="https://blog.yeetpc.com/5-great-ways-to-make-your-linux-server-more-secure/">Hardening your Linux Server</a>. If you have any questions or comments, be sure to leave your thoughts down below. See y'all next time!</p>]]></content:encoded></item><item><title><![CDATA[How to Set Up an NginX Reverse Proxy with SSL on Ubuntu Server 20.04 LTS]]></title><description><![CDATA[Learn how to Set Up an NginX Reverse Proxy with SSL on Ubuntu Server 20.04 LTS!]]></description><link>https://blog.yeetpc.com/how-to-set-up-an-nginx-reverse-proxy-with-ssl-on-ubuntu-server-20-04-lts/</link><guid isPermaLink="false">619eeeaea7f2550001e90963</guid><category><![CDATA[Guide]]></category><category><![CDATA[Installation]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Server]]></category><category><![CDATA[Software]]></category><category><![CDATA[Security]]></category><category><![CDATA[Web]]></category><category><![CDATA[NginX]]></category><category><![CDATA[Ubuntu]]></category><category><![CDATA[Self-hosting]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Wed, 06 Jan 2021 02:02:00 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2021/11/NGINX-logo-rgb-large.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2021/11/NGINX-logo-rgb-large.png" alt="How to Set Up an NginX Reverse Proxy with SSL on Ubuntu Server 20.04 LTS"><p>In this blog post, I'll show you how to install and configure the NginX web server and reverse proxy server on Ubuntu Server 20.04 LTS. You'll learn how to reverse proxy to backend servers on the local network and how to set up multiple subdomains with SSL/TLS encryption. Enjoy!</p><!--kg-card-begin: markdown--><h1 id="whatisareverseproxy">What is a Reverse Proxy?</h1>
<!--kg-card-end: markdown--><p>Have you ever wanted to host another website or service on the internet, but you've already used ports 80 and 443? If so, you'd probably forward another port (such as 8080) and host the service on that port. On the surface, this doesn't seem like a bad idea, but it actually is. Opening up multiple ports on your network can provide attackers with a larger attack vector for your network, which can be very dangerous. Also, using a port other than 443 for https causes browsers to automatically reject the certificate, which can be very annoying to users.</p><p>Well, a <a href="https://en.wikipedia.org/wiki/Reverse_proxy">reverse proxy</a> solves these problems by allowing you to host multiple websites/services without opening any additional ports. It does this by allowing you to route a second website to a subdomain and handling the requests using a backend server on your local network. Another reason to use a reverse proxy is that it can perform all TLS encryption, reducing the load on the web servers.</p><!--kg-card-begin: markdown--><h1 id="prerequisites">Prerequisites</h1>
<!--kg-card-end: markdown--><p>There are a few things you need to have before setting up a reverse proxy. These prerequisites include a web server accessible on the internet (with ports 80 and 443), a domain name, and some existing websites/services on your local network that we can proxy.</p><!--kg-card-begin: markdown--><h1 id="whynginx">Why NginX?</h1>
<!--kg-card-end: markdown--><p>There are many different options when it comes to reverse proxying software (<a href="https://httpd.apache.org/">Apache</a>, <a href="https://caddyserver.com/">Caddy</a>, <a href="https://traefik.io/">Traefik</a>, etc.), but I chose <a href="https://nginx.org/">NginX</a> because it's a fairly lightweight, easy to configure server that offers relatively high performance.</p><!--kg-card-begin: markdown--><h1 id="installingnginx">Installing NginX</h1>
<!--kg-card-end: markdown--><p>To install NginX, type the following commands as root or with "sudo":</p><!--kg-card-begin: markdown--><pre><code># apt update
# apt install nginx
</code></pre>
<!--kg-card-end: markdown--><p>After installation, make sure ports 80 and 443 are allowed through the firewall by typing the following:</p><!--kg-card-begin: markdown--><pre><code># ufw allow 80/tcp
# ufw allow 443/tcp
</code></pre>
<!--kg-card-end: markdown--><p>If you navigate to your server's ip address, you should now see the default NginX webpage. This means that NginX is working properly</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-34.png" class="kg-image" alt="How to Set Up an NginX Reverse Proxy with SSL on Ubuntu Server 20.04 LTS" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-34.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-34.png 698w"><figcaption>Nginx welcome page</figcaption></figure><!--kg-card-begin: markdown--><h1 id="creatingthereverseproxystructure">Creating the Reverse Proxy Structure</h1>
<!--kg-card-end: markdown--><p>Before we go and modify the config files, we have to decide on the structure for the reverse proxy (what backend servers will serve each subdomain). I decided to have my www and non-www domain (yeetpc.com) proxied to localhost port 8081. I also decided to have two subdomains, analytics.yeetpc.com and commento.yeetpc.com, proxied to 192.168.0.230 port 80 and 192.168.0.36 port 80, respectively, as you can see in the diagram below.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-35.png" class="kg-image" alt="How to Set Up an NginX Reverse Proxy with SSL on Ubuntu Server 20.04 LTS" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-35.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-35.png 853w" sizes="(min-width: 720px) 720px"><figcaption>Example reverse proxy structure</figcaption></figure><p>You also need to make sure that all of your subdomains have DNS CNAME records that point to your domain name. Below is an example in Google Domains, but it may vary depending on your DNS provider.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-36.png" class="kg-image" alt="How to Set Up an NginX Reverse Proxy with SSL on Ubuntu Server 20.04 LTS" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-36.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-36.png 853w" sizes="(min-width: 720px) 720px"><figcaption>DNS CNAME records for subdomains</figcaption></figure><!--kg-card-begin: markdown--><h1 id="modifyingtheconfiguration">Modifying the Configuration</h1>
<!--kg-card-end: markdown--><p>NOTE: Templates for all the config files in this post &amp; the video can be found at <a href="https://github.com/Rav4s/NginX-Config-Files">this GitHub repo</a>.</p><!--kg-card-begin: markdown--><h2 id="removingthedefaultconfiguration">Removing the Default Configuration</h2>
<!--kg-card-end: markdown--><p>Now, we need to remove the default site and add our reverse proxy configuration. To do this, we enter the /etc/nginx/sites-enabled/ directory and remove the default configuration file using the commands below:</p><!--kg-card-begin: markdown--><pre><code># cd /etc/nginx/sites-enabled/
# ls
default
# rm default
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="addingthefirstconfigfile">Adding the First Config File</h2>
<!--kg-card-end: markdown--><p>To begin, we can create a file in the /etc/nginx/sites-available/ directory called reverse-proxy.conf. This file will serve a few purposes: redirecting yeetpc.com to www.yeetpc.com, redirecting http to https, and reverse proxying to port 8081 on localhost.</p><p>The first thing we add in this file is a server block, which will listen on www.yeetpc.com port 80 and redirect visitors to https (port 443).</p><!--kg-card-begin: markdown--><pre><code>server {
    listen 80;
    server_name www.yeetpc.com;
    return 301 https://www.yeetpc.com$request_uri;
}
</code></pre>
<!--kg-card-end: markdown--><p>The next thing to add is another server block, which will listen on yeetpc.com port 80 and redirect visitors to www.yeetpc.com with https.</p><!--kg-card-begin: markdown--><pre><code>server {
    listen 80;
    server_name yeetpc.com;
    return 301 https://www.yeetpc.com$request_uri;
}
</code></pre>
<!--kg-card-end: markdown--><p>Our third server block will listen on yeetpc.com port 443, and redirect the https traffic to www.yeetpc.com. This server block also contains information about the SSL certificates, which we will modify later when we obtain them.</p><!--kg-card-begin: markdown--><pre><code>server {
    listen 443;
    server_name yeetpc.com;
    return 301 https://www.yeetpc.com$request_uri;

    # SSL Configuration

    ssl_certificate /etc/letsencrypt/live/yeetpc.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/yeetpc.com/privkey.pem; # managed by Certbot
    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

}
</code></pre>
<!--kg-card-end: markdown--><p>This last server block will perform the actual proxying. It will listen on www.yeetpc.com port 443 and proxy requests to localhost port 8081. To do this, we can add a location block within this server block. Within the location block, we set proxy headers which NginX forwards to the backend, and we add the proxy pass and proxy redirect with the ip address and port of the backend server. The next few lines are optional, but I recommend using them because they heighten the security of your server. These lines enable <a href="https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security">HSTS</a>, <a href="https://en.wikipedia.org/wiki/Clickjacking">clickjacking protection</a>, <a href="https://en.wikipedia.org/wiki/Cross-site_scripting">XSS protection</a>, and disable <a href="https://en.wikipedia.org/wiki/Content_sniffing">content and mime sniffing</a>. Finally, we can add a line which adds the trailing slash to all URLs.</p><!--kg-card-begin: markdown--><pre><code>server {

    listen 443;
    server_name www.yeetpc.com;

    SSL Configuration

    ssl_certificate /etc/letsencrypt/live/yeetpc.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/yeetpc.com/privkey.pem; # managed by Certbot
    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    # Set the access log location

    access_log            /var/log/nginx/yeetpc.access.log;

    location / {

      # Set the proxy headers

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      # Configure which address the request is proxied to

      proxy_pass          http://localhost:8081/;
      proxy_read_timeout  90;
      proxy_redirect      http://localhost:8081 https://www.yeetpc.com;

      # Security headers
      add_header Strict-Transport-Security &quot;max-age=31536000; includeSubDomains; preload&quot;;
      add_header X-Frame-Options DENY;
      add_header X-Content-Type-Options nosniff;
      add_header X-XSS-Protection &quot;1; mode=block&quot;;
      add_header Referrer-Policy &quot;origin&quot;;

      # Add the trailing slash
      rewrite ^([^.]*[^/])$ $1/ permanent;
    }

}
</code></pre>
<!--kg-card-end: markdown--><p>After adding these lines, save the file and close your editor.</p><p>There's one more step before we can use this config: symlinking it to the sites-enabled directory (which NginX reads). To do this, type the following command:</p><!--kg-card-begin: markdown--><pre><code># sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="addinganotherconfigfile">Adding Another Config File</h2>
<!--kg-card-end: markdown--><p>The next config file will be slightly different, because it's for a subdomain. Using this config, we'll proxy traffic from the commento subdomain to a backend server at 192.168.0.230 port 80.</p><p>To start making our config, we can create another file in the /etc/nginx/sites-available/ directory called SUBDOMAIN.conf (replace SUBDOMAIN with the proper subdomain name, in this case commento).</p><p>The first server block we add will redirect traffic from http on port 80 to https on port 443.</p><!--kg-card-begin: markdown--><pre><code>server {
    listen 80;
    server_name commento.yeetpc.com;
    return 301 https://$host$request_uri;
}
</code></pre>
<!--kg-card-end: markdown--><p>This next server block will perform the actual proxying. It will listen on commento.yeetpc.com port 443 and proxy requests to 192.168.0.230 port 80. To do this, we’ll add a location block inside the server block. Within the location block, we set proxy headers which NginX forwards to the backend, and we add the proxy pass and proxy redirect with the ip address and port of the backend server. Again, the security headers at the bottom are optional, but they will greatly improve the security of your server, so I recommend that you add them.</p><!--kg-card-begin: markdown--><pre><code>server {

    listen 443;
    server_name commento.yeetpc.com;

    # SSL configuration

    ssl_certificate /etc/letsencrypt/live/commento.yeetpc.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/commento.yeetpc.com/privkey.pem; # managed by Certbot
    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    # Set the access log location

    access_log            /var/log/nginx/commento.access.log;

    location / {

    # Set the proxy headers

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      # Configure which address the request is proxied to

      proxy_pass          http://192.168.0.230:80;
      proxy_read_timeout  90;
      proxy_redirect      http://192.168.0.230:80 https://commento.yeetpc.com;

      # Set the security headers

      add_header Strict-Transport-Security &quot;max-age=31536000; includeSubDomains; preload&quot;; #HSTS
      add_header X-Frame-Options DENY; #Prevents clickjacking
      add_header X-Content-Type-Options nosniff; #Prevents mime sniffing
      add_header X-XSS-Protection &quot;1; mode=block&quot;; #Prevents cross-site scripting attacks
      add_header Referrer-Policy &quot;origin&quot;; #Idk what this actually does&quot;;
    }

}
</code></pre>
<!--kg-card-end: markdown--><p>After adding these two server blocks, save the file and exit out of your text editor.</p><p>Finally, symlink the file to sites-enabled/ using the command below:</p><!--kg-card-begin: markdown--><pre><code>sudo ln -s /etc/nginx/sites-available/SUBDOMAIN.conf /etc/nginx/sites-enabled/SUBDOMAIN.conf
</code></pre>
<!--kg-card-end: markdown--><p>To add any additional subdomains, simply copy the previous config file and replace the server_name with the new subdomain, along with the backend's ip address and port. Then symlink the new file to the sites-enabled directory.</p><!--kg-card-begin: markdown--><h1 id="temporarysslcertificates">Temporary SSL Certificates</h1>
<!--kg-card-end: markdown--><p>Before we can restart NginX and put our new configuration into action, we have to create a temporary SSL certificate. If you try to start NginX without a temporary cert, it'll complain about not finding the certificate file.</p><p>To create a temporary certificate, type the following command:</p><!--kg-card-begin: markdown--><pre><code># openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
</code></pre>
<!--kg-card-end: markdown--><p>Then change these lines in the config file:</p><!--kg-card-begin: markdown--><pre><code>ssl_certificate /etc/letsencrypt/live/yeetpc.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/yeetpc.com/privkey.pem; # managed by Certbot
</code></pre>
<!--kg-card-end: markdown--><p>to this:</p><!--kg-card-begin: markdown--><pre><code>ssl_certificate /home/user/certificate.pem; # managed by Certbot
ssl_certificate_key /home/user/key.pem; # managed by Certbot
</code></pre>
<!--kg-card-end: markdown--><p>Make sure to replace "user" with your server username.</p><p>Finally, restart NginX using the following command:</p><!--kg-card-begin: markdown--><pre><code># systemctl restart nginx
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h1 id="obtainingletsencryptsslcertificates">Obtaining Let's Encrypt SSL Certificates</h1>
<!--kg-card-end: markdown--><p>Now that Nginx has restarted with the new configuration, we can obtain SSL certificates from <a href="https://letsencrypt.org/">Let's Encrypt</a>, a certificate authority that provides free certificates. To obtain a Let's Encrypt certificate, we can use <a href="https://certbot.eff.org/">Certbot</a>. To install Certbot on Ubuntu Server, type the following commands:</p><!--kg-card-begin: markdown--><pre><code># apt update
# apt install python3-certbot-nginx
</code></pre>
<!--kg-card-end: markdown--><p>Then, to obtain a certificate for the www and non-www domains, type the following command, replacing yeetpc.com with your main domain name:</p><!--kg-card-begin: markdown--><pre><code># certbot --nginx -d yeetpc.com -d www.yeetpc.com
</code></pre>
<!--kg-card-end: markdown--><p>Certbot will ask for some information, including your email address, agreement to the Terms of Service, and whether or not you want to subscribe to their newsletter. Then, certbot will obtain your certificate.</p><p>To obtain a certificate for any additional subdomains, type the following command, replacing sub.domain.com with the proper subdomain address:</p><!--kg-card-begin: markdown--><pre><code># certbot --nginx -d sub.domain.com
</code></pre>
<!--kg-card-end: markdown--><p>Once you've obtained the certificates, restart NginX with this command:</p><!--kg-card-begin: markdown--><pre><code># systemctl restart nginx
</code></pre>
<!--kg-card-end: markdown--><p>Now, visit each of your subdomains and ensure that they are accessible over https.</p><!--kg-card-begin: markdown--><h1 id="cronjobtorenewsslcertificates">Cron Job to Renew SSL Certificates</h1>
<!--kg-card-end: markdown--><p>The last thing we should do is to set up auto-renewal of SSL certificates using cron. To do this, open the crontab for editing using the command shown below:</p><!--kg-card-begin: markdown--><pre><code># crontab -e
</code></pre>
<!--kg-card-end: markdown--><p>Then add the following line to the crontab to automatically try to renew the certificates at 1:00am every day.</p><!--kg-card-begin: markdown--><pre><code>0 1 * * * certbot renew
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h1 id="conclusion">Conclusion</h1>
<!--kg-card-end: markdown--><p>In conclusion, a reverse proxy allows you to easily host multiple sites on the same ip address without exposing unnecessary ports. If you enjoyed this article, be sure to check out some of my other articles about <a href="https://blog.yeetpc.com/adventures-in-buying-upgrading-a-thinkpad-x220-tablet/">my ThinkPad X220 Tablet</a>, <a href="https://blog.yeetpc.com/uses-for-an-imac-g5-in-2020/">using an iMac G5 in 2020</a>, and <a href="https://blog.yeetpc.com/5-great-ways-to-make-your-linux-server-more-secure/">hardening a Linux server</a>. Or check out the accompanying <a href="https://www.youtube.com/watch?v=qdq02d64pxc&amp;feature=youtu.be">video</a>. If you have any questions or comments, be sure to let me know down below. Thanks for reading!</p>]]></content:encoded></item><item><title><![CDATA[Uses for an iMac G5 in 2020]]></title><description><![CDATA[Learn why a 2004 iMac G5 is still a very usable machine in 2020!]]></description><link>https://blog.yeetpc.com/uses-for-an-imac-g5-in-2020/</link><guid isPermaLink="false">619abc034628e3000154bca3</guid><category><![CDATA[Apple]]></category><category><![CDATA[iMac]]></category><category><![CDATA[Mac]]></category><category><![CDATA[Software]]></category><category><![CDATA[Vintage]]></category><category><![CDATA[Guide]]></category><category><![CDATA[PowerPC]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Fri, 01 Jan 2021 00:24:00 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2021/11/LoadTimesChart.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2021/11/LoadTimesChart.png" alt="Uses for an iMac G5 in 2020"><p>The iMac G5 was one of the last Macs to be shipped with a PowerPC CPU. The transition to Intel marked the end of a great era in computing and the beginning of another (arguably not so great) one. As Apple moves toward another <a href="https://www.apple.com/newsroom/2020/06/apple-announces-mac-transition-to-apple-silicon/">change</a> in their CPU architecture, I wanted to take a look at the past to see just how capable these machines were and still are today.</p><p>First, a bit of background on my <a href="https://everymac.com/systems/apple/imac/specs/imac_g5_1.8_17.html">specific G5</a>: it's a 17 inch 1.8ghz model with 768MB of RAM. I won it at a Goodwill auction as a parts/repair with a flashing folder icon. After receiving it, I cleaned the stains on the plastic and installed an SSD I had lying around. Once I figured out how to boot from usb via Open Firmware (I had no Mac OS X DVD), I installed OSX 10.5 Leopard, which is the latest OS that any PPC-based Mac can run. I <a href="https://www.yeetpc.com/blog/imac-thermal-paste">replaced</a> the thermal paste as well.</p><p>After creating a user account and installing updates (yes, Apple's servers for Leopard still work!), I went ahead and tried an assortment of software, both old and new, on the iMac. Below are my thoughts on each software and the general usability of this G5 in 2020. Enjoy!</p><!--kg-card-begin: markdown--><h1 id="systemapps">System Apps</h1>
<!--kg-card-end: markdown--><p>Many of the system apps you'll find in Leopard and older versions of OSX are very similar to the ones used today. For example, Finder is basically the same today as it was 15 years ago, which goes to show how much thought was put into making early OSX versions as perfect as they could be. OSX Leopard also introduced Cover Flow, which allowed you to easily preview multiple files within a folder. Another important feature on these machines was Spaces, which allows you to organize and switch between multiple workspaces with different apps running in each. This feature was only just implemented by Microsoft in Windows 10 with virtual desktops. Another functionality Leopard introduced was Time Machine backups, which allows a user to automatically back up and restore previous versions of the files on their system.</p><p>Just like newer versions of MacOS, Leopard is based on BSD, which means you'll feel right at home if you have experience with UNIX/Linux-based systems. Using the terminal, I was able to carry out many common tasks right out of the box, such as cloning a git repo, SSH'ing into my servers, and connecting to CIFS shares. One thing that may hold you back from installing Leopard on your PowerPC Mac, though, is the lack of support for classic apps. Leopard no longer supports using the classic environment, which may be important if you plan on running Mac OS 9 apps. Some other system apps include iTunes, iPhoto, and iDVD. These programs are still very useful today for managing your music/photo libraries and burning DVDs. On the other hand, some system apps like Safari are almost completely unusable today.</p><!--kg-card-begin: markdown--><h1 id="awebbrowser">A Web Browser</h1>
<!--kg-card-end: markdown--><p>Since Safari won't properly load many newer websites, <a href="https://www.floodgap.com/">Flooodgap Systems</a> created <a href="https://www.floodgap.com/software/tenfourfox/">TenFourFox</a>, a fully-featured web browser that can load the latest websites at a usable speed. TenFourFox was able to completely load many everyday websites, including Apple.com, Amazon, and Reddit.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-32.png" class="kg-image" alt="Uses for an iMac G5 in 2020" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-32.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-32.png 896w" sizes="(min-width: 720px) 720px"><figcaption>Common webpage load times in TenFourFox</figcaption></figure><p>There is one notable exception to the list above: YouTube. This is because it's almost impossible to even get YouTube to load on a PowerPC Mac, especially my lower-end iMac. If you succeed in loading YouTube, even a 144p video will constantly buffer and the CPU fans will spin up very loudly. This is because this iMac isn't really meant to run YouTube. If you have a more powerful Mac such as a PowerMac G5, you'll likely be able to achieve better playback.</p><!--kg-card-begin: markdown--><h1 id="productivity">Productivity</h1>
<!--kg-card-end: markdown--><p>Before we get into all the productivity apps you can run on a PowerPC Mac, I just want to show how quickly you can launch many common apps compared to a modern machine. The chart below shows how quickly the iMac opened programs compared to my ThinkPad. (Keep in mind that it does have an SSD)</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-33.png" class="kg-image" alt="Uses for an iMac G5 in 2020" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-33.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-33.png 739w" sizes="(min-width: 720px) 720px"><figcaption>Common app start times on the iMac and a ThinkPad X220T</figcaption></figure><p>As you can see, the iMac doesn't fall too far behind a much more modern laptop and actually beats it in a few programs. This is a testament to the great performance of PowerPC Macs. Working on a PowerPC Mac is also a lot less distracting than working on a newer Mac or PC, since you aren't constantly being bombarded with notifications. As a result, you can be a lot more productive on one of these Macs.</p><!--kg-card-begin: markdown--><h1 id="officeapplications">Office Applications</h1>
<!--kg-card-end: markdown--><p>If you're doing any kind of work, you'll likely need to use an Office suite. Originally, I wanted to use the open-source PPC build of LibreOffice, but it was slow and, at times, unusable. So, I grabbed Office for Mac 2008 from Macintosh Garden. It can open all of the current Office file formats (docx, pptx, xlsx, etc.) and can edit them as well. Additionally, it is very snappy and loads files quickly from the SSD or the network.</p><p>Using this Mac, I was able to compose documents for school and for my other projects. I was also able to make presentations with animations and other features. By using a PowerPC Mac with and old version of Office, you can see that not much has really changed in newer versions of Office, and most of the added features don't help with functionality. Web-based office applications such as Google Docs and Office Online don't work very well, though, due to the relatively limited web-browsing capabilities of this iMac.</p><!--kg-card-begin: markdown--><h1 id="creativeapplications">Creative Applications</h1>
<!--kg-card-end: markdown--><p>To evaluate creative applications, I downloaded Adobe Creative Suite 3 from Macintosh Garden. It includes Adobe Illustrator, Photoshop, InDesign, Lightroom, and Aftereffects. I was able to achieve paints for multiple effects in Photoshop almost instantly, which provided a very nice editing experience.</p><!--kg-card-begin: markdown--><h1 id="games">Games!</h1>
<!--kg-card-end: markdown--><p>Of course, any usable computer needs to be able to game properly, and I'm glad to say that the iMac G5 is no slouch when it comes to older games. I downloaded a few classics, including Quake 3 Arena and Halo: Combat Evolved. My machine was able to easily run both titles at about 30 FPS with low/medium texture quality. The fans do spin up quite a bit under load, though, so you may want to invest in a higher-end Power Mac G5 if you plan on doing more intense gaming.</p><p>My iMac G5 runs Leopard, so it can't run classic games and other Mac OS 9 applications. I am working on a Mac OS 9 dual boot on my newly restored <a href="https://www.youtube.com/watch?v=qQ31Dw_F4iQ">PowerMac G4</a>, though, so let me know if you'd like to see a video or a post on that.</p><!--kg-card-begin: markdown--><h1 id="conclusion">Conclusion</h1>
<!--kg-card-end: markdown--><p>In conclusion, a low-end PowerPC Mac from the early-2000s or late-90s is still a very usable machine that allows you to be productive and have fun at the same time.</p>]]></content:encoded></item><item><title><![CDATA[Install script for the Pi Garage Door Opener]]></title><description><![CDATA[The Raspberry Pi smart garage door opener now has an installer script. Check it out!]]></description><link>https://blog.yeetpc.com/install-script-for-the-pi-garage-door-opener/</link><guid isPermaLink="false">619ab9634628e3000154bc55</guid><category><![CDATA[Hardware]]></category><category><![CDATA[Raspberry Pi]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Software]]></category><category><![CDATA[Installation]]></category><category><![CDATA[Guide]]></category><category><![CDATA[IoT]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Wed, 04 Nov 2020 21:29:00 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2021/11/Prototype-Diagram_bb.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2021/11/Prototype-Diagram_bb.png" alt="Install script for the Pi Garage Door Opener"><p>A few days ago, I was running a full system upgrade on my garage door Pi when it lost power. Anyone who has worked with a Pi, or just SD cards in general, knows what happened next: the card corrupted. For a few days, I put off reinstalling Raspbian because I knew I'd have to manually install bottle.py, its dependencies, and the Python controller script (which would take like half an hour). Instead, I took about 2 hours writing, testing, and debugging a script which would automate the whole process.</p><!--kg-card-begin: markdown--><h1 id="prerequisites">Prerequisites</h1>
<!--kg-card-end: markdown--><p>Before running the script, make sure your Pi is wired properly as shown in the <a href="https://www.youtube.com/watch?v=An7KQbmUnhs">video</a>, is connected to wifi, and you can SSH into it over the network. Also, make sure you have run</p><!--kg-card-begin: markdown--><pre><code>sudo apt update &amp;&amp; sudo apt upgrade -y
</code></pre>
<!--kg-card-end: markdown--><p>so that your system is fully up to date before the installation.</p><!--kg-card-begin: markdown--><h1 id="whatdoesitdo">What does it do?</h1>
<!--kg-card-end: markdown--><p>Basically, the script starts with installing python3, python3-dev and python3-rpi.gpio, which are all dependencies of the python script. Then it makes the "garagedoor" directory and changes into it. After this, it fetches bottle.py from their website. It then fetches the latest version of the python script from the GitHub repo. Finally, it edits the /etc/rc.local file so that the script will automatically run on startup. After this, it waits 5 seconds and reboots.</p><!--kg-card-begin: markdown--><h1 id="installation">Installation</h1>
<!--kg-card-end: markdown--><p>First, get the latest version of the script from the GitHub repo:</p><!--kg-card-begin: markdown--><pre><code>wget https://raw.githubusercontent.com/Rav4s/Pi-Garage-Door-Opener/master/install.sh
</code></pre>
<!--kg-card-end: markdown--><p>Then, make it executable:</p><!--kg-card-begin: markdown--><pre><code>chmod +x install.sh
</code></pre>
<!--kg-card-end: markdown--><p>Finally, run the script and follow the terminal prompts:</p><!--kg-card-begin: markdown--><pre><code>./install.sh
</code></pre>
<!--kg-card-end: markdown--><p>Once it's finished installing, your Pi will automatically reboot and you'll be able to access it at <a href="http://raspberrypi.local:1234/login">http://raspberrypi.local:1234/login</a>. The default password is xxxx, which you should change. Also, you can tweak the default sensor distance in the code to match your specific garage door:</p><!--kg-card-begin: markdown--><pre><code>--snip--
if distance &gt;= YOUR DISTANCE IN CM: #Check if the distance is less than YOUR DISTANCE IN CM
    return 'The garage is closed.'
else:
    return 'The garage is open.'
--snip--
</code></pre>
<!--kg-card-end: markdown--><p>Check out my <a href="https://github.com/Rav4s/Pi-Garage-Door-Opener">GitHub repo</a> for all the code, including the install.sh script, Python control script, and the Android app code. I hope you enjoyed! See y'all next time.</p>]]></content:encoded></item><item><title><![CDATA[5 Great Ways to Make Your Linux Server More Secure]]></title><description><![CDATA[Learn how to harden and secure your Debian, Ubuntu, CentOS, or RHEL servers to protect against cyber attacks.]]></description><link>https://blog.yeetpc.com/5-great-ways-to-make-your-linux-server-more-secure/</link><guid isPermaLink="false">619861244628e3000154bbb1</guid><category><![CDATA[Server]]></category><category><![CDATA[Software]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Security]]></category><category><![CDATA[Hardening]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Sun, 30 Aug 2020 01:50:00 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2021/11/Dnfautoupdate.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2021/11/Dnfautoupdate.png" alt="5 Great Ways to Make Your Linux Server More Secure"><p>If you have an internet-facing server, then you probably want to keep the connections to the server and the data on it as secure as possible. In order to do this, you have to tighten up security rules to secure your data. There are many great ways to "harden" your server against attacks, and most of them are very easy to implement. Below are 5 of the best ways to harden your servers. Enjoy!</p><!--kg-card-begin: markdown--><h1 id="1configureanduseafirewall">#1: Configure and Use a Firewall</h1>
<!--kg-card-end: markdown--><p>While it seems like a very simple thing to do, maintaining a good firewall is one of the most overlooked parts of server hardening. A firewall can ignore or drop connections to ports that you don't want to expose. On many Linux distributions, the firewall is installing but not active by default, so you have to manually enable it. On Ubuntu server the syntax is as follows:</p><!--kg-card-begin: markdown--><pre><code>NOTE: commands starting with &quot;#&quot; should be run as root or with &quot;sudo&quot;

# ufw allow Openssh
Rule updated
Rule updated (v6)

# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Firewall is active and enabled on system startup
</code></pre>
<!--kg-card-end: markdown--><p>Make sure to allow your SSH connection before enabling the firewall so you don't get locked out, because firewalls will ignore connections by default. Use ufw status to check the status of the firewall. On RHEL/CentOS/Fedora servers, the firewall can be managed through the built-in Cockpit utility. To access Cockpit, visit https://[serverip]:9090/ and you'll see a login page. Sign in to manage your server. Navigate to the Networking tab and click firewall. From here, you can add services and ports to allow through the firewall.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-27.png" class="kg-image" alt="5 Great Ways to Make Your Linux Server More Secure" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-27.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-27.png 751w" sizes="(min-width: 720px) 720px"><figcaption>Configuring Firewall using Cockpit</figcaption></figure><p>The firewall isn't something you can just set and forget, though. As you add or remove services, you must stay vigilant and add or remove those ports as well, so that you minimize the amount of exposed ports and prevent unwanted traffic. (At one point, my NC Server had so many unnecessary open ports that I just reset all the rules using ufw reset) Fortunately it is very easy to remove firewall rules in any Linux distribution.</p><!--kg-card-begin: markdown--><h1 id="2regularorautomaticsecurityupdates">#2: Regular or Automatic Security Updates</h1>
<!--kg-card-end: markdown--><p>Oftentimes, security updates contain fixes to the Linux kernel or other important system utilities and services which are essential to the function of your server. Security updates may also contain things like microcodes, which are released to combat specific attacks, such as Spectre and Meltdown. Because security updates are so crucial, it's important to regularly install them manually, or even configure automatic security updates. To enable automatic security updates in Ubuntu, we use the apt unattended-upgrades package. To install it type the below commands:</p><!--kg-card-begin: markdown--><pre><code># apt install unattended-upgrades
Check if it's running after installation
$ systemctl status unattended-upgrades
</code></pre>
<!--kg-card-end: markdown--><p>If it says the service is active/running, then you can continue to the next step. We need to enable automatic updates for the security repository. To do this, we need to edit the config file:</p><!--kg-card-begin: markdown--><pre><code># nano /etc/apt/apt.conf.d/50unattended-upgrades
Then remove the // from the line ending in &quot;security&quot;
# nano /etc/apt/apt.conf.d/20auto-upgrades
Then edit the file so it looks like this:
APT::Periodic::Update-Package-Lists &quot;1&quot;;
APT::Periodic::Unattended-Upgrade &quot;1&quot;;
</code></pre>
<!--kg-card-end: markdown--><p>Great! Now your Debian/Ubuntu server has automatic updates enabled. But what if you have a RHEL-based server OS? Well, it's even easier to do from the Cockpit management interface. Go to your Cockpit instance at https://[serverip]:9090/ and click on software updates in the left bar. Wait for a few seconds for it to refresh package information. Now you can select which updates to automatically install and what day of the week &amp; time to install them.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-28.png" class="kg-image" alt="5 Great Ways to Make Your Linux Server More Secure" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-28.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-28.png 820w" sizes="(min-width: 720px) 720px"><figcaption>Configuring automatic updates using Cockpit</figcaption></figure><p>Another thing you can do on Ubuntu systems to apply important kernel patches without a restart is to install Canonical Livepatch. To do this, visit <a href="https://auth.livepatch.canonical.com/">their website</a> and sign in to your Ubuntu One account. Then, get your livepatch token and keep it safe. Type the following commands to install and enable livepatch on your system.</p><!--kg-card-begin: markdown--><pre><code># snap install canonical-livepatch
# snap list

Name                 Version      Rev    Tracking       Publisher   Notes
canonical-livepatch  9.5.5        95     latest/stable  canonical✓  -
core                 16-2.45.3.1  9804   latest/stable  canonical✓  core
core18               20200724     1885   latest/stable  canonical✓  base
nextcloud            19.0.1snap3  22653  latest/stable  nextcloud✓  -

# canonical-livepatch enable [token]
(Replace [token] with your auth token from earlier)
Successfully enabled device. Using machine-token [token]
</code></pre>
<!--kg-card-end: markdown--><p>Your kernel livepatching should now be active.</p><!--kg-card-begin: markdown--><h1 id="3securingsecureshellsshconnections">#3: Securing Secure Shell (SSH) Connections</h1>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-29.png" class="kg-image" alt="5 Great Ways to Make Your Linux Server More Secure"><figcaption><a href="https://www.shutterstock.com/image-vector/secure-shell-ssh-concept-illustration-cryptographic-1353008981">Eny Setiyowati/Shutterstock.com</a></figcaption></figure><p>If you manage a server, it's likely that you remotely connect to its terminal over Secure Shell (SSH). SSH is inherently secure as it uses an encrypted connection, but there are still some things that should be tightened. Firstly, you should disable root login over SSH. The root user can be used to perform potentially dangerous tasks on your system, so you should block remote root login. To do this, we have to edit the SSH config file:</p><!--kg-card-begin: markdown--><pre><code># nano /etc/ssh/sshd_config
Edit the line with &quot;PermitRootLogin&quot; so it says PermitRootLogin no
# systemctl restart sshd
</code></pre>
<!--kg-card-end: markdown--><p>Another thing you can do to tighten up SSH connections is to only use SSH keys. SSH keys are pairs of public and private keys which are used to authenticate SSH connections. They are much harder to brute force than passwords, so they provide a higher level of security. To use SSH keys, we first have to create the key pair on the client machine. On Linux/MacOS machines, simply type ssh-keygen -t rsa and follow the instructions. Then copy the public key to the server using ssh-copy-id user@serverip. On Windows (PuTTY), open PuTTYGen and click generate. Then move your mouse around to generate randomness. Save both keys in a safe location. To copy the public key to the server, open an SSH session and type the following:</p><!--kg-card-begin: markdown--><pre><code># umask 077 &amp;&amp; test -d ~/.ssh || mkdir ~/.ssh
# umask 077 &amp;&amp; touch ~/.ssh/authorized_keys
# nano .ssh/authorized_keys
Paste the contents of your public key file here
</code></pre>
<!--kg-card-end: markdown--><p>You should be able to login with just your SSH keys now. If it doesn't work, you should make sure the line PubkeyAuthentication and AuthorizedKeysFile are uncommented in SSH config.</p><p>Another thing you can do to tighten up SSH security is installing fail2ban. Fail2ban refuses connections from brute-forcing ip addresses, making your server more secure from brute-force attacks. To install it on a Ubuntu/Debian system, type these commands:</p><!--kg-card-begin: markdown--><pre><code># apt install fail2ban
# fail2ban-client status

Status
|- Number of jail:      1
`- Jail list:   sshd
</code></pre>
<!--kg-card-end: markdown--><p>On a RHEL-based system, type the following to install fail2ban:</p><!--kg-card-begin: markdown--><pre><code># yum install epel-relase
# yum install fail2ban
# systemctl enable fail2ban
# fail2ban-client status

Status
|- Number of jail:      1
`- Jail list:   sshd
</code></pre>
<!--kg-card-end: markdown--><p>Now your servers are protected against brute-force SSH attacks.</p><!--kg-card-begin: markdown--><h1 id="4useselinux">#4: Use SELinux</h1>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://blog.yeetpc.com/content/images/2021/11/image-30.png" class="kg-image" alt="5 Great Ways to Make Your Linux Server More Secure" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-30.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-30.png 708w"></figure><p>Security Enhanced Linux (SELinux) is a Linux security kernel module which controls access to different applications, processes, and files on a system. It uses security policies, which are a set of rules that tell SELinux what can or can’t be accessed, to enforce the access allowed by a policy. To learn more about SELinux, visit <a href="https://www.redhat.com/en/topics/linux/what-is-selinux">the Red Hat wiki</a>. SELinux is included and enabled by default on the latest releases of RHEL/CentOS/Fedora systems. To install SELinux on Ubuntu/Debian systems, type the following commands:</p><!--kg-card-begin: markdown--><pre><code># apt install selinux selinux-utils selinux-basics auditd audispd-plugins
# reboot
# sestatus

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             default
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     requested (insecure)
Max kernel policy version:      31
    
# setenforce 1 (to change mode from permissive to enforcing)
</code></pre>
<!--kg-card-end: markdown--><p>Now that SELinux is installed, we need to allow some services access. These are some common services and how to enable them with SELinux.</p><!--kg-card-begin: markdown--><pre><code>Allow web server httpd:
# setsebool -P httpd_unified 1

Allow samba server:
# setsebool -P samba_export_all_ro=1 samba_export_all_rw=1
# semanage fcontext -a -t samba_share_t &quot;/path/to/share(/.*)?&quot; (replace /path/to/share with your share path)

Allow Nextcloud server:
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'

restorecon -Rv '/var/www/html/nextcloud/'
</code></pre>
<!--kg-card-end: markdown--><p>Now, to permanently enable SELinux, type the following commands:</p><!--kg-card-begin: markdown--><pre><code># nano /etc/selinux/config
Change to SELINUX=enforcing
</code></pre>
<!--kg-card-end: markdown--><p>Great! Now SELinux is installed and enabled on your server!</p><!--kg-card-begin: markdown--><h1 id="5lynissecurityauditing">#5: Lynis Security Auditing</h1>
<!--kg-card-end: markdown--><p>Even if you follow best practices and attempt to tighten security on every attack vector, you'll still leave some things open to attacks or exploits. Lynis is a tool that helps you see security vulnerabilities that you aren't able to spot on your own. Lynis performs an extensive health scan of your system to find possible security vulnerabilities and general optimizations for your system. To learn more about Lynis, visit <a href="https://cisofy.com/lynis/">Cisofy's website</a>.</p><p>Lynis is available as a package for Debian and RHEL-based systems. To install on Ubuntu/Debian, type the following commands:</p><!--kg-card-begin: markdown--><pre><code># apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C80E383C3DE9F082E01391A0366C67DE91CA5D5F
# echo &quot;deb https://packages.cisofy.com/community/lynis/deb/ stable main&quot; | tee /etc/apt/sources.list.d/cisofy-lynis.list
# apt update
# apt install lynis
</code></pre>
<!--kg-card-end: markdown--><p>To install on RHEL-based systems, type the following commands:</p><!--kg-card-begin: markdown--><pre><code># dnf update
# dnf install lynis
</code></pre>
<!--kg-card-end: markdown--><p>To check if it was successfully installed and to audit your system for the first time, run the following commands:</p><!--kg-card-begin: markdown--><pre><code># lynis show version
3.0.0
# lynis audit system
[ Lynis 3.0.0 ]

[+] Initializing program
------------------------------------
  - Detecting OS...                                           [ DONE ]
  - Checking profiles...                                      [ DONE ]

  ---------------------------------------------------
  Program version:           3.0.0
  Operating system:          Linux
  Operating system name:     CentOS Linux
  Operating system version:  8
  Kernel version:            4.18.0
  Hardware platform:         x86_64
  Hostname:                  hostname

---snip---

  -[ Lynis 3.0.0 Results ]-

Warnings (1):
warnings will appear here

Suggestions (9000):
suggestions will appear here

Lynis security scan details:

  Hardening index : 68 [#############       ]
  Tests performed : 258
  Plugins enabled : 0

  Components:
  - Firewall               [V]
  - Malware scanner        [X]

  Scan mode:
  Normal [V]  Forensics [ ]  Integration [ ]  Pentest [ ]

  Lynis modules:
  - Compliance status      [?]
  - Security audit         [V]
  - Vulnerability scan     [V]

  Files:
  - Test and debug information      : /var/log/lynis.log
  - Report data                     : /var/log/lynis-report.dat

Security scan finished.
</code></pre>
<!--kg-card-end: markdown--><p>Lynis will divide its output into warnings, which are very important and should be dealt with immediately, and suggestions, which are less important but you should still consider implementing some of them to improve security.</p><!--kg-card-begin: markdown--><h1 id="additionalstuff">Additional stuff</h1>
<!--kg-card-end: markdown--><p>Another security measure you can implement is full-disk encryption with LVM. Full disk encryption can help protect important data from being breached even if the server is hacked, since the data can't be decrypted without the passphrase. Usually, you can choose this option when partitioning your disks on a fresh install. Below is an example in the CentOS installer:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-31.png" class="kg-image" alt="5 Great Ways to Make Your Linux Server More Secure" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-31.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-31.png 791w" sizes="(min-width: 720px) 720px"><figcaption>Setting up full-disk encryption</figcaption></figure><p>A few other things to keep in mind are to frequently monitor access/usage logs to pick out unwanted traffic and to always have (working) backups in case of data loss from an attack. You can also only forward necessary ports on your router to provide network-wide security.</p><p>I hope you enjoyed this post! If you have any questions or comments, I have recently added a Disqus for this site, which you can access below. Be on the lookout for a server hardening video in the coming weeks. Thanks for reading!</p>]]></content:encoded></item><item><title><![CDATA[How to re-apply thermal paste on an iMac G5]]></title><description><![CDATA[Learn how to replace the thermal paste on an Apple iMac G5.]]></description><link>https://blog.yeetpc.com/how-to-re-apply-thermal-paste-on-an-imac-g5/</link><guid isPermaLink="false">6195c5fd768fd50001d40c57</guid><category><![CDATA[Hardware]]></category><category><![CDATA[Upgrades]]></category><category><![CDATA[Apple]]></category><category><![CDATA[Mac]]></category><category><![CDATA[iMac]]></category><category><![CDATA[PowerPC]]></category><category><![CDATA[Vintage]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Wed, 19 Aug 2020 02:18:00 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2021/11/imac-g5-side-view.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2021/11/imac-g5-side-view.jpg" alt="How to re-apply thermal paste on an iMac G5"><p>A few months back, I bought an iMac G5 from <a href="https://www.shopgoodwill.com/Item/94992781">Goodwill</a> for $16.50. It was listed as parts/repair with a flashing question mark on boot. When I received it, I found that there was no hard drive installed, so I installed a spare SSD I had. After a few days of fiddling with Open Firmware, I got it to boot from an OSX Leopard USB and I installed OSX 10.5 Leopard on the drive.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-7.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-7.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-7.png 686w"><figcaption>Leopard Install on iMac</figcaption></figure><p>After installing Leopard and making sure everything worked, I cleaned up the dark spots on the plastic case using a toothbrush. Then, I installed a few <a href="http://ppcarchive.dyniform.net/software.html">programs</a> so that it could be more useful today. After this, I was able to use the iMac to do many different tasks, but I quickly found out that it was running quite hot (70 to 75 degrees Celsius). Because of this, the fans would ramp up, making a lot of noise. During tasks that used a lot of CPU, the machine would almost become unusable. So, I decided to dust out the computer and replace the thermal paste. Below is a comprehensive guide to removing the logic board and replacing the CPU thermal paste. I hope you enjoy!</p><!--kg-card-begin: markdown--><h1 id="disassembly">Disassembly</h1>
<!--kg-card-end: markdown--><ol><li>Begin by shutting down the iMac and removing the power cable &amp; peripherals</li></ol><p>2. Then flip the iMac over and carefully set it down on its screen</p><p>3. Unscrew the three bottom screws until they no longer turn. They won't come out all the way, but you should unscrew them as much as you can.</p><p>4. Fully remove the back cover</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-8.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-8.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/11/image-8.png 1000w, https://blog.yeetpc.com/content/images/2021/11/image-8.png 1200w" sizes="(min-width: 720px) 720px"><figcaption>Removing the back cover</figcaption></figure><p>5. Next, remove both sticks of RAM by unlocking the locks and pulling them straight out</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-9.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-9.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/11/image-9.png 1000w, https://blog.yeetpc.com/content/images/2021/11/image-9.png 1200w" sizes="(min-width: 720px) 720px"><figcaption>Removing the RAM</figcaption></figure><p>6. Remove the three Philips head screws holding down the optical drive</p><p>7. Pull up and out to remove the optical drive</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-10.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-10.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/11/image-10.png 1000w, https://blog.yeetpc.com/content/images/2021/11/image-10.png 1200w" sizes="(min-width: 720px) 720px"><figcaption>Removing the optical drive</figcaption></figure><p>8. Turn the middle bottom screw clockwise to free the power supply</p><p>9. Remove the three screws along the top of the power supply</p><p>10. Pull the PSU up and out, and remove the logic board power connector</p><!--kg-card-begin: markdown--><p><strong>NOTE: IT MAY TAKE A LOT OF FORCE TO REMOVE THE POWER SUPPLY, BUT TAKE CARE TO NOT DAMAGE ANY OF THE NEARBY CAPACITORS ON THE LOGIC BOARD</strong></p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-11.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-11.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/11/image-11.png 1000w, https://blog.yeetpc.com/content/images/2021/11/image-11.png 1200w" sizes="(min-width: 720px) 720px"><figcaption>Removing the PSU</figcaption></figure><p>11. Disconnect the HDD thermal sensor cable from the sensor board</p><p>12. Remove the two screws holding in the fan duct</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-12.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-12.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-12.png 635w"><figcaption>Removing the fan duct</figcaption></figure><p>13. Remove the two screws holding down the fan cover and lift it out</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-13.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-13.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-13.png 685w"><figcaption>Removing the fan cover</figcaption></figure><p>14. Remove the two screws holding down the display cable and disconnect it from the board</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-14.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-14.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-14.png 605w"><figcaption>Removing the display cable</figcaption></figure><p>15. Disconnect the SATA power and data cables from the logic board</p><p>16. Disconnect the two fan connectors</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-15.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-15.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/11/image-15.png 1000w, https://blog.yeetpc.com/content/images/2021/11/image-15.png 1200w" sizes="(min-width: 720px) 720px"><figcaption>Removing the SATA cables</figcaption></figure><p>17. Slide out and disconnect the inverter to display cable</p><p>18. Remove the screw holding the inverter in place</p><p>19. Pull straight upward to remove the inverter, and disconnect its cable from the logic board</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-16.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-16.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-16.png 840w" sizes="(min-width: 720px) 720px"><figcaption>Removing the inverter</figcaption></figure><p>20. Remove the lower fan and speaker connectors by using a spudger to pull straight upwards</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-17.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-17.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-17.png 605w"><figcaption>Removing the speaker &amp; fan cables</figcaption></figure><p>21. If you have an airport card installed, pull up on the tab and remove it</p><p>22. Remove the Torx screws on either side of the airport slot to access the modem card</p><p>23. Remove the two T6 Torx screws holding in the modem, and pull straight up to remove it</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-18.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-18.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-18.png 605w"><figcaption>Removing the modem card</figcaption></figure><p>24. Now, remove the 6 T10 Torx screws and 3 Philips head screws to remove the logic board</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-19.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-19.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-19.png 892w" sizes="(min-width: 720px) 720px"><figcaption>Removing the logic board screws</figcaption></figure><p>25. Pull straight upward to remove the logic board</p><p>26. Set it down gently so you don't damage any components</p><p>27. While the board is out, clean the heatsink and blow out any dust to improve cooling</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-20.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-20.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-20.png 835w" sizes="(min-width: 720px) 720px"><figcaption>Cleaning the heatsink</figcaption></figure><p>28. Turn over the logic board and clean the old thermal paste off the CPU using isopropyl alcohol and a q-tip/paper towel</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-21.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5"><figcaption>Cleaning off the old thermal paste</figcaption></figure><p>29. Now clean off the residue from the heatsink on the front assembly of the iMac</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-22.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5"><figcaption>Cleaning off the old thermal paste</figcaption></figure><p>30. After cleaning off the paste, apply a glob of paste to the CPU and spread it evenly</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-23.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5"><figcaption>Applying new thermal paste</figcaption></figure><!--kg-card-begin: markdown--><h1 id="reassembly">Reassembly</h1>
<!--kg-card-end: markdown--><p>31. Replace the logic board in the case, making sure to line up the attachment points</p><p>32. Screw in the 6 T10 Torx and 3 Philips screws that hold in the board</p><p>33. Replace the modem card and screw it in</p><p>34. Replace the airport card holder and the airport card (if installed)</p><p>35. Push the lower fan, speaker, and mic cables back into the board</p><p>36. Attach the inverter cable to the logic board, and reseat the inverter</p><p>37. Screw in the Philips screw holding in the inverter and re-attach the inverter-to-display cable</p><p>38. Connect the SATA data and power cables to the board</p><p>39. Connect the upper fan connectors to the board</p><p>40. Reseat the display cable and screw in the two screws holding it in</p><p>41. Re-position the fan shroud/cover and screw in the two screws</p><p>42. Screw in the two screws holding the fan duct to the heatsink</p><p>43. Use a spudger to push the HDD thermal sensor cable back in</p><p>44. Replace the power supply into the case</p><!--kg-card-begin: markdown--><p><strong>You may have to pull the bottom of the case so you can fit the PSU</strong></p>
<p><strong>It also may take a while to replace the PSU, so be patient and careful with the components nearby</strong></p>
<!--kg-card-end: markdown--><p>45. Screw in the PSU screws, and turn the middle bottom case screw counter-clockwise to lock it in place</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-24.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-24.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-24.png 887w" sizes="(min-width: 720px) 720px"><figcaption>Partially reassembled iMac</figcaption></figure><p>46. Replace the optical drive by pushing the white alignment things into the case and then pushing the back of the drive onto its connector. It may require a bit of force to attach the drive to the connector</p><p>47. Screw in the three Philips screws holding in the drive</p><p>48. Push in both sticks of RAM until the locks click into place</p><p>49. Align the back cover and reseat it onto the case</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-25.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-25.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-25.png 726w" sizes="(min-width: 720px) 720px"><figcaption>Partially reassembled iMac</figcaption></figure><p>50. Screw in the two outermost screws on the bottom case until they no longer turn</p><p>51. Make sure everything is secure and stand the iMac back up</p><p>52. Great! You're done re-applying thermal paste on your iMac G5</p><!--kg-card-begin: markdown--><h1 id="results">Results</h1>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-26.png" class="kg-image" alt="How to re-apply thermal paste on an iMac G5" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-26.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/11/image-26.png 1000w, https://blog.yeetpc.com/content/images/size/w1600/2021/11/image-26.png 1600w, https://blog.yeetpc.com/content/images/size/w2400/2021/11/image-26.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>Temperatures after upgrading thermal paste</figcaption></figure><p>After re-applying the thermal paste and thoroughly cleaning out the fans/heatsinks, I was able to reduce idle temps from ~50 to ~45 degrees Celsius. Under load, the effect was even more profound: temperatures were reduced from ~75 to ~60 degrees. The fans weren't as loud, and didn't kick in as often. During simple text editing and simple terminal work, the system was completely quiet. During tasks like heavy web browsing, watching DVDs, etc, the system was a lot more usable due to lower temps. If you own an iMac G5 and you've never changed the thermal paste, I highly recommend that you do this. It's a fairly straightforward process that yields great results. If you want more posts and/or videos on the iMac G5, make sure to comment down below. Thanks for reading!</p>]]></content:encoded></item><item><title><![CDATA[Adventures in buying & upgrading a Thinkpad X220 Tablet]]></title><description><![CDATA[The Thinkpad X220 makes for a great budget student laptop! Recently, I bought one and upgraded it with an SSD, more RAM, and new thermal paste.]]></description><link>https://blog.yeetpc.com/adventures-in-buying-upgrading-a-thinkpad-x220-tablet/</link><guid isPermaLink="false">6195bd81768fd50001d40bcc</guid><category><![CDATA[Laptop]]></category><category><![CDATA[Hardware]]></category><category><![CDATA[Upgrades]]></category><category><![CDATA[Thinkpad]]></category><dc:creator><![CDATA[Ravi Shah]]></dc:creator><pubDate>Wed, 12 Aug 2020 01:59:00 GMT</pubDate><media:content url="https://blog.yeetpc.com/content/images/2021/11/thinkpad-x220-tablet.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.yeetpc.com/content/images/2021/11/thinkpad-x220-tablet.jpg" alt="Adventures in buying & upgrading a Thinkpad X220 Tablet"><p>If you're looking for a student laptop in 2020, there are a few things you should take into account, such as processing power, battery life, durability, and cost. Taking these constraints into account, many buyers will choose a new Chromebook, which can be bought for about $200. Well, this school year, I was one of those buyers, but I didn't want a Chromebook for many reasons (inability to run various software, zero durability/cheap design, low performance per $, etc.). I had a budget of about $200, so I started looking for laptops around that price.</p><p>Eventually, I stumbled upon the ThinkPad X220. It's specs were more than enough for my use case - an i5 or i7 processor, up to 16 gigabytes of RAM, and SATA 3. Apart from the specs, the Thinkpad had a great support community, and it is widely regarded as an industry standard for durability. After finding out so many great things about this laptop, I started looking for them on eBay, and I was truly surprised to find one for only $105. It had 4 gigabytes of RAM, a mechanical drive, and an i7 processor. It was also a tablet version with touch and stylus support, which is an added plus.</p><p>I found that I'd have to spend about $30 for an <a href="https://www.amazon.com/PNY-CS900-250GB-Internal-Solid/dp/B07XZLW68F/ref=sxts_sxwds-bia-wc-p13n1_0?cv_ct_cx=pny+ssd&amp;dchild=1&amp;keywords=pny+ssd&amp;pd_rd_i=B07XZLW68F&amp;pd_rd_r=52573fc6-098a-4500-9afd-1b60b7a1c1f9&amp;pd_rd_w=vW2Kt&amp;pd_rd_wg=aWjTX&amp;pf_rd_p=13bf9bc7-d68d-44c3-9d2e-647020f56802&amp;pf_rd_r=P6B0ZEE7M6812EXAA0X9&amp;psc=1&amp;qid=1597341686&amp;sr=1-1-791c2399-d602-4248-afbb-8a79de2d236f">SSD upgrade</a>, and I already had 8 gigabytes of Crucial memory on hand. With this in mind, the total cost would be less than $140. Since this was a great deal and well within my budget, I pulled the trigger on the laptop.</p><figure class="kg-card kg-image-card"><img src="https://blog.yeetpc.com/content/images/2021/11/image.png" class="kg-image" alt="Adventures in buying & upgrading a Thinkpad X220 Tablet" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image.png 600w, https://blog.yeetpc.com/content/images/2021/11/image.png 967w" sizes="(min-width: 720px) 720px"></figure><!--kg-card-begin: markdown--><h1 id="upgrades">Upgrades</h1>
<!--kg-card-end: markdown--><p>A week later, the Thinkpad arrived at my doorstep. After unboxing and cleaning the laptop, I began the SSD and RAM <a href="https://youtu.be/PWvCBxHjYo0?t=72">upgrades</a>, which went smoothly due to the easy access to the drive and memory bays. After the hardware was installed, I installed Windows 10 using the <a href="https://www.microsoft.com/en-us/software-download/windows10">Media Creation Tool</a>. (The only reason I didn't use Linux is software required for school that only runs under Windows/Chrome OS/MacOS) With Windows installed, I installed <a href="https://www.microsoft.com/en-us/p/lenovo-vantage/9wzdncrfj4mv?activetab=pivot:overviewtab">Lenovo Vantage</a>, a computer management software that allows you to use your Thinkpad's hotkeys, set a battery charge threshold, and more. I also installed the <a href="https://support.lenovo.com/us/en/downloads/ds027627/">tablet button drivers</a>, which allow you to use the display flip, ctrl+alt+delete, and dedicated sleep buttons on the left side of the display.</p><!--kg-card-begin: markdown--><h1 id="myexperience">My experience</h1>
<!--kg-card-end: markdown--><p>At the time of writing, I have been using the Thinkpad X220T for about 2-3 weeks, and it has been great. Here are a few things I have done on this laptop:</p><ul><li>Typing documents</li><li>Making this website</li><li>Administering my servers through SSH</li><li>Video editing/production (I use an external display for higher resolution)</li><li>Watching 1080p video</li><li>Web browsing</li><li>3d design/ rendering in Blender</li><li>And I can still get 5-6 hours of battery life! (Out of a new battery)</li></ul><!--kg-card-begin: markdown--><h1 id="akindaunexpectedupgrade">A (kinda) Unexpected Upgrade</h1>
<!--kg-card-end: markdown--><p>One thing I did notice with the X220T, though, was that it would get pretty hot (I'm talking over 95C!) while doing CPU-intensive tasks like rendering video. Because of this, I replaced the thermal paste on the CPU, pulling the temps down by about 10C at idle and 15C under load. The paste I used was <a href="https://www.amazon.com/ARCTIC-MX-4-Compound-Micro-particles-Durability/dp/B0795DP124">Arctic MX-4</a>, a non-conductive paste that is extremely effective. I've summarized the steps for repasting the CPU below, but I still recommend you watch a <a href="https://www.youtube.com/watch?v=VGHPWJXOris">video</a> before attempting to do so.</p><!--kg-card-begin: markdown--><p><strong>NOTE: THE INSTRUCTIONS MAY BE SLIGHTLY DIFFERENT FOR THE REGULAR/TABLET MODELS</strong></p>
<!--kg-card-end: markdown--><p>1. Begin, as always, by removing the battery</p><p>2. Remove the drive bay cover and the drive</p><p>3. Remove the keyboard &amp; palmrest screws</p><p>4. Remove the keyboard and palmrest, and disconnect the ribbon cables</p><p>5. Remove and unwind the wireless card wires.</p><!--kg-card-begin: markdown--><p><strong>NOTE: REMEMBER WHERE THEY GO SO YOU CAN PUT THEM BACK CORRECTLY</strong></p>
<!--kg-card-end: markdown--><p>6. Remove the screws holding the plastic shield down from the top</p><p>7. Remove the two remaining screws on the bottom case and in the battery compartment</p><p>8. Rotate the screen and pull out the plastic shield</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-1.png" class="kg-image" alt="Adventures in buying & upgrading a Thinkpad X220 Tablet" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-1.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-1.png 717w"><figcaption>X220T with shield removed</figcaption></figure><p>9. To remove the motherboard, you have to remove the screen</p><p>10. Remove the screen ribbon cables on the board</p><p>11. Remove the four screws that hold the hinge in place</p><p>12. Lift the screen out of the body</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-2.png" class="kg-image" alt="Adventures in buying & upgrading a Thinkpad X220 Tablet" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-2.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-2.png 611w"><figcaption>Screen removed from laptop</figcaption></figure><p>13. To remove the motherboard, use pliers to remove the VGA connectors, which hold the board in place</p><p>14. Remove the two screws inside the ExpressCard slot</p><p>15. Remove the wireless card screw, which also holds down the board</p><p>16. Finally, remove the pen insert detector and lift the motherboard up and out</p><p>17. While lifting up the motherboard, disconnect the AC power cable</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-3.png" class="kg-image" alt="Adventures in buying & upgrading a Thinkpad X220 Tablet" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-3.png 600w, https://blog.yeetpc.com/content/images/2021/11/image-3.png 809w" sizes="(min-width: 720px) 720px"><figcaption>Motherboard removed from laptop</figcaption></figure><p>18. Remove the CPU fan connector and the piece of tape holding it in</p><p>19. Remove the four screws holding in the CPU fan and lift it off</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-4.png" class="kg-image" alt="Adventures in buying & upgrading a Thinkpad X220 Tablet"><figcaption>Cooler removed from motherboard</figcaption></figure><p>20. Clean off the thermal paste from the CPU and fan using isopropyl alcohol and q-tips</p><p>21. Apply the new thermal paste and spread it over the CPU die</p><p>22. Reinstall the fan and screw it in so it's flush with the CPU</p><p>23. Reinstall the motherboard, display, shield, wireless card, keyboard, palmrest, SSD, and battery in that order</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-5.png" class="kg-image" alt="Adventures in buying & upgrading a Thinkpad X220 Tablet" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-5.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/11/image-5.png 1000w, https://blog.yeetpc.com/content/images/2021/11/image-5.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>Laptop partially re-assembled</figcaption></figure><p>I also replaced the battery with a new GHU 6-cell, which gets 5-6 hours on a charge.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.yeetpc.com/content/images/2021/11/image-6.png" class="kg-image" alt="Adventures in buying & upgrading a Thinkpad X220 Tablet" srcset="https://blog.yeetpc.com/content/images/size/w600/2021/11/image-6.png 600w, https://blog.yeetpc.com/content/images/size/w1000/2021/11/image-6.png 1000w, https://blog.yeetpc.com/content/images/2021/11/image-6.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>New GHU battery</figcaption></figure><!--kg-card-begin: markdown--><h1 id="conclusion">Conclusion</h1>
<!--kg-card-end: markdown--><p>In conclusion, the X220/T is a great laptop for students and is very easy to upgrade to suit your needs. It can tackle many intensive tasks, and will easily survive your years at school. You can buy an X220 for yourself <a href="https://www.ebay.com/sch/i.html?_from=R40&amp;_trksid=p2380057.m570.l1313&amp;_nkw=Thinkpad+X220&amp;_sacat=0">here</a> and you can watch my full video <a href="https://www.youtube.com/watch?v=PWvCBxHjYo0">here</a>.</p>]]></content:encoded></item></channel></rss>