Files
docker-configs/freshRSS/data/cache/80324f84c475c845c98fae68032aea2c3a96e7db.spc

1094 lines
208 KiB
Plaintext
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
a:6:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:1:{s:7:"version";s:3:"2.0";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:1:{s:7:"channel";a:1:{i:0;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:8:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:5:"Noted";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:76:"Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:18:"https://noted.lol/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:5:"image";a:1:{i:0;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:3:{s:3:"url";a:1:{i:0;a:5:{s:4:"data";s:29:"https://noted.lol/favicon.png";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:5:"Noted";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:18:"https://noted.lol/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}s:9:"generator";a:1:{i:0;a:5:{s:4:"data";s:10:"Ghost 5.74";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:13:"lastBuildDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Sun, 26 Nov 2023 10:04:47 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:3:"ttl";a:1:{i:0;a:5:{s:4:"data";s:2:"60";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"item";a:15:{i:0;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:54:"Dockge - A Docker Manager for Self-Hosting Enthusiasts";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:61:"Finally, A Docker manager tailored to the homelab enthusiast!";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:25:"https://noted.lol/dockge/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"65620f5237a1c90001b0a0c2";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:12:"Self Hosting";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Sat, 25 Nov 2023 16:24:15 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:73:"https://noted.lol/content/images/2023/11/self-hosted-dockge-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:9846:"<img src="https://noted.lol/content/images/2023/11/self-hosted-dockge-noted.lol.jpg" alt="Dockge - A Docker Manager for Self-Hosting Enthusiasts"><p>I&apos;ve been using Portainer for approximately five years now, and it has proven to be a valuable tool for Docker container management. However, as time has passed, Portainer has increasingly catered to the needs of businesses, making it less user-friendly for self-hosting and home lab enthusiasts. As this transition unfolds, we&apos;re witnessing the emergence of new solutions, and Dockge is a notable newcomer in this space.</p><h2 id="what-is-dockge">What is Dockge?</h2><p><a href="https://github.com/louislam/dockge?ref=noted.lol">Dockge</a> is a fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager.</p><p>Dockge, developed by the creator of the widely acclaimed <a href="https://github.com/louislam/uptime-kuma?ref=noted.lol">Uptime Kuma</a>, offers a streamlined user experience where everything you require is conveniently available on a single page, easily viewable at a glance. When you create a new container, you&apos;ll find logs, a YAML editor, a terminal, and container controls all within arm&apos;s reach. There&apos;s no need to open multiple tabs to check your logs or manage your containers. Dockge consolidates all essential functions into a single interface ensuring a seamless Docker management experience.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/11/dockge-docker-manager-noted.lol.png" class="kg-image" alt="Dockge - A Docker Manager for Self-Hosting Enthusiasts" loading="lazy" width="1903" height="872" srcset="https://noted.lol/content/images/size/w600/2023/11/dockge-docker-manager-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/11/dockge-docker-manager-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/11/dockge-docker-manager-noted.lol.png 1600w, https://noted.lol/content/images/2023/11/dockge-docker-manager-noted.lol.png 1903w" sizes="(min-width: 1200px) 1200px"></figure><p>Dockge is a versatile tool that simplifies Docker management, particularly when dealing with Docker Compose.yaml stacks. It empowers you to effortlessly perform tasks like creating, editing, starting, stopping, restarting, and deleting Docker containers and services&#x2014;all conveniently defined within your Compose.yaml files. Dockge features an interactive Compose.yaml editor for hassle-free configuration and offers real-time interaction with your containers and services through its web terminal.</p><p>You can monitor progress in real time, whether it&apos;s image pulls or other container operations. Its user interface not only gets the job done but also boasts a stylish design, making it a pleasure to use. If you appreciate <a href="https://github.com/louislam/uptime-kuma?ref=noted.lol">Uptime Kuma</a>&apos;s sleek UI/UX, you&apos;ll likely find Dockge&apos;s interface equally appealing. Additionally, Dockge simplifies the process of translating complex &quot;docker run&quot; commands into Compose.yaml configurations, maintaining a file-based structure that securely stores your Compose files on your drive. You can easily access and manage them using standard Docker Compose commands, ensuring you remain in control of your configuration files.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/11/dockge-docker-manager-2-noted.lol.png" class="kg-image" alt="Dockge - A Docker Manager for Self-Hosting Enthusiasts" loading="lazy" width="1368" height="761" srcset="https://noted.lol/content/images/size/w600/2023/11/dockge-docker-manager-2-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/11/dockge-docker-manager-2-noted.lol.png 1000w, https://noted.lol/content/images/2023/11/dockge-docker-manager-2-noted.lol.png 1368w" sizes="(min-width: 1200px) 1200px"></figure><p>One thing I really love about Dockge as mentioned earlier, is its nifty feature that lets you easily convert Docker run commands into Compose configurations. It might sound small, but it&apos;s incredibly handy and makes this tool even more fun to use.</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://noted.lol/content/images/2023/11/dockge-docker-manager-3-noted.lol.png" width="1920" height="931" loading="lazy" alt="Dockge - A Docker Manager for Self-Hosting Enthusiasts" srcset="https://noted.lol/content/images/size/w600/2023/11/dockge-docker-manager-3-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/11/dockge-docker-manager-3-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/11/dockge-docker-manager-3-noted.lol.png 1600w, https://noted.lol/content/images/2023/11/dockge-docker-manager-3-noted.lol.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2023/11/dockge-docker-manager-4-noted.lol.png" width="1920" height="931" loading="lazy" alt="Dockge - A Docker Manager for Self-Hosting Enthusiasts" srcset="https://noted.lol/content/images/size/w600/2023/11/dockge-docker-manager-4-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/11/dockge-docker-manager-4-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/11/dockge-docker-manager-4-noted.lol.png 1600w, https://noted.lol/content/images/2023/11/dockge-docker-manager-4-noted.lol.png 1920w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="installing-dockge">Installing Dockge</h2><p>Installing Dockge is easy. Here are the steps they lay out on their <a href="https://github.com/louislam/dockge?ref=noted.lol#basic">Github page</a>.</p><pre><code class="language-text"># Create a directory that stores your stacks and stores dockge&apos;s compose.yaml
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
# Download the compose.yaml
curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
# Start the Server
docker compose up -d
# If you are using docker-compose V1 or Podman
# docker-compose up -d</code></pre><p>That&apos;s all there is to it!</p><div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/11/subscribe-envelopes-flying-in-space-noted.lol.jpg" alt="Dockge - A Docker Manager for Self-Hosting Enthusiasts"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text ">
<h2 class="kg-signup-card-heading"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<p class="kg-signup-card-subheading"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></p>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>I&apos;ve been using Dockge for a couple of weeks now, and it&apos;s become my top choice for managing Docker. It&apos;s easy to use, and I have to admit, I&apos;m pleased to have moved away from the &quot;Upgrade to Portainer business&quot; nags.</p><p>If you like the project and want to learn more, be sure to check out the <a href="https://github.com/louislam/uptime-kuma?ref=noted.lol">Dockge Github repo</a> and give the project a star!</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:60:"Awwesome - An Enhanced user interface for Awesome Selfhosted";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:111:"Here's a fun idea for browsing the Awesome Self-Hosted GitHub repository you can actually host it yourself!";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:27:"https://noted.lol/awwesome/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"6529761a17738600010f927e";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:21:"Self Hosted Web Tools";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Sat, 18 Nov 2023 15:05:07 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:85:"https://noted.lol/content/images/2023/10/self-hosted-resources-featured-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:4363:"<img src="https://noted.lol/content/images/2023/10/self-hosted-resources-featured-noted.lol.jpg" alt="Awwesome - An Enhanced user interface for Awesome Selfhosted"><p>I&apos;m constantly searching for new self-hosted projects to test out and write about. One of my top recommended resources is the Awesome Self-Hosted GitHub repository. It&apos;s a fantastic resource with a vast collection of self-hosted apps neatly organized by category. However, it&apos;s important to keep in mind that while it covers a lot, it can&apos;t list every self-hosted project out there, and that&apos;s perfectly understandable. </p><h2 id="what-is-awwesome">What is Awwesome?</h2><p><a href="https://awweso.me/?ref=noted.lol">Awwesome</a> is an enhanced web interface that makes browsing the self-hosted apps listed on <a href="https://github.com/awesome-selfhosted/awesome-selfhosted?ref=noted.lol">Awesome Self-Hosted</a> a little easier with more details about the project repo.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/awwesome-self-hosted-noted.lol.png" class="kg-image" alt="Awwesome - An Enhanced user interface for Awesome Selfhosted" loading="lazy" width="2000" height="1009" srcset="https://noted.lol/content/images/size/w600/2023/10/awwesome-self-hosted-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/awwesome-self-hosted-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/awwesome-self-hosted-noted.lol.png 1600w, https://noted.lol/content/images/size/w2400/2023/10/awwesome-self-hosted-noted.lol.png 2400w" sizes="(min-width: 1200px) 1200px"></figure><p>In this project, Svelte and Tailwind are the key technologies being utilized for its development. These technologies have been chosen for their efficiency and flexibility, allowing the project to deliver a seamless user experience while maintaining a visually appealing design.</p><p>The project&apos;s main source of data comes from the Awesome Selfhosted repository. This repository is a valuable resource for discovering self-hosted software applications and services across a wide range of categories. By crawling this repository, the project ensures that it remains up-to-date with the latest self-hosted solutions available in the open-source community.</p><p>However, the project doesn&apos;t stop there. It goes a step further by harnessing the power of <a href="https://docs.github.com/en/graphql?ref=noted.lol">GitHub&apos;s GraphQL API.</a> This API enables the project to access a wealth of information related to each self-hosted project, such as its stars, forks, issues, and contributors. By fetching this additional data, the project enriches its database with valuable insights, making it a more comprehensive resource for users looking to explore and evaluate self-hosted software options.</p><p>Awwesome can also be self-hosted using Docker. Here&apos;s the Compose.</p><pre><code class="language-yaml">version: &apos;3&apos;
services:
ofelia:
image: mcuadros/ofelia:latest
container_name: ofelia
depends_on:
- source
command: daemon --docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
ofelia.job-run.awwesome.schedule: &quot;@daily&quot;
ofelia.job-run.awwesome.container: &quot;awwesome&quot;
source:
image: mkitzmann/awwesome
container_name: awwesome
working_dir: /usr/src/app
environment:
TOKEN_GITHUB: ${TOKEN_GITHUB}
command: sh -c &quot;npm run build &amp;&amp; rm -r html/* &amp;&amp; cp -r dist/* html &amp;&amp; exit&quot;
volumes:
- shared_volume:/usr/src/app/html
web:
image: nginx
container_name: nginx
ports:
- &quot;8080:80&quot;
volumes:
- shared_volume:/usr/share/nginx/html:ro
volumes:
shared_volume:</code></pre><p>Just plop in a Github Access Token and you&apos;re good to go.</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>I couldn&apos;t help but notice that the &quot;Recently Created&quot; page on GitHub sometimes doesn&apos;t get it right, showing projects that have been around for a while ahead of newer ones. It&apos;s not without its quirks, but it&apos;s definitely a fun place to explore and discover more self-hosted ideas. And all credit goes to the Awesome Selfhosted repository!</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:25:"wg-easy - VPN Made Simple";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:162:"Setting up a VPN has never been easier. Let's get you setup with WireGuard using wg-easy so you can be confident that your data is protected from outside threats.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:42:"https://noted.lol/wg-easy-vpn-made-simple/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"64df95f90903330001702fa2";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:3:{i:0;a:5:{s:4:"data";s:15:"Self Hosted VPN";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:12:"Self Hosting";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:8:"Home Lab";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Fri, 20 Oct 2023 15:36:00 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"Amrou";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:88:"https://noted.lol/content/images/2023/03/self-hosted-wg-easy-wireguard-vpn-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:4764:"<img src="https://noted.lol/content/images/2023/03/self-hosted-wg-easy-wireguard-vpn-noted.lol.jpg" alt="wg-easy - VPN Made Simple"><p>&quot;wg-easy&quot; is a Docker image that provides a simple way to set up and manage WireGuard VPN connections.</p>
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://noted.lol/content/images/2023/03/screenshot.png" class="kg-image" alt="wg-easy - VPN Made Simple" loading="lazy" width="1604" height="1068" srcset="https://noted.lol/content/images/size/w600/2023/03/screenshot.png 600w, https://noted.lol/content/images/size/w1000/2023/03/screenshot.png 1000w, https://noted.lol/content/images/size/w1600/2023/03/screenshot.png 1600w, https://noted.lol/content/images/2023/03/screenshot.png 1604w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">wg-easy web interface</span></figcaption></figure>
<h3 id="what-is-wireguard">What is Wireguard ? </h3>
<p>Wireguard is VPN protocol that&apos;s faster, more secure, and easier to use than traditional VPN solutions. It allows users to create secure, point-to-point connections over the internet and is often used to protect network traffic and access resources that are on your home network without the need to open ports!</p>
<h3 id="what-is-wg-easy">What is wg-easy ? </h3>
<p>The &quot;wg-easy&quot; Docker image is designed to simplify the process of setting up and managing WireGuard connections by providing a pre-configured environment that includes all the necessary components, such as the WireGuard kernel module, the wg-tools package, and a web-based interface for managing VPN connections.</p>
<p>To use the &quot;wg-easy&quot; Docker image, you will need to have Docker installed on your system and then pull the image from a Docker registry. </p>
<p>Once you have the image, you can run it as a container and start configuring your VPN connections using the provided web interface or command-line tools.</p>
<h3 id="installation">Installation</h3>
<h4 id="docker-run">Docker run :</h4>
<pre><code class="language-bash">docker run -d \
--name=wg-easy \
-e WG_HOST=YOUR_SERVER_IP \
-e PASSWORD=YOUR_ADMIN_PASSWORD \
-v ~/.wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl=&quot;net.ipv4.conf.all.src_valid_mark=1&quot; \
--sysctl=&quot;net.ipv4.ip_forward=1&quot; \
--restart unless-stopped \
weejewel/wg-easy</code></pre>
<p>You need to modify the command and adapt it : </p>
<ul><li><code>YOUR_SERVER_IP</code> = WAN IP or Dynamic DNS </li><li><code>YOUR_ADMIN_PASSWORD</code> = Password for Web UI </li></ul>
<h5 id="docker-compose">Docker compose :</h5>
<pre><code class="language-yaml">version: &quot;3.8&quot;
services:
wg-easy:
environment:
# &#x26A0;&#xFE0F; Required:
# Change this to your host&apos;s public address
- WG_HOST=
# Optional:
- PASSWORD= [ADMIN PASSWORD]
# - WG_PORT=51820
# - WG_DEFAULT_ADDRESS= 10.8.0.x
# - WG_DEFAULT_DNS=
# - WG_MTU=1420
- WG_ALLOWED_IPS= [SUBNET]/[MASK]
# - WG_PRE_UP=echo &quot;Pre Up&quot; &gt; /etc/wireguard/pre-up.txt
# - WG_POST_UP=echo &quot;Post Up&quot; &gt; /etc/wireguard/post-up.txt
# - WG_PRE_DOWN=echo &quot;Pre Down&quot; &gt; /etc/wireguard/pre-down.txt
# - WG_POST_DOWN=echo &quot;Post Down&quot; &gt; /etc/wireguard/post-down.txt
image: weejewel/wg-easy
container_name: wg-easy
volumes:
- /storage/path/ofyour/choice:/etc/wireguard
ports:
- &quot;51820:51820/udp&quot;
- &quot;51821:51821/tcp&quot;
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1</code></pre>
<p>You need to define the :</p>
<ul><li><code>PASSWORD</code> : Admin web UI password</li><li><code>WG_ALLOWED_IPS</code> : your home subnet, this will allow your VPN clients to reach your lan (ex : 192.168.1.0/24]</li></ul>
<p><a href="https://github.com/WeeJeWel/wg-easy?ref=noted.lol">Github</a> Link.</p>
<p>Remember you need to open 51820/UDP on your firewall for the magic to happen.</p>
<p>Self-hosting WG-easy can provide several benefits, including increased control, privacy, and security. By hosting your own VPN server using WG-easy, you can have complete control over your network and data, as well as the ability to customize the server to meet your specific needs. Self-hosting can offer increased privacy, as you are not relying on third-party VPN providers to protect your data. By using WG-easy&apos;s strong encryption and security protocols, you can be confident that your data is protected from outside threats.</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:59:"Continue - An Open-Source AI Software Development Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:138:"The open-source autopilot for software development that brings the ChatGPT magic to your favorite coding tools like VS Code and JetBrains.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:27:"https://noted.lol/continue/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"6529332617738600010f91f7";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:8:"AI Tools";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Fri, 13 Oct 2023 13:25:46 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Cedric";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:97:"https://noted.lol/content/images/2023/10/continue-coding-chat-ai-assistant-featured-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:9986:"<img src="https://noted.lol/content/images/2023/10/continue-coding-chat-ai-assistant-featured-noted.lol.jpg" alt="Continue - An Open-Source AI Software Development Assistant"><p>Many developers have started using ChatGPT in their coding, but the process can be cumbersome due to the need for copying, pasting, and editing to make generated responses fit into their code. Continue streamlines this by allowing LLMs to work seamlessly within your IDE as you complete your coding tasks.</p>
<h2 id="what-is-continue">What is Continue?</h2>
<p><a href="https://github.com/continuedev/continue?ref=noted.lol">Continue</a> is an open-source tool for software development. It&apos;s an extension for integrated development environments (IDEs) like VS Code and JetBrains, and it brings the capabilities of ChatGPT right into your coding environment.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/continue-coding-chat-ai-noted.lol-1.png" class="kg-image" alt="Continue - An Open-Source AI Software Development Assistant" loading="lazy" width="828" height="540" srcset="https://noted.lol/content/images/size/w600/2023/10/continue-coding-chat-ai-noted.lol-1.png 600w, https://noted.lol/content/images/2023/10/continue-coding-chat-ai-noted.lol-1.png 828w"></figure>
<p>With Continue, you have control over when you want to use Large Language Models (LLMs) such as GPT-4 and Code Llama as a helpful assistant. Just select your code, provide instructions in natural language, and use commands like /edit to guide the LLM.</p>
<h2 id="continue-key-features">Continue Key Features</h2>
<ul><li>Continue can generate, improve, and explain whole sections of your code.</li><li>Easily highlight a section of code and ask Continue for a fresh perspective.</li><li>When you want to make improvements, simply highlight a code section and instruct Continue to refactor it.</li><li>Start a new project with ease by opening a blank file and letting Continue help you create Python scripts, React components, and more.</li></ul>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/continue-coding-chat-ai-noted.lol-2.png" class="kg-image" alt="Continue - An Open-Source AI Software Development Assistant" loading="lazy" width="828" height="538" srcset="https://noted.lol/content/images/size/w600/2023/10/continue-coding-chat-ai-noted.lol-2.png 600w, https://noted.lol/content/images/2023/10/continue-coding-chat-ai-noted.lol-2.png 828w"></figure>
<h2 id="getting-the-most-out-of-continue-with-llms">Getting the Most Out of Continue with LLMs</h2>
<p>The effectiveness of Continue depends on the specific LLM you&apos;re using for edits and explanations. Keep in mind that LLMs can sometimes generate information that isn&apos;t accurate, like inventing a library or using syntax that doesn&apos;t exist. If you ever encounter something that doesn&apos;t seem right or functional, it&apos;s a good idea to cross-check it with a quick Google search to avoid any potential pitfalls. <a href="https://continue.dev/docs/how-to-use-continue?ref=noted.lol">Read more here</a> on how to use Continue in your workflow.</p>
<h2 id="inside-continue-structure-and-interface">Inside Continue: Structure and Interface</h2>
<p>Continue operates in a structured manner, breaking down its actions into units called &quot;steps.&quot; What&apos;s neat is that these steps can be stacked and combined to handle more complex tasks, making it quite flexible for your coding needs. Each step gets access to the Software Development Kit (SDK), which empowers you to incorporate Large Language Models (LLMs) into your workflow. Whether you need to edit a file or call upon a model, the SDK has your back.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/continue-diagram.png" class="kg-image" alt="Continue - An Open-Source AI Software Development Assistant" loading="lazy" width="2000" height="943" srcset="https://noted.lol/content/images/size/w600/2023/10/continue-diagram.png 600w, https://noted.lol/content/images/size/w1000/2023/10/continue-diagram.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/continue-diagram.png 1600w, https://noted.lol/content/images/size/w2400/2023/10/continue-diagram.png 2400w" sizes="(min-width: 1200px) 1200px"></figure>
<p>Under the hood, Continue has a Server (<a href="https://continue.dev/docs/walkthroughs/manually-run-continue?ref=noted.lol">which can be run manually</a>) that acts as the bridge between your IDE and the graphical user interface (GUI). It&apos;s the brains behind determining what steps should come next. And speaking of the GUI, it&apos;s where the magic happens. Here, you can thoroughly review every automated step, offering you the freedom to undo or redo any of them, ensuring your code&apos;s journey stays in your control.</p>
<h2 id="ide-integration-using-continue-in-your-preferred-environment">IDE Integration: Using Continue in Your Preferred Environment</h2>
<p>Continue seamlessly integrates with popular IDEs to enhance your coding experience. You have two great options to choose from:</p>
<p>First up is VS Code, where Continue is available as an extension. You can easily add it to your VS Code setup to unlock its powerful features. Just head over to the Visual Studio Marketplace, <a href="https://marketplace.visualstudio.com/items?itemName=Continue.continue&amp;ref=noted.lol">find Continue</a>, and install it with a few clicks.</p>
<p>If you prefer JetBrains IDEs like Intellij, PyCharm, or WebStorm, you&apos;re in luck too. Continue offers a plugin for JetBrains, providing you with a helping hand for your coding projects. To get started, just visit the JetBrains Marketplace, <a href="https://plugins.jetbrains.com/plugin/22707-continue-extension?ref=noted.lol">locate Continue</a>, and follow the installation process.</p>
<div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/10/subscribe-envelopes-flying-in-space-noted.lol-7.jpg" alt="Continue - An Open-Source AI Software Development Assistant"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text ">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<h3 class="kg-signup-card-subheading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></h3>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success" style="color: #FFFFFF;">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" style="color: #FFFFFF;" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div>
<h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2>
<p>In my experience using Continue with VS Code, it&apos;s been a really helpful tool for my coding projects. It makes things easier by creating code, making refactoring simpler, and giving me new ideas when I need them. The best part is how well it works inside VS Code, making my work smoother and letting me focus on the creative part of coding while it handles the technical stuff.</p>
<hr>
<p>For more information about Continue, vist the following links.</p>
<p>Continue Github: <a href="https://github.com/continuedev/continue?ref=noted.lol">https://github.com/continuedev/continue</a></p>
<p>Continue website and docs: <a href="https://continue.dev/?ref=noted.lol">https://continue.dev</a></p>
<p>Continue on Discord: <a href="https://discord.gg/vapESyrFmJ?ref=noted.lol">https://discord.gg/vapESyrFmJ</a></p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:72:"Ollama - Self-Hosted AI Chat with Llama 2, Code Llama and More in Docker";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:73:"Self-hosted Llama 2 through the power of Ollama in Docker. Let's dive in!";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:25:"https://noted.lol/ollama/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"6527f9670da4d600017c276b";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:20:"Self Hosted AI Tools";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Thu, 12 Oct 2023 15:57:42 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Cedric";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:88:"https://noted.lol/content/images/2023/10/ollama-self-hosted-ai-chat-docker-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:20617:"<img src="https://noted.lol/content/images/2023/10/ollama-self-hosted-ai-chat-docker-noted.lol.jpg" alt="Ollama - Self-Hosted AI Chat with Llama 2, Code Llama and More in Docker"><p>Hey everyone! I&apos;m back with an exciting tool that lets you run Llama 2, Code Llama, and more directly in your terminal using a simple Docker command. Say hello to Ollama, the AI chat program that makes interacting with LLMs as easy as spinning up a docker container.</p>
<h2 id="what-is-ollama">What is Ollama?</h2>
<p><a href="https://github.com/jmorganca/ollama?ref=noted.lol">Ollama</a> is a command-line chatbot that makes it simple to use large language models almost anywhere, and now it&apos;s even easier with a <a href="https://ollama.ai/blog/ollama-is-now-available-as-an-official-docker-image?ref=noted.lol">Docker image</a>.</p>
<h2 id="ollama-supported-llms">Ollama Supported LLMs</h2>
<p>Ollama offers a range of open-source models you can find at <a href="https://ollama.ai/library?ref=noted.lol">ollama.ai/library</a>. Check out these examples of models you can download:</p>
<table style="box-sizing: border-box; border-spacing: 0px; border-collapse: collapse; margin-top: 0px; margin-bottom: 16px; display: block; width: max-content; max-width: 100%; overflow: auto; color: rgb(173, 186, 199); font-family: -apple-system, BlinkMacSystemFont, " segoe ui", "noto sans", helvetica, arial, sans-serif, "apple color emoji", "segoe ui emoji"; font-size: 16px; font-style: normal; font-variant-ligatures: font-variant-caps: font-weight: 400; letter-spacing: orphans: 2; text-align: start; text-transform: none; widows: word-spacing: 0px; -webkit-text-stroke-width: white-space: background-color: rgb(34, 39, 46); text-decoration-thickness: initial; text-decoration-style: text-decoration-color: initial;"><thead style="box-sizing: border-box;"><tr style="box-sizing: border-box; background-color: var(--bgColor-default, var(--color-canvas-default)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><th style="box-sizing: border-box; padding: 6px 13px; font-weight: var(--base-text-weight-semibold, 600); border: 1px solid var(--borderColor-default, var(--color-border-default));">Model</th><th style="box-sizing: border-box; padding: 6px 13px; font-weight: var(--base-text-weight-semibold, 600); border: 1px solid var(--borderColor-default, var(--color-border-default));">Parameters</th><th style="box-sizing: border-box; padding: 6px 13px; font-weight: var(--base-text-weight-semibold, 600); border: 1px solid var(--borderColor-default, var(--color-border-default));">Size</th><th style="box-sizing: border-box; padding: 6px 13px; font-weight: var(--base-text-weight-semibold, 600); border: 1px solid var(--borderColor-default, var(--color-border-default));">Download</th></tr></thead><tbody style="box-sizing: border-box;"><tr style="box-sizing: border-box; background-color: var(--bgColor-default, var(--color-canvas-default)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Mistral</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">7B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">4.1GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));"><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, " sf mono", menlo, consolas, "liberation monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgcolor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">ollama run mistral</code></td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-muted, var(--color-canvas-subtle)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Llama 2</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">7B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">3.8GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));"><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, " sf mono", menlo, consolas, "liberation monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgcolor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">ollama run llama2</code></td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-default, var(--color-canvas-default)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Code Llama</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">7B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">3.8GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));"><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, " sf mono", menlo, consolas, "liberation monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgcolor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">ollama run codellama</code></td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-muted, var(--color-canvas-subtle)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Llama 2 Uncensored</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">7B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">3.8GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));"><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, " sf mono", menlo, consolas, "liberation monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgcolor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">ollama run llama2-uncensored</code></td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-default, var(--color-canvas-default)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Llama 2 13B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">13B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">7.3GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));"><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, " sf mono", menlo, consolas, "liberation monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgcolor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">ollama run llama2:13b</code></td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-muted, var(--color-canvas-subtle)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Llama 2 70B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">70B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">39GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));"><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, " sf mono", menlo, consolas, "liberation monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgcolor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">ollama run llama2:70b</code></td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-default, var(--color-canvas-default)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Orca Mini</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">3B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">1.9GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));"><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, " sf mono", menlo, consolas, "liberation monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgcolor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">ollama run orca-mini</code></td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-muted, var(--color-canvas-subtle)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Vicuna</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">7B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">3.8GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));"><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, " sf mono", menlo, consolas, "liberation monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; white-space: break-spaces; background-color: var(--bgcolor-neutral-muted, var(--color-neutral-muted)); border-radius: 6px;">ollama run vicuna</code></td></tr></tbody></table>
<p>Please remember: To run the 3B models, make sure you have a minimum of 8 GB of RAM. For the 7B models, you&apos;ll need 16 GB, and for the 13B models, you should have 32 GB.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/Untitled-design--62-.png" class="kg-image" alt="Ollama - Self-Hosted AI Chat with Llama 2, Code Llama and More in Docker" loading="lazy" width="1578" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/Untitled-design--62-.png 600w, https://noted.lol/content/images/size/w1000/2023/10/Untitled-design--62-.png 1000w, https://noted.lol/content/images/2023/10/Untitled-design--62-.png 1578w" sizes="(min-width: 720px) 720px"></figure>
<h2 id="get-started-using-ollama-with-docker">Get Started using Ollama with Docker</h2>
<p>Ollama can take advantage of GPU acceleration in Docker containers designed for Nvidia GPUs. I didn&apos;t use the GPU option for testing, and it ran smoothly!</p>
<p>Just ensure you have a computer with Linux and Docker installed. Then, use the following command to download the Ollama image to your computer.</p>
<pre><code class="language-text">docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama</code></pre>
<p>Don&apos;t forget, this is running on your CPU, not the GPU. If you&apos;re looking for that extra oomph with GPU support, check out the <a href="https://ollama.ai/blog/ollama-is-now-available-as-an-official-docker-image?ref=noted.lol">Ollama blog post</a> for Docker image that supports Nvidia GPU.</p>
<pre><code class="language-text">docker exec -it ollama ollama run llama2</code></pre>
<p>This will download the <a href="https://ollama.ai/library/llama2?ref=noted.lol">Llama 2 model</a> to your system. If you use the &quot;ollama run&quot; command and the model isn&apos;t already downloaded, it will perform a download. To get the model without running it, simply use &quot;ollama pull llama2.&quot;</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/ollama-self-hosted-download-llama2-noted.lol-1.png" class="kg-image" alt="Ollama - Self-Hosted AI Chat with Llama 2, Code Llama and More in Docker" loading="lazy" width="1363" height="202" srcset="https://noted.lol/content/images/size/w600/2023/10/ollama-self-hosted-download-llama2-noted.lol-1.png 600w, https://noted.lol/content/images/size/w1000/2023/10/ollama-self-hosted-download-llama2-noted.lol-1.png 1000w, https://noted.lol/content/images/2023/10/ollama-self-hosted-download-llama2-noted.lol-1.png 1363w" sizes="(min-width: 1200px) 1200px"></figure>
<p>Once the model is downloaded you can initiate the chat sequence and begin your conversation. You can exit or start a new chat by pressing Ctrl+D. If you exit, you will have to re run the command above to initiate the chat again.</p>
<h2 id="ollama-performance">Ollama Performance</h2>
<p>Ok, so performance is completely dependant on the hardware and resources your system has. I ran llama2&apos;s 7B version on an LXC container with 15GB of ram and 4 CPU cores. Here is the response speed I was getting.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/ollama-self-hosted-ai-chat-example.png" class="kg-image" alt="Ollama - Self-Hosted AI Chat with Llama 2, Code Llama and More in Docker" loading="lazy" width="1441" height="255" srcset="https://noted.lol/content/images/size/w600/2023/10/ollama-self-hosted-ai-chat-example.png 600w, https://noted.lol/content/images/size/w1000/2023/10/ollama-self-hosted-ai-chat-example.png 1000w, https://noted.lol/content/images/2023/10/ollama-self-hosted-ai-chat-example.png 1441w" sizes="(min-width: 1200px) 1200px"></figure>
<p>I was blown away at how fast the responses where out of an LXC container...</p>
<p>Going below 3 CPU cores made it almost unusable, resulting in frequent freezes. Keep in mind, this was just for testing purposes. AI chatbots always work better on dedicated systems or bare metal.</p>
<h2 id="ollama-desktop-versions">Ollama Desktop Versions</h2>
<p>I&apos;d like to point out that <a href="https://ollama.ai/download?ref=noted.lol">Ollama offers desktop apps</a> for both MacOS and Linux, and it seems they&apos;re working on a Windows version as well, though I haven&apos;t personally tried the desktop versions, having focused on the Docker version as it seems more suited for self-hosting.</p>
<div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/10/subscribe-envelopes-flying-in-space-noted.lol-6.jpg" alt="Ollama - Self-Hosted AI Chat with Llama 2, Code Llama and More in Docker"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text ">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<h3 class="kg-signup-card-subheading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></h3>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success" style="color: #FFFFFF;">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" style="color: #FFFFFF;" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div>
<h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2>
<p>I have to admit, I&apos;m genuinely impressed with how Ollama performs in this testing environment. It&apos;s so user friendly that I can see myself using it more often. Downloading models is simple and well documented on the Ollama website.</p>
<p>Even though a command-line tool like this might not offer the same convenience and flashy features as a web interface, there&apos;s a certain satisfaction in whipping up a chatbot quickly right in your terminal. There&apos;s a sense of accomplishment when you see it in action.</p>
<p>If you&apos;re new to AI chatbots and LLMs and eager to dive into the topic, don&apos;t hesitate to browse through <a href="https://noted.lol/author/cedric/">my other articles right here</a> for a deeper understanding. I&apos;ll be covering a lot more about the topic here on Noted so stay tuned. &#x1F60A;</p>
<p>This was a basic example of how to setup Ollama using Docker. There is a lot I didn&apos;t cover, like customizing your own models, prompts and even the Rest API. To read more about these Ollama features, visit the following links:</p>
<p>Ollama website: <a href="https://ollama.ai/?ref=noted.lol">https://ollama.ai</a></p>
<p>Ollama Github: <a href="https://github.com/jmorganca/ollama?ref=noted.lol">https://github.com/jmorganca/ollama</a></p>
<p>Ollama Discord: <a href="https://discord.com/invite/ollama?ref=noted.lol">https://discord.com/invite/ollama</a></p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:5;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:41:"Self-Hosted Blogging Made Easy with Ghost";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:117:"Discover Ghost, your self-hosted blogging companion, for effortless creativity and control over your online presence.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:28:"https://noted.lol/ghost-cms/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"6525cdfa0da4d600017c23c6";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:25:"Self Hosted CMS Platforms";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Thu, 12 Oct 2023 13:44:50 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:81:"https://noted.lol/content/images/2023/10/ghost-self-hosted-featured-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:12286:"<img src="https://noted.lol/content/images/2023/10/ghost-self-hosted-featured-noted.lol.jpg" alt="Self-Hosted Blogging Made Easy with Ghost"><p>Tired of struggling with complex blogging platforms that distract you from your writing? Meet Ghost, a streamlined solution that allows you to concentrate on your content. With the option for self-hosting, speed, and reliability, Ghost might be just what you&apos;re looking for.</p>
<h2 id="what-is-ghost-cms">What is Ghost CMS?</h2>
<p>Ghost CMS, or <a href="https://github.com/TryGhost/Ghost?ref=noted.lol">Ghost</a>, is a well-known open-source content management system launched in 2013. It&apos;s designed for creating and managing blogs and publications with a focus on simplicity and speedy content creation. Ghost can be self-hosted, giving you control over your website&apos;s hosting environment.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/ghost-self-hosted-casper-noted.lol.png" class="kg-image" alt="Self-Hosted Blogging Made Easy with Ghost" loading="lazy" width="1920" height="931" srcset="https://noted.lol/content/images/size/w600/2023/10/ghost-self-hosted-casper-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/ghost-self-hosted-casper-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/ghost-self-hosted-casper-noted.lol.png 1600w, https://noted.lol/content/images/2023/10/ghost-self-hosted-casper-noted.lol.png 1920w" sizes="(min-width: 1200px) 1200px"></figure>
<p>Do you remember the days when Blogger and Tumblr were the main choices for creating a blog? Well, it&apos;s understandable if you don&apos;t, but blogging today relies on the time you can spare. With technology always advancing, our patience with older tech diminishes. We often shift to the newest and best options. In my opinion that is Ghost!</p>
<h2 id="ghost-key-features">Ghost key Features</h2>
<ul><li><strong>Markdown Magic</strong>: Ghost lets you write with Markdown, a simple text formatting language that makes writing a easy, free from distractions.</li><li><strong>Sleek and Simple</strong>: The interface keeps it clean, focusing on your content, so you won&apos;t get lost in the clutter.</li><li><strong>SEO Made Easy</strong>: Ghost has built-in tools to help your content shine on search engines, with custom meta tags and URL structures.</li><li><strong>Your Site, Your Way</strong>: Customize your Ghost-based site with themes and extensions, and cards tailoring it to your style and needs.</li><li><strong>Swift Loading</strong>: Ghost is all about speed and efficiency, ensuring your pages load quickly for your readers.</li><li><strong>Monetization Made Simple</strong>: For those looking to make a profit, Ghost has built-in support for creating paid memberships and subscriptions.</li><li><strong>Freedom to Tinker</strong>: <a href="https://github.com/TryGhost/Ghost?ref=noted.lol">Ghost is open source</a>, meaning the code is open for everyone to tinker with, enhance, and share.</li><li><strong>Adaptable Design</strong>: Ghost CMS themes are built to be responsive, making sure your content looks great on all sorts of devices, from smartphones to tablets.</li></ul>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/writing-blog-ghost-noted.lol.png" class="kg-image" alt="Self-Hosted Blogging Made Easy with Ghost" loading="lazy" width="1578" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/writing-blog-ghost-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/writing-blog-ghost-noted.lol.png 1000w, https://noted.lol/content/images/2023/10/writing-blog-ghost-noted.lol.png 1578w" sizes="(min-width: 720px) 720px"></figure>
<h2 id="self-host-ghost-using-docker-compose">Self-Host Ghost using Docker Compose</h2>
<p>You will need a host machine with Docker and Docker Compose installed for this example. If you need assistance, see our guide&#xA0;<a href="https://noted.lol/install-docker-and-portainer/">Install Docker and Portainer on Debian for Self-Hosting</a>.</p>
<p>Below is an example of how Ghost can be self-hosted using Docker Compose.</p>
<pre><code class="language-yaml">version: &apos;3&apos;
services:
ghost-server:
image: ghost
cap_add:
- CAP_SYS_NICE
security_opt:
- seccomp:unconfined
restart: always
ports:
- 2368:2368
depends_on:
- ghost-db
environment:
url: https://your-domain.com
database__client: mysql
database__connection__host: ghost-db
database__connection__user: root
database__connection__password: V3ryS3cretP@ss
database__connection__database: ghost
volumes:
- /docker/ghost/content:/var/lib/ghost/content
ghost-db:
image: mysql:8
security_opt:
- seccomp:unconfined
restart: always
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: V3ryS3cretP@ss
volumes:
- /docker/ghost/mysql:/var/lib/mysql</code></pre>
<p>You should change the URL to your domain name and the database password to something more secure. We have a more detailed guide on <a href="https://noted.lol/self-host-ghost/">installing and self-hosting Ghost here</a>.</p>
<p>The Ghost admin dashboard is simple and easy to navigate. You can enable dark mode so it&apos;s easier on the eyes.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/ghost-admin-dashboard-noted.lol-1.png" class="kg-image" alt="Self-Hosted Blogging Made Easy with Ghost" loading="lazy" width="1384" height="840" srcset="https://noted.lol/content/images/size/w600/2023/10/ghost-admin-dashboard-noted.lol-1.png 600w, https://noted.lol/content/images/size/w1000/2023/10/ghost-admin-dashboard-noted.lol-1.png 1000w, https://noted.lol/content/images/2023/10/ghost-admin-dashboard-noted.lol-1.png 1384w" sizes="(min-width: 1200px) 1200px"></figure>
<p>Personally, I love writing in Ghost, and a lot of it has to do with the built-in card feature. These cards give you the freedom to get creative and elevate the look of your articles with minimal effort.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/ghost-cms-self-hosted-cards-noted.lol.png" class="kg-image" alt="Self-Hosted Blogging Made Easy with Ghost" loading="lazy" width="400" height="428"></figure>
<p>Ghost is all about helping creators grow their fanbase through subscriptions. They&apos;ve simplified it with features like subscription forms and exclusive content for your subscribers. Personally, I lean toward making knowledge freely available, as I&apos;ve mentioned in my article on <a href="https://noted.lol/noted-archives/">archiving Noted</a> and our strong belief in knowledge as a fundamental human right, so that feature doesn&apos;t align with my approach. However, I also recognize how it can be a valuable way to generate income.</p>
<div class="kg-card kg-callout-card kg-callout-card-accent"><div class="kg-callout-emoji">&#x1F680;</div><div class="kg-callout-text">Run your own instance of Ghost for as little as $1.9/Month with PikaPods! &#x2013;&#xA0;<a href="https://www.pikapods.com/pods?utm_source=noted&amp;run=ghost" rel="noreferrer">Start free with $5 welcome credit</a> <b><strong style="white-space: pre-wrap;">&#x1F917;</strong></b></div></div>
<p>If you&apos;re thinking about making the <a href="https://ghost.org/vs/wordpress/?ref=noted.lol">switch from WordPress to Ghost</a>, let Ghost do the talking! Instead of hearing it from me, check out what Ghost has to say directly. Explore their platform, read their <a href="https://ghost.org/resources?ref=noted.lol">blog</a>, and <a href="https://www.producthunt.com/products/ghost/reviews?ref=noted.lol">see for yourself</a> why so many bloggers and content creators are loving Ghost. Trust me, you won&apos;t be disappointed!</p>
<div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/10/subscribe-envelopes-flying-in-space-noted.lol-5.jpg" alt="Self-Hosted Blogging Made Easy with Ghost"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text ">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<h3 class="kg-signup-card-subheading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></h3>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success" style="color: #FFFFFF;">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" style="color: #FFFFFF;" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div>
<h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2>
<p>In case you didn&apos;t catch on, we&apos;ve chosen Ghost as our website platform here at Noted. Personally, I&apos;m a big fan of Ghost, so I might be a bit partial. But let me tell you, over the past couple of years, Ghost has truly inspired me to get creative with my content. It&apos;s all thanks to the the amazing built-in cards that make content creation a whole lot more exciting.</p>
<p>While I may not be the biggest fan of hiding content behind paywalls, Ghost is a versatile tool that creators can use in many ways, including monetization. So, give it a try, let your words flow, and see how Ghost can help you craft your digital presence or create a private place for you to dump your ideas and thoughts.</p>
<p>Learn more about Ghost by visiting the following links:</p>
<p>Ghost website: <a href="https://ghost.org/?ref=noted.lol">https://ghost.org</a></p>
<p>Ghost on Github: <a href="https://github.com/TryGhost/Ghost?ref=noted.lol">https://github.com/TryGhost/Ghost</a></p>
<p>Ghost on X: <a href="https://twitter.com/Ghost?ref=noted.lol">https://twitter.com/Ghost</a></p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:6;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:41:"Faraday - Chat with AI Characters Offline";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:78:"Offline first, privacy focused desktop app for creating AI chatbot characters.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:26:"https://noted.lol/faraday/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"65257c730da4d600017c1fa2";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:8:"AI Tools";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Wed, 11 Oct 2023 14:42:00 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Cedric";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:82:"https://noted.lol/content/images/2023/10/faraday-ai-chatbot-featured-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:16704:"<img src="https://noted.lol/content/images/2023/10/faraday-ai-chatbot-featured-noted.lol.jpg" alt="Faraday - Chat with AI Characters Offline"><p>I was on the lookout for a simple way to get a AI chatbot running on my old laptop without too much fuss. I discovered Faraday and was blown away by how simple it is to set up and get running in just a few clicks.</p>
<p>Let&apos;s take a quick tour of Faraday and check out the options and features to see if it&apos;s a good fit for you.</p>
<h2 id="what-is-faraday">What is Faraday?</h2>
<p><a href="https://faraday.dev/?ref=noted.lol">Faraday</a> is a desktop AI chat tool that prioritizes privacy and simplicity. Faraday is available for both Mac and Windows</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/faraday-ai-chat-with-bubbles.png" class="kg-image" alt="Faraday - Chat with AI Characters Offline" loading="lazy" width="1920" height="997" srcset="https://noted.lol/content/images/size/w600/2023/10/faraday-ai-chat-with-bubbles.png 600w, https://noted.lol/content/images/size/w1000/2023/10/faraday-ai-chat-with-bubbles.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/faraday-ai-chat-with-bubbles.png 1600w, https://noted.lol/content/images/2023/10/faraday-ai-chat-with-bubbles.png 1920w" sizes="(min-width: 1200px) 1200px"></figure>
<h2 id="faraday-key-features">Faraday Key Features</h2>
<p><br>Faraday offers a user friendly experience right from the start. You can begin chatting with ease using a simple one click Desktop installer that requires no coding knowledge. It&apos;s designed to work seamlessly, even with GPU and Metal acceleration included, ensuring a smooth experience without any complicated setup.</p>
<p>Faraday is commitment to safeguarding your data. The AI models that drive Faraday are stored exclusively on your computer. This means that no one can tamper with how your AI characters behave, deny your access, or remove your data. Your information remains under your control.</p>
<p>Faraday is a desktop application that functions offline. Whether you&apos;re on a plane, train, or anywhere without an internet connection, you can still enjoy its capabilities. Your chat data is saved directly on your computer, never sent to a remote server, ensuring your conversations remain private. You can choose to share specific chats to assist in improving the AI models, but it&apos;s entirely optional, preserving your privacy.</p>
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><a href="https://www.loom.com/embed/b6ff8ac62bb1405d8354a16ba7f106b9?ref=noted.lol"><img src="https://noted.lol/content/images/2023/10/faraday-ai-chat-demo-video.png" class="kg-image" alt="Faraday - Chat with AI Characters Offline" loading="lazy" width="794" height="472" srcset="https://noted.lol/content/images/size/w600/2023/10/faraday-ai-chat-demo-video.png 600w, https://noted.lol/content/images/2023/10/faraday-ai-chat-demo-video.png 794w"></a><figcaption><span style="white-space: pre-wrap;">Click to watch the 2 minute demo video</span></figcaption></figure>
<h2 id="faraday-settings">Faraday Settings</h2>
<p>On the settings page you have the option to add your name and photo. You can also view your system specs and other details. I noticed that it detected my AMD Radeon 610, but I decided not to enable GPU support initially. I wanted to see how the performance would be without it first.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/faraday-ai-chat-settings.png" class="kg-image" alt="Faraday - Chat with AI Characters Offline" loading="lazy" width="1072" height="990" srcset="https://noted.lol/content/images/size/w600/2023/10/faraday-ai-chat-settings.png 600w, https://noted.lol/content/images/size/w1000/2023/10/faraday-ai-chat-settings.png 1000w, https://noted.lol/content/images/2023/10/faraday-ai-chat-settings.png 1072w"></figure>
<h2 id="faraday-model-manager">Faraday Model Manager</h2>
<p>When I first launched Faraday, I went straight to the Model Manager where I was shocked how easy it was to choose the right model for my laptop. You can see small badges with stars that even recommend models based on your system specs. This just adds to the simplicity of the app making it easier to get started. You can choose a recommended model or browse the complete collection that is curated from the popular <a href="https://huggingface.co/?ref=noted.lol">Hugging Face</a> LLM platform.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/faraday-model-manager.png" class="kg-image" alt="Faraday - Chat with AI Characters Offline" loading="lazy" width="1920" height="997" srcset="https://noted.lol/content/images/size/w600/2023/10/faraday-model-manager.png 600w, https://noted.lol/content/images/size/w1000/2023/10/faraday-model-manager.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/faraday-model-manager.png 1600w, https://noted.lol/content/images/2023/10/faraday-model-manager.png 1920w" sizes="(min-width: 1200px) 1200px"></figure>
<p>My laptop specs are decent but keep in mind I do not have a GPU which could greatly improve performance and speeds of response times. But you will see later how well this performed.</p>
<ul>
<li>CPU: Intel i7 10510U</li>
<li>RAM: 32GB</li>
</ul>
<p>I chose the Llama 2 - Luna AI 7B model then navigated to the Character Hub.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/faraday-ai-chat-character-hub.png" class="kg-image" alt="Faraday - Chat with AI Characters Offline" loading="lazy" width="1920" height="997" srcset="https://noted.lol/content/images/size/w600/2023/10/faraday-ai-chat-character-hub.png 600w, https://noted.lol/content/images/size/w1000/2023/10/faraday-ai-chat-character-hub.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/faraday-ai-chat-character-hub.png 1600w, https://noted.lol/content/images/2023/10/faraday-ai-chat-character-hub.png 1920w" sizes="(min-width: 1200px) 1200px"></figure>
<h2 id="faraday-character-hub">Faraday Character Hub</h2>
<p>I was genuinely surprised by the variety of characters available. I&apos;m quite adventurous, so I decided to create my own character right away. I was more interested in having an AI assistant that could provide straightforward responses rather than the entertaining responses created by premade characters.</p>
<p>You can browse the complete <a href="https://faraday.dev/hub?ref=noted.lol">Faraday Character Hub</a> to see what&apos;s available.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/faraday-character-creator.png" class="kg-image" alt="Faraday - Chat with AI Characters Offline" loading="lazy" width="1046" height="840" srcset="https://noted.lol/content/images/size/w600/2023/10/faraday-character-creator.png 600w, https://noted.lol/content/images/size/w1000/2023/10/faraday-character-creator.png 1000w, https://noted.lol/content/images/2023/10/faraday-character-creator.png 1046w"></figure>
<p>The Character Creator is loaded with a multitude of settings, giving you the freedom to finely adjust how you want your AI to respond and behave. These settings empower you to customize your AI&apos;s behavior to match your preferences, creating a truly personalized experience. You can tweak various aspects to make your AI assistant interact with you in a way that feels just right for your needs.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/faraday-ai-chat-character.png" class="kg-image" alt="Faraday - Chat with AI Characters Offline" loading="lazy" width="1920" height="997" srcset="https://noted.lol/content/images/size/w600/2023/10/faraday-ai-chat-character.png 600w, https://noted.lol/content/images/size/w1000/2023/10/faraday-ai-chat-character.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/faraday-ai-chat-character.png 1600w, https://noted.lol/content/images/2023/10/faraday-ai-chat-character.png 1920w" sizes="(min-width: 1200px) 1200px"></figure>
<p>I selected the model at the top, entered my name, and gave my AI character a name. I didn&apos;t make any changes to the other settings. I left everything else as default and began chatting with it. This will give me an idea of how the responses will be before I start to fine tune the character settings. </p>
<p>When you enter the first message, it will initialize the new character with the chosen model. That can take a couple minutes but once that is done, it&apos;s smooth sailing!</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/faraday-ai-chat-with-bubbles-1.png" class="kg-image" alt="Faraday - Chat with AI Characters Offline" loading="lazy" width="1920" height="997" srcset="https://noted.lol/content/images/size/w600/2023/10/faraday-ai-chat-with-bubbles-1.png 600w, https://noted.lol/content/images/size/w1000/2023/10/faraday-ai-chat-with-bubbles-1.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/faraday-ai-chat-with-bubbles-1.png 1600w, https://noted.lol/content/images/2023/10/faraday-ai-chat-with-bubbles-1.png 1920w" sizes="(min-width: 1200px) 1200px"></figure>
<p>I know you are probably wondering how the performance is so I whipped up this quick gif to show you the speed of the responses.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/faraday-ai-chat-demo-performance.gif" class="kg-image" alt="Faraday - Chat with AI Characters Offline" loading="lazy" width="1048" height="715" srcset="https://noted.lol/content/images/size/w600/2023/10/faraday-ai-chat-demo-performance.gif 600w, https://noted.lol/content/images/size/w1000/2023/10/faraday-ai-chat-demo-performance.gif 1000w, https://noted.lol/content/images/2023/10/faraday-ai-chat-demo-performance.gif 1048w" sizes="(min-width: 720px) 720px"></figure>
<p>Pretty good, right? The speed you&apos;re seeing in the image above is quite comparable to what I usually experience with third party AI apps like ChatGPT, which genuinely impresses me!</p>
<p>What&apos;s intriguing is that it seems to have more impact on my CPU rather than my RAM. Here&apos;s a screenshot displaying the system resources Faraday utilizes while processing a response.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/faraday-performance.png" class="kg-image" alt="Faraday - Chat with AI Characters Offline" loading="lazy" width="1429" height="521" srcset="https://noted.lol/content/images/size/w600/2023/10/faraday-performance.png 600w, https://noted.lol/content/images/size/w1000/2023/10/faraday-performance.png 1000w, https://noted.lol/content/images/2023/10/faraday-performance.png 1429w" sizes="(min-width: 1200px) 1200px"></figure>
<h2 id="is-it-too-good-to-be-true">Is it too good to be true?</h2>
<p>Why is Faraday free and how long will this last? Well, I did some digging and here&apos;s what I found.</p>
<h3 id="is-faraday-truly-free">Is Faraday Truly Free?</h3>
<p>One of the primary questions users often have about Faraday is whether it&apos;s truly free. In simple terms, yes, it is. Faraday will always allow you to run inference locally at no cost. (according to lead developers in their Discord) This means you can enjoy its AI capabilities without any charges when using it on your own computer.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/faraday-discord.png" class="kg-image" alt="Faraday - Chat with AI Characters Offline" loading="lazy" width="691" height="285" srcset="https://noted.lol/content/images/size/w600/2023/10/faraday-discord.png 600w, https://noted.lol/content/images/2023/10/faraday-discord.png 691w"></figure>
<h3 id="the-developers-incentive-and-revenue-model">The Developers&apos; Incentive and Revenue Model</h3>
<p>Naturally, you might wonder what the incentive is for the developers and how they plan to sustain this offering. The answer lies in a forward thinking approach. Faraday aims to cater to diverse user needs, and to achieve this, they plan to introduce a cloud-hosted inference option. This option will be particularly appealing to users seeking enhanced performance and the ability to run larger AI models. However, it&apos;s essential to note that this cloud-hosted service will be an optional, paid feature.</p>
<div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/10/subscribe-envelopes-flying-in-space-noted.lol-4.jpg" alt="Faraday - Chat with AI Characters Offline"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text ">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<h3 class="kg-signup-card-subheading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></h3>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success" style="color: #FFFFFF;">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" style="color: #FFFFFF;" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div>
<h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2>
<p>Faraday is an incredibly innovative tool, and my initial experience with it was a lot of fun. The more I use it and customize my character model, the more impressed I become. It&apos;s fantastic to have this tool with me when I&apos;m traveling without internet access. I get hours of entertainment just from chatting with AI. These tools never cease to amaze me and keep exceeding my expectations.</p>
<blockquote>While the devs contribute to open source libraries used within Faraday, the full-stack codebase for our Desktop App is not open source.</blockquote>
<p>Although Faraday isn&apos;t open source, I felt it was worth the review here at Noted. I understand that this might raise concerns among some of you, especially given their focus on privacy despite the closed source nature of the app.</p>
<p>You can see the full explanation on the <a href="https://discord.com/invite/Ng4vmcDfqr?ref=noted.lol">Faraday Discord</a> community FAQ.</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:7;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:47:"Comentario - Self-Hosted, Modern Comment System";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:127:"Comentario is a lightweight comment platform that you can easily self-host using Docker. It's all about simplicity and privacy.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:29:"https://noted.lol/comentario/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"651594a46b972f000149bd79";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:30:"Self Hosted Commenting Systems";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Tue, 10 Oct 2023 17:37:14 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:11:"Dmitry Kann";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:95:"https://noted.lol/content/images/2023/10/comentario-self-hosted-comments-featured-noted.lol.png";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:15752:"<img src="https://noted.lol/content/images/2023/10/comentario-self-hosted-comments-featured-noted.lol.png" alt="Comentario - Self-Hosted, Modern Comment System"><p>Hello, I&apos;m Dmitry Kann, the creator of Comentario. I drew inspiration from Commento, which was no longer actively maintained. When I considered using Commento, I found some essential features missing, and the lack of regular updates was a concern. So, I decided to fork it and create a better comment platform.</p>
<h2 id="what-is-comentario">What is Comentario?</h2>
<p><a href="https://gitlab.com/comentario/comentario?ref=noted.lol">Comentario</a> is the ultimate tool for website comments. It&apos;s lightweight and speedy ensuring your readers can engage without any lag. With support for Markdown syntax, Disqus imports, comment voting, spam and toxicity filters, moderation tools, and more.</p>
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://noted.lol/content/images/2023/10/comentario-self-hosted-comments-demo-noted.lol.png" class="kg-image" alt="Comentario - Self-Hosted, Modern Comment System" loading="lazy" width="989" height="627" srcset="https://noted.lol/content/images/size/w600/2023/10/comentario-self-hosted-comments-demo-noted.lol.png 600w, https://noted.lol/content/images/2023/10/comentario-self-hosted-comments-demo-noted.lol.png 989w"><figcaption><span style="white-space: pre-wrap;">A typical comment thread in Comentario.</span></figcaption></figure>
<h2 id="what-makes-comentario-different-from-commento">What makes Comentario different from Commento? </h2>
<p>There are quite a few to highlight:</p>
<ol><li>Comentario is actively being worked on, constantly adding new features and improvements.</li><li>Comentario is using the most up-to-date software versions, ensuring security with regular updates.</li><li>Comentario is lightning-fast thanks to a lot of behind-the-scenes optimizations in its code and data structure.</li><li>Comentario is designed with a strong focus on security, privacy, responsive design, and accessibility best practices.</li><li>Comentario also aims to be thoroughly tested using automated tests to avoid any unexpected issues.</li></ol>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/checlist-self-hosting-noted.lol.png" class="kg-image" alt="Comentario - Self-Hosted, Modern Comment System" loading="lazy" width="1578" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/checlist-self-hosting-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/checlist-self-hosting-noted.lol.png 1000w, https://noted.lol/content/images/2023/10/checlist-self-hosting-noted.lol.png 1578w" sizes="(min-width: 720px) 720px"></figure>
<p>So, how does Comentario stack up against Disqus, Hyvor Talk, Facebook Comments, and the rest of the gang? Well, let&apos;s spill the beans on them for a sec.</p>
<p>Most of those other guys have some shady privacy practices you should be aware of. They&apos;re all about collecting data. Things like your online habits, ads you see, and even personal info. Not cool if you value your privacy.</p>
<p>If their system gets hacked, guess whose data might end up in the wrong hands? Yep, yours! So, before you commit to a commenting system for your site, do yourself a favor and dig into their privacy policies and data handling practices.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/hacker-stealing-data-noted.lol.jpg" class="kg-image" alt="Comentario - Self-Hosted, Modern Comment System" loading="lazy" width="1368" height="768" srcset="https://noted.lol/content/images/size/w600/2023/10/hacker-stealing-data-noted.lol.jpg 600w, https://noted.lol/content/images/size/w1000/2023/10/hacker-stealing-data-noted.lol.jpg 1000w, https://noted.lol/content/images/2023/10/hacker-stealing-data-noted.lol.jpg 1368w" sizes="(min-width: 720px) 720px"></figure>
<p>Next to that, it&apos;s proprietary software. You can&apos;t self-host it, you have no slightest idea what&apos;s inside.</p>
<p>Finally, they&apos;re huge in terms of resources they need. They add megabytes of scripts and other stuff to every page they&apos;re on.</p>
<h2 id="enter-comentario">Enter Comentario</h2>
<p>Now, let&apos;s talk about Comentario, but first, let&apos;s be aware of the following. </p>
<ul><li>The current <strong>stable</strong> version is Comentario <a href="https://gitlab.com/comentario/comentario/-/releases/v2.3.1?ref=noted.lol" rel="noreferrer">2.3.1</a>, which is basically a modernized and optimized version of Commento, with a modern Angular UI.</li><li>The <strong>upcoming release</strong> of Comentario 3.0.0 is going to become a huge leap forward. It introduces an all-new data model and a completely reworked user interface, with tons of new options.</li></ul>
<p>For the sake of this article, I&apos;ll link to the &quot;cutting edge&quot; documentation pages as they&apos;ll soon become the new stable.</p>
<h2 id="comentario-core-features">Comentario Core Features</h2>
<ul><li>No annoying ads here. You&apos;re the customer, not the product.</li><li>Comentario gives you <a href="https://edge.docs.comentario.app/en/getting-started/?ref=noted.lol" rel="noreferrer">self-hosted options</a>, so you have more say over your privacy settings.</li><li>Modern, mobile-first responsive design.</li><li>Nested, editable comments and replies.</li><li>Comments are written in Markdown.</li><li>Comment voting.</li><li>Sticky comments, thread and domain locking.</li><li>Custom avatars.</li><li>Import from Disqus, Commento, and Comentario 2.x.</li><li>Automated spam and toxicity detection (via Akismet, APILayer, Perspective).</li><li>Site-wide moderation tools.</li><li>Social login (Google, Facebook, Twitter, GitHub, GitLab).</li><li>Single sign-on, including non-interactive option.</li><li>Email notifications.</li><li>Advanced per-domain moderation and notification settings.</li><li>Click and view statistics.</li></ul>
<h2 id="comentario-under-the-hood">Comentario Under the Hood</h2>
<p>Comentario is written in Go making it snappy and easy to work with. Here are some screenshots of the admin panel.</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://noted.lol/content/images/2023/10/comentario-self-hosted-admin-ui--4-.png" width="1920" height="931" loading="lazy" alt="Comentario - Self-Hosted, Modern Comment System" srcset="https://noted.lol/content/images/size/w600/2023/10/comentario-self-hosted-admin-ui--4-.png 600w, https://noted.lol/content/images/size/w1000/2023/10/comentario-self-hosted-admin-ui--4-.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/comentario-self-hosted-admin-ui--4-.png 1600w, https://noted.lol/content/images/2023/10/comentario-self-hosted-admin-ui--4-.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2023/10/comentario-self-hosted-admin-ui--2-.png" width="1920" height="931" loading="lazy" alt="Comentario - Self-Hosted, Modern Comment System" srcset="https://noted.lol/content/images/size/w600/2023/10/comentario-self-hosted-admin-ui--2-.png 600w, https://noted.lol/content/images/size/w1000/2023/10/comentario-self-hosted-admin-ui--2-.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/comentario-self-hosted-admin-ui--2-.png 1600w, https://noted.lol/content/images/2023/10/comentario-self-hosted-admin-ui--2-.png 1920w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2023/10/comentario-self-hosted-admin-ui--3-.png" width="1920" height="931" loading="lazy" alt="Comentario - Self-Hosted, Modern Comment System" srcset="https://noted.lol/content/images/size/w600/2023/10/comentario-self-hosted-admin-ui--3-.png 600w, https://noted.lol/content/images/size/w1000/2023/10/comentario-self-hosted-admin-ui--3-.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/comentario-self-hosted-admin-ui--3-.png 1600w, https://noted.lol/content/images/2023/10/comentario-self-hosted-admin-ui--3-.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2023/10/comentario-self-hosted-admin-ui--1-.png" width="1920" height="931" loading="lazy" alt="Comentario - Self-Hosted, Modern Comment System" srcset="https://noted.lol/content/images/size/w600/2023/10/comentario-self-hosted-admin-ui--1-.png 600w, https://noted.lol/content/images/size/w1000/2023/10/comentario-self-hosted-admin-ui--1-.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/comentario-self-hosted-admin-ui--1-.png 1600w, https://noted.lol/content/images/2023/10/comentario-self-hosted-admin-ui--1-.png 1920w" sizes="(min-width: 720px) 720px"></div></div></div></figure>
<p>Here&apos;s a biggie that sets Comentario apart from Commento: You&apos;ll quickly see that you&apos;ve got a whole lot more control over the comments using the admin interface. You can search, filter, and do all sorts of nifty stuff to keep those comments in check. We&apos;ve totally revamped the admin UI, so you, as the owner, can finely tune your comment management.</p>
<h2 id="install-comentario">Install Comentario</h2>
<p>I know you want to get to the best part so let&apos;s talk about installation. </p>
<h3 id="docker-compose">Docker Compose</h3>
<p>We put together a simple <a href="https://edge.docs.comentario.app/en/getting-started/docker-compose/?ref=noted.lol" rel="noreferrer">Docker Compose</a> stack which consists of a Postgres DB and the app itself. Place this in your preferred directory. Then fill in the details for the <code>secrets.yml</code> file and place them in the same directory. The two files must reside in the same directory. </p>
<p>Then, start the database and the backend using:</p>
<pre><code class="language-text">docker compose up -d</code></pre>
<p>Comentario will be reachable at <code>host.machine.ip:8080</code>. Just navigate to Sign up and register with any email and password: you&#x2019;ll become a <a href="https://edge.docs.comentario.app/en/kb/permissions/superuser/?ref=noted.lol" rel="noreferrer">superuser</a> and will be able to manage other users, add domains in the UI, change configuration etc.</p>
<h3 id="install-comentario-in-kubernetes">Install Comentario in Kubernetes</h3>
<p>In a more advanced use-case you can deploy Comentario into a Kubernetes cluster. In this scenario, the cluster will make sure the service remains operational, issue and renew SSL certificates, provide a database etc.</p>
<p>Comentario provides a simple <a href="https://edge.docs.comentario.app/en/installation/helm-chart/?ref=noted.lol" rel="noreferrer">Helm Chart</a>, which can be used for an easy deploy.</p>
<h3 id="install-comentario-locally">Install Comentario locally</h3>
<p>You can also opt for a <a href="https://edge.docs.comentario.app/en/installation/binary-package/?ref=noted.lol" rel="noreferrer">local installation</a> by using a <code>.deb</code> or <code>.rpm</code> package available as of <a href="https://gitlab.com/comentario/comentario/-/releases?ref=noted.lol" rel="noreferrer">v3.0.0-rc2</a>. Comentario will then be run as a systemd service.</p>
<h2 id="give-comentario-a-try">Give Comentario a Try</h2>
<p>There is a full <a href="https://demo.comentario.app/?ref=noted.lol">Comentario demo</a> available where you can add comments on the front end then log into the admin UI and have a look around.</p>
<div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/10/subscribe-envelopes-flying-in-space-noted.lol-3.jpg" alt="Comentario - Self-Hosted, Modern Comment System"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text ">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<h3 class="kg-signup-card-subheading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></h3>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success" style="color: #FFFFFF;">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" style="color: #FFFFFF;" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div>
<h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2>
<p>Comentario is something I&apos;m really proud of. It&apos;s a tool that I&apos;ve poured my heart into, and I genuinely hope it brings you joy when you use it on your blog or website.</p>
<p>Thank you for taking the time to check out Comentario! If you have any questions, suggestions, or just want to chat about it, please feel free to leave a comment below. Your feedback means a lot.</p>
<p>Here are all the important links related to the project for your convenience:</p>
<ul><li>Comentario on GitLab and the source code: <a href="https://gitlab.com/comentario/comentario?ref=noted.lol">Comentario GitLab</a></li><li>Comentario 3.x documentation: <a href="https://edge.docs.comentario.app/?ref=noted.lol" rel="noreferrer">Comentario Edge Docs</a></li><li>Comentario (stable) documentation: <a href="https://docs.comentario.app/?ref=noted.lol">Comentario Docs</a></li></ul>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:8;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:52:"How Unraid Helps Me Get the Most Out of Self-Hosting";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:116:"A brief tale of how Unraid shifted my view on self-hosting and motivated me to continue my exploration in this area.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:46:"https://noted.lol/unraid-a-self-hosting-story/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"64df95f90903330001702f5e";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:15:"Homelab Diaries";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Mon, 09 Oct 2023 17:41:16 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:11:"Nick Haddad";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:78:"https://noted.lol/content/images/2023/10/unraid-homelab-featured-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:10354:"<img src="https://noted.lol/content/images/2023/10/unraid-homelab-featured-noted.lol.jpg" alt="How Unraid Helps Me Get the Most Out of Self-Hosting"><p>For some context, let me tell a quick story about my first experiences with a homelab. Though it was quite a while ago now, I very clearly remember the feeling of setting up my first homelab &#x2013; absolutely overwhelmed by excitement at all the possibilities! I was initially frustrated by finding no accessible options for me to sandbox programming in between paying for hosting somewhere and running locally on my dev box and figured, hey, why not try building a server at home? After all, I had tinkered with Ubuntu before, I thought to myself.</p>
<p>My wife teases that I went from &quot;I want to try building a home server&quot; to leaving a stranger&apos;s house with a beat-up Dell Optiplex to &quot;it&apos;s up and running!&quot; faster than she could chime in with very valid concerns like &quot;where is this box going to live, in our apartment?&quot;. (It stayed on the dining table for at least a year and a half)</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/computer-nas-on-dining-table-noted.lol.png" class="kg-image" alt="How Unraid Helps Me Get the Most Out of Self-Hosting" loading="lazy" width="1578" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/computer-nas-on-dining-table-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/computer-nas-on-dining-table-noted.lol.png 1000w, https://noted.lol/content/images/2023/10/computer-nas-on-dining-table-noted.lol.png 1578w" sizes="(min-width: 720px) 720px"></figure>
<p>Once the OS was installed, I realized that I now had to get my LAMP stack installed and stay up to date with patches and updates. And make sure that I am up to speed with Nginx and web service security best practices. And networking security best practices. And backup strategy best practices. And disaster recovery best practices. And... you get the picture. A lot was standing between me and the programming sandbox that I set out after.</p>
<p>In all of the years since then, I picked up all of these server administration concepts and so much more, but these roadblocks caused enough friction that when this Ubuntu box caked its shorts a few years in, I gave up on the homelab concept for a while. <em>Enter: <a href="https://unraid.net/?ref=noted.lol"><em>Unraid</em></a></em>.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/person-at-computer-noted.lol.png" class="kg-image" alt="How Unraid Helps Me Get the Most Out of Self-Hosting" loading="lazy" width="1578" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/person-at-computer-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/person-at-computer-noted.lol.png 1000w, https://noted.lol/content/images/2023/10/person-at-computer-noted.lol.png 1578w" sizes="(min-width: 720px) 720px"></figure>
<p>After a few years of showing me how easy it was to get started, my best friend convinced me to give it a shot. Unraid, at its core, is a NAS OS but exposes a great toolbox of plugin support and Docker &amp; VM management tools which allow me to focus on the parts of the homelab that I want to focus on &#x2013; the apps and integrations that power my smart home, personal finance, organization, etc. The <a href="https://unraid.net/community/apps?ref=noted.lol">Community Apps Store</a> plugin provides a marketplace-style interface for community-submitted Docker installations, called <em>templates</em>, which in many cases provide one-click installations for the containers. Configuring and managing virtual machines is also a sinch, with out-of-the-box instrumentation and observability tooling that just makes VM life easy. Vast community support and extensibility mean that when I do hit snags, I look no further than the community forum and there is bound to be a post outlining what I need to do.</p>
<p>One of the main draws of Unraid is that you can add disks to an array of varying makes, models, ages, and most importantly &#x2013; capacities. My current array is comprised of 1x1TB, 2x2TB, 1x4TB, and 2x8TB HDDs with only the 8TB drives sharing models/ages since I grabbed these at the same time. This means that whenever I acquire a drive and want to expand my array, I just throw it right on in and let Unraid take care of the rest. The only limitation here is that since the array is protected by bit parity, the storage drives must be the same or smaller capacity than my parity drives. Check out <a href="https://www.youtube.com/watch?v=dX2PvD1qtKw&amp;ref=noted.lol">this great video by <em>Spaceinvader One</em></a> on how Unraid deals with this drive parity operation and what makes it cool!</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/chrome_nSMY5Bjy6t.jpg" class="kg-image" alt="How Unraid Helps Me Get the Most Out of Self-Hosting" loading="lazy" width="1575" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/chrome_nSMY5Bjy6t.jpg 600w, https://noted.lol/content/images/size/w1000/2023/10/chrome_nSMY5Bjy6t.jpg 1000w, https://noted.lol/content/images/2023/10/chrome_nSMY5Bjy6t.jpg 1575w" sizes="(min-width: 720px) 720px"></figure>
<p>Right now I&apos;m running a ton of stuff on my Unraid box and it&apos;s so easy to spin up new projects and take them down when you&apos;re done tinkering. I&apos;m running a Home Assistant VM which acts as the central nervous system for all of my smart home operations and helps communicate with a broad spectrum of home automation devices from different brands and developers. I&apos;m also leveraging Unraid&apos;s ability to use cache SSDs to balance speed and performance with the main array&apos;s ability to store loads of data along with <a href="https://github.com/paperless-ngx/paperless-ngx?ref=noted.lol">paperless-ngx</a> to keep track of all of my important documents (and tons of unimportant docs too!) in a way that allows my wife and I to access them easily and quickly when the time comes and without worrying about running low on space or lack of privacy with a cloud provider. For game night, I&apos;m even running a <a href="https://foundryvtt.com/?ref=noted.lol">Foundry VTT</a> instance that the other players can log right into from anywhere rather than having to spin up a local instance each time or paying lots of money for cloud hosting when it only gets used a few times a month.</p>
<div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/10/subscribe-envelopes-flying-in-space-noted.lol-2.jpg" alt="How Unraid Helps Me Get the Most Out of Self-Hosting"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text ">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<h3 class="kg-signup-card-subheading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></h3>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success" style="color: #FFFFFF;">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" style="color: #FFFFFF;" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div>
<p>The list goes on &#x2013; so be sure to check back for future information about how I use Unraid to make tinkering easier and make my home life have a little less friction! Since I set up my Unraid box, I have enjoyed a renewed sense of focus toward my homelab endeavors. The ease of use with Unraid and Docker means that I can safely try a container for - say - invoice generation, and if I have gripes about it, I tear the container down and go shopping in the Community Apps store for something else. Give it a shot and let me know what you spend all of your spare time looking into!</p>
<p>Happy hosting, cheers!</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:9;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:42:"LlamaGPT - A Self-Hosted, Offline, ChatGPT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:98:"Self-hosting LlamaGPT gives you the power to run your own private AI chatbot on your own hardware.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:27:"https://noted.lol/llamagpt/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"65217f6a3f49c900013d64c1";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:20:"Self Hosted AI Tools";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Sat, 07 Oct 2023 17:59:16 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:84:"https://noted.lol/content/images/2023/10/llamagpt-self-hosted-featured-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:18957:"<img src="https://noted.lol/content/images/2023/10/llamagpt-self-hosted-featured-noted.lol.jpg" alt="LlamaGPT - A Self-Hosted, Offline, ChatGPT"><p>AI chatbots are incredibly popular these days, and it seems like every company out there wants to jump on the bandwagon with their own spin on ChatGPT. LlamaGPT is one of the latest that you can self-host on your trusty old hardware. It&apos;s so lightweight that it can strut its stuff with just ~5GB of RAM. Talk about a slimmed down digital llama!</p>
<h2 id="what-is-llamagpt">What is LlamaGPT?</h2>
<p><a href="https://github.com/getumbrel/llama-gpt?ref=noted.lol">LlamaGPT</a> is a self-hosted chatbot powered by Llama 2 similar to ChatGPT, but it works offline, ensuring 100% privacy since none of your data leaves your device. It also supports Code Llama models and NVIDIA GPUs.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/lamagpt-self-hosted-chatbot-noted.lol.jpg" class="kg-image" alt="LlamaGPT - A Self-Hosted, Offline, ChatGPT" loading="lazy" width="1920" height="906" srcset="https://noted.lol/content/images/size/w600/2023/10/lamagpt-self-hosted-chatbot-noted.lol.jpg 600w, https://noted.lol/content/images/size/w1000/2023/10/lamagpt-self-hosted-chatbot-noted.lol.jpg 1000w, https://noted.lol/content/images/size/w1600/2023/10/lamagpt-self-hosted-chatbot-noted.lol.jpg 1600w, https://noted.lol/content/images/2023/10/lamagpt-self-hosted-chatbot-noted.lol.jpg 1920w" sizes="(min-width: 1200px) 1200px"></figure>
<p>If you&apos;re not familiar with it, LlamaGPT is part of a larger suit of self-hosted apps known as <a href="https://github.com/getumbrel/umbrel?ref=noted.lol">UmbrelOS</a>. LlamaGPT is an official app developed by the same folks behind Umbrel. However, you have the option to install LlamaGPT separately as a standalone application if you decide not to use the full UmbrelOS suite.</p>
<h2 id="install-llamagpt-using-docker-compose">Install LlamaGPT using Docker Compose</h2>
<p>You will need a host machine with Docker and Docker Compose installed for this example. If you need assistance, see our guide&#xA0;<a href="https://noted.lol/install-docker-and-portainer/">Install Docker and Portainer on Debian for Self-Hosting</a>.</p>
<p>You will need to decide what Compose stack you want to use based on the hardware you have. If you are using an NVIDIA GPU, you would want to use one with CUDA support. You can see all of the Docker Compose examples on the LlamaGPT Github repo. And yes, there&apos;s even one for Mac. &#x1F60E;</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/nvidia-gpu-green-space-noted.lol.jpg" class="kg-image" alt="LlamaGPT - A Self-Hosted, Offline, ChatGPT" loading="lazy" width="1571" height="881" srcset="https://noted.lol/content/images/size/w600/2023/10/nvidia-gpu-green-space-noted.lol.jpg 600w, https://noted.lol/content/images/size/w1000/2023/10/nvidia-gpu-green-space-noted.lol.jpg 1000w, https://noted.lol/content/images/2023/10/nvidia-gpu-green-space-noted.lol.jpg 1571w" sizes="(min-width: 720px) 720px"></figure>
<p>CUDA, which stands for &quot;Compute Unified Device Architecture,&quot; is a technology developed by NVIDIA. It serves as both a platform and a programming model for parallel computing. Basically, it&apos;s technology made by NVIDIA that helps computers do lots of tasks at the same time. &#x1F602;</p>
<p>If you do have a NVIDIA GPU, you should go with the Docker Compose examples that have &quot;cuda&quot; in their name listed on the repository. Below is an example.</p>
<pre><code class="language-yaml">version: &apos;3.6&apos;
services:
llama-gpt-api-cuda-gguf:
build:
context: ./cuda
dockerfile: gguf.Dockerfile
restart: on-failure
volumes:
- &apos;./models:/models&apos;
- &apos;./cuda:/cuda&apos;
ports:
- 3001:8000
environment:
MODEL: &apos;/models/${MODEL_NAME:-code-llama-2-7b-chat.gguf}&apos;
MODEL_DOWNLOAD_URL: &apos;${MODEL_DOWNLOAD_URL:-https://huggingface.co/TheBloke/CodeLlama-7B-Instruct-GGUF/resolve/main/codellama-7b-instruct.Q4_K_M.gguf}&apos;
N_GQA: &apos;${N_GQA:-1}&apos;
USE_MLOCK: 1
cap_add:
- IPC_LOCK
- SYS_RESOURCE
command: &apos;/bin/sh /cuda/run.sh&apos;
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
llama-gpt-ui:
# TODO: Use this image instead of building from source after the next release
# image: &apos;ghcr.io/getumbrel/llama-gpt-ui:latest&apos;
build:
context: ./ui
dockerfile: Dockerfile
ports:
- 3000:3000
restart: on-failure
environment:
- &apos;OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXX&apos;
- &apos;OPENAI_API_HOST=http://llama-gpt-api-cuda-gguf:8000&apos;
- &apos;DEFAULT_MODEL=/models/${MODEL_NAME:-code-llama-2-7b-chat.gguf}&apos;
- &apos;NEXT_PUBLIC_DEFAULT_SYSTEM_PROMPT=${DEFAULT_SYSTEM_PROMPT:-&quot;You are a helpful and friendly AI assistant. Respond very concisely.&quot;}&apos;
- &apos;WAIT_HOSTS=llama-gpt-api-cuda-gguf:8000&apos;
- &apos;WAIT_TIMEOUT=${WAIT_TIMEOUT:-3600}&apos;</code></pre>
<p>For this to work, you will need to replace the <code>MODEL_NAME</code> and <code>MODEL_DOWNLOAD_URL</code> to one of the supported models which you can see in the chart below. Make sure you choose a model that matches your systems specs. You&apos;ll need to also be sure you have enough space to store the model.</p>
<h2 id="llamagpt-supported-models">LlamaGPT Supported Models</h2>
<p>Right now, LlamaGPT can work with these models. They&apos;re also planning to add the option for you to use your own custom models in the future. Please reference the LlamaGPT Github repo to see if these have changed.</p>
<table style="box-sizing: border-box; border-spacing: 0px; border-collapse: collapse; margin-top: 0px; margin-bottom: 16px; display: block; width: max-content; max-width: 100%; overflow: auto; color: rgb(173, 186, 199); font-family: -apple-system, BlinkMacSystemFont, " segoe ui", "noto sans", helvetica, arial, sans-serif, "apple color emoji", "segoe ui emoji"; font-size: 16px; font-style: normal; font-variant-ligatures: font-variant-caps: font-weight: 400; letter-spacing: orphans: 2; text-align: start; text-transform: none; widows: word-spacing: 0px; -webkit-text-stroke-width: white-space: background-color: rgb(34, 39, 46); text-decoration-thickness: initial; text-decoration-style: text-decoration-color: initial;"><thead style="box-sizing: border-box;"><tr style="box-sizing: border-box; background-color: var(--bgColor-default, var(--color-canvas-default)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><th style="box-sizing: border-box; padding: 6px 13px; font-weight: var(--base-text-weight-semibold, 600); border: 1px solid var(--borderColor-default, var(--color-border-default));">Model name</th><th style="box-sizing: border-box; padding: 6px 13px; font-weight: var(--base-text-weight-semibold, 600); border: 1px solid var(--borderColor-default, var(--color-border-default));">Model size</th><th style="box-sizing: border-box; padding: 6px 13px; font-weight: var(--base-text-weight-semibold, 600); border: 1px solid var(--borderColor-default, var(--color-border-default));">Model download size</th><th style="box-sizing: border-box; padding: 6px 13px; font-weight: var(--base-text-weight-semibold, 600); border: 1px solid var(--borderColor-default, var(--color-border-default));">Memory required</th></tr></thead><tbody style="box-sizing: border-box;"><tr style="box-sizing: border-box; background-color: var(--bgColor-default, var(--color-canvas-default)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Nous Hermes Llama 2 7B Chat (GGML q4_0)</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">7B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">3.79GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">6.29GB</td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-muted, var(--color-canvas-subtle)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Nous Hermes Llama 2 13B Chat (GGML q4_0)</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">13B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">7.32GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">9.82GB</td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-default, var(--color-canvas-default)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Nous Hermes Llama 2 70B Chat (GGML q4_0)</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">70B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">38.87GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">41.37GB</td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-muted, var(--color-canvas-subtle)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Code Llama 7B Chat (GGUF Q4_K_M)</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">7B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">4.24GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">6.74GB</td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-default, var(--color-canvas-default)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Code Llama 13B Chat (GGUF Q4_K_M)</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">13B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">8.06GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">10.56GB</td></tr><tr style="box-sizing: border-box; background-color: var(--bgColor-muted, var(--color-canvas-subtle)); border-top: 1px solid var(--borderColor-muted, var(--color-border-muted));"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">Phind Code Llama 34B Chat (GGUF Q4_K_M)</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">34B</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">20.22GB</td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--borderColor-default, var(--color-border-default));">22.72GB</td></tr></tbody></table>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/llamagpt-self-hosted-chat-bot-noted.lol.jpg" class="kg-image" alt="LlamaGPT - A Self-Hosted, Offline, ChatGPT" loading="lazy" width="1920" height="906" srcset="https://noted.lol/content/images/size/w600/2023/10/llamagpt-self-hosted-chat-bot-noted.lol.jpg 600w, https://noted.lol/content/images/size/w1000/2023/10/llamagpt-self-hosted-chat-bot-noted.lol.jpg 1000w, https://noted.lol/content/images/size/w1600/2023/10/llamagpt-self-hosted-chat-bot-noted.lol.jpg 1600w, https://noted.lol/content/images/2023/10/llamagpt-self-hosted-chat-bot-noted.lol.jpg 1920w" sizes="(min-width: 1200px) 1200px"></figure>
<p>To put it bluntly, if you have less than 8GB of RAM and no GPU, you might not be too happy with LlamaGPT&apos;s performance. In my tests with the smallest models, it was quite slow, taking around 20-30 seconds to generate just one letter. If you find that acceptable, then it might be a great fit for you. &#x1F601; However, I&apos;m still learning the ropes here, so please bear with me as I try out different options. It&apos;s possible that the issues I encountered are either my own fault or related to the type of system I&apos;m using to run the models.</p>
<p>It&apos;s important to note that this can put a heavy load on your computer&apos;s CPU. If your CPU doesn&apos;t have enough power, it can slow down the model and lead to performance problems. For the smoothest experience, using a computer with a dedicated GPU is your best bet.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/llamagpt-self-hosted-super-computer-noted.lol.png" class="kg-image" alt="LlamaGPT - A Self-Hosted, Offline, ChatGPT" loading="lazy" width="1578" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/llamagpt-self-hosted-super-computer-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/llamagpt-self-hosted-super-computer-noted.lol.png 1000w, https://noted.lol/content/images/2023/10/llamagpt-self-hosted-super-computer-noted.lol.png 1578w" sizes="(min-width: 720px) 720px"></figure>
<p>I&apos;ve got this dream of putting together a fancy &quot;supercomputer&quot; just for running self-hosted chatbots and experimenting with various LLMs. But truth be told, you don&apos;t need all that fancy stuff to get started, as LlamaGPT clearly demonstrates. Keep it simple and still get the job done if you are patient.</p>
<div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/10/subscribe-envelopes-flying-in-space-noted.lol.jpg" alt="LlamaGPT - A Self-Hosted, Offline, ChatGPT"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text ">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<h3 class="kg-signup-card-subheading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></h3>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success" style="color: #FFFFFF;">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" style="color: #FFFFFF;" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div>
<h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2>
<p>While LlamaGPT is definitely an exciting addition to the self-hosting atmosphere, don&apos;t expect it to kick ChatGPT out of orbit just yet. &#x1F609; It&apos;s a step in the right direction, and I&apos;m curious to see where it goes.</p>
<p>There&apos;s still plenty to dig into here, and I&apos;m planning to dive deeper into the world of Large Language Models (LLMs) to get a better grasp of how they operate. So, stay tuned for more on this topic. I&apos;ll take a look around and explore other self-hosted options as well. It&apos;s clear that there&apos;s a wealth of topics to discuss just from a quick search.</p>
<p>If you find this application valuable or would like to explore further information, I encourage you to visit the&#xA0;<a href="https://github.com/getumbrel/llama-gpt?ref=noted.lol">LlamaGPT GitHub repository</a>&#xA0;and give the project a star.</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:10;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:62:"How to Convert any Website into a Zim File for Offline Viewing";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:169:"We explore how to convert a website into a ZIM file, providing you with a handy tool to keep your essential online resources at your fingertips, no matter where you are.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:60:"https://noted.lol/convert-any-website-into-a-zim-file-zimit/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"651f1664f32be30001d03e89";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:2:{i:0;a:5:{s:4:"data";s:12:"Linux Basics";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:6:"How To";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Fri, 06 Oct 2023 15:22:48 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:69:"https://noted.lol/content/images/2023/10/zimit-featured-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:13791:"<img src="https://noted.lol/content/images/2023/10/zimit-featured-noted.lol.jpg" alt="How to Convert any Website into a Zim File for Offline Viewing"><p>Ever wondered how to access websites like Wikipedia when you&apos;re offline? Enter ZIM files, your go to solution. Today, we&apos;ll take a closer look at what ZIM files are, how to convert a website using a free tool, then serve it up using Kiwix Serve.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/website--1-.png" class="kg-image" alt="How to Convert any Website into a Zim File for Offline Viewing" loading="lazy" width="1578" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/website--1-.png 600w, https://noted.lol/content/images/size/w1000/2023/10/website--1-.png 1000w, https://noted.lol/content/images/2023/10/website--1-.png 1578w" sizes="(min-width: 720px) 720px"></figure>
<h2 id="what-is-a-zim-file">What is a Zim File?</h2>
<p>A ZIM file is a digital format used to store information from websites like Wikipedia so you can access it without needing an internet connection. It&apos;s created by the <a href="https://wiki.openzim.org/wiki/OpenZIM?ref=noted.lol">openZIM</a> project and can be read with a program called <a href="https://kiwix.org/?ref=noted.lol">Kiwix</a>. The name &quot;ZIM&quot; comes from &quot;Zeno IMproved.&quot; To save space, it uses compression techniques like the XZ Utils library and Zstandard. It&apos;s supported by organizations like Wikimedia CH and the Wikimedia Foundation. So, it&apos;s a way to keep website data on your device for offline use.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/zipped-files-in-space-archves-noted.lol.jpg" class="kg-image" alt="How to Convert any Website into a Zim File for Offline Viewing" loading="lazy" width="1445" height="849" srcset="https://noted.lol/content/images/size/w600/2023/10/zipped-files-in-space-archves-noted.lol.jpg 600w, https://noted.lol/content/images/size/w1000/2023/10/zipped-files-in-space-archves-noted.lol.jpg 1000w, https://noted.lol/content/images/2023/10/zipped-files-in-space-archves-noted.lol.jpg 1445w" sizes="(min-width: 720px) 720px"></figure>
<h2 id="the-purpose">The Purpose</h2>
<p>To begin, it&apos;s important to underline that at Noted, we firmly stand behind the belief that access to knowledge is a fundamental human right. (cats count too) This belief is at the core of <a href="https://kiwix.org/en/about-us/?ref=noted.lol">Kiwix</a>, a non-profit organization and a free, open-source software project committed to providing offline access to educational content. This is why we provide public <a href="https://noted.lol/noted-archives/" rel="noreferrer">archives of Noted</a> that can be downloaded as ZIM files.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/Untitled-design--33-.png" class="kg-image" alt="How to Convert any Website into a Zim File for Offline Viewing" loading="lazy" width="1578" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/Untitled-design--33-.png 600w, https://noted.lol/content/images/size/w1000/2023/10/Untitled-design--33-.png 1000w, https://noted.lol/content/images/2023/10/Untitled-design--33-.png 1578w" sizes="(min-width: 720px) 720px"></figure>
<h2 id="zimit-the-tool">Zimit: The Tool</h2>
<p><a href="https://github.com/openzim/zimit?ref=noted.lol">Zimit</a> is a tool that can turn a website into a .zim file. It works by running a special kind of website scan inside a Docker container.</p>
<p>Zimit uses a system called <a href="https://github.com/webrecorder/browsertrix-crawler?ref=noted.lol">Browsertrix Crawler</a> to do the website scan. Once it has all the website&apos;s data, it converts it into a .zim file using a tool called <a href="https://github.com/openzim/warc2zim?ref=noted.lol">warc2zim</a>. To start the task, you use a file called zimit.py that orchestrates the entire process making it easier to manage.</p>
<p>After the scan is finished, Zimit saves the .zim file in a folder called /output. This folder can be easily accessed and used for your needs. If you want to keep the original data from the website scan, you can use a special option called --keep, which stores it in a temporary folder inside /output.</p>
<p>To install and run Zimit, you can easily do it by following the well written and simple instructions <a href="https://github.com/openzim/zimit?ref=noted.lol#usage">here</a>.</p>
<p>I recommend you have a machine with at least 2gb of ram, 2 CPU cores and enough space to house your .zim files. I run Zimit on a LXC container with these specs and it works really well.</p>
<div class="kg-card kg-callout-card kg-callout-card-accent"><div class="kg-callout-text">Just a heads up: The larger the website, the more time it&apos;ll take to scrape and turn into a packaged .zim file. Currently, it takes around 15-20 minutes to do this for Noted, creating a 1.4GB .zim file. Most of that is images but you can use this as a benchmark for websites with similar or more content.</div></div>
<h2 id="kiwix-server-the-messenger">Kiwix Server: The Messenger</h2>
<p>Kiwix Server acts like a web server that can host .zim files. It lets you share these .zim files using the HTTP protocol, but just within your own local network. You can choose how you want to serve the .zim files over on the <a href="https://kiwix.org/en/applications/?ref=noted.lol">Kiwix applications page</a>.</p>
<p><strong>Windows</strong> - To serve up the ZIM file locally on Windows, you can use Kiwix Server.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/kiwix-for-windows-1-noted.lol.png" class="kg-image" alt="How to Convert any Website into a Zim File for Offline Viewing" loading="lazy" width="1332" height="485" srcset="https://noted.lol/content/images/size/w600/2023/10/kiwix-for-windows-1-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/kiwix-for-windows-1-noted.lol.png 1000w, https://noted.lol/content/images/2023/10/kiwix-for-windows-1-noted.lol.png 1332w" sizes="(min-width: 1200px) 1200px"></figure>
<p><strong>Linux </strong>- For Debian, there are binaries you can download. First, get the .appimage file and make it executable by adjusting its permissions. Then, simply run it. Alternatively, you can check out the instructions on the Flathub page for guidance.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/kiwix-for-linux-noted.lol.png" class="kg-image" alt="How to Convert any Website into a Zim File for Offline Viewing" loading="lazy" width="1312" height="462" srcset="https://noted.lol/content/images/size/w600/2023/10/kiwix-for-linux-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/kiwix-for-linux-noted.lol.png 1000w, https://noted.lol/content/images/2023/10/kiwix-for-linux-noted.lol.png 1312w" sizes="(min-width: 1200px) 1200px"></figure>
<p><strong>Docker</strong> - Docker is also an option and can be ran locally. However, if you try to run it in a VM or container over anything other than localhost, you may run into HTTPS errors.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/kiwix-docker-ssl-error-noted.lol.png" class="kg-image" alt="How to Convert any Website into a Zim File for Offline Viewing" loading="lazy" width="872" height="153" srcset="https://noted.lol/content/images/size/w600/2023/10/kiwix-docker-ssl-error-noted.lol.png 600w, https://noted.lol/content/images/2023/10/kiwix-docker-ssl-error-noted.lol.png 872w"></figure>
<p>As I mentioned, you can run it on your own computer using Docker. However, if you want to use a virtual machine (VM) or a different method than just your computer, you&apos;ll need to make it accessible over HTTPS through a reverse proxy. But, honestly, that kind of takes away the whole idea of offline viewing!</p>
<p>Here is a working Docker Compose using the official Kiwix latest Docker image.</p>
<pre><code>version: &apos;3.3&apos;
services:
kiwix-serve:
image: ghcr.io/kiwix/kiwix-serve:latest
volumes:
- /docker/output:/data
ports:
- &apos;8080:8080&apos;
command:
- &apos;*.zim&apos;</code></pre>
<p>This assumes your .zim files are located in <code>/docker/output</code>. It&apos;s a good idea to mount this folder to the same place you mounted the Zimit output.</p>
<h2 id="testing-kiwix-server">Testing Kiwix Server</h2>
<p>I scraped a couple websites and smaller wiki&apos;s of people I like to follow and was impressed with how it turned out. Zimit makes a carbon copy of the entire website that you can browse and search all locally.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/kiwix-docker-main-noted.lol.png" class="kg-image" alt="How to Convert any Website into a Zim File for Offline Viewing" loading="lazy" width="1920" height="494" srcset="https://noted.lol/content/images/size/w600/2023/10/kiwix-docker-main-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/kiwix-docker-main-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/kiwix-docker-main-noted.lol.png 1600w, https://noted.lol/content/images/2023/10/kiwix-docker-main-noted.lol.png 1920w" sizes="(min-width: 1200px) 1200px"></figure>
<p>Here is a one minute video showing Kiwix Server locally hosted using the Windows version.</p>
<iframe width="560" height="315" sandbox="allow-same-origin allow-scripts allow-popups" src="https://libre.video/videos/embed/21fc65a6-ae3f-4ae7-a970-938b48cd5fd7" frameborder="0" allowfullscreen></iframe>
<p>You can see how snappy and quick it is as it should be when viewing locally.</p>
<div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/10/2212.w026.n002.2823B.p1.2823.jpg" alt="How to Convert any Website into a Zim File for Offline Viewing"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text kg-align-center">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<h3 class="kg-signup-card-subheading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></h3>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success" style="color: #FFFFFF;">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" style="color: #FFFFFF;" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div>
<h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2>
<p>Once you realize how easy it is to transform websites into .zim files with Zimit, you might find yourself naturally inclined to save more. This fantastic tool is going to be our not so secret weapon for <a href="https://noted.lol/archives" rel="noreferrer">preserving Noted</a> for the generations ahead. With it, we can ensure that the wealth of information and knowledge contained within our publication remains accessible and ready to stand the test of time.</p>
<p>If you find this application valuable or would like to explore further information, I encourage you to visit the&#xA0;<a href="https://github.com/openzim/zimit?ref=noted.lol">Zimit GitHub repository</a>&#xA0;and give the project a star.</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:11;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:55:"You can Download Noted.lol Archives for Offline Reading";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:186:"Imagine being able to browse Noted even when you're offline. Noted contributes to the free and open availability of knowledge by granting access to our site content through our archives.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:33:"https://noted.lol/noted-archives/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"651f0110f32be30001d03ded";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:4:"News";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Fri, 06 Oct 2023 15:05:44 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:72:"https://noted.lol/content/images/2023/10/noted.lol-archives-featured.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:9142:"<img src="https://noted.lol/content/images/2023/10/noted.lol-archives-featured.jpg" alt="You can Download Noted.lol Archives for Offline Reading"><p>The Noted.lol archives have been available for a few months now. However, it&apos;s time we get into the reasons behind their existence and how they can be beneficial for you.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/noted.lol-archives.png" class="kg-image" alt="You can Download Noted.lol Archives for Offline Reading" loading="lazy" width="1578" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/noted.lol-archives.png 600w, https://noted.lol/content/images/size/w1000/2023/10/noted.lol-archives.png 1000w, https://noted.lol/content/images/2023/10/noted.lol-archives.png 1578w" sizes="(min-width: 720px) 720px"></figure>
<p>First off, you may ask yourself &quot;why would I want to download archives of a website?&quot;</p>
<p>Noted was born with a clear purpose, to make self-hosted and open-source knowledge readily available to everyone. In line with this mission, we&apos;ve made sure that Noted remains easily accessible to the public to promote the free and open availability of knowledge. </p>
<p>Here are a couple of reasons why we&apos;re all about promoting the archives and why we think you should snag them.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/14.png" class="kg-image" alt="You can Download Noted.lol Archives for Offline Reading" loading="lazy" width="1578" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/14.png 600w, https://noted.lol/content/images/size/w1000/2023/10/14.png 1000w, https://noted.lol/content/images/2023/10/14.png 1578w" sizes="(min-width: 720px) 720px"></figure>
<p><strong>1. Convenient Offline Access:</strong> Having access to valuable information offline can be revolutionary. Whether you&apos;re on a plane without internet access, in a remote area, or simply prefer to disconnect from the web occasionally, the Noted.lol archives offer you the flexibility to browse the content offline.</p>
<p><strong>2. Preservation of Knowledge:</strong> The archives serve as a robust repository of the articles, guides, and resources we&apos;ve curated over time. This means that even if articles are updated or removed from the website, you can still refer back to the original content.</p>
<p><strong>3. Sharing Knowledge:</strong> Downloading the entire collection as a zim file not only grants you access but also the ability to easily share this knowledge with others. </p>
<p><strong>4. Freedom to Explore:</strong> With <a href="https://archive.noted.lol/?order=desc&amp;sort=mtime&amp;ref=noted.lol">individual article downloads</a>, you have the freedom to select specific topics of interest. It&apos;s like handpicking chapters from a book rather than reading it cover to cover. </p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/noted.lol-archives-sleeping-cat.png" class="kg-image" alt="You can Download Noted.lol Archives for Offline Reading" loading="lazy" width="1578" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/10/noted.lol-archives-sleeping-cat.png 600w, https://noted.lol/content/images/size/w1000/2023/10/noted.lol-archives-sleeping-cat.png 1000w, https://noted.lol/content/images/2023/10/noted.lol-archives-sleeping-cat.png 1578w" sizes="(min-width: 720px) 720px"></figure>
<p>Well, some of you might already be fancy with your self-hosted archiving tools like Shiori, Archive Box, or Omnivore. You&apos;re probably thinking, &quot;Why bother when you can just scrape websites with wget?&quot; But here&apos;s our official way of serving up the content for you. &#x2764;</p>
<h2 id="notedlol-archive-options">Noted.lol Archive Options</h2>
<p>Noted uses two different methods of archiving the content. Here&apos;s how it&apos;s done.</p>
<ol><li>SingleFile Article Snapshots - Article snapshots&#xA0;are taken after each article is published on Noted using a tool called SingleFile. These snapshots are then uploaded to a different server and served using Dufs where you can either view the archived articles or download them for offline viewing. These are html files that can be viewed in any browser locally.</li><li>Zim File Archive - Each month I run a script to create a .zim file for the content on Noted.lol. This file can be viewed offline using a tool known as Kiwix. You can search the site and read all of the articles just as if you were browsing Noted online. If you use a Windows machine, I recommend running the <a href="https://kiwix.org/en/applications/?ref=noted.lol">Kiwix Serve program</a> locally to serve the zim file on 127.0.0.1:8080.</li></ol>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/kiwix-for-windows-noted.lol.png" class="kg-image" alt="You can Download Noted.lol Archives for Offline Reading" loading="lazy" width="1920" height="739" srcset="https://noted.lol/content/images/size/w600/2023/10/kiwix-for-windows-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/kiwix-for-windows-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/kiwix-for-windows-noted.lol.png 1600w, https://noted.lol/content/images/2023/10/kiwix-for-windows-noted.lol.png 1920w" sizes="(min-width: 1200px) 1200px"></figure>
<p>For additional information about the Archives and to access file downloads, please visit <a href="https://noted.lol/archives" rel="noreferrer">this link</a>.</p>
<div class="kg-card kg-signup-card kg-width-wide " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/10/subscribe-space-purple-stars-1.jpg" alt="You can Download Noted.lol Archives for Offline Reading"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text kg-align-center">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<h3 class="kg-signup-card-subheading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></h3>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success" style="color: #FFFFFF;">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" style="color: #FFFFFF;" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div>
<h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2>
<p>No matter how many backups I maintain for Noted.lol, there&apos;s still that tiny chance they might vanish into the digital abyss thanks to those pesky unforeseen issues. And guess what? Every website out there dances to the same uncertain tune. Nothing&apos;s forever on the internet folks! &#x1F609;</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:12;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:54:"MicroBin: Self-Hosted Pastebin for Simplifying Sharing";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:167:"MicroBin, the self-hosted pastebin that simplifies sharing long texts, large files, and sensitive documents securely. It's also a URL shortener and secure upload host.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:27:"https://noted.lol/microbin/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"651da36bf32be30001d03960";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:2:{i:0;a:5:{s:4:"data";s:21:"Self Hosted Pastebins";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:26:"Self Hosted URL Shorteners";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Thu, 05 Oct 2023 15:14:08 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:81:"https://noted.lol/content/images/2023/10/microbin-self-hosted-main1-noted.lol.png";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:15031:"<img src="https://noted.lol/content/images/2023/10/microbin-self-hosted-main1-noted.lol.png" alt="MicroBin: Self-Hosted Pastebin for Simplifying Sharing"><p>A self-hosted pastebin can be useful for many different purposes. It serves as a platform for effortlessly sharing text based information, such as code snippets, draft documents, or crucial notes. In this article, we&apos;ll take a look at MicroBin.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/microbin-self-hosted-main-noted.lol.png" class="kg-image" alt="MicroBin: Self-Hosted Pastebin for Simplifying Sharing" loading="lazy" width="2000" height="1480" srcset="https://noted.lol/content/images/size/w600/2023/10/microbin-self-hosted-main-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/microbin-self-hosted-main-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/microbin-self-hosted-main-noted.lol.png 1600w, https://noted.lol/content/images/size/w2400/2023/10/microbin-self-hosted-main-noted.lol.png 2400w" sizes="(min-width: 1200px) 1200px"></figure>
<h2 id="what-is-microbin">What is MicroBin</h2>
<p><a href="https://github.com/szabodanika/microbin?ref=noted.lol">MicroBin</a> is a compact yet loaded pastebin web app that you can self-host. It&apos;s simple to set up by tweaking environment variables to add or remove features. With Docker, you can have it good to go in just a couple of minutes.</p>
<h2 id="microbin-core-features">MicroBin Core Features</h2>
<ul><li>Entirely self-contained executable, MicroBin is a single file!</li><li>Server-side and client-side encryption</li><li>File uploads (e.g., server.com/file/pig-dog-cat)</li><li>Raw text serving (e.g., server.com/raw/pig-dog-cat)</li><li>QR code support</li><li>URL shortening and redirection</li><li>Animal names instead of random numbers for upload identifiers (64 animals)</li><li>SQLite and JSON database support</li><li>Private and public, editable and uneditable, automatically and never expiring uploads</li><li>Automatic dark mode and custom styling support with very little CSS and only vanilla JS (see water.css)</li></ul>
<p>MicroBin demo: <a href="https://pub.microbin.eu/?ref=noted.lol">https://pub.microbin.eu/</a></p>
<p>MicroBin is a multi-tool that can simplify various tasks. You can use it to send long texts or share large files with others. It&apos;s also a &quot;secure&quot; way to exchange sensitive documents. MicroBin also functions as a URL shortener and redirection service, making it easy to keep track of your links. You can even transfer files between your computer and a server accessed from the console.</p>
<p>One of the newer features of MicroBin available in version 2.0 is the URL shortening ability. You can simply pop a link into the content box and it will utilize the link creator as a way to shorten links. I believe they should be shorter, but it follows a naming method using three animals so for now that is out of your control.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/microbin-self-hosted-url-shortner-noted.lol.png" class="kg-image" alt="MicroBin: Self-Hosted Pastebin for Simplifying Sharing" loading="lazy" width="858" height="368" srcset="https://noted.lol/content/images/size/w600/2023/10/microbin-self-hosted-url-shortner-noted.lol.png 600w, https://noted.lol/content/images/2023/10/microbin-self-hosted-url-shortner-noted.lol.png 858w"></figure>
<p>There has been a few important updates in version 2.0 that make MicroBin way cooler than before. Included is also an admin page where you can see all the pastas and short URLs. I find the admin area looks much better if you have the <code>MICROBIN_WIDE=true</code> environment variable set to true.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/microbin-admin-noted.lol.png" class="kg-image" alt="MicroBin: Self-Hosted Pastebin for Simplifying Sharing" loading="lazy" width="1920" height="931" srcset="https://noted.lol/content/images/size/w600/2023/10/microbin-admin-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/microbin-admin-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/microbin-admin-noted.lol.png 1600w, https://noted.lol/content/images/2023/10/microbin-admin-noted.lol.png 1920w" sizes="(min-width: 1200px) 1200px"></figure>
<p>I&apos;d like to point out an interesting feature of MicroBin. It&apos;s not limited to text! You can also upload images or documents alongside your pastes, making it suitable for a range of content. This feature can come in handy for showcasing a bug you&apos;ve encountered in an application. You can paste the error message and simultaneously include a screenshot to provide a clearer picture of the issue. Don&apos;t mind me though, I decided to be a little more creative &#x1F601;</p>
<figure class="kg-card kg-image-card kg-width-full kg-card-hascaption"><img src="https://noted.lol/content/images/2023/10/microbin-image-upload-noted.lol.png" class="kg-image" alt="MicroBin: Self-Hosted Pastebin for Simplifying Sharing" loading="lazy" width="1920" height="931" srcset="https://noted.lol/content/images/size/w600/2023/10/microbin-image-upload-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/10/microbin-image-upload-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/microbin-image-upload-noted.lol.png 1600w, https://noted.lol/content/images/2023/10/microbin-image-upload-noted.lol.png 1920w"><figcaption><span style="white-space: pre-wrap;">Zoom in to read the joke.</span></figcaption></figure>
<h2 id="more-photos-of-microbin">More Photos of MicroBin</h2>
<p>Here&apos;s a quick photo tour of the MicroBin in action on my server.</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://noted.lol/content/images/2023/10/microbin-self-hosted-gallery-noted.lol--1-.png" width="1920" height="931" loading="lazy" alt="MicroBin: Self-Hosted Pastebin for Simplifying Sharing" srcset="https://noted.lol/content/images/size/w600/2023/10/microbin-self-hosted-gallery-noted.lol--1-.png 600w, https://noted.lol/content/images/size/w1000/2023/10/microbin-self-hosted-gallery-noted.lol--1-.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/microbin-self-hosted-gallery-noted.lol--1-.png 1600w, https://noted.lol/content/images/2023/10/microbin-self-hosted-gallery-noted.lol--1-.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2023/10/microbin-self-hosted-gallery-noted.lol--2-.png" width="1920" height="931" loading="lazy" alt="MicroBin: Self-Hosted Pastebin for Simplifying Sharing" srcset="https://noted.lol/content/images/size/w600/2023/10/microbin-self-hosted-gallery-noted.lol--2-.png 600w, https://noted.lol/content/images/size/w1000/2023/10/microbin-self-hosted-gallery-noted.lol--2-.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/microbin-self-hosted-gallery-noted.lol--2-.png 1600w, https://noted.lol/content/images/2023/10/microbin-self-hosted-gallery-noted.lol--2-.png 1920w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2023/10/microbin-self-hosted-gallery-noted.lol--3-.png" width="1920" height="931" loading="lazy" alt="MicroBin: Self-Hosted Pastebin for Simplifying Sharing" srcset="https://noted.lol/content/images/size/w600/2023/10/microbin-self-hosted-gallery-noted.lol--3-.png 600w, https://noted.lol/content/images/size/w1000/2023/10/microbin-self-hosted-gallery-noted.lol--3-.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/microbin-self-hosted-gallery-noted.lol--3-.png 1600w, https://noted.lol/content/images/2023/10/microbin-self-hosted-gallery-noted.lol--3-.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2023/10/microbin-self-hosted-gallery-noted.lol--4-.png" width="1920" height="931" loading="lazy" alt="MicroBin: Self-Hosted Pastebin for Simplifying Sharing" srcset="https://noted.lol/content/images/size/w600/2023/10/microbin-self-hosted-gallery-noted.lol--4-.png 600w, https://noted.lol/content/images/size/w1000/2023/10/microbin-self-hosted-gallery-noted.lol--4-.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/microbin-self-hosted-gallery-noted.lol--4-.png 1600w, https://noted.lol/content/images/2023/10/microbin-self-hosted-gallery-noted.lol--4-.png 1920w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption><p dir="ltr"><span style="white-space: pre-wrap;">Turn device sideways for larger view or zoom.</span></p></figcaption></figure>
<h2 id="installing-microbin-using-docker-compose">Installing MicroBin using Docker Compose</h2>
<p>You will need a host machine with Docker and Docker Compose installed for this example. If you need assistance, see our guide&#xA0;<a href="https://noted.lol/install-docker-and-portainer/">Install Docker and Portainer on Debian for Self-Hosting</a>.</p>
<p>Below is the compose I crafted based on the environment variables that best suit my needs. You can see all of the available <a href="https://github.com/szabodanika/microbin/blob/master/compose.yaml?ref=noted.lol">MicroBin environment variables here</a>.</p>
<pre><code class="language-yaml">services:
paste:
image: danielszabo99/microbin
restart: always
environment:
- MICROBIN_PRIVATE=false
- MICROBIN_PUBLIC_PATH=https://your-domain.com
- MICROBIN_QR=true
- MICROBIN_HIGHLIGHTSYNTAX=true
- MICROBIN_ADMIN_USERNAME=Jeremy
- MICROBIN_ADMIN_PASSWORD=V3ryS3cret
- MICROBIN_ENCRYPTION_CLIENT_SIDE=false
- MICROBIN_ENCRYPTION_SERVER_SIDE=true
- MICROBIN_TITLE=Microbin
- MICROBIN_QR=True
- MICROBIN_HIDE_FOOTER=True
- MICROBIN_WIDE=true
ports:
- &quot;8065:8080&quot;
volumes:
- /docker/microbin:/my/microbin
- /docker/microbin/data:/app/pasta_data</code></pre>
<p>One significant drawback I encountered with this otherwise wonderful app nearly made me reconsider reviewing it. Pastes don&apos;t persist when the container restarts. I wondered, &quot;What&apos;s the point?&quot; So, I dug into the issue tracker and found a <a href="https://github.com/szabodanika/microbin/issues/186?ref=noted.lol">issue addressing this concern</a>. It seems the developer intends to fix this in MicroBin version 2.1.</p>
<div class="kg-card kg-signup-card kg-width-regular kg-style-accent" data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/10/noted-subscribe-cat-in-space.png" alt="MicroBin: Self-Hosted Pastebin for Simplifying Sharing"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text kg-align-center">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<h3 class="kg-signup-card-subheading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></h3>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success" style="color: #FFFFFF;">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" style="color: #FFFFFF;" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div>
<h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2>
<p>MicroBin is well designed and does its job effectively. I believe that soon there will be an option to personalize your paste names, which will enhance the tool&apos;s functionality, especially for those who use it for URL shortening.</p>
<p>All-in-all, I recommend giving it a try if you don&apos;t mind losing your pastes after a container or system reboot. As I mentioned earlier, the solution for this problem is expected to come with version 2.1, but we don&apos;t have a confirmed release date yet.</p>
<p>The only other feature I wish MicroBin has is the ability to render MarkDown. But you can&apos;t have it all can you? That&apos;s the beauty of open-source and self-hosting, there are options and apps for just about everything!</p>
<p>If you find this application valuable or would like to explore further information, I encourage you to visit the&#xA0;<a href="https://github.com/szabodanika/microbin?ref=noted.lol">MicroBin GitHub repository</a>&#xA0;and give the project a star. Browse the <a href="https://microbin.eu/docs/intro?ref=noted.lol">Microbin docs</a> to see all the features and guide.</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:13;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:85:"Linkwarden - Collaborative Bookmark Manager to Collect, Organize and Archive Webpages";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:152:"Linkwarden is a user friendly, self-hosted, and open-source bookmark manager that distinguishes itself by simplifying link management and collaboration.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:29:"https://noted.lol/linkwarden/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"6516bec56b972f000149bdd2";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:41:"Self Hosted Bookmark and Link Saving apps";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Tue, 03 Oct 2023 13:08:15 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:11:"Daniel31x13";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:86:"https://noted.lol/content/images/2023/10/linkwarden-self-hosted-featured-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:9040:"<img src="https://noted.lol/content/images/2023/10/linkwarden-self-hosted-featured-noted.lol.jpg" alt="Linkwarden - Collaborative Bookmark Manager to Collect, Organize and Archive Webpages"><p>Whether you&apos;re a researcher, student, project manager, or just someone surfing the web, chances are you come across many websites. It&apos;s also likely that you&apos;re part of a team or a group of friends with whom you want to share these sites.</p>
<p>As a developer, I&apos;ve always been drawn to the idea of working together to gather information, but was annoyed by losing access to important online resources due to&#xA0;<a href="https://en.wikipedia.org/wiki/Link_rot?ref=noted.lol">Link Rot</a>. Also, it matters to me if an app is open-source and can be self-hosted by anyone. This led to the creation of&#xA0;<strong>Linkwarden</strong>, a tool designed not just to help&#xA0;<strong>organize links collaboratively</strong>, but also to&#xA0;<strong>preserve</strong>&#xA0;important web content.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/linkwarden-self-hosted-dashboard.png" class="kg-image" alt="Linkwarden - Collaborative Bookmark Manager to Collect, Organize and Archive Webpages" loading="lazy" width="1648" height="930" srcset="https://noted.lol/content/images/size/w600/2023/10/linkwarden-self-hosted-dashboard.png 600w, https://noted.lol/content/images/size/w1000/2023/10/linkwarden-self-hosted-dashboard.png 1000w, https://noted.lol/content/images/size/w1600/2023/10/linkwarden-self-hosted-dashboard.png 1600w, https://noted.lol/content/images/2023/10/linkwarden-self-hosted-dashboard.png 1648w" sizes="(min-width: 1200px) 1200px"></figure>
<h2 id="what-is-linkwarden">What is Linkwarden</h2>
<p><a href="https://github.com/linkwarden/linkwarden?ref=noted.lol">Linkwarden</a> is a self-hosted, open-source collaborative bookmark manager designed for collecting, organizing, and archiving webpages. Its distinct edge lies in its collaborative nature coupled with open-source transparency and self-hosted independence, setting it apart from other competitors in the arena.</p>
<p>Linkwarden offers efficient link management with features like automatic screenshot and PDF capture. Easily organize links by collection, name, description, and tags. Collaborate effortlessly with link collections, customizable member permissions, and simple sharing options. Enjoy a user friendly, open-source, and self-hostable bookmark manager that lets you search, filter, and sort with ease.</p>
<h2 id="installation-using-docker">Installation using Docker</h2>
<p>The only requirement you&apos;ll need is a server being based on either arm64 or amd64 architecture and with <a href="https://noted.lol/install-docker-and-portainer/">Docker</a> and Git being installed.</p>
<h3 id="1-clone-the-repository">1. Clone the repository</h3>
<p>Head to the terminal and run the following command:</p>
<pre><code>git clone https://github.com/linkwarden/linkwarden.git
</code></pre>
<h3 id="2-configure-the-environment-variables">2. Configure the environment variables</h3>
<p>Change directory to the <code>linkwarden</code> folder and create a new file called <code>.env</code> with the following environment variables:</p>
<pre><code>NEXTAUTH_SECRET=VERY_SENSITIVE_SECRET
POSTGRES_PASSWORD=ALSO_VERY_SENSITIVE
NEXTAUTH_URL=http://localhost:3000 # or use your domain name if you are hosting it somewhere other than your local network.
</code></pre>
<h3 id="3-run-it">3. Run it!</h3>
<p>In the same folder simply run the following command:</p>
<pre><code>docker compose up -d
</code></pre>
<p>After a few minutes (depending on your internet connection) you can access Linkwarden via <a href="http://localhost:3000/?ref=noted.lol">http://localhost:3000</a>.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/Screenshot-1.png" class="kg-image" alt="Linkwarden - Collaborative Bookmark Manager to Collect, Organize and Archive Webpages" loading="lazy" width="1421" height="891" srcset="https://noted.lol/content/images/size/w600/2023/10/Screenshot-1.png 600w, https://noted.lol/content/images/size/w1000/2023/10/Screenshot-1.png 1000w, https://noted.lol/content/images/2023/10/Screenshot-1.png 1421w" sizes="(min-width: 720px) 720px"></figure>
<h2 id="our-vision">Our Vision</h2>
<p>The vision is simple, we want to elevate resource management to the next level. Just as you can easily &apos;like&apos; and &apos;share&apos; a post on social media platforms such as TikTok or Instagram, we envision a similar system for websites. Some of the things that we&apos;re actively working on are:</p>
<ul>
<li>Browser Extension: Thanks to the community, this feature is pretty much out.</li>
<li>Importing data from other browsers.</li>
<li>Improved Documentation.</li>
</ul>
<p>And more...</p>
<p>You can also check out our <a href="https://github.com/orgs/linkwarden/projects/1/views/1?ref=noted.lol">public roadmap</a> anytime.</p>
<div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/10/email-space-7.jpg" alt="Linkwarden - Collaborative Bookmark Manager to Collect, Organize and Archive Webpages"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text kg-align-center">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<h3 class="kg-signup-card-subheading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.</span></h3>
<form class="kg-signup-card-form" data-members-form="signup">
<div class="kg-signup-card-fields">
<input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
<button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
<span class="kg-signup-card-button-default">Subscribe</span>
<span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
<g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
<g class="nc-loop-dots-4-24-icon-o">
<circle cx="4" cy="12" r="3"/>
<circle cx="12" cy="12" r="3"/>
<circle cx="20" cy="12" r="3"/>
</g>
<style data-cap="butt">
.nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
.nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
.nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
.nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
.nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
@keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
</style>
</g>
</svg></span>
</button>
</div>
<div class="kg-signup-card-success" style="color: #FFFFFF;">
Email sent! Check your inbox to complete your signup.
</div>
<div class="kg-signup-card-error" style="color: #FFFFFF;" data-members-error></div>
</form>
<p class="kg-signup-card-disclaimer" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
</div>
</div>
</div>
<h2 id="closing-thoughts">Closing Thoughts</h2>
<p>Thanks for checking out Linkwarden in this article. Your input and feedback are essential in improving Linkwarden for all users. Don&apos;t hesitate to share your thoughts and join the community discussion.</p>
<h3 id="useful-links">Useful Links</h3>
<p>Website:&#xA0;<a href="https://linkwarden.app/?ref=noted.lol">https://linkwarden.app/</a></p>
<p>Github:&#xA0;<a href="https://github.com/linkwarden/linkwarden?ref=noted.lol">https://github.com/linkwarden/linkwarden</a></p>
<p>Browser Extension:&#xA0;<a href="https://github.com/linkwarden/browser-extension?ref=noted.lol">https://github.com/linkwarden/browser-extension</a></p>
<p>Public Roadmap:&#xA0;<a href="https://github.com/orgs/linkwarden/projects/1/views/1?ref=noted.lol">https://github.com/orgs/linkwarden/projects/1/views/1</a></p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:14;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:43:"My Homelab: A Source of Confidence Building";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:177:"My homelab tamed my fear of tinkering and trying new things. This is what is in my homelab, a little about how it helped quel my tinker fears, and my plans for future additions.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:61:"https://noted.lol/my-homelab-a-source-of-confidence-building/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"65170c076b972f000149bde3";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:15:"Homelab Diaries";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Mon, 02 Oct 2023 20:20:19 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:7:"Flavius";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:74:"https://noted.lol/content/images/2023/10/homelabing-featured-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:8274:"<img src="https://noted.lol/content/images/2023/10/homelabing-featured-noted.lol.jpg" alt="My Homelab: A Source of Confidence Building"><p>I used to be afraid of trying random software, changing perspective and trying something from a different point of view, or losing progress. This was before I built out my homelab. Before I learned that learning things for learning&apos;s sake is worth learning, even if that means I have to break or rip something apart piece by piece to dissect and study until I understood better. I used to be afraid of this, but now I&apos;m not.</p>
<p>Back when I started, if I messed up my main system I&apos;d have to re-install, re-build, from scratch or worse, waiting to replace parts. I had an aged desktop and an okay laptop, that was it. Is it enough? Absolutely, I was and remain happy that I had the chance to have those things when I did. </p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/tskPpbXPHjXVJcBbZuaRqb1Hbbf5HdU5pY3trZJPeqI.webp" class="kg-image" alt="My Homelab: A Source of Confidence Building" loading="lazy" width="960" height="542" srcset="https://noted.lol/content/images/size/w600/2023/10/tskPpbXPHjXVJcBbZuaRqb1Hbbf5HdU5pY3trZJPeqI.webp 600w, https://noted.lol/content/images/2023/10/tskPpbXPHjXVJcBbZuaRqb1Hbbf5HdU5pY3trZJPeqI.webp 960w"></figure>
<p>However, with time, I built out my homelab and with my homelab, even though I spend a lot of time deciding apps or what to learn for the stuff in my lab, I no longer fear tearing things apart and learning just about anything. Whereas before, I would be skittish to try something new, in fear that I&apos;d have to repair, reinstall, or order replacement parts if I messed up and be down my main rig for the duration.</p>
<h2 id="how-does-a-homelab-fit-in">How does a homelab fit in?</h2>
<p>My homelab was made of things I was alright with messing up, low cost items that weren&apos;t meaningful to a job or school or life, yet allowed me to try something new and learn the things I needed to advance in what I wanted. At first I bought a couple raspberry pis to build a cluster along with a synology nas. I wanted to learn server hosting and clustering with the Pis, I also wanted more storage and for that storage to be available on my laptop and my desktop and to be able to backup my work better without requiring something like Dropbox.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/10/Raspberry_Pi_4_Model_B_-_Side.jpg" class="kg-image" alt="My Homelab: A Source of Confidence Building" loading="lazy" width="2000" height="1177" srcset="https://noted.lol/content/images/size/w600/2023/10/Raspberry_Pi_4_Model_B_-_Side.jpg 600w, https://noted.lol/content/images/size/w1000/2023/10/Raspberry_Pi_4_Model_B_-_Side.jpg 1000w, https://noted.lol/content/images/size/w1600/2023/10/Raspberry_Pi_4_Model_B_-_Side.jpg 1600w, https://noted.lol/content/images/size/w2400/2023/10/Raspberry_Pi_4_Model_B_-_Side.jpg 2400w" sizes="(min-width: 720px) 720px"></figure>
<p>My next purchase was a Nucbox, a little square pc that I wanted to try running Linux on as a dev environment. Turned out maybe I purchased too low a spec for how I use my computer and I went back to using my laptop for a dev environment aside from my desktop, more on this later or in another part.</p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/09/51QUStuyfaL._AC_SL1000_.jpg" class="kg-image" alt="My Homelab: A Source of Confidence Building" loading="lazy" width="950" height="744" srcset="https://noted.lol/content/images/size/w600/2023/09/51QUStuyfaL._AC_SL1000_.jpg 600w, https://noted.lol/content/images/2023/09/51QUStuyfaL._AC_SL1000_.jpg 950w" sizes="(min-width: 720px) 720px"></figure>
<p>Then I bought an old retired rackmount server, an HP DL360P to be exact. I tossed proxmox on this and have been learning server hosting that way, the only thing that was missing was being able to learn clustering of Proxmox and having failover, something I want to learn although to be honest, I don&apos;t have a need, just a desire to learn it. This thing has helped me a lot, learning Proxmox and how easy it is to spin up VMs for testing, or even not having to set them up entirely each time. I can set one up for my needs and just use it as a template to clone a new vm from when I want to try something new. No more accidentally breaking my Pis or Nucbox OS and having to do some reinstallation. Load a VM at the click of a button and good to go, remove it when done. I use my Pis and Nucbox more for apps that I know I want running full time now as opposed to trying something new. </p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/09/612IybSERDL._AC_SL1500_.jpg" class="kg-image" alt="My Homelab: A Source of Confidence Building" loading="lazy" width="1469" height="640" srcset="https://noted.lol/content/images/size/w600/2023/09/612IybSERDL._AC_SL1500_.jpg 600w, https://noted.lol/content/images/size/w1000/2023/09/612IybSERDL._AC_SL1500_.jpg 1000w, https://noted.lol/content/images/2023/09/612IybSERDL._AC_SL1500_.jpg 1469w" sizes="(min-width: 720px) 720px"></figure>
<p>Lastly, I&apos;m waiting on three HP EliteDesk 800 G2 mini/micro computers to set up as a proxmox cluster. This is for a similar takeaway that the Pis were for, clustering. I want to learn how to set up Proxmox clustering, failover and other things. I would do game hosting on my big server as well but.. hosting game servers over Starlink would be meh. Someday I shall have fiber! Then watch out because the self hosting truly begins for me when I can self host properly! That was dumb, I know but guess what? I laughed while typing it so I&apos;m leaving it. </p>
<figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/09/fdsl1t7vbipmo9fr04un.webp" class="kg-image" alt="My Homelab: A Source of Confidence Building" loading="lazy" width="500" height="624"></figure>
<h2 id="so-what-have-i-learned-so-far">So what have I learned so far?</h2>
<p>Well, a lot! Actually, I&apos;m going to briefly summarize this as I want to make this its own part. Over the years I have learned how to use Linux server more effectively. I even run linux on one of my laptops as my dev environment now. My main rig still runs windows as I have games that wont work on Linux yet but when everything becomes 100% compatible with what I want to do? Maybe I&apos;ll swap over full time.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/10/flavius-desktop-noted.lol.jpg" class="kg-image" alt="My Homelab: A Source of Confidence Building" loading="lazy" width="2000" height="1125" srcset="https://noted.lol/content/images/size/w600/2023/10/flavius-desktop-noted.lol.jpg 600w, https://noted.lol/content/images/size/w1000/2023/10/flavius-desktop-noted.lol.jpg 1000w, https://noted.lol/content/images/size/w1600/2023/10/flavius-desktop-noted.lol.jpg 1600w, https://noted.lol/content/images/2023/10/flavius-desktop-noted.lol.jpg 2000w" sizes="(min-width: 1200px) 1200px"></figure>
<p>On the pis, I learned how to host ASP Net Core and other C# applications, bot apps that I&apos;ve created for live streaming even though I don&apos;t live stream at the moment, and even docker! On docker I run several things and I&apos;m using ansible on one thing, (even though I don&apos;t really know ansible), to run <a href="https://www.jeffgeerling.com/?ref=noted.lol">Jeff Geerling</a>&apos;s playbook for Internet-Pi, a internet monitor along with pi-hole. On my Pis I was hosting MongoDB, PostreSQL database, MySQL database and other things like FreshRSS, an RSS reader, and just trying out other apps that were written about here on Noted.lol.</p>
<p>I&apos;m excited to share more upcoming posts where I&apos;ll delve into the specifics of what&apos;s running in my setup, how I utilize each component, and perhaps even the quirky evolutions of my homelab and desk configurations that have enabled me to learn on the fly. Rest assured, you&apos;ll have moments of amazement and perhaps a few chuckles as I recount what I&apos;ve done and why I may have moved on from certain setups.</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}s:27:"http://www.w3.org/2005/Atom";a:1:{s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:3:{s:4:"href";s:22:"https://noted.lol/rss/";s:3:"rel";s:4:"self";s:4:"type";s:19:"application/rss+xml";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:13:{s:4:"date";s:29:"Sun, 26 Nov 2023 10:04:50 GMT";s:12:"content-type";s:23:"text/xml; charset=utf-8";s:13:"cache-control";s:17:"public, max-age=0";s:16:"content-encoding";s:4:"gzip";s:4:"etag";s:37:"W/"2e5fe-0D04aqpRmiix0gWnbPb0EKAw8Io"";s:4:"vary";s:15:"Accept-Encoding";s:12:"x-powered-by";s:7:"Express";s:15:"cf-cache-status";s:7:"DYNAMIC";s:9:"report-to";s:223:"{endpoints:[{url:https:\/\/a.nel.cloudflare.com\/report\/v3?s=VUKYFp%2FCLfM7SF2mvalYXuaLGuysvDeJRtOWh39O5Lbp7SmjP%2Bg7K2LJEJ1YEZWDUCYwmSOx73mO8sR4RmGGkzJNY3N8Avx1y2eGWIg5h6VKS8E8hiec1HHwlMM%3D}],group:cf-nel,max_age:604800}";s:3:"nel";s:52:"{success_fraction:0,report_to:cf-nel,max_age:604800}";s:6:"server";s:10:"cloudflare";s:6:"cf-ray";s:20:"82c14f3c9f8c077e-MRS";s:7:"alt-svc";s:17:"h3=:443; ma=86400";}s:5:"build";s:14:"20230304122624";s:5:"mtime";i:1700993090;s:3:"md5";s:32:"1808d7291f16f89160dabf082db99c19";}