<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Noted]]></title><description><![CDATA[Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.]]></description><link>https://noted.lol/</link><image><url>https://noted.lol/favicon.png</url><title>Noted</title><link>https://noted.lol/</link></image><generator>Ghost 5.88</generator><lastBuildDate>Wed, 07 Aug 2024 10:02:44 GMT</lastBuildDate><atom:link href="https://noted.lol/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Medama - Simple Self-Hosted Analytics]]></title><description><![CDATA[Meet Medama, the ultra simple self-hosted website analytics solution!]]></description><link>https://noted.lol/medama/</link><guid isPermaLink="false">66abae611df9fc0001455de0</guid><category><![CDATA[Self Hosted Analytics]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Sat, 03 Aug 2024 14:52:58 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/08/medama-self-hosted-analytics-noted.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/08/medama-self-hosted-analytics-noted.jpg" alt="Medama - Simple Self-Hosted Analytics"><p>Setting up self-hosted analytics can sometimes be a pain. Some solutions are complicated and require technical expertise. But Medama Analytics is a breath of fresh air. Its easy installation process means you can start tracking your data quickly, without getting overwhelmed by technical details.</p><h2 id="what-is-medama-analytics">What is Medama Analytics?</h2><p>As an open-source project, <a href="https://github.com/medama-io/medama?ref=noted.lol">Medama Analytics</a> offers self-hostable, cookie-free website analytics that puts privacy first. With a lightweight tracker that&apos;s less than 1KB in size, it provides valuable insights while minimizing data collection.</p><p>Medama Analytics offers a range of tools to help users gain insights into their online presence. Real-time analytics provide instant feedback on website performance and user interactions. Meanwhile, Medama&apos;s focus on privacy ensures that data is collected without cookies, IP addresses, or other identifying information. The platform also features an OpenAPI-based server for easy integration with existing dashboards, as well as a self-hostable setup that can be deployed on virtual machines with modest memory requirements.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/medama-self-hosted-analytics-main.png" class="kg-image" alt="Medama - Simple Self-Hosted Analytics" loading="lazy" width="960" height="768" srcset="https://noted.lol/content/images/size/w600/2024/08/medama-self-hosted-analytics-main.png 600w, https://noted.lol/content/images/2024/08/medama-self-hosted-analytics-main.png 960w"></figure><h2 id="install-medama-using-docker-compose">Install Medama using Docker Compose</h2><p>This Docker Compose stack can be used to install Medama on your server. If you need help, see our guides about&#xA0;<a href="https://noted.lol/get-started-self-hosting/">getting started with self-hosting</a>.</p><pre><code class="language-yaml">version: &apos;3&apos;
services:
    medama:
        image: ghcr.io/medama-io/medama:latest
        ports:
            - &quot;8080:8080&quot;
        volumes:
            - medama-data:/app/data
volumes:
    medama-data:
</code></pre><p>For login purposes, only localhost and HTTPS connections are accepted. Logging in via an insecure HTTP connection will result in failure.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/medama-self-hosted-analytics-dash.png" class="kg-image" alt="Medama - Simple Self-Hosted Analytics" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/medama-self-hosted-analytics-dash.png 600w, https://noted.lol/content/images/size/w1000/2024/08/medama-self-hosted-analytics-dash.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/medama-self-hosted-analytics-dash.png 1600w, https://noted.lol/content/images/2024/08/medama-self-hosted-analytics-dash.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>To start using Medama, login then add your website. Next, grab the tracking code from the docs since it&apos;s not currently available in the backend.</p><pre><code>&lt;script defer src=&quot;https://[your-public-api-hostname].com/script.js&quot;&gt;&lt;/script&gt;</code></pre><p>If you need more ways to install Medama, please see the <a href="https://oss.medama.io/introduction?ref=noted.lol" rel="noreferrer">Medama documentation</a>. There is also a single binary installation option.</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>It&apos;s odd that I had to search for the tracking snippet, while many other analytics platforms provide it automatically. You&apos;d think it would be a standard feature.</p><p>Overall, Medama is a solid choice for analytics due to its ease of use and simplicity. The fact that you can quickly install it using Docker and start viewing stats right away on one page is a major plus. While it&apos;s still a relatively new solution, we may see some exciting developments in the future, including potentially enhanced tracking capabilities within the backend.</p><p>See more about Medama on the&#xA0;<a href="https://github.com/medama-io/medama?ref=noted.lol">Medama Github repo</a>. Don&apos;t forget to show your appreciation by giving the project a star!</p>]]></content:encoded></item><item><title><![CDATA[Glance - Self-Hosted Feeds Dashboard]]></title><description><![CDATA[Organize all of your feeds and more using the self-hosted Glance dashboard.]]></description><link>https://noted.lol/glance/</link><guid isPermaLink="false">66a924911df9fc0001455c3c</guid><category><![CDATA[Self Hosted Dashboards]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Thu, 01 Aug 2024 13:41:00 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/glance-self-hosted-dashboard-noted.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/glance-self-hosted-dashboard-noted.jpg" alt="Glance - Self-Hosted Feeds Dashboard"><p>Self-hosted dashboards have become popular, allowing people to collect and visualize important information. By hosting a dashboard on your own server or cloud storage, you can customize the layout and content to fit your needs, ensuring that the data most relevant to you is always accessible. Meet the latest addition to the self-hosted dashboard family, Glance.</p><h2 id="what-is-glance">What is Glance?</h2><p>Glance is a dashboard tool that allows you to aggregate your favorite feeds in one place. You have complete control over the content and can easily monitor multiple sources of information without being tied to a specific platform or service. By self-hosting Glance, you can create a personalized feed reader that&apos;s tailored to your interests and needs, allowing you to focus on the information and updates that are most important to you.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/glance-self-hosted-dahboard-readme.png" class="kg-image" alt="Glance - Self-Hosted Feeds Dashboard" loading="lazy" width="1624" height="965" srcset="https://noted.lol/content/images/size/w600/2024/08/glance-self-hosted-dahboard-readme.png 600w, https://noted.lol/content/images/size/w1000/2024/08/glance-self-hosted-dahboard-readme.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/glance-self-hosted-dahboard-readme.png 1600w, https://noted.lol/content/images/2024/08/glance-self-hosted-dahboard-readme.png 1624w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="glance-features-and-widgets">Glance Features and Widgets</h2><ul><li>RSS feeds</li><li>Subreddit posts</li><li>Weather</li><li>Bookmarks</li><li>Hacker News</li><li>Lobsters</li><li>Latest YouTube videos from specific channels</li><li>Clock</li><li>Calendar</li><li>Stocks</li><li>iframe</li><li>Twitch channels &amp; top games</li><li>GitHub releases</li><li>Repository overview</li><li>Site monitor</li><li>Search box</li></ul><p>Glance offers instant access to your favorite online sources, including blogs and websites via RSS feeds, subreddits, stocks, YouTube videos, GitHub repos, Twitch streams, custom links, app monitoring and more. You can customize your feed by adding or removing sources as you see fit, ensuring that the information you need is always at your fingertips. Also, Glance allows you to incorporate widgets for displaying current time, calendar, and weather updates providing a detailed and organized dashboard that suits your individual needs and preferences.</p><h2 id="install-glance-dashboard-using-docker">Install Glance Dashboard using Docker</h2><p>This Docker Compose stack can be used to install Glance on your server. If you need help, see our guides about&#xA0;<a href="https://noted.lol/get-started-self-hosting/">getting started with self-hosting</a>.</p><pre><code class="language-YAML">services:
  glance:
    image: glanceapp/glance
    volumes:
      - /glance/glance.yml:/app/glance.yml
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 8080:8080
    restart: unless-stopped</code></pre><p>Before getting started with Docker, first create a config file for your Glance setup by creating a new glance.yml file in the /glance directory. Copy the provided <a href="https://github.com/glanceapp/glance/blob/main/docs/configuration.md?ref=noted.lol#preconfigured-page">Glance template</a> into this file and save it. Once complete, you can proceed to run the Docker Compose stack to install Glance.</p><h2 id="glance-themes">Glance Themes</h2><p>Customize Glance&apos;s appearance by choosing from a variety of <a href="https://github.com/glanceapp/glance/blob/main/docs/themes.md?ref=noted.lol">Glance theme colors</a>. There are a selection of examples to get you started, and you can also create your own custom color scheme.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/glance-self-hosted-themes-example.png" class="kg-image" alt="Glance - Self-Hosted Feeds Dashboard" loading="lazy" width="1620" height="608" srcset="https://noted.lol/content/images/size/w600/2024/07/glance-self-hosted-themes-example.png 600w, https://noted.lol/content/images/size/w1000/2024/07/glance-self-hosted-themes-example.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/glance-self-hosted-themes-example.png 1600w, https://noted.lol/content/images/2024/07/glance-self-hosted-themes-example.png 1620w" sizes="(min-width: 1200px) 1200px"></figure><p>Simply add the theme snippet to the beginning of your config file</p><pre><code>theme:
  background-color: 225 14 15
  primary-color: 157 47 65
  contrast-multiplier: 1.1</code></pre><p>I highly recommend that you start with the preconfigured template to get familiar with Glance&apos;s layout and formatting options. The <a href="https://github.com/glanceapp/glance/blob/main/docs/configuration.md?ref=noted.lol">Glance configuration documentation</a> is also extremely helpful, providing detailed explanations of each widget&apos;s functionality and different styles you can use. As you become more comfortable, you can use this knowledge to create your own custom design, tailored to your specific needs and preferences like I did.<a href="https://community.noted.lol/?ref=noted.lol"> This is my community public edition of Glance</a>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/glance-self-hosted-dashboard-main-3.png" class="kg-image" alt="Glance - Self-Hosted Feeds Dashboard" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/glance-self-hosted-dashboard-main-3.png 600w, https://noted.lol/content/images/size/w1000/2024/08/glance-self-hosted-dashboard-main-3.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/glance-self-hosted-dashboard-main-3.png 1600w, https://noted.lol/content/images/2024/08/glance-self-hosted-dashboard-main-3.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Here is the glance.yml for for the above example.</p><div class="kg-card kg-file-card"><a class="kg-file-card-container" href="https://noted.lol/content/files/2024/08/glance.yml" title="Download" download><div class="kg-file-card-contents"><div class="kg-file-card-title">glance.yml</div><div class="kg-file-card-caption">Glance configuration file for community.noted.lol</div><div class="kg-file-card-metadata"><div class="kg-file-card-filename">glance.yml</div><div class="kg-file-card-filesize">4 KB</div></div></div><div class="kg-file-card-icon"><svg viewbox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>download-circle</title><polyline class="a" points="8.25 14.25 12 18 15.75 14.25"/><line class="a" x1="12" y1="6.75" x2="12" y2="18"/><circle class="a" cx="12" cy="12" r="11.25"/></svg></div></a></div><h2 id="final-noted-and-thoughts">Final Noted and Thoughts</h2><p>To be honest, when I first installed Glance, I had a tough time customizing it. The template gives a great starting point, but I found myself repeatedly breaking and rebuilding my feed to get everything just the way I wanted. It was actually quite time consuming and I spent several hours getting things set up to my liking. Be prepared to spend time fine-tuning your Glance setup to achieve the exact level of customization that suits your unique needs and preferences.</p><p>See more about Glance on the&#xA0;<a href="https://github.com/glanceapp/glance?ref=noted.lol">Glance Github repo</a>. Don&apos;t forget to show your appreciation by giving the project a star!</p>]]></content:encoded></item><item><title><![CDATA[Dozzle - Self-Hosted Docker Container Log Monitoring]]></title><description><![CDATA[Monitor your Docker containers in real-time with live log outputs directly from the source, all within the self-hosted Dozzle log viewer.]]></description><link>https://noted.lol/dozzle/</link><guid isPermaLink="false">66a1265d1df9fc0001454a4c</guid><category><![CDATA[Self Hosted Logging]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Wed, 31 Jul 2024 11:35:07 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/dozzle-self-hosted-noted.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/dozzle-self-hosted-noted.jpg" alt="Dozzle - Self-Hosted Docker Container Log Monitoring"><p>When you&apos;re working with Docker containers, keeping track of what&apos;s happening inside them can be a real challenge. Containers are great for building and deploying applications, but they can also produce a lot of log data that needs to be monitored and analyzed. This is especially true when you have multiple containers running simultaneously, or when you&apos;re dealing with complex distributed systems. Without a way to easily access and understand the logs from your containers, troubleshooting issues can become a time-consuming and frustrating process. That&apos;s why it&apos;s important to have a reliable and efficient logging solution that allows you to see what&apos;s happening inside your containers in real-time like Dozzle.</p><figure class="kg-card kg-video-card kg-width-wide" data-kg-thumbnail="https://noted.lol/content/media/2024/07/dozzle-dark.Cxxdho5N_thumb.jpg" data-kg-custom-thumbnail>
            <div class="kg-video-container">
                <video src="https://noted.lol/content/media/2024/07/dozzle-dark.Cxxdho5N.mp4" poster="https://img.spacergif.org/v1/1820x1080/0a/spacer.png" width="1820" height="1080" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://noted.lol/content/media/2024/07/dozzle-dark.Cxxdho5N_thumb.jpg&apos;) 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container kg-video-hide">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:35</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1&#xD7;</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><h2 id="what-is-dozzle">What is Dozzle?</h2><p><a href="https://github.com/amir20/dozzle?ref=noted.lol">Dozzle</a> is a powerful tool for monitoring and troubleshooting your Docker containers and services. With Dozzle, you can view logs from your containers and services in real-time, making it easier to diagnose issues when they arise. It also supports Docker Swarm, which allows you to monitor logs from multiple nodes at once. Plus, with multi-host support, you can connect to multiple remote hosts directly from the interface. And the best part? Dozzle doesn&apos;t require a database or any extra configuration - just stream logs directly from your containers and services. With its lightweight design and intuitive interface, Dozzle makes it easy to get started and start troubleshooting right away.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/dozzle-self-hosted-docker-log-viewer-1.png" class="kg-image" alt="Dozzle - Self-Hosted Docker Container Log Monitoring" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/07/dozzle-self-hosted-docker-log-viewer-1.png 600w, https://noted.lol/content/images/size/w1000/2024/07/dozzle-self-hosted-docker-log-viewer-1.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/dozzle-self-hosted-docker-log-viewer-1.png 1600w, https://noted.lol/content/images/2024/07/dozzle-self-hosted-docker-log-viewer-1.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Dozzle offers several features that make it easy to work with container logs. The intelligent fuzzy search allows you to quickly find specific containers, even if you only remember part of their name. You can also use regex to search for log entries matching certain patterns. Also, Dozzle has a small memory footprint and supports split-screen viewing of multiple logs at once. It&apos;s possible to download logs from the interface as well, which is useful for offline analysis. Dozzle provides live stats on memory and CPU usage, giving you a better understanding of your container performance. Finally, multi-user authentication with support for proxy forward authorization ensures that only authorized users can access the log data.</p><h2 id="install-dozzle-with-docker-compose">Install Dozzle with Docker Compose</h2><p>This Docker Compose stack can be used to install Dozzle on your server. If you need help, see our guides about&#xA0;<a href="https://noted.lol/get-started-self-hosting/">getting started with self-hosting</a>.</p><pre><code class="language-yaml">version: &quot;3&quot;
services:
  dozzle:
    container_name: dozzle
    image: amir20/dozzle:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 8888:8080</code></pre><p>Dozzle offers compatibility with multiple container runtimes, including automatic API negotiation for most Docker configurations. Plus, it also works seamlessly with <a href="https://github.com/abiosoft/colima?ref=noted.lol">Colima</a> and <a href="https://podman.io/?ref=noted.lol">Podman</a>.</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>For those who need more control over their logging setup, self-hosted solutions are the way to go, allowing you to keep your log data private, secure, and under your own control, all while providing unparalleled flexibility and customization options. Ultimately, a solution like Dozzle is ideal for anyone looking to streamline their Docker log viewing experience.</p><p>See more about Dozzle on the <a href="https://github.com/amir20/dozzle?ref=noted.lol">Dozzle Github repo</a>. Don&apos;t forget to show your appreciation by giving the project a star!</p>]]></content:encoded></item><item><title><![CDATA[Docmost - Self -Hosted Collaborative Wiki and Documentation Portal]]></title><description><![CDATA[Simplify your documentation using the self-hosted Docmost wiki app]]></description><link>https://noted.lol/docmost/</link><guid isPermaLink="false">66a3a3a31df9fc000145531f</guid><category><![CDATA[Self Hosted Wikis]]></category><category><![CDATA[Self Hosted Note Taking apps]]></category><category><![CDATA[Self Hosted Documentation]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Tue, 30 Jul 2024 14:21:27 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/docmost-self-hosted-wiki-noted.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/docmost-self-hosted-wiki-noted.jpg" alt="Docmost - Self -Hosted Collaborative Wiki and Documentation Portal"><p>In order to successfully manage a business or pursue personal projects like self-hosting and homelabs, it&apos;s crucial to prioritize organization. While maintaining detailed noted and documentation is important, having a reliable wiki platform takes documentation to the next level by providing a centralized hub for storing and sharing information. Enter Docmost.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/docmost-self-hosted-wiki-page.png" class="kg-image" alt="Docmost - Self -Hosted Collaborative Wiki and Documentation Portal" loading="lazy" width="2000" height="1057" srcset="https://noted.lol/content/images/size/w600/2024/07/docmost-self-hosted-wiki-page.png 600w, https://noted.lol/content/images/size/w1000/2024/07/docmost-self-hosted-wiki-page.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/docmost-self-hosted-wiki-page.png 1600w, https://noted.lol/content/images/2024/07/docmost-self-hosted-wiki-page.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="what-is-docmost">What is Docmost?</h2><p><a href="https://github.com/docmost/docmost?ref=noted.lol">Docmost</a> is a open-source and self-hosted wiki and documentation tool that offers an alternative to popular solutions like Confluence and Notion. As an open-source platform, Docmost empowers users to collaborate on shared knowledge bases without the burden of proprietary licensing fees.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/docmost/docmost?ref=noted.lol"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion.</div><div class="kg-bookmark-description">Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. - docmost/docmost</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" alt="Docmost - Self -Hosted Collaborative Wiki and Documentation Portal"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">docmost</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://repository-images.githubusercontent.com/674295265/6b1fb268-b3a2-46f8-a8a1-8fab313df953" alt="Docmost - Self -Hosted Collaborative Wiki and Documentation Portal"></div></a></figure><h2 id="docmost-core-features">Docmost Core Features</h2><ul><li>Real-time collaboration</li><li>Spaces</li><li>Permissions management</li><li>Groups</li><li>Comments</li><li>Page history</li><li>Search</li><li>File attachment</li></ul><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/docmost-self-hosted-wiki-editor.png" class="kg-image" alt="Docmost - Self -Hosted Collaborative Wiki and Documentation Portal" loading="lazy" width="2000" height="1057" srcset="https://noted.lol/content/images/size/w600/2024/07/docmost-self-hosted-wiki-editor.png 600w, https://noted.lol/content/images/size/w1000/2024/07/docmost-self-hosted-wiki-editor.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/docmost-self-hosted-wiki-editor.png 1600w, https://noted.lol/content/images/2024/07/docmost-self-hosted-wiki-editor.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><p>Docmost is a powerful collaborative wiki solution that offers a range of features designed to facilitate seamless information-sharing and teamwork. Its real-time collaborative rich-text editor allows multiple users to edit pages simultaneously, with support for advanced formatting options like tables, math (LaTex), and callouts. A robust permissions system enables administrators to control who can view, edit, or manage content, ensuring information remains secure and accessible only to authorized personnel. </p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/docmost-self-hosted-wiki-main.png" class="kg-image" alt="Docmost - Self -Hosted Collaborative Wiki and Documentation Portal" loading="lazy" width="2000" height="1397" srcset="https://noted.lol/content/images/size/w600/2024/07/docmost-self-hosted-wiki-main.png 600w, https://noted.lol/content/images/size/w1000/2024/07/docmost-self-hosted-wiki-main.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/docmost-self-hosted-wiki-main.png 1600w, https://noted.lol/content/images/2024/07/docmost-self-hosted-wiki-main.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><p>The platform&apos;s spaces feature organizes content into distinct areas dedicated to different teams, projects, or departments, providing a structured environment for collaboration. Docmost also features an integrated inline commenting system, enabling meaningful discussions directly on pages. Users can track changes made to each page through the page history feature, and revert to previous versions if needed. The platform&apos;s search functionality is powered by Postgres full-text search system, making it easy to locate information across all pages. Additionally, Docmost supports nesting of pages to any level, with simple drag-and-drop functionality from the sidebar for managing content.</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 Docmost for as little as $1.9/Month with PikaPods! &#x2013;&#xA0;<a href="https://www.pikapods.com/pods?utm_source=noted&amp;run=docmost" rel="noreferrer">Start free with $5 welcome credit</a> <b><strong style="white-space: pre-wrap;">&#x1F917;</strong></b></div></div><h2 id="install-docmost-using-docker-compose">Install Docmost using Docker Compose</h2><p>This Docker Compose stack can be used to install Docmost on your server. If you need help, see our guides about&#xA0;<a href="https://noted.lol/get-started-self-hosting/">getting started with self-hosting</a>.</p><pre><code class="language-yaml">version: &apos;3&apos;

services:
  docmost:
    image: docmost/docmost:latest
    depends_on:
      - db
      - redis
    environment:
      APP_URL: &apos;http://localhost:3000&apos;
      APP_SECRET: &apos;TW3kJSO4HMdwq8Vlc0L8ZRCIZxtO4R&apos;
      DATABASE_URL: &apos;postgresql://docmost:HpKm6jar9T@db:5432/docmost?schema=public&apos;
      REDIS_URL: &apos;redis://redis:6379&apos;
    ports:
      - &quot;3000:3000&quot;
    restart: unless-stopped
    volumes:
      - /docker/docmost/data:/app/data/storage

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: docmost
      POSTGRES_USER: docmost
      POSTGRES_PASSWORD: HpKm6jar9T
    restart: unless-stopped
    volumes:
      - /docker/docmost/db_data:/var/lib/postgresql/data

  redis:
    image: redis:7.2-alpine
    restart: unless-stopped
    volumes:
      - /docker/docmost/redis_data:/data</code></pre><p>Now jump over to the web interface on port 3000 and register an administrator account and create your first workspace.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/docmost-self-hosted-wiki-register.png" class="kg-image" alt="Docmost - Self -Hosted Collaborative Wiki and Documentation Portal" loading="lazy" width="997" height="547" srcset="https://noted.lol/content/images/size/w600/2024/07/docmost-self-hosted-wiki-register.png 600w, https://noted.lol/content/images/2024/07/docmost-self-hosted-wiki-register.png 997w"></figure><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>Upon reviewing Docmost, I was impressed by its attractive design and effectiveness as a collaborative wiki solution. However, as someone who regularly uses wiki apps for personal purposes, I have specific preferences that can enhance the user experience. For instance, I find wikis where I&apos;m in constant collaborative &quot;edit mode&quot; to be distracting, which is why I appreciate tools that offer a more subtle edit indicator or an option to toggle it off.</p><p>Additionally, a copy-to-clipboard button on code blocks is a must for me when using wiki apps personally. While this limitation may not be critical for all users, including such a feature would further enhance Docmost&apos;s functionality and user experience.</p><p>Finally, I noted that all content in Docmost is currently hidden behind authentication. Offering the option to share content publicly is also valuable, as it allows users to decide how they want to utilize their collaborative wiki or knowledge-base.</p><p>Overall, while Docmost has many strengths, there are specific areas where it could improve to better meet my needs as a self-hosted user.</p><p>If you have any questions about the project, feature requests or want to support the Docmost project, please see the <a href="https://github.com/docmost/docmost?ref=noted.lol">Docmost Github page</a>.</p><p>Check out our other<a href="https://noted.lol/tag/self-hosted-wikis/"> self-hosted wiki application reviews</a>!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://noted.lol/tag/self-hosted-wikis/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Self Hosted Wikis - Noted</div><div class="kg-bookmark-description">See what self hosted wiki apps we have reviewed. Install and setup with Docker.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://noted.lol/content/images/size/w256h256/2023/08/Icon-1.2-1.png" alt="Docmost - Self -Hosted Collaborative Wiki and Documentation Portal"><span class="kg-bookmark-author">Noted</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://noted.lol/content/images/2024/07/self-hosted-wiki-apps-notes.jpg" alt="Docmost - Self -Hosted Collaborative Wiki and Documentation Portal"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[How to Convert any Website into a Zim File for Offline Viewing]]></title><description><![CDATA[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.]]></description><link>https://noted.lol/convert-any-website-into-a-zim-file-zimit/</link><guid isPermaLink="false">669ff5dccaf0210001ac636d</guid><category><![CDATA[Linux Basics]]></category><category><![CDATA[How To]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Mon, 29 Jul 2024 15:01:00 GMT</pubDate><media:content url="https://noted.lol/content/images/2023/10/zimit-featured-noted.lol.jpg" medium="image"/><content:encoded><![CDATA[<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><pre><code>docker run  -v /docker/zimit/output:/output --shm-size=1gb ghcr.io/openzim/zimit zimit --url https://noted.lol --name noted.lol-backup --workers 2 --waitUntil domcontentloaded</code></pre><p>You can change the &quot;--url&quot; to the website you want to archive. Depending on the size of the site, images etc., it could take up to 10 minutes to complete. Once finished, you will find your .zim file in the /docker/zimit/output folder.</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>
<!--kg-card-begin: html-->
<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>
<!--kg-card-end: html-->
<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>
                    <p 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></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" 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>The creators of Kiwix reached out to me and have created an <a href="https://library.kiwix.org/?ref=noted.lol#lang=eng&amp;q=noted">archive of Noted.lol</a> using this same process. You can see their archive as an example.</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>]]></content:encoded></item><item><title><![CDATA[PdfDing - Self-Hosted PDF Manager and Viewer]]></title><description><![CDATA[Seamlessly manage and view your PDFs on multiple devices wherever you are while staying in control of your data with the self-hosted PDF Ding.]]></description><link>https://noted.lol/pdfding/</link><guid isPermaLink="false">66a54f0b1df9fc000145599d</guid><category><![CDATA[Slef Hosted Document Viewer]]></category><dc:creator><![CDATA[mrmn]]></dc:creator><pubDate>Sun, 28 Jul 2024 14:02:22 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/self-hosted-pdfding-noted.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/self-hosted-pdfding-noted.jpg" alt="PdfDing - Self-Hosted PDF Manager and Viewer"><p>We rely on PDFs for everything from reports to research papers, and sometimes it feels like they&apos;re everywhere. But finding a simple way to view and manage them across all your devices can be a challenge. That&apos;s where PdfDing comes in - a self-hosted PDF manager that lets you do just that, with a focus on simplicity, ease of use, and flexibility.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/pdfding_overview-1.png" class="kg-image" alt="PdfDing - Self-Hosted PDF Manager and Viewer" loading="lazy" width="1365" height="705" srcset="https://noted.lol/content/images/size/w600/2024/07/pdfding_overview-1.png 600w, https://noted.lol/content/images/size/w1000/2024/07/pdfding_overview-1.png 1000w, https://noted.lol/content/images/2024/07/pdfding_overview-1.png 1365w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="what-is-pdfding">What is PdfDing?</h2><p><a href="https://codeberg.org/mrmn/PdfDing?ref=noted.lol">PdfDing</a> is a PDF manager and viewer that you can host yourself. It offers a seamless user experience on multiple devices. It&apos;s designed be to be minimal, fast, and easy to set up using Docker.</p>
<p>The name is a combination of PDF and ding. Ding is the German word for thing. Thus, PdfDing is a thing for your PDFs. If the name and the design feel familiar it&apos;s no surprise as PdfDing was inspired by the excellent bookmark manager <a href="https://github.com/sissbruecker/linkding?ref=noted.lol">linkding</a>.</p>
<p>With its simple, intuitive and adjustable UI, PdfDing makes it easy for users to keep track of their PDFs and access them whenever they need to. With a dark mode and colored themes users can style the app to their liking. As PdfDing offers SSO support via OIDC it can be easily integrated into existing setups.</p>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/pdfding_viewer.png" class="kg-image" alt="PdfDing - Self-Hosted PDF Manager and Viewer" loading="lazy" width="1365" height="705" srcset="https://noted.lol/content/images/size/w600/2024/07/pdfding_viewer.png 600w, https://noted.lol/content/images/size/w1000/2024/07/pdfding_viewer.png 1000w, https://noted.lol/content/images/2024/07/pdfding_viewer.png 1365w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="pdfding-key-features">PdfDing Key Features</h2>
<ul>
<li>Seamless browser based PDF viewing on multiple devices</li>
<li>Organize PDFs with tags</li>
<li>Clean and responsive UI</li>
<li>Dark Mode and colored themes</li>
<li>Remembers current position - continue where you stopped reading</li>
<li>SSO support via OIDC</li>
<li>Every user can upload its own PDFs. There is no admin curating the content.</li>
<li>Simple admin area for user management</li>
</ul>
<figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/pdfding_dark_mode.png" class="kg-image" alt="PdfDing - Self-Hosted PDF Manager and Viewer" loading="lazy" width="1365" height="705" srcset="https://noted.lol/content/images/size/w600/2024/07/pdfding_dark_mode.png 600w, https://noted.lol/content/images/size/w1000/2024/07/pdfding_dark_mode.png 1000w, https://noted.lol/content/images/2024/07/pdfding_dark_mode.png 1365w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="why-pdfding">Why PdfDing?</h2><p>I started developing PdfDing as I was searching for a solution for viewing and managing PDF files. I had a few simple requirements:</p><ul><li>view PDFs seamlessly in the browser of my desktop and mobile devices</li><li>every user can upload files</li><li>can be self-hosted via Docker</li><li>minimal and resource-friendly</li><li>SSO support</li></ul><p>I was quite surprised to find out that there was no app matching my simple requirements. While there were some existing solutions they still had some problems:</p><ul><li>They were using the inbuilt PDF viewer of the browser. This works fine on desktops and laptops but on smart phones it will simply download the PDF file and not display it in the browser.</li><li>They were really feature rich and therefore resource-hungry. I did not need fancy AI or OCR. I just wanted to view and organize my PDFs.</li><li>The content was curated by an admin user. Normal users were not able to upload PDFs.</li><li>PDFs could not be uploaded via the UI.</li></ul><p>In order to fix these issues I am developing PDfDing as a simple webapp with a clear focus on a single thing: viewing and managing PDFs.</p><h2 id="install-pdfding-with-docker-compose">Install PdfDing with Docker Compose</h2><p>This Docker Compose stack can be used to install PdfDing on your server. If you need help, see noted&apos;s <a href="https://noted.lol/get-started-self-hosting/">guides about getting started with self-hosting</a>.</p>
<pre><code>version: &apos;3&apos;

services:
  pdfding:
    container_name: pdfding
    image: mrmn/pdfding:latest
    volumes:
      - sqlite_data:/home/nonroot/pdfding/db
      - media:/home/nonroot/pdfding/media
    environment:
      # use a long random secret
      SECRET_KEY: some_secret
      # the domain where you want to access PdfDing, e.g. pdfding.com
      HOST_NAME: 127.0.0.1
      # In production set to TRUE
      CSRF_COOKIE_SECURE: FALSE
      # In production set to TRUE
      SESSION_COOKIE_SECURE: FALSE
#      # use this if you want to use OIDC
#      OIDC_ENABLE: TRUE
#      OIDC_CLIENT_ID: pdfding
#      OIDC_CLIENT_SECRET: client_secret
#      OIDC_AUTH_URL: https://auth.pdfding.com/.well-known/openid-configuration
    ports:
      - &quot;8000:8000&quot;

volumes:
  sqlite_data:
  media:
</code></pre>
<p>After running <code>docker compose up</code> you can access PdfDing via <a href="http://127.0.0.1:8000/?ref=noted.lol">http://127.0.0.1:8000</a>.</p>
<p><img src="https://noted.lol/content/images/2024/07/pdfding_login.png" alt="PdfDing - Self-Hosted PDF Manager and Viewer" loading="lazy"></p>
<p>For more information about the configuration options click <a href="https://codeberg.org/mrmn/PdfDing?ref=noted.lol#configuration">here</a>.</p>
<h3 id="sso">SSO</h3>
<p>PdfDing supports SSO via OIDC. If you want to use SSO uncomment the OIDC variables above.</p>
<p>Once PdfDing is set up for using OIDC the same needs to be done on the OIDC identity provider&apos;s side. Of course, this configuration depends on the used identity provider. Here is an example configuration<br>
for <a href="https://www.authelia.com/?ref=noted.lol">Authelia</a>:</p>
<pre><code>oidc:
    ## The other portions of the mandatory OpenID Connect 1.0 configuration go here.
    ## See: https://www.authelia.com/c/oidc
    clients:
      - id: pdfding
            description: PdfDing
            # create client secret and hash with
            # docker run --rm authelia/authelia:latest authelia crypto rand --length 64 --charset alphanumeric
            secret: &apos;$pbkdf2-sha512$310000$&lt;rest_of_hashed_secret&gt;&apos;
            public: false
            authorization_policy: two_factor
            scopes:
              - openid
              - email
              - profile
            redirect_uris:
              - https://pdfding.com/accountoidc/login/callback/
</code></pre>
<h3 id="admin-users">Admin Users</h3>
<p>If needed or wished it is possible to create an admin user. Admin users can view and delete users. Creating an admin user is optional. To give a user admin rights execute</p>
<pre><code>python pdfding/manage.py make_admin -e admin@pdfding.com
</code></pre>
<p>inside the shell of the running container and specify the correct email address. Admin users can also give other users admin rights via the ui.</p>
<h2 id="outlook">Outlook</h2><p>PdfDing is a work in progress. While it is already a fully functional PDF manager and viewer, more exciting features are already in the pipeline. For example:</p>
<ul>
<li>Share PDFs via links</li>
<li>Share PDFs with password protection, expiration date and a maximum number of views</li>
<li>Automatically back up all data to S3 compatible storage</li>
<li>What you want. If you have an awesome feature idea, feel free to create an <a href="https://codeberg.org/mrmn/PdfDing/issues?ref=noted.lol">issue</a> on Codeberg</li>
</ul>
<h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>Thanks for checking out PdfDing in this article. </p><p>If you enjoy PdfDing, be sure to swing by the <a href="https://codeberg.org/mrmn/PdfDing?ref=noted.lol">PdfDing repo</a> on Codeberg and give it a star. I would also ask that you ask any support related questions for PdfDing there on the Codeberg issue tracker.</p>
<p>As PdfDing is open source you are invited to modify or contribute. More information can be found <a href="https://codeberg.org/mrmn/PdfDing?ref=noted.lol#contributing">here</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Readeck - Self-Hosted Bookmark and Read it Later App]]></title><description><![CDATA[Discover a smarter way to save what matters most online with the self-hosted Readeck read-it-later app.]]></description><link>https://noted.lol/readeck/</link><guid isPermaLink="false">66a12d851df9fc0001454a53</guid><category><![CDATA[Self Hosted Bookmark and Link Saving apps]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Sat, 27 Jul 2024 13:16:46 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/self-hosted-readeck-noted.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/self-hosted-readeck-noted.jpg" alt="Readeck - Self-Hosted Bookmark and Read it Later App"><p>We&apos;re constantly discovering new and interesting content online. From articles and videos to podcasts and images. But as our bookmarks and favorites pile up across multiple platforms, it can be overwhelming to keep track of what we&apos;ve saved where. That&apos;s why self-hosted bookmark managers have become increasingly popular among individuals looking for a more personalized and secure way to organize their digital finds.</p><h2 id="what-is-readeck">What is Readeck?</h2><p><a href="https://readeck.org/en/?ref=noted.lol">Readeck</a> is a self-hosted bookmark manager that allows users to save and organize articles, images, and videos from around the web. By storing all content locally, Readeck prioritizes user privacy and control over online information. With its simple and intuitive interface, Readeck makes it easy for users to keep track of their favorite content and access it whenever they need to.</p><h2 id="readeck-key-features"><strong>Readeck Key Features</strong></h2><ul><li>Save bookmarks with just one click using the browser extension</li><li>Organize bookmarks into labels, favorites, and archives</li><li>Highlight important content for easy reference later</li><li>Create custom collections for quick access to related articles</li><li>Export articles as e-books or PDF files</li><li>Perform full-text searches across all your saved content</li><li>Import bookmarks from Pocket, Wallabag, Chrome, Firefox and more</li></ul><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://noted.lol/content/media/2024/07/intro.db23eeb95751_thumb.jpg" data-kg-custom-thumbnail>
            <div class="kg-video-container">
                <video src="https://noted.lol/content/media/2024/07/intro.db23eeb95751.mp4" poster="https://img.spacergif.org/v1/768x432/0a/spacer.png" width="768" height="432" playsinline preload="metadata" style="background: transparent url(&apos;https://noted.lol/content/media/2024/07/intro.db23eeb95751_thumb.jpg&apos;) 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:25</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1&#xD7;</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><p>At its core, Readeck is a versatile platform that combines the functionality of a bookmark manager with the features of a social bookmarking site. This combination allows users to not only store their favorite articles, images, and videos, but also discover and share new content with others who share similar interests. The service is comprised of several key components, including a web-based interface for adding, organizing, and searching bookmarks; a powerful tagging system that enables users to categorize their finds by topic or theme and a robust API that allows developers to integrate Readeck&apos;s features into their own applications.</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 Readeck for as little as $1.4/Month with PikaPods! &#x2013;&#xA0;<a href="https://www.pikapods.com/pods?utm_source=noted&amp;run=readeck" rel="noreferrer">Start free with $5 welcome credit</a> <b><strong style="white-space: pre-wrap;">&#x1F917;</strong></b></div></div><h2 id="install-readeck-with-docker-compose">Install Readeck with Docker Compose</h2><p>This Docker Compose stack can be used to install Readeck on your server. If you need help, see our guides about <a href="https://noted.lol/get-started-self-hosting/">getting started with self-hosting</a>.</p><pre><code class="language-yaml">version: &quot;3.9&quot;
services:
  app:
    image: codeberg.org/readeck/readeck:latest
    container_name: readeck
    ports:
      - 8000:8000
    environment:
      # Defines the application log level. Can be error, warning, info, debug.
      - READECK_LOG_LEVEL=info
      # The IP address on which Readeck listens.
      - READECK_SERVER_HOST=0.0.0.0
      # The TCP port on which Readeck listens. Update container port above to match (right of colon).
      - READECK_SERVER_PORT=8000
      # The URL prefix of Readeck.
      - READECK_SERVER_PREFIX=/
      # A list of hostnames allowed in HTTP requests. Required for reverse proxy configuration.
      - READECK_ALLOWED_HOSTS=readeck.example.com
      # Use the &apos;X-Forwarded-&apos; headers. Required for reverse proxy configuration.
      - READECK_USE_X_FORWARDED=true
    volumes:
      - readeck-data:/readeck
    restart: unless-stopped
    healthcheck:
      test: [&quot;CMD&quot;, &quot;/bin/readeck&quot;, &quot;healthcheck&quot;, &quot;-config&quot;, &quot;config.toml&quot;]
      interval: 30s
      timeout: 2s
      retries: 3
volumes:
  readeck-data:</code></pre><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>Readeck is a bookmark management app that bears some resemblance to <a href="https://noted.lol/hoarder/" rel="noreferrer">Hoarder</a>, another popular choice in the space. While it may not boast as many features, Readeck shines by providing a simple and effective way to organize and access your favorite online content. Its clean interface makes it easy to add, categorize, and search through your bookmarks, while its robust feature set allows for tagging, notes, and even integration with other apps and services. With its ability to store all your bookmarks in one central location, Readeck is an excellent option for anyone looking to streamline their digital organization and stay on top of their favorite online content.</p><p>Read more about Readeck on the <a href="https://codeberg.org/readeck/readeck?ref=noted.lol">project page on Codeberg here</a>.</p>]]></content:encoded></item><item><title><![CDATA[Jetlog - Self-Hosted Personal Flight Tracker and Viewer]]></title><description><![CDATA[Track and view your personal flights using the self-hosted Jetlog.]]></description><link>https://noted.lol/jetlog/</link><guid isPermaLink="false">66a383b31df9fc00014552d4</guid><category><![CDATA[Self Hosted Logging]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Fri, 26 Jul 2024 11:52:05 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/self-hosted-jetlog-noted.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/self-hosted-jetlog-noted.jpg" alt="Jetlog - Self-Hosted Personal Flight Tracker and Viewer"><p>There&apos;s a growing need for innovative solutions that cater to the unique needs of frequent flyers. Jetlog is one such project that has great potential. With its focus on empowering users to take control of their own flight tracking experience, Jetlog is set to make a meaningful impact in the aviation community.</p><h2 id="what-is-jetlog">What is Jetlog?</h2><p><a href="https://github.com/pbogre/jetlog?ref=noted.lol">Jetlog</a> is a self-hosted flight tracker and viewer that allows users to add, track, and analyze their own flights, offering a personalized and user-friendly way to explore flight data.</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/2024/07/all-flights.png" width="2000" height="1067" loading="lazy" alt="Jetlog - Self-Hosted Personal Flight Tracker and Viewer" srcset="https://noted.lol/content/images/size/w600/2024/07/all-flights.png 600w, https://noted.lol/content/images/size/w1000/2024/07/all-flights.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/all-flights.png 1600w, https://noted.lol/content/images/size/w2400/2024/07/all-flights.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/07/homepage.png" width="2000" height="1091" loading="lazy" alt="Jetlog - Self-Hosted Personal Flight Tracker and Viewer" srcset="https://noted.lol/content/images/size/w600/2024/07/homepage.png 600w, https://noted.lol/content/images/size/w1000/2024/07/homepage.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/homepage.png 1600w, https://noted.lol/content/images/size/w2400/2024/07/homepage.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="jetlog-core-features">Jetlog Core Features</h2><p><a href="https://github.com/pbogre/jetlog?ref=noted.lol#features"></a></p><ul><li>World map view of all visited airports and trajectories of flights</li><li>Statistics for all your flights</li><li>Responsive design</li><li>Sleek and intuitive UI</li><li>Effortlessly add, edit, and delete past flights</li></ul><h2 id="install-jetlog-using-docker">Install Jetlog Using Docker</h2><p>To get started with Jetlog, installation is easy using Docker. Simply use the <a href="https://github.com/pbogre/jetlog/blob/main/docker-compose.yml?ref=noted.lol">sample docker-compose.yml file from the repository</a> or create your own configuration. When setting up the volume, make sure to map your local directory to <code>/data</code>, and note that the application will run on port 3000 within the container.</p><pre><code class="language-yaml">services:
  jetlog:
    image: pbogre/jetlog
    environment:
     - PUID=1000
     - PGID=1000
     - JETLOG_PORT=3000
    volumes:
      - your/data/path:/data
    restart: unless-stopped
    ports:
      - 3000:3000</code></pre><p>Important: Don&apos;t forget to set proper ownership for the volume you&apos;re binding to the container, as this is required for Jetlog to start successfully.</p><p>If you don&apos;t have Docker installed and need help getting started, I recommend checking out our&#xA0;<a href="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/get-started-self-hosting/?ref=noted.lol">self-hosting guides for beginners</a>. These guides cover the basics of setting up a small server to host apps using Docker. They&apos;re designed to help you get up and running smoothly, even if you&apos;re new to self-hosting.</p><h2 id="using-jetlog">Using Jetlog</h2><p>To add a flight, simply enter the origin and destination airports (which are conveniently auto-filled) along with the date of travel. You can also customize your entry with additional details like departure/arrival times, seat type, and aircraft model.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/jetlog-add-new-flight.png" class="kg-image" alt="Jetlog - Self-Hosted Personal Flight Tracker and Viewer" loading="lazy" width="1920" height="524" srcset="https://noted.lol/content/images/size/w600/2024/07/jetlog-add-new-flight.png 600w, https://noted.lol/content/images/size/w1000/2024/07/jetlog-add-new-flight.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/jetlog-add-new-flight.png 1600w, https://noted.lol/content/images/2024/07/jetlog-add-new-flight.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Once you&apos;ve added a flight, its route and airport information will be displayed on Jetlog&apos;s main map view. You&apos;ll also have access to detailed statistics and flight pages that allow for filtering and sorting. With Jetlog, you can relive your travel experiences by viewing all your past flights on a world map.</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>For those who self-host and frequently fly, Jetlog offers a convenient and customizable way to keep tabs on their travels, making it easy to plan and review trips with precision.</p><p>I&apos;m excited about the possibilities Jetlog brings to the Aviation Industry. It&apos;s remarkable that there&apos;s a significant shortage of innovative software and services addressing this space. As a big fan of this project, I&apos;m eager to follow its development and see where it goes from here.</p><p>To learn more about Jetlog or contribute to the project, see the <a href="https://github.com/pbogre/jetlog?ref=noted.lol">Jetlog Github Repo here</a>. If you find it useful, give it a star!</p>]]></content:encoded></item><item><title><![CDATA[Bezsel: A Lightweight, Self-Hosted, Flexible Server Monitor]]></title><description><![CDATA[Get instant visibility into your self-hosted systems with Beszel. Deploy the agent in seconds and start receiving real-time alerts to stay on top of performance issues.]]></description><link>https://noted.lol/beszel/</link><guid isPermaLink="false">66a243191df9fc0001454aad</guid><category><![CDATA[Self Hosted Monitoring Tools]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Thu, 25 Jul 2024 13:35:22 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/self-hosted-beszel-noted.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/self-hosted-beszel-noted.jpg" alt="Bezsel: A Lightweight, Self-Hosted, Flexible Server Monitor"><p><a href="https://noted.lol/netdata-prometheus-and-grafana/">Grafana and Netdata</a> are great options for server monitoring, but they often require a significant amount of setup time and technical expertise. Beszel takes a different approach. With its Docker Compose-based setup, you can get started with monitoring your virtual machines, containers, and servers quickly and easily. This uncomplicated approach makes it accessible to anyone looking to keep tabs on their systems.</p><h2 id="what-is-beszel">What is Beszel?</h2><p><a href="https://github.com/henrygd/beszel?ref=noted.lol">Beszel</a> is a lightweight platform that provides real-time insights into your system&apos;s performance. With Beszel, you&apos;ll have access to historical data on CPU and memory usage, as well as Docker container metrics like container-specific CPU and memory statistics. You&apos;ll also receive customizable alert notifications for potential issues, so you can take proactive steps to optimize your server performance.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://noted.lol/content/images/2024/07/beszel-self-hosted.png" class="kg-image" alt="Bezsel: A Lightweight, Self-Hosted, Flexible Server Monitor" loading="lazy" width="2000" height="631" srcset="https://noted.lol/content/images/size/w600/2024/07/beszel-self-hosted.png 600w, https://noted.lol/content/images/size/w1000/2024/07/beszel-self-hosted.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/beszel-self-hosted.png 1600w, https://noted.lol/content/images/size/w2400/2024/07/beszel-self-hosted.png 2400w"></figure><h2 id="beszel-core-features">Beszel Core Features</h2><p><a href="https://github.com/henrygd/beszel?tab=readme-ov-file&amp;ref=noted.lol#features"></a></p><ul><li><strong>Lightweight</strong>: Much smaller and less demanding than leading solutions.</li><li><strong>Docker stats</strong>: CPU and memory usage history for each container.</li><li><strong>Alerts</strong>: Configurable alerts for CPU, memory, and disk usage, and system status.</li><li><strong>Multi-user</strong>: Each user has their own systems. Admins can share systems across users.</li><li><strong>Simple</strong>: Easy setup and doesn&apos;t require anything to be publicly available online.</li><li><strong>OAuth / OIDC</strong>: Supports many OAuth2 providers. Password auth can be disabled.</li><li><strong>Automatic backups</strong>: Save and restore your data to / from disk or S3-compatible storage.</li><li><strong>REST API</strong>: Use your metrics in your own scripts and applications.</li></ul><h2 id="getting-started-with-beszel">Getting Started with Beszel</h2><p>Beszel consists of two parts: the <a href="https://github.com/henrygd/beszel/blob/main/hub/docker-compose.yml?ref=noted.lol">Hub</a> and the <a href="https://github.com/henrygd/beszel/blob/main/agent/docker-compose.yml?ref=noted.lol">Agent</a>. The Hub is a web application that lets you view and manage your monitored systems in one place. Meanwhile, the Agent runs on each system you&apos;re monitoring, collecting metrics and sending them to the Hub through a secure connection. For ease of use, you can deploy both components using Docker Compose or install <a href="https://github.com/henrygd/beszel?tab=readme-ov-file&amp;ref=noted.lol#binary" rel="noreferrer">Beszel&apos;s single binary package</a>.</p><h2 id="adding-a-new-systemagent-in-beszel">Adding a New System/Agent in Beszel</h2><p>To add a new system to Beszel, simply follow these steps: Start by clicking the &apos;Add System&apos; button and filling out the required information, including the system&apos;s name and IP address. Once you&apos;ve completed the form, copy the Docker Compose configuration to your clipboard, then deploy it on the machine you want to monitor using a single command. Beszel will automatically detect the new system and begin collecting data.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2757;</div><div class="kg-callout-text">Keep in mind the web interface must be secured behind SSL for copy to clipboard to work. It will not work locally in most cases.</div></div><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/beszel-self-hosted-add-new-system.png" class="kg-image" alt="Bezsel: A Lightweight, Self-Hosted, Flexible Server Monitor" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/07/beszel-self-hosted-add-new-system.png 600w, https://noted.lol/content/images/size/w1000/2024/07/beszel-self-hosted-add-new-system.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/beszel-self-hosted-add-new-system.png 1600w, https://noted.lol/content/images/2024/07/beszel-self-hosted-add-new-system.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Beszel uses PocketBase, a powerful backend platform, to provide advanced features such as automated backups, SMTP alerting, file storage, user management, log viewing, and authentication integration. With PocketBase, Beszel can seamlessly handle these tasks without requiring users to set up complex infrastructure or manage multiple tools.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/beszel-self-hosted-pocketbase.png" class="kg-image" alt="Bezsel: A Lightweight, Self-Hosted, Flexible Server Monitor" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/07/beszel-self-hosted-pocketbase.png 600w, https://noted.lol/content/images/size/w1000/2024/07/beszel-self-hosted-pocketbase.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/beszel-self-hosted-pocketbase.png 1600w, https://noted.lol/content/images/2024/07/beszel-self-hosted-pocketbase.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>I was pleasantly surprised by how smooth the setup process was when I first got started with Bezszel. The Docker Compose configuration made it easy to get both the Hub and Agent running, and before long I was collecting valuable metrics on my system&apos;s performance. It&apos;s been great having this insight into what&apos;s going on under the hood. If you&apos;re looking for a similar solution, Beszel is definitely worth considering.</p><p>Read more about Beszel and contribute to the project over on the <a href="https://github.com/henrygd/beszel?ref=noted.lol">Beszel Github repo</a>. Give it a star if you find it useful!</p>]]></content:encoded></item><item><title><![CDATA[Reminder: Use Docker System Prune to Free up Space]]></title><description><![CDATA[Discover how to free up valuable storage space on your server by using Docker's built-in prune command. Learn how to remove unnecessary images, containers, and volumes with ease, and keep your system running smoothly and efficiently.]]></description><link>https://noted.lol/docker-system-prune/</link><guid isPermaLink="false">66a11c1c1df9fc0001454a1d</guid><category><![CDATA[Self Hosting]]></category><category><![CDATA[How To]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Thu, 25 Jul 2024 11:53:38 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/docker-commands-self-hosting-useful-noted.lol.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/docker-commands-self-hosting-useful-noted.lol.jpg" alt="Reminder: Use Docker System Prune to Free up Space"><p>Docker containers provide a flexible and efficient way to deploy applications, but they can also generate a significant amount of data on your host machine. As you manage your containers and workflows, it&apos;s essential to keep track of this data to avoid cluttering up your system and reducing performance.</p><p>As a user of self-hosted servers, you know how important it is to keep your system running smoothly and efficiently. One of the most effective ways to reclaim valuable storage space is by using Docker&apos;s built-in <code>prune</code> command.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/chrome_59DtxVGnJv.png" class="kg-image" alt="Reminder: Use Docker System Prune to Free up Space" loading="lazy" width="1064" height="622" srcset="https://noted.lol/content/images/size/w600/2024/07/chrome_59DtxVGnJv.png 600w, https://noted.lol/content/images/size/w1000/2024/07/chrome_59DtxVGnJv.png 1000w, https://noted.lol/content/images/2024/07/chrome_59DtxVGnJv.png 1064w"></figure><h2 id="docker-prune-command">Docker Prune Command</h2><p>The <code>docker system prune --all</code> command is a powerful tool that helps you remove unnecessary data and free up disk space on your server. By default, Docker stores various types of data such as images, containers, and volumes on your hard drive. Over time, these files can accumulate and take up significant amounts of space, slowing down your system.</p><p>The <code>prune</code> command is designed to help you clean up this unnecessary data by removing:</p><ul><li>Dangling images: Images that are no longer referenced by a container or the Docker image registry.</li><li>Unused containers: Containers that have stopped running and are not being used.</li><li>Orphaned volumes: Volumes that are no longer associated with a container.</li></ul><p>When you run <code>docker system prune --all</code>, Docker will remove all of these unnecessary items, freeing up valuable disk space on your server. This command is particularly useful when:</p><ul><li>You&apos;re running low on disk space and need to make room for new data.</li><li>You want to optimize your server&apos;s performance by reducing the amount of storage being used.</li><li>You&apos;re planning to upgrade or reconfigure your Docker setup.</li></ul><p>To use the <code>prune</code> command, simply run <code>docker system prune --all</code> in your terminal. Be careful when using this command, as it permanently removes data and cannot be undone. Make sure you&apos;ve backed up any important data before running the command.</p><p>By using <code>docker system prune --all</code>, you can easily free up disk space on your self-hosted server, keeping your systems running smoothly and efficiently.</p><p>Check out other <a href="https://noted.lol/docker-commands/">useful Docker commands</a></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://noted.lol/docker-commands/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Useful Docker Commands for the Self Hosting Enthusiast</div><div class="kg-bookmark-description">Here&#x2019;s a few of my favorite Docker commands to use in a self hosted, homelab environment.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://noted.lol/content/images/size/w256h256/2023/08/Icon-1.2-1.png" alt="Reminder: Use Docker System Prune to Free up Space"><span class="kg-bookmark-author">Noted</span><span class="kg-bookmark-publisher">Jeremy</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://noted.lol/content/images/2023/02/docker-commands-self-hosting-useful-noted.lol.jpg" alt="Reminder: Use Docker System Prune to Free up Space"></div></a></figure><p>As you continue to manage and maintain your self-hosted server, remember that Docker&apos;s <code>prune</code> command is just one tool in your arsenal for ensuring your system runs smoothly and efficiently. By staying on top of disk space usage, updating software regularly, and <a href="https://noted.lol/netdata-prometheus-and-grafana/">monitoring your system&apos;s performance</a>, you&apos;ll be well-equipped to tackle any challenges that come your way.</p>]]></content:encoded></item><item><title><![CDATA[CasaOS - Self Hosting Made Easy for Beginners]]></title><description><![CDATA[Self-host your own personal cloud with ease using CasaOS.]]></description><link>https://noted.lol/casaos/</link><guid isPermaLink="false">669ff5dccaf0210001ac6348</guid><category><![CDATA[Self Hosted Cloud]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Wed, 24 Jul 2024 14:33:02 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/casaos-self-hosted-noted.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/casaos-self-hosted-noted.jpg" alt="CasaOS - Self Hosting Made Easy for Beginners"><p>Imagine being able to manage all your favorite apps, media, and smart home devices from one place. An open-source operating system can make this happen by turning your home server into a personal cloud. It&apos;s designed to be easy to use, so anyone can install and manage apps for streaming, file sharing, and home automation without needing to be a tech expert. Set up your own Netflix-style media library or control smart devices around your house, this system makes it simple, bringing everything together in one convenient package.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/snapshot-dark.jpg" class="kg-image" alt="CasaOS - Self Hosting Made Easy for Beginners" loading="lazy" width="1920" height="1006" srcset="https://noted.lol/content/images/size/w600/2024/07/snapshot-dark.jpg 600w, https://noted.lol/content/images/size/w1000/2024/07/snapshot-dark.jpg 1000w, https://noted.lol/content/images/size/w1600/2024/07/snapshot-dark.jpg 1600w, https://noted.lol/content/images/2024/07/snapshot-dark.jpg 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="what-is-casaos">What is CasaOS?</h2><p><a href="https://casaos.io/?ref=noted.lol">CasaOS</a> is an open-source operating system that simplifies the management of home servers and smart devices by providing a user-friendly interface. It allows users to easily install, manage, and configure applications for personal cloud services, media streaming, and home automation, making it accessible even to those without extensive technical knowledge.</p><p>CasaOS, named after the Spanish word for &quot;home,&quot; began as a pre-installed system for the <a href="https://www.zimaspace.com/products/single-board-server?utm_source=head&amp;utm_medium=menu">ZimaBoard</a>, a Kickstarter product. After evaluating many systems and software, it became evident that there was no server system specifically designed for home use. To fill this gap, CasaOS was developed as an open-source project with input from the community and individuals worldwide. By encouraging community-driven collaboration and open communication with global developers, CasaOS aims to transform the digital home experience. The project seeks to create a seamless, user-friendly system that empowers users to manage their digital homes effortlessly, fostering a more connected and efficient home environment.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/casaos_banner_dark_night_800x300.png" class="kg-image" alt="CasaOS - Self Hosting Made Easy for Beginners" loading="lazy" width="800" height="300" srcset="https://noted.lol/content/images/size/w600/2024/07/casaos_banner_dark_night_800x300.png 600w, https://noted.lol/content/images/2024/07/casaos_banner_dark_night_800x300.png 800w"></figure><p>CasaOS leverages Docker to simplify app installation. By using Docker, CasaOS provides a lightweight and flexible way to deploy applications, allowing users to easily create and manage containers for their favorite services. This approach makes it easy to get started with self-hosting without worrying about complex setup procedures.</p><h2 id="casaos-features">CasaOS Features</h2><p><a href="https://github.com/IceWhaleTech/CasaOS?ref=noted.lol#features"></a></p><ul><li>Friendly UI designed for home scenarios</li><li>No code, no forms, intuitive, design for humanity</li><li>Multiple hardware and base system support</li><li>ZimaBoard, NUC, RPi, old computers, whatever is available.</li><li>Selected apps in the app store, one-click installation</li><li>Nextcloud, HomeAssistant, AdGuard, Jellyfin, *arr and more!</li><li>Easily install numerous Docker apps</li><li>Over 100,000 apps from the Docker ecosystem can be easily installed</li><li>Elegant drive and file management</li><li>What you see is what you get. No technical background required.</li><li>Well-designed system/app widgets</li><li>What you care about, at a glance. Resource usage, app status, and more!</li></ul><h2 id="install-casaos">Install CasaOS</h2><p>To set up CasaOS on your Linux computer, you can use a Bash script that automates the process for you. Simply open your terminal and run the script. It will handle all the necessary steps, including downloading and installing the software, setting up dependencies, and configuring everything to work well together. This makes it easy to get started with CasaOS in your home environment without needing technical expertise.</p><pre><code class="language-bash">curl -fsSL https://get.casaos.io | sudo bash</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/CasaOS-install-bash.png" class="kg-image" alt="CasaOS - Self Hosting Made Easy for Beginners" loading="lazy" width="877" height="312" srcset="https://noted.lol/content/images/size/w600/2024/07/CasaOS-install-bash.png 600w, https://noted.lol/content/images/2024/07/CasaOS-install-bash.png 877w"></figure><p>By default, CasaOS uses port 80 for the web interface so when the installation is complete, navigate to the IP of the machine you installed it on.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/07/CasaOS-install-register.jpg" class="kg-image" alt="CasaOS - Self Hosting Made Easy for Beginners" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/07/CasaOS-install-register.jpg 600w, https://noted.lol/content/images/size/w1000/2024/07/CasaOS-install-register.jpg 1000w, https://noted.lol/content/images/size/w1600/2024/07/CasaOS-install-register.jpg 1600w, https://noted.lol/content/images/2024/07/CasaOS-install-register.jpg 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>To begin, create your personalized account and log in to the CasaOS web interface. As you become comfortable with the layout and features, navigate to the app store where you&apos;ll find an extensive library of self-hosted apps designed specifically for your personal use. With just a few clicks, you can browse and discover new applications, such as media streaming services, automation tools, and more.</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/2024/07/casaos-app-store.png" width="1920" height="911" loading="lazy" alt="CasaOS - Self Hosting Made Easy for Beginners" srcset="https://noted.lol/content/images/size/w600/2024/07/casaos-app-store.png 600w, https://noted.lol/content/images/size/w1000/2024/07/casaos-app-store.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/casaos-app-store.png 1600w, https://noted.lol/content/images/2024/07/casaos-app-store.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/07/casaos-manual-app-install-docker-compose.png" width="1920" height="911" loading="lazy" alt="CasaOS - Self Hosting Made Easy for Beginners" srcset="https://noted.lol/content/images/size/w600/2024/07/casaos-manual-app-install-docker-compose.png 600w, https://noted.lol/content/images/size/w1000/2024/07/casaos-manual-app-install-docker-compose.png 1000w, https://noted.lol/content/images/size/w1600/2024/07/casaos-manual-app-install-docker-compose.png 1600w, https://noted.lol/content/images/2024/07/casaos-manual-app-install-docker-compose.png 1920w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>CasaOS provides a comprehensive range of application installation methods that cater to different needs and preferences. You can effortlessly install an app using the user friendly app store, which offers a curated selection of popular applications. Alternatively, you can take advantage of the built in Docker Compose importer for more advanced manual installations. This feature allows you to import existing Docker Compose files or create new ones, giving you fine-grained control over your application configurations. With CasaOS, you don&apos;t have to rely solely on tools like <a href="https://noted.lol/install-docker-and-portainer/">Portainer</a> to manage your Docker applications, offering greater flexibility and control over your setup.</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>I have to admit, I was initially skeptical about using self-hosted cloud solutions due to the lack of app support. However, after learning more about its features, I&apos;m impressed by its potential as an all-in-one solution. The ability to add custom apps using Docker Compose imports is a huge plus! Plus, it&apos;s incredibly easy to install on top of many Linux distributions.</p><p>What really excites me though, is the prospect of CasaOS serving as a gateway to self-hosting for beginners. It provides a gentle learning curve, allowing people to dip their toes into the world of self-hosting without feeling overwhelmed by complex setup processes. With CasaOS, users can get started with self-hosting and then gradually explore more advanced features and customization options as they become more comfortable.</p><p>Learn more about the CasaOS project or even contribute to the project over on the <a href="https://github.com/IceWhaleTech/CasaOS?ref=noted.lol">CasaOS Github repo</a>.</p>]]></content:encoded></item><item><title><![CDATA[ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server]]></title><description><![CDATA[Experience the power of community-driven video streaming with Ersatz TV - personalize your channels, stream your own content, and embrace a diverse media landscape!]]></description><link>https://noted.lol/ersatztv-a-comprehensive-guide-to-setting-up-a-private-iptv-server/</link><guid isPermaLink="false">669ff5dccaf0210001ac6380</guid><category><![CDATA[Self Hosted Media Serving]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Mon, 24 Jun 2024 16:23:00 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/ersatztv-notedlol.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/ersatztv-notedlol.jpg" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server"><p>The way we consume television is undergoing a major transformation. With the rise of streaming services and social media platforms, traditional TV has become more accessible than ever before. But what if you could take control of your own television experience? Enter ErsatzTV, a community driven project that aims to revolutionize the way we watch and interact with each other through decentralized, open-source video content. ErsatzTV is poised to shake up the status quo and give viewers more choice, more control, and more opportunity for connecting to streaming media.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/chrome_YMxhWn3VdT.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911"></figure><h2 id="what-is-ersatztv">What is ErsatzTV?</h2><p><a href="https://github.com/ErsatzTV/ErsatzTV?ref=noted.lol">ErsatzTV</a>&#xA0;is a community-driven project that allows users to stream their own video content in a decentralized manner. By empowering creators to share their work directly with viewers, it offers an innovative and diverse media landscape for both entertainment and educational purposes. With features like customizable schedules and personalized channels, ErsatzTV provides an easy-to-use platform for creating and enjoying your favorite streaming content.</p><h3 id="core-features">Core Features</h3><ul><li>Use local media files and optional sidecar&#xA0;<a href="https://kodi.wiki/view/NFO_files?ref=noted.lol" rel="nofollow">NFO metadata</a>; no need for a full media server</li><li>IPTV server and HDHomeRun emulation support a wide range of client applications</li><li>Channel-specific streaming mode (MPEG-TS or HLS) and transcoding settings</li><li>Collection-based scheduling, with collections containing television shows, seasons, episodes and movies</li><li>Powerful scheduling options such as chronological collection playback throughout the day or over multiple days</li><li>Hardware-accelerated transcoding options (QSV, NVENC, VAAPI)</li><li><a href="https://www.plex.tv/?ref=noted.lol" rel="nofollow">Plex</a>&#xA0;media and metadata</li><li><a href="https://jellyfin.org/?ref=noted.lol" rel="nofollow">Jellyfin</a>&#xA0;media and metadata</li><li><a href="https://emby.media/?ref=noted.lol" rel="nofollow">Emby</a>&#xA0;media and metadata</li><li>Song and music video libraries</li><li>Pre-roll, mid-roll, post-roll filler options</li><li>Subtitle burn-in</li></ul><h2 id="why-use-ersatztv">Why use ErsatzTV?</h2><p>Have you ever ran into a self-hosted app that you never knew you needed? That&apos;s how I felt with&#xA0;<a href="https://www.reddit.com/r/selfhosted/comments/1dmh3mt/what_are_your_selfhosted_apps_you_cant_live/?ref=noted.lol">ErsatzTV when I saw it being talked about over on the r/selfhosted subreddit</a>. I thought to myself &quot;why would I need that?&quot; Then I got to reading the comments and saw someone mention a concern I had which was - what if the service keeps running in the background even when I&apos;m not using it? It turned out to be just the opposite.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/chrome_7TqCm7BNT7.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="592" height="350"></figure><p>As I thought more about ErsatzTV, a question kept popping up: why do people need this app? But then I remembered my own experiences trying to find something to watch with my family, we&apos;d all agree on nothing! That&apos;s when it clicked: ErsatzTV helps you curate your favorite content into streaming channels that play seamlessly. Just turn it on, and there&apos;s always something good playing.</p><p>You can also use ErsatzTV as a live music streaming station, home videos, YouTube videos and all sorts of other media you can think of.</p><h2 id="installing-ersatztv-using-docker">Installing ErsatzTV using Docker</h2><p>In my personal setup, I integrate ErsatzTV with Emby for seamless streaming. However, it&apos;s worth noting that other popular streaming apps like Plex and Jellyfin can also be used in conjunction with ErsatzTV, depending on your preferences and needs.</p><p>ErsatzTV is it&apos;s own standalone app that sees your media via a Docker volume mount. Take the following Docker Compose and change it to your needs. If you do not have Docker installed, see our&#xA0;<a href="https://noted.lol/get-started-self-hosting/" rel="noreferrer">guides about getting started with self-hosting</a>.</p><pre><code class="language-yamlversion:">version: &apos;3.9&apos;
services:
    ersatztv:
        image: jasongdove/ersatztv
        restart: unless-stopped
        volumes:
            - &apos;/srv/tv:/tv:ro&apos;
            - &apos;/srv/movies:/movies:ro&apos;
            - &apos;/srv/docker/ersatztv:/root/.local/share/ersatztv&apos;
        ports:
            - &apos;8409:8409&apos;
        environment:
            - TZ=America/Washington
        container_name: ersatztv
</code></pre><p>To set up our local media on ErsatzTV, we can create TV and Movies volumes in the compose file. It&apos;s possible to link your Emby instance by using an API key, but I encountered some permission issues and found it easier to simply mount the volumes instead. This method seems to work well for me.</p><p>Once you get Ersatz up and running via Docker, visit the web UI on port 8409.</p><h2 id="adding-a-local-media-source">Adding a Local Media Source</h2><p>The first thing I would do when you get to the ErsatzTV web UI is add a local media source. With this, we will use TV shows as the example. Click on &quot;Local&quot; under the Media Sources section on the left side panel. Now find &quot;Shows&quot; and click edit. Here you can add the path where our TV shows are. If you recall in the Docker Compose, it is mounted to /tv within the container. So that is what we will put in the path, then click &quot;Add Path&quot; then &quot;Save Changes&quot;.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-add-source.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911"></figure><p>This will trigger a media scan and I recommend letting it scan your media before you do anything else. You don&apos;t have to wait but I recommend it to avoid running into any issues. Once the scan is complete you should now see your TV shows listed alphabetically under localhost:8409/media/tv/shows. If it does not initiate a scan, you can go to the Libraries section under Media and initiate the scan for Shows.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/07/ersatztv-tvshows.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911"></figure><p>If you want metadata and posters to show within Ersatz, you must have posters and NFO handling enabled in Emby. The scan in Ersatz is noticeably faster without all the metadata and posters however, it looks much nicer with it. You can enable the options in Emby and rescan your libraries.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/07/ersatz-tvshow-view.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911"></figure><h2 id="adding-channels-collections-schedules-and-playouts-in-ersatztv">Adding Channels, Collections, Schedules and Playouts in ErsatzTV</h2><p>While the&#xA0;<a href="https://ersatztv.org/docs/intro?ref=noted.lol">ErsatzTV documentation</a>&#xA0;is very well written, I thought this part was a bit confusing. So I&apos;ll try to do my best explaining how channels are added and the process of getting them working properly. Overall, if you know the proper steps, it&apos;s not difficult.</p><h3 id="step-1-add-a-channel">Step 1: Add a Channel</h3><p>The default FFmpeg profile should work for you but will work better if you use a GPU. I do not have a GPU in this particular server however, you can use what&apos;s called&#xA0;<a href="https://en.wikipedia.org/wiki/HTTP_Live_Streaming?ref=noted.lol"><strong>HTTP Live Streaming</strong></a>&#xA0;also known as HLS Direct. It&#xA0;does not transcode content and can perform better on low power systems, but does not support watermarks and some clients will have issues at program boundaries. Keep in mind that if you use the default MPEG-TS Streaming Mode, it WILL use your CPU or GPU. You can try both modes to see which you prefer but make sure to give the system time to idle down your CPU or GPU before trying each option. It can take a couple minutes.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-add-channel-hls.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911"></figure><p>Adding a channel is pretty basic. You should already have an idea of what type of content you will be streaming on this channel. As an example, I will create one called Family.</p><p>I have 4 other channels already so for this example I will use number 5 as the channel number. From here, I name it Family, change the Streaming Mode to HLS Direct and everything else stays as is. You can change things but this is bare minimum setup to get your channel going. Upload a logo of your choice and hit &quot;Add Channel&quot;.</p><h3 id="step-2-create-a-collection">Step 2: Create a Collection</h3><p>Collections are used as groups for the media you want to stream on a schedule.&#xA0;<strong>Once you create a collection you need to add media to that collection</strong>. Since we are making a Family channel, I&apos;ll add shows like Full House, Home Improvement, Step by Step etc. You can also add single episodes rather than the whole series if you wish. You can add media to a collection by browsing to TV Shows under Media on the left side panel. You can either use the search bar at the top or the alphabet index on the right side to make the process quicker.</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://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-add-collection.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server"></div><div class="kg-gallery-image"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-add-media-collection.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server"></div></div></div></figure><h3 id="step-3-add-a-schedule">Step 3: Add a Schedule</h3><p>The schedule is what tells the channel how often it will play.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-add-schedule.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911"></figure><p>To create a new schedule, start by clicking &quot;Add Schedule.&quot; For this example we will use the Shuffle Schedule option. You can change this as you get more used to how the application works. Again, naming the schedule &quot;Family&quot; to keep everything organized and so I know which collections, schedules and playouts go together.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-add-schedule-item.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911"></figure><p>Then, you can proceed to add a new Schedule Item. To do this, click on the relevant button and enter the Collection name in the provided field. It will auto populate with the collections you have if you type the name correctly. Once you&apos;ve saved your item, the schedule will know which media is being scheduled for playback. For now, everything else stays as default. Make sure you save the changes.</p><h3 id="step-4-add-a-playout">Step 4: Add a Playout</h3><p>The final stage is adding the playout. Playouts are essential components in ErsatzTV, as they assign schedules to specific channels and track their individual playback of collection items. When using the same schedule across multiple channels (playouts), it&apos;s important to note that the content may not necessarily play simultaneously on all channels due to differences in timing or other factors. This ensures a more personalized viewing experience for each channel, tailored to its unique audience and preferences.</p><p>Under &quot;Schedule&quot; on the left panel, click Playouts and add a new one.</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://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-add-playout.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server"></div><div class="kg-gallery-image"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-add-playout-edit.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server"></div></div></div></figure><p>Add the name of the channel and schedule we created then click &quot;Add Playout&quot;. Now you can view your playout and see the media that is shuffled in the list to be streamed. You can reshuffle the order by clicking the the circle with an arrow icon. Keep in mind, if you reshuffle, it may take a while to change in the Emby guide, or you can manually update/refresh the guide.</p><h2 id="adding-the-iptv-link-and-guide-to-emby">Adding the IPTV link and Guide to Emby</h2><p>To implement the stream into Emby it is very simple. In the upper right corner on ErsatzTV web UI, you should see the M3U link. Right click that link and copy to your clipboard. Now navigate into Emby in the server dashboard to Live TV.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-add-to-emby.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1118" height="539"></figure><p>Add a new TV Source as a M3U tuner then paste the link in your clipboard.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-add-to-emby-2.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1060" height="554"></figure><p>Scroll down and click save. Now go back to your ErsatzTV web UI and right click the XMLTV link and copy that to your clipboard. Back on the Emby Live TV page, add a Guide Data Source, choose your country and select XMLTV. Click next and paste the link into the url input from your clipboard.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-add-to-emby-guide.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1073" height="571"></figure><p>Now if we should be able to find our &quot;Family&quot; channel by searching for it in Emby.</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://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-emby-1.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server"></div><div class="kg-gallery-image"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-emby-2.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server"></div></div></div></figure><p>When you click on a channel in Emby, you can view the list of collection items that are scheduled to play. This makes it easy to keep track of what&apos;s currently streaming and plan your viewing accordingly. And with the ability to customize each channel&apos;s schedule in ErsatzTV, you can create a truly personalized media experience for every member of your family.</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>I&apos;m running ErsatzTV on an i7 8700k CPU without a GPU and it seems to run great using the MPEG-TS Stream Mode, however it does run up the cores pretty good. But that&apos;s ffmpeg for you.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-btop-stats.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1403" height="581"></figure><p>Running it using the HLS Direct Streaming Mode uses... no resources? I&apos;m not sure what this sorcery is but I like it ALOT!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/ersatztv-btop-stats-HLS.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1880" height="968"></figure><p>It may take a while for the channels to start streaming on your devices when using HLS Direct but maybe it&apos;s worth it if you are using a lower powered machine.</p><p>Here&apos;s an interesting tidbit, the man behind ErsatzTV,&#xA0;<a href="https://jasondove.me/?ref=noted.lol">Jason Dove</a>, happens to be the lead developer for Disney Streaming! Isn&apos;t it ironic that he&apos;s helping to create a platform that competes with his own employer? It just goes to show that innovation and creativity often come from unexpected places.</p><p>If you enjoy this app, be sure to swing by the&#xA0;<a href="https://github.com/ErsatzTV/ErsatzTV?ref=noted.lol">ErsatzTV Github repo</a>&#xA0;and give it a star. Maybe consider becoming a sponsor of the project! I would also ask that you ask any support related questions for Ersatz there on the Github issue tracker.</p><p><a href="https://discord.gg/zA9FT8qW9g?ref=noted.lol">Check us out on Discord</a>&#xA0;and join over 1,200 members who self-host apps like this!</p>]]></content:encoded></item><item><title><![CDATA[Syncthing or Resilio Sync - Self-Hosted File Syncing]]></title><description><![CDATA[In this comparison, we'll dive into the features and benefits of Syncthing and Resilio Sync, the two leading self-hosted file synchronization platforms.]]></description><link>https://noted.lol/syncthing-or-resilio-sync/</link><guid isPermaLink="false">66a655741df9fc0001455b1f</guid><category><![CDATA[Self Hosted File Syncing]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Wed, 19 Jun 2024 17:05:00 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/syncthing-or-resilio-sync-self-hosted-noted.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/syncthing-or-resilio-sync-self-hosted-noted.jpg" alt="Syncthing or Resilio Sync - Self-Hosted File Syncing"><p>Self-hosted file synchronization solutions offer a convenient way to keep your files organized across multiple devices. By hosting a solution yourself, you can maintain control over your data and ensure that it is accessible whenever and wherever you need it. In this comparison, we&apos;ll examine two popular options: Syncthing and Resilio Sync. Both solutions allow you to synchronize files between devices, providing a range of features and settings to tailor your experience.</p><p>Syncthing and Resilio Sync are two popular, self-hosted file synchronization applications. While they have their differences, they also share several similarities. Here are some common features they share:</p><p>&#x2022; <strong>Decentralized architecture</strong>: Both Syncthing and Resilio Sync operate on a decentralized network, allowing users to synchronize files between devices without relying on a centralized server.<br>&#x2022; <strong>Peer-to-peer (P2P) synchronization</strong>: Files are transferred directly between devices, reducing the need for central servers or intermediaries.<br>&#x2022; <strong>End-to-end encryption</strong>: Both applications encrypt data in transit and at rest using strong cryptography, ensuring that only authorized devices can access and read your files.<br>&#x2022; <strong>Self-hosted</strong>: You can install and run both Syncthing and Resilio Sync on your own server or device, giving you full control over your data and synchronization process.<br>&#x2022; <strong>Two-way syncing</strong>: Both applications allow for bi-directional file synchronization, ensuring that changes made to files on one device are reflected on other connected devices.<br>&#x2022; <strong>Block-level synchronization</strong>: Instead of transferring entire files, both Syncthing and Resilio Sync use block-level synchronization, which reduces the amount of data transferred and increases performance.<br>&#x2022; <strong>Resilient and fault-tolerant</strong>: Both applications are designed to handle network disruptions, device failures, or other issues that might affect the synchronization process.<br>&#x2022; <strong>Customizable</strong>: You can customize various settings, such as file filtering, exclusion lists, and synchronization intervals, to tailor the experience to your needs.<br>&#x2022; <strong>Multi-platform support</strong>: Both Syncthing (with its WebUI) and Resilio Sync (with its Desktop App) offer cross-platform compatibility, allowing you to synchronize files across multiple devices and operating systems.<br>&#x2022; <strong>Open-source</strong>: Both applications are open-source, which means that their code is freely available for modification, review, and contribution by the community.</p><p>Here are some of the key differences between Resilio Sync and Syncthing</p><p>&#x2022; <strong>Protocol</strong>:<br>+ Resilio Sync uses the BitTorrent protocol to facilitate peer-to-peer file transfers<br>+ Syncthing uses its own proprietary protocol (based on libp2p)</p><p>&#x2022; <strong>Encryption</strong>:<br>+ Both tools offer end-to-end encryption for secure data transfer, but:<br>- Resilio Sync uses AES-256-CBC encryption<br>- Syncthing uses AES-128-CBC encryption</p><p>&#x2022; <strong>Scalability</strong>:<br>+ Resilio Sync is designed to handle large-scale file transfers and is more suitable for use cases involving thousands of files or a large number of devices<br>+ Syncthing is better suited for smaller-scale file synchronization needs</p><p>&#x2022; <strong>Security features</strong>:<br>+ Resilio Sync includes advanced security features like:<br>- Mandatory encryption (default)<br>- Perfect Forward Secrecy (PFS) for added protection<br>- Support for self-signed certificates<br>- Integration with third-party authentication services (e.g., OpenID Connect)<br>+ Syncthing focuses on simplicity and ease of use, with:<br>- End-to-end encryption (AES-128-CBC)<br>- Optional password-based authentication</p><p>&#x2022; <strong>User interface</strong>:<br>+ Resilio Sync has a more polished, user-friendly interface with features like:<br>- A centralized dashboard for monitoring synchronization activity<br>- Support for multiple devices and folders<br>- Automated folder creation and organization<br>+ Syncthing&apos;s interface is more command-line focused, with a focus on simplicity and ease of use</p><p>&#x2022; <strong>Licensing</strong>:<br>+ Resilio Sync offers both free and paid versions (Resilio Sync Pro)<br>+ Syncthing is open-source software, released under the GNU Affero General Public License (AGPL)</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>Personally, I&apos;ve found that Syncthing suits my needs perfectly because of its simplicity and ease of use. As someone who values control over their data, I appreciate that Syncthing doesn&apos;t rely on any centralized servers or cloud services. The lack of complexity in the interface makes it easy for me to quickly set up and manage my file synchronization without feeling bogged down by a plethora of features. Additionally, the optional password-based authentication provides an added layer of security, giving me peace of mind knowing that only authorized devices can access my files. Overall, Syncthing&apos;s minimalist approach has made it a reliable choice for keeping my data in sync across multiple devices.</p><p>Lawrence Systems did a fantastic video tutorial on setting up Syncthing and I highly recommend checking it out.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/se4V-CgO7ZM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Syncthing Tutorial: Open Source &amp; Private File Sync Made Simple"></iframe></figure><p>At first glance, Syncthing&apos;s setup may seem intricate, with multiple configuration steps to complete. However, once all your devices are connected and the initial setup is done, you&apos;ll find that using Syncthing is surprisingly simple, allowing you to easily manage your file synchronization.</p>]]></content:encoded></item><item><title><![CDATA[Hoarder - The Ultimate All-In-One Bookmark and Note Taking App]]></title><description><![CDATA[Bring your links, bookmarks, notes and code snippets to one self-hosted location using Hoarder. The ultimate all-In-one bookmark and note taking app.]]></description><link>https://noted.lol/hoarder/</link><guid isPermaLink="false">669ff5dccaf0210001ac637f</guid><category><![CDATA[Self Hosted Note Taking apps]]></category><category><![CDATA[Self Hosted Bookmark and Link Saving apps]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Thu, 06 Jun 2024 16:20:00 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/hoarder-self-hosted-noted.lol.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/hoarder-self-hosted-noted.lol.jpg" alt="Hoarder - The Ultimate All-In-One Bookmark and Note Taking App"><p>There are lots of self-hosted note-taking apps and plenty of link-saving and bookmarking apps. But not many apps let you do both in one place. That&apos;s where Hoarder comes in. It handles both tasks and more.</p><h2 id="what-is-hoarder">What is Hoarder?</h2><p><a href="https://github.com/hoarder-app/hoarder?ref=noted.lol" rel="noreferrer">Hoarder</a>&#xA0;is a self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search.</p><p>Hoarder is quite the fun tool for creating notes, saving links and images making it easy to... well, hoard all your data in one place.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/hoarder-1.png" class="kg-image" alt="Hoarder - The Ultimate All-In-One Bookmark and Note Taking App" loading="lazy" width="1920" height="919"></figure><p>Did I mention it also has a&#xA0;<a href="https://github.com/hoarder-app/hoarder?tab=readme-ov-file&amp;ref=noted.lol#features" rel="noreferrer">Chrome and Firefox extension</a>? Yeah it has that too! You can quickly save pages with a flick of a button on the extension to your self-hosted Hoarder app. Just plop in the server address, log in and it&apos;s done.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/hoarder-extension.png" class="kg-image" alt="Hoarder - The Ultimate All-In-One Bookmark and Note Taking App" loading="lazy" width="1919" height="832"></figure><p>You can add tags and add it to a list straight from the extension. But let&apos;s look closer at the app itself and all the features behind it.</p><h2 id="hoarder-primary-features">Hoarder Primary Features</h2><ul><li>Bookmark links, take simple notes and store images.</li><li>Automatic fetching for link titles, descriptions and images.</li><li>Sort your bookmarks into lists.</li><li>Full text search of all the content stored.</li><li>AI-based (aka chatgpt) automatic tagging. With supports for local models using ollama!</li><li><a href="https://chromewebstore.google.com/detail/hoarder/kgcjekpmcjjogibpjebkhaanilehneje?ref=noted.lol" rel="nofollow">Chrome plugin</a>&#xA0;and&#xA0;<a href="https://addons.mozilla.org/en-US/firefox/addon/hoarder/?ref=noted.lol" rel="nofollow">Firefox addon</a>&#xA0;for quick bookmarking.</li><li>An&#xA0;<a href="https://apps.apple.com/us/app/hoarder-app/id6479258022?ref=noted.lol" rel="nofollow">iOS app</a>, and an&#xA0;<a href="https://play.google.com/store/apps/details?id=app.hoarder.hoardermobile&amp;pcampaignid=web_share&amp;ref=noted.lol" rel="nofollow">Android app</a>.</li><li>Dark mode support (web only so far).</li><li>Self-hosting first.</li><li>[Planned] Downloading the content for offline reading.</li></ul><h2 id="install-hoarder-using-docker">Install Hoarder using Docker</h2><p>If you don&apos;t have Docker installed and need help getting started, I recommend checking out our&#xA0;<a href="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/get-started-self-hosting/?ref=noted.lol">self-hosting guides for beginners</a>. These guides cover the basics of setting up a small server to host apps using Docker. They&apos;re designed to help you get up and running smoothly, even if you&apos;re new to self-hosting.</p><p>For more detailed instructions, see the&#xA0;<a href="https://docs.hoarder.app/Installation/docker?ref=noted.lol">Hoarder documentation here</a>.</p><p>First you will need to create an .env file with the following:</p><pre><code>HOARDER_VERSION=latest
NEXTAUTH_SECRET=qxo0NvLCphGhkAu5fBcS1B0MxCeoig8G
MEILI_MASTER_KEY=aqxYm5UWCphGhkAu5fBcSJAPbSzeoiC2X
NEXTAUTH_URL=http://localhost:3000</code></pre><p>Change the secret keys if you wish.</p><p>Create a docker-compose.yml file and place it along side the .env file with the following:</p><pre><code>version: &quot;3.8&quot;
services:
  web:
    image: ghcr.io/hoarder-app/hoarder-web:latest
    restart: unless-stopped
    volumes:
      - /docker/hoarder/data:/data
    ports:
      - 3000:3000
    env_file:
      - .env
    environment:
      REDIS_HOST: redis
      MEILI_ADDR: http://meilisearch:7700
      DATA_DIR: /data
  redis:
    image: redis:7.2-alpine
    restart: unless-stopped
    volumes:
      - /docker/hoarder/redis:/data
  chrome:
    image: gcr.io/zenika-hub/alpine-chrome:123
    restart: unless-stopped
    command:
      - --no-sandbox
      - --disable-gpu
      - --disable-dev-shm-usage
      - --remote-debugging-address=0.0.0.0
      - --remote-debugging-port=9222
      - --hide-scrollbars
  meilisearch:
    image: getmeili/meilisearch:v1.6
    restart: unless-stopped
    env_file:
      - .env
    environment:
      MEILI_NO_ANALYTICS: &quot;true&quot;
    volumes:
      - /docker/hoarder/meilisearch:/meili_data
  workers:
    image: ghcr.io/hoarder-app/hoarder-workers:latest
    restart: unless-stopped
    volumes:
      - /docker/hoarder/data:/data
    env_file:
      - .env
    environment:
      REDIS_HOST: redis
      MEILI_ADDR: http://meilisearch:7700
      BROWSER_WEB_URL: http://chrome:9222
      DATA_DIR: /data
      # OPENAI_API_KEY: ...
    depends_on:
      web:
        condition: service_started

volumes:
  redis:
  meilisearch:
  data:</code></pre><p>You can change the volume locations to your needs for persistent data. Keep in mind this needs that .env file in order to work properly. You can&#xA0;<a href="https://docs.hoarder.app/configuration?ref=noted.lol#inference-configs-for-automatic-tagging">implement OpenAI for automatic tagging</a>&#xA0;if you wish but we will not be covering that today.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/hoarder-homepage.png" class="kg-image" alt="Hoarder - The Ultimate All-In-One Bookmark and Note Taking App" loading="lazy" width="2000" height="1079"></figure><h2 id="using-hoarder">Using Hoarder</h2><p>Currently, Hoarder is behind authentication and only available for private use which is fine for most people. So you will have to register a new account. The first account will be setup as the administrator of Hoarder. They have been looking at ways to allow users to share notes publicly&#xA0;<a href="https://github.com/hoarder-app/hoarder/issues/37?ref=noted.lol">here</a>&#xA0;and&#xA0;<a href="https://github.com/hoarder-app/hoarder/issues/126?ref=noted.lol">here</a>.</p><p>Once logged in you can paste a link and Hoarder will fetch the data to be displayed including cached content or text, a screenshot and soon to come an archive for offline viewing of the content. Perhaps as a PDF? Not sure yet but we will see soon!</p><p>You can view the saved data by clicking on the expand icon on the lower right side of the bookmark card.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/06/hoarder-bookmark.png" class="kg-image" alt="Hoarder - The Ultimate All-In-One Bookmark and Note Taking App" loading="lazy" width="1920" height="953"></figure><p>From here, you can add tags and create notes that will appear in search results, which I think is just awesome! At the top, there&apos;s a small dropdown menu where you can switch from Cached Content to Screenshot. Soon, you&apos;ll also be able to access archived content. This feature makes organizing and finding your information so much easier.</p><p>Hoarder has mobile apps for both iOS and Android, which is great for keeping everything synced across devices. I haven&apos;t checked them out yet, but I&apos;ve heard they are pretty awesome from folks on the selfhosted Reddit sub. They say the mobile experience is smooth and feature-rich, making it easy to access your notes, links, and images on the go. I&apos;m excited to see how well it works in my daily routine.</p><figure class="kg-card kg-embed-card"><blockquote class="reddit-embed-bq" style="height:316px">
<a href="https://www.reddit.com/r/selfhosted/comments/1bo9tdq/introducing_hoarder_an_open_source/?ref=noted.lol">Introducing Hoarder &#x1F4E6; - An open source Bookmark-Everything app with AI based tagging (mymind open source alternative)</a><br> by
<a href="https://www.reddit.com/user/MohamedBassem/?ref=noted.lol">u/MohamedBassem</a> in
<a href="https://www.reddit.com/r/selfhosted/?ref=noted.lol">selfhosted</a>
</blockquote>
<script async src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script></figure><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p><a href="https://www.reddit.com/user/MohamedBassem/?ref=noted.lol">Mohamed Bassem</a>, the creator of Hoarder, is really passionate about the project. He&apos;s actively working on it and welcomes ideas and requests from users. If you have any suggestions, issues, or just want to say thank you, head over to the&#xA0;<a href="https://github.com/hoarder-app/hoarder?ref=noted.lol">Hoarder project page on GitHub</a>&#xA0;and check it out.</p><p>I&apos;ve been using&#xA0;<a href="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/memos/?ref=noted.lol">Memos</a>&#xA0;for things like this, and I recently discovered that the creator of Hoarder used to use Memos too. What a coincidence! I&apos;ve been searching for an all-in-one solution for links, notes, images, and code snippets, and Hoarder just might be the answer. It was designed with people like us in mind, bringing everything together in one convenient place. This could really streamline how I organize my information and I hope you are as excited to use Hoarder as I am!</p>]]></content:encoded></item><item><title><![CDATA[Create your own Self-Hosted Chat AI Server with Ollama and Open WebUI]]></title><description><![CDATA[Let's build our own private, self-hosted version of ChatGPT using open source tools. This time using OLLAMA and Open WebUI.]]></description><link>https://noted.lol/ollama-openwebui/</link><guid isPermaLink="false">669ff5dccaf0210001ac637e</guid><category><![CDATA[Self Hosted AI Tools]]></category><dc:creator><![CDATA[Jeremy]]></dc:creator><pubDate>Wed, 29 May 2024 16:17:00 GMT</pubDate><media:content url="https://noted.lol/content/images/2024/07/ollama-openwebui-noted.png" medium="image"/><content:encoded><![CDATA[<img src="https://noted.lol/content/images/2024/07/ollama-openwebui-noted.png" alt="Create your own Self-Hosted Chat AI Server with Ollama and Open WebUI"><p>I&apos;m really impressed by the potential of self-hosted AI chat, but when it comes down to it, I think it&apos;s essential to keep my data under my own roof. Hosting it myself gives me peace of mind knowing that my personal info isn&apos;t being siphoned off for who-knows-what purposes.</p><p>I decided to build a mid-range AI processing server using some extra hardware I had in storage. Here&apos;s a glance inside and here are the specs.</p><ul><li>32GB of RAM</li><li>i5 10600K CPU</li><li>NVIDIA GeForce GTX 2080 Ti</li><li>2TB SSD</li></ul><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/05/OLLAMA-AI-server-noted-1.jpeg" class="kg-image" alt="Create your own Self-Hosted Chat AI Server with Ollama and Open WebUI" loading="lazy" width="2000" height="1500"></figure><p>Nothing super fancy but it will be plenty powerful enough for my use case. I may upgrade to a larger CPU and SSD some time in the future but it has been performing wonderfully so far.</p><h2 id="what-is-ollama">What is Ollama?</h2><p><a href="https://ollama.com/?ref=noted.lol" rel="noreferrer">OLLAMA</a>&#xA0;lets you take the reins and create your own unique chat experiences from scratch. With their cutting-edge NLP and ML tech, you can craft conversations that feel like they&apos;re coming straight from a human (or almost as good, at least!).</p><figure class="kg-card kg-image-card"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/05/llama-chat-noted.jpeg" class="kg-image" alt="Create your own Self-Hosted Chat AI Server with Ollama and Open WebUI" loading="lazy" width="1344" height="768"></figure><p>According to OLLAMA&apos;s mission, they&apos;re all about giving people and businesses the power to build custom AI-powered chats that fit perfectly with their online presence - whether that&apos;s a website, mobile app, customer service hub or a simple self-hosted chat you can use privately.</p><p>Just FYI, I&apos;m not affiliated with OLLAMA (just a curious observer), but they seem like a pretty cool platform for anyone looking to get creative with AI-powered conversations!</p><p>In an earlier article, we went over&#xA0;<a href="https://noted.lol/ollama/" rel="noreferrer">how to install OLLAMA using Docker</a>&#xA0;with some basic understanding of how the tool works. In this article We will be installing OLLAMA on bare metal along side Open WebUI as our chat server.</p><p>OLLLAMA uses the Linux terminal as its foundation to generate conversations powered by large language models. To make it even more engaging, we&apos;ll be processing our chats through Open WebUI, which will provide a more versatile and intuitive experience for users.</p><h2 id="what-is-open-webui">What is Open WebUI?</h2><p><a href="https://github.com/open-webui/open-webui?ref=noted.lol" rel="noreferrer">Open WebUI</a>&#xA0;is an open-source gem that brings command-line applications to the web, making them more accessible and user-friendly for everyone. By providing a graphical interface, Open WebUI lets you interact with Linux terminals and other command-line tools in a way that feels more like a desktop application than a traditional terminal session. This means you can enjoy the power of AI-powered chat systems like OLLAMA without having to navigate the complexities of a terminal interface. Perfect for those who want to get started quickly with AI chat.</p><h2 id="setting-up-ollama-on-popos-2204-lts-nvidia">Setting up OLLAMA on PopOS 22.04 LTS (NVIDIA)</h2><p>I&apos;m fortunate enough to have a &quot;powerful&quot; NVIDIA GeForce GTX 2080 Ti with an &quot;impressive&quot; 11GB of video RAM (VRAM). When it came time to choose an operating system, I decided on&#xA0;<a href="https://pop.system76.com/?ref=noted.lol" rel="noreferrer">Pop!_OS 22.04 LTS (NVIDIA)</a>, which comes with all the necessary drivers pre-installed. This was a no-brainer for me, as it ensures that my GPU is recognized and utilized by OLLAMA, our AI app of choice.</p><p>Using OLLAMA without the right GPU support would mean relying on CPU processing power alone, which can be quite limited when working with complex models or larger datasets. By contrast, with this &quot;powerful&quot; GPU at my disposal, I&apos;m able to run more demanding models and take full advantage of OLLAMA&apos;s capabilities.</p><p>I can punch in&#xA0;<code>nvidia-smi</code>&#xA0;in my terminal and see all the cool stats for my GPU.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/05/nvidia-smi-noted.png" class="kg-image" alt="Create your own Self-Hosted Chat AI Server with Ollama and Open WebUI" loading="lazy" width="825" height="416"></figure><p>If you don&apos;t have Pop!_OS with the NVIDIA driver, no worries! You can still use OLLAMA and other AI apps that need a GPU like yours. Just make sure to install CUDA on your system so it can work properly with your NVIDIA card. And while OLLAMA doesn&apos;t strictly require a GPU, having one can make a big difference in performance.</p><p>This system handles large 7B and 8B models without any issues, making it perfect for AI-related tasks. And while 13B models might be slightly slower due to the larger size, you won&apos;t even notice a significant delay in responses. Compared to other options out there, this setup is quite affordable and capable of tackling a wide range of demanding AI projects.</p><p>To run a 70 billion (70B) AI model, it&apos;s essential to have a powerful setup with significant computational resources. Here are the key recommendations:</p><ul><li>GPU memory (VRAM): At least 24GB, but ideally more like 40GB or 80GB, provided by a GPU such as the NVIDIA A100</li><li>CPU performance: A high-performance multi-core processor, such as an Intel i9 or AMD Ryzen 9 with at least 16 cores</li><li>Disk space: A solid-state drive (SSD) with at least 4TB of capacity for saving model files and temporary workspace</li><li>Memory (RAM): At least 128GB, preferably more</li><li>Cooling system: An efficient cooling solution to prevent overheating during training</li></ul><h2 id="installing-ollama">Installing OLLAMA</h2><p>It&apos;s easy. But first, make sure you run an update and upgrade on your system before installing.</p><pre><code>sudo apt update
sudo apt upgrade -y
</code></pre><p>Just hop on over to the&#xA0;<a href="https://ollama.com/download/linux?ref=noted.lol" rel="noreferrer">OLLAMA website</a>&#xA0;and grab the one line bash script command.</p><pre><code>curl -fsSL https://ollama.com/install.sh | sh
</code></pre><p>Paste this into your terminal and watch the magic happen. This will install OLLAMA on your PopOS system. When you are done, it should show you something like this.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/05/ollama-installed-noted.png" class="kg-image" alt="Create your own Self-Hosted Chat AI Server with Ollama and Open WebUI" loading="lazy" width="802" height="319"></figure><p>Sweet! With Pop!_OS and NVIDIA drivers on board, my system is able to detect my trusty GeForce GTX 2080 Ti GPU. As a result, I&apos;m all set to get started with OLLAMA. No need to worry about compatibility issues or performance issues.</p><h2 id="installing-llms-for-ollama">Installing LLMs for OLLAMA</h2><p>To add a model to use with OLLAMA, simply type&#xA0;<code>ollama pull llama3</code>&#xA0;into your terminal. This will download the default llama3 8B model to your system and store it in&#xA0;<code>/usr/share/ollama/.ollama/models/blobs.</code>&#xA0;OLLAMA has several models you can pull down and use. See the complete&#xA0;<a href="https://ollama.com/library?ref=noted.lol" rel="noreferrer">OLLAMA model list here</a>.</p><p>Now you can chat with OLLAMA by running&#xA0;<code>ollama run llama3</code>&#xA0;then ask a question to try it out!</p><figure class="kg-card kg-image-card"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/05/ollama-chat-noted.gif" class="kg-image" alt="Create your own Self-Hosted Chat AI Server with Ollama and Open WebUI" loading="lazy" width="1049" height="493"></figure><p>Using OLLAMA from the terminal is a cool experience, but it gets even better when you connect your OLLAMA instance to a web interface. This allows for an improved overall experience and easier interaction with all the features of OLLAMA. &#x1F604;</p><h2 id="installing-open-webui-with-docker">Installing Open WebUI with Docker</h2><p>By adopting Open WebUI, you&apos;ll find it simpler and more intuitive to manage OLLAMA. This means you&apos;ll have better control over adding, removing, or customizing models, as well as working with documents and developing your own models! You can even create user accounts to share access to OLLAMA, and decide which models each user can utilize.</p><p>Don&apos;t have Docker installed and need a simple guide? Check out our&#xA0;<a href="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/install-docker-and-portainer/?ref=noted.lol">guide on Installing Docker</a>&#xA0;here.</p><p>Just remember that OLLAMA&apos;s API operates on port 11434. To confirm it&apos;s working, visit http://127.0.0.1:11434 in your web browser and you should see &quot;Ollama is running.&quot; We&apos;ll utilize this address to link OLLAMA with Open WebUI using the following Docker command in our environment.</p><pre><code>sudo docker run -d -p 8080:8080 --network=host -v /media/jeremy/docker/data/open-webui:/app/backend/data -v /media/jeremy/docker/docs:/data/docs -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main</code></pre><p>Or if you prefer Docker Compose</p><pre><code class="language-yaml">services:
    open-webui:
        image: &apos;ghcr.io/open-webui/open-webui:main&apos;
        restart: always
        network_mode: &quot;host&quot;
        container_name: open-webui
        environment:
            - &apos;OLLAMA_BASE_URL=http://127.0.0.1:11434&apos;
        volumes:
            - &apos;/media/jeremy/docker/docs:/data/docs&apos;
            - &apos;/media/jeremy/docker/data/open-webui:/app/backend/data&apos;
        ports:
            - &apos;8080:8080&apos;</code></pre><p>Since I have a separate SSD installed for Docker and self-hosted apps, I mounted the volumes to that drive. You can mount the volumes where you feel so be sure to change those.</p><p>Since everything is done locally on the machine it is important to use the&#xA0;<code>network_mode: &quot;host&quot;</code>&#xA0;so Open WebUI can see OLLAMA.</p><p>Now, by navigating to localhost:8080, you&apos;ll find yourself at Open WebUI. To get started, please create a new account (this initial account serves as an admin for Open WebUI). Please note that everything here is being run locally for now but you can expose this using Cloudflare if you choose.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/05/openwebui-main-page-noted-1.png" class="kg-image" alt="Create your own Self-Hosted Chat AI Server with Ollama and Open WebUI" loading="lazy" width="1920" height="911"></figure><p>You will notice when you browse around Open WebUI that it is quite amazing the things you can do. There&apos;s so much to cover but I wanted to touch on my favorite feature about Open WebUI called Memory.</p><p>Memory is a new experimental feature that allws you to input your preferred personal details, such as past events or experiences, and our Large Language Model (LLM) will aim to recall them in the future. Access this feature through Settings &gt; Personalization &gt; Memory.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/05/ollama-memory-noted.png" class="kg-image" alt="Create your own Self-Hosted Chat AI Server with Ollama and Open WebUI" loading="lazy" width="777" height="539"></figure><p>This feature can help you set reminders, remember special dates or events, keep track of what you eat (great for those aiming to lose weight or following specific dietary restrictions), and even manage code snippets and compose files. It can output code from memory! These are just a few examples of how it can be useful! As you use it more, I&apos;m sure you will discover many other ways to take advantage of its capabilities!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/05/ollama-memories-noted.png" class="kg-image" alt="Create your own Self-Hosted Chat AI Server with Ollama and Open WebUI" loading="lazy" width="904" height="576"></figure><p>I added a few memories today as an example. I will ask OLLAMA what size socket my ATV uses for the oil plug because I always forget.</p><figure class="kg-card kg-image-card"><img src="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/content/images/2024/05/ollama-memory-test-noted.gif" class="kg-image" alt="Create your own Self-Hosted Chat AI Server with Ollama and Open WebUI" loading="lazy" width="1611" height="884"></figure><p>It remembered! 17mm is the memory I added and it was super fast at responding.</p><p>I think you get the idea. It&apos;s time for you to explore Open WebUI for yourself and learn about all the cool features. You can feed in documents through Open WebUI&apos;s document manager, create your own custom models and more. It just keeps getting more advanced as AI continues to evolve.</p><p>I hope you found this enjoyable and get some great use out of OLLAMA and Open WebUI!</p>]]></content:encoded></item></channel></rss>