Files
docker-configs/freshRSS/data/cache/8e76d6bc92da709b869999534d72d4215b747adf.spc

514 lines
168 KiB
Plaintext
Executable File

a:6:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:1:{s:7:"version";s:3:"2.0";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:1:{s:7:"channel";a:1:{i:0;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:8:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:5:"Noted";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:76:"Maximize Your Homelab Potential with Self-Hosting and Open-Source Solutions.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:18:"https://noted.lol/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:5:"image";a:1:{i:0;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:3:{s:3:"url";a:1:{i:0;a:5:{s:4:"data";s:29:"https://noted.lol/favicon.png";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:5:"Noted";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:18:"https://noted.lol/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}s:9:"generator";a:1:{i:0;a:5:{s:4:"data";s:10:"Ghost 5.88";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:13:"lastBuildDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Mon, 26 Aug 2024 17:37:32 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:3:"ttl";a:1:{i:0;a:5:{s:4:"data";s:2:"60";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"item";a:15:{i:0;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:72:"Introducing Fusion: A Sleek, Self-Hosted RSS Reader That Keeps It Simple";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:157:"Take control of your feeds with Fusion, a self-hosted, lightweight RSS reader that lets you organize, bookmark, and discover new content at your convenience.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:25:"https://noted.lol/fusion/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66c7365000ed580001bc7293";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:23:"Self Hosted RSS Readers";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Fri, 23 Aug 2024 14:09:13 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:80:"https://noted.lol/content/images/2024/08/self-hosted-rss-reader-fusion-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:11452:"<img src="https://noted.lol/content/images/2024/08/self-hosted-rss-reader-fusion-noted.jpg" alt="Introducing Fusion: A Sleek, Self-Hosted RSS Reader That Keeps It Simple"><p>So you&apos;re looking for a way to stay on top of the latest news and updates from your favorite websites and blogs, without having to constantly visit each one individually? Well, let me tell you, RSS feeds are where it&apos;s at. By subscribing to an RSS feed, you can get all the latest content delivered right to your doorstep (or rather, your browser), in a single stream of information.</p><p>But, let&apos;s be real, not all RSS readers are created equal. Some are clunky, some are confusing, and some just plain don&apos;t work well. That&apos;s why I&apos;m excited to introduce you to <a href="https://github.com/0x2E/fusion?ref=noted.lol">Fusion</a>, the RSS reader that&apos;s been flying under the radar, but is definitely worth checking out if you&apos;re looking for a better way to manage your online feeds.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/111.png" class="kg-image" alt="Introducing Fusion: A Sleek, Self-Hosted RSS Reader That Keeps It Simple" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/111.png 600w, https://noted.lol/content/images/size/w1000/2024/08/111.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/111.png 1600w, https://noted.lol/content/images/2024/08/111.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="fusion-rss-reader-core-features">Fusion RSS Reader Core Features</h2><p>&#x2022; Organize: Group feeds by categories, bookmark favorite items, and search for specific topics<br>&#x2022; Feed types: Supports RSS, Atom, and JSON feed formats with import and export options<br>&#x2022; Customization: Responsive design with light/dark mode options and Progressive Web App (PWA) capabilities<br>&#x2022; Self-hosted simplicity: Lightweight and designed to be self-hosted, making it easy to deploy and manage<br>&#x2022; Technical details: Built with Golang and SQLite for fast performance and efficient storage, with a single binary deployment option<br>&#x2022; Easy deployment: Includes a pre-built Docker image for quick setup and testing<br>&#x2022; Resource-friendly: Uses approximately 80MB of memory, perfect for running on most devices or servers</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 Fusion for as little as $1.0/Month with PikaPods! &#x2013;&#xA0;<a href="https://www.pikapods.com/pods?utm_source=noted&amp;run=fusion" rel="noreferrer">Start free with $5 welcome credit</a> <b><strong style="white-space: pre-wrap;">&#x1F917;</strong></b></div></div><h2 id="install-fusion-using-docker">Install Fusion Using Docker</h2><p>To install Fusion on your server, use this Docker Compose stack, which makes the process easy to follow. If you&apos;re new to self-hosting, don&apos;t worry, we have guides available to help you&#xA0;<a href="https://noted.lol/get-started-self-hosting/">get started with self-hosting</a>. For information on the latest features and updates, refer to the&#xA0;<a href="https://github.com/0x2E/fusion/releases?ref=noted.lol">Fusion releases</a>.</p><pre><code class="language-yaml">services:
fusion:
ports:
- 8080:8080
volumes:
- /docker/fusion:/data
environment:
- PASSWORD=changeme
image: rook1e404/fusion</code></pre><p>To customize the deployment, simply adjust the port number located on the left side of the colon (:), if necessary (e.g., change 8080:8080 to 8085:8080). Additionally, it&apos;s a good idea to modify the password for added security. Once you&apos;ve made these changes, deploy the container and access the web interface to log in with your new credentials.</p><p>First, I added a group called Subreddits because I want to start adding Subreddits I follow as RSS feeds. Under &quot;Feeds&quot;, there is a small icon that has two folders. Click that to add a group.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/fusion-self-hosted-rss-reader-add-group.png" class="kg-image" alt="Introducing Fusion: A Sleek, Self-Hosted RSS Reader That Keeps It Simple" loading="lazy" width="943" height="216" srcset="https://noted.lol/content/images/size/w600/2024/08/fusion-self-hosted-rss-reader-add-group.png 600w, https://noted.lol/content/images/2024/08/fusion-self-hosted-rss-reader-add-group.png 943w"></figure><p>To start adding feeds, navigate to the &quot;Feeds&quot; menu at the top and click on it. From there, you will see a plus icon where you can enter the RSS URL and give your feed a name. For this example, let&apos;s add the <a href="https://www.reddit.com/r/selfhosted/?ref=noted.lol">r/selfhosted Subreddit</a> by appending .rss to its URL. In this case, that would be <code>https://www.reddit.com/r/selfhosted/.rss</code>. Simply copy and paste this URL into the &quot;Link&quot; field.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/fusion-self-hosted-rss-reader-add-feed.png" class="kg-image" alt="Introducing Fusion: A Sleek, Self-Hosted RSS Reader That Keeps It Simple" loading="lazy" width="777" height="433" srcset="https://noted.lol/content/images/size/w600/2024/08/fusion-self-hosted-rss-reader-add-feed.png 600w, https://noted.lol/content/images/2024/08/fusion-self-hosted-rss-reader-add-feed.png 777w"></figure><p>After adding a new feed, click &quot;Save&quot; and then revisit the &quot;Unread&quot; tab to start exploring the fresh content. With multiple feeds, you can filter items by website or blog using the dropdown menu. Once you&apos;ve read an article, mark it as read and it will be removed from the &quot;Unread&quot; tab. However, you can still access it in the &quot;All&quot; tab or bookmark your favorite articles to store them under the &quot;Bookmarks&quot; tab for future reference.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/fusion-self-hosted-rss-reader-feeds.png" class="kg-image" alt="Introducing Fusion: A Sleek, Self-Hosted RSS Reader That Keeps It Simple" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/fusion-self-hosted-rss-reader-feeds.png 600w, https://noted.lol/content/images/size/w1000/2024/08/fusion-self-hosted-rss-reader-feeds.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/fusion-self-hosted-rss-reader-feeds.png 1600w, https://noted.lol/content/images/2024/08/fusion-self-hosted-rss-reader-feeds.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>Fusion&apos;s simplicity and good looks make it shine. It&apos;s easy to set up and start using, making it a top choice for RSS feed management. Having reviewed many<a href="https://noted.lol/tag/self-hosted-rss-readers/"> self-hosted RSS reader</a> options, I highly recommend Fusion as one of the best.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://noted.lol/tag/self-hosted-rss-readers/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Self Hosted RSS Readers - Noted</div><div class="kg-bookmark-description">Self Hosted RSS Readers we have reviewed. Installation guides and Docker Compose.</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="Introducing Fusion: A Sleek, Self-Hosted RSS Reader That Keeps It Simple"><span class="kg-bookmark-author">Noted</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://noted.lol/content/images/2024/07/12704536_5066999.jpg" alt="Introducing Fusion: A Sleek, Self-Hosted RSS Reader That Keeps It Simple"></div></a></figure><p>Fusion has quickly gained traction within the self-hosted community, and we&apos;re excited to see its popularity grow.</p><p>For any support related questions or inquiries, please refer to the official <a href="https://github.com/0x2E/fusion?ref=noted.lol">Fusion Github repo</a>. Give Fusion a star on its Github repo, it&apos;s a small gesture that goes a long way in supporting open-source initiatives like this one!</p><div class="kg-card kg-signup-card kg-width-wide " data-lexical-signup-form style="background-color: #272727; display: none;">
<div class="kg-signup-card-content">
<div class="kg-signup-card-text ">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<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>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:48:"Paperless-ngx: Scan and Digitize Your Documents";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:201:"Keep your papers under control! With Paperless-ngx, you can easily convert your physical documents and receipts into digital files on your own server. Plus, access them on the go with a native iOS app.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:32:"https://noted.lol/paperless-ngx/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66c4afb000ed580001bc6b6c";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:2:{i:0;a:5:{s:4:"data";s:27:"Slef Hosted Document Viewer";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:22:"Self Hosted File Hosts";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Thu, 22 Aug 2024 12:39:54 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:76:"https://noted.lol/content/images/2024/08/self-hosted-paperless-ngx-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:16300:"<img src="https://noted.lol/content/images/2024/08/self-hosted-paperless-ngx-noted.jpg" alt="Paperless-ngx: Scan and Digitize Your Documents"><p>For many of us, scanned documents and files are a common reality, but finding a reliable and secure way to store and organize them can be a challenge. As data security concerns grow, users are seeking alternatives to cloud-based storage solutions that come with modern scanners. Self-hosted options like Paperless-ngx provide a reliable and secure way to manage digital documents. By running your own instance of Paperless-ngx on a local server or virtual machine, you gain full control over your data, ensuring it remains private and secure.</p><h2 id="what-is-paperless-ngx">What is Paperless-ngx?</h2><p><a href="https://github.com/paperless-ngx/paperless-ngx?ref=noted.lol">Paperless-ngx</a> helps you switch from storing physical documents to digital ones, making it easy to find what you need online. Paperless-ngx was built as a new version of Paperless and its previous updates (Paperless-ng), so that a team of people can work together to improve and support the project. And for those wondering, the &quot;ng&quot; in Paperless-ngx stands for &quot;next generation&quot;.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/paperless-ngx-documents-smallcards-dark.png" class="kg-image" alt="Paperless-ngx: Scan and Digitize Your Documents" loading="lazy" width="2000" height="1432" srcset="https://noted.lol/content/images/size/w600/2024/08/paperless-ngx-documents-smallcards-dark.png 600w, https://noted.lol/content/images/size/w1000/2024/08/paperless-ngx-documents-smallcards-dark.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/paperless-ngx-documents-smallcards-dark.png 1600w, https://noted.lol/content/images/2024/08/paperless-ngx-documents-smallcards-dark.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="paperless-ngx-core-features">Paperless-ngx Core Features</h2><ul><li>Organize and index scanned documents with tags, correspondents, and types</li><li>Store data locally, never transmitting or sharing it (there are options to share)</li><li>OCR functionality for searchable text</li><li>Supports multiple file formats (PDF, images, Office files)</li><li>Machine-learning adds automatic tags, correspondents, and document types</li><li>Customizable web app with filtering, bulk editing, and drag-and-drop uploading</li></ul><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/paperless-ngx-OCR-1-noted.lol.png" class="kg-image" alt="Paperless-ngx: Scan and Digitize Your Documents" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/paperless-ngx-OCR-1-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2024/08/paperless-ngx-OCR-1-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/paperless-ngx-OCR-1-noted.lol.png 1600w, https://noted.lol/content/images/2024/08/paperless-ngx-OCR-1-noted.lol.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>With the Paperless-ngx tagging feature, you can label each document with relevant keywords, making it easy to find what you need later. You can also categorize your documents by type or correspondent, keeping everything organized and easily accessible. </p><p>Paperless-ngx also includes advanced features like OCR (Optical Character Recognition) to make your scanned documents searchable. This means you can quickly find specific words or phrases within a document, without having to manually scroll through it. Plus, it supports multiple file formats, including PDFs, images, and Office files, so you can store all your important documents in one place. And with machine learning powered automatic tagging, you can let the app do the work for you. Just scan your documents and let Paperless-ngx organize them for you... if you trust it to. &#x1F609;</p><h2 id="install-paperless-ngx-using-docker">Install Paperless-ngx using Docker</h2><p>The <a href="https://docs.paperless-ngx.com/setup/?ref=noted.lol#docker_script">Paperless-ngx installation script</a> makes it easy to set up your instance. It asks for some basic settings, downloads necessary files, pulls the Docker image, starts Paperless, and even creates a user account.</p><p>Need assistance? Check out our resources for <a href="https://noted.lol/get-started-self-hosting/">getting started with self-hosting and setting up Docker</a>.</p><pre><code>$ bash -c &quot;$(curl --location --silent --show-error https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)&quot;</code></pre><p>The bash script cannot be run as root and you will need permission to write to the current directory.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/paperless-ngx-bash-script-noted.png" class="kg-image" alt="Paperless-ngx: Scan and Digitize Your Documents" loading="lazy" width="1109" height="501" srcset="https://noted.lol/content/images/size/w600/2024/08/paperless-ngx-bash-script-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/08/paperless-ngx-bash-script-noted.png 1000w, https://noted.lol/content/images/2024/08/paperless-ngx-bash-script-noted.png 1109w"></figure><p>Paperless-ngx uses <a href="https://tika.apache.org/?ref=noted.lol">Tika</a> and <a href="https://gotenberg.dev/?ref=noted.lol">Gotenberg</a> to parse metadata and convert Office documents (like .doc, .xlsx, and .odt) and emails (.eml). To use this feature, you&apos;ll need to set up separate servers for Tika and Gotenberg, configure their endpoints, and enable the feature. Fortunately, Paperless-ngx provides <a href="https://github.com/paperless-ngx/paperless-ngx/tree/dev/docker/compose?ref=noted.lol">ready made Docker Compose examples</a> that simplify the setup process and offer multiple database options with or without Gotenberg and Tika. </p><p>However, the installation script above also lets you choose to use Tika and Gotenberg, which I highly recommend. You can customize settings like port, database, URL, username, and password all from this bash script. It does the work for you making setup simple. Once it&apos;s complete, visit your server or computer&apos;s IP address and port number to begin using Paperless-ngx.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/paperless-ngx-start-the-tour-noted.png" class="kg-image" alt="Paperless-ngx: Scan and Digitize Your Documents" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/paperless-ngx-start-the-tour-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/08/paperless-ngx-start-the-tour-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/paperless-ngx-start-the-tour-noted.png 1600w, https://noted.lol/content/images/2024/08/paperless-ngx-start-the-tour-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Sign in with your chosen username and password. To get the most out of Paperless-ngx, I suggest taking the built-in tour to learn about its core features. Simply click the &quot;Start the tour&quot; button to begin exploring!</p><h2 id="getting-documents-on-the-paperless-ngx-server">Getting Documents on the Paperless-ngx Server</h2><p>This part is up to personal preference. Some people might prefer traditional methods and buy a scanner, while I like using my iPhone with the <a href="https://apps.apple.com/us/app/swift-paperless/id6448698521?ref=noted.lol">Swift Paperless app</a>. The Swift Paperless app offers more features than just scanning documents. It&apos;s free, highly rated, and lets me control every aspect of Paperless-ngx, including adding tags, document type, and correspondents before uploading scanned documents to the server. (these settings can also be changed after the scan is completed) I can also create new scans or import documents and photos from my device. Lastly, there&apos;s no annoying nag screens asking for donations... nowhere in the app. You can see what people have to say about it <a href="https://github.com/paperless-ngx/paperless-ngx/discussions/3283?ref=noted.lol">here on the Paperless-ngx discussions</a>. You can also sponsor the iOS app here on the <a href="https://github.com/sponsors/paulgessinger?frequency=one-time&amp;sponsor=&amp;ref=noted.lol">Github Repo</a>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/paperless-ngx-native-ios-app-noted.png" class="kg-image" alt="Paperless-ngx: Scan and Digitize Your Documents" loading="lazy" width="2000" height="861" srcset="https://noted.lol/content/images/size/w600/2024/08/paperless-ngx-native-ios-app-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/08/paperless-ngx-native-ios-app-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/paperless-ngx-native-ios-app-noted.png 1600w, https://noted.lol/content/images/2024/08/paperless-ngx-native-ios-app-noted.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><p>While I&apos;ve tried other iOS iPhone scanning apps, none have met my needs as well as Swift Paperless. Those apps are more general-purpose scanning tools, whereas Swift Paperless was designed specifically for Paperless-ngx. Its tailored features make it the perfect fit for my use case.</p><p>You can simply log into your Paperless-ngx server and have access to all of your documents. From there you can begin scanning or importing new documents or even edit existing docs.</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/08/IMG_3470.png" width="1284" height="2778" loading="lazy" alt="Paperless-ngx: Scan and Digitize Your Documents" srcset="https://noted.lol/content/images/size/w600/2024/08/IMG_3470.png 600w, https://noted.lol/content/images/size/w1000/2024/08/IMG_3470.png 1000w, https://noted.lol/content/images/2024/08/IMG_3470.png 1284w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/IMG_3471.png" width="1284" height="2778" loading="lazy" alt="Paperless-ngx: Scan and Digitize Your Documents" srcset="https://noted.lol/content/images/size/w600/2024/08/IMG_3471.png 600w, https://noted.lol/content/images/size/w1000/2024/08/IMG_3471.png 1000w, https://noted.lol/content/images/2024/08/IMG_3471.png 1284w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/IMG_3477-1.png" width="1284" height="2778" loading="lazy" alt="Paperless-ngx: Scan and Digitize Your Documents" srcset="https://noted.lol/content/images/size/w600/2024/08/IMG_3477-1.png 600w, https://noted.lol/content/images/size/w1000/2024/08/IMG_3477-1.png 1000w, https://noted.lol/content/images/2024/08/IMG_3477-1.png 1284w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>To connect, I used my local Paperless-ngx server, keeping it private and not exposing it through Cloudflare. This allowed me to simply enter the server&apos;s IP address and port in the Swift Paperless app.</p><p>If you do decide to expose your self-hosted Paperless-ngx server to the internet, exercise caution. This is particularly important when storing sensitive documents containing personal details such as social security numbers, phone numbers, or birth certificates.</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 Paperless-ngx for as little as $2.7/Month with PikaPods! &#x2013;&#xA0;<a href="https://www.pikapods.com/pods?utm_source=noted&amp;run=paperless-ngx" rel="noreferrer">Start free with $5 welcome credit</a> <b><strong style="white-space: pre-wrap;">&#x1F917;</strong></b></div></div><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>I&apos;ve been using Paperless for 2 years, and since its fork to ngx, my experience has been revolutionary! I&apos;ve digitized important papers, receipts, manuals, and even sentimental cards, giving them new life. With the iOS app, scanning and organizing documents is seamless: open, scan, tag, and send - effortless!</p><p>I&apos;ve relied heavily on the search function to dig up old receipts, remembering key details like dates or prices. My ultimate dream is to integrate Paperless-ngx with Ollama, allowing me to simply ask questions about my documents and receive instant answers directly on my <a href="https://noted.lol/ollama-openwebui/">self-hosted server through Open WebUI</a>. I&apos;m sure there&apos;ll be a solution soon enough, if not already out there.</p><p>For support related questions or inquiries, please refer to the <a href="https://github.com/paperless-ngx/paperless-ngx?ref=noted.lol">Paperless-ngx Github repo</a>. Drop by and give the project a star at the very least!</p><div class="kg-card kg-signup-card kg-width-wide " data-lexical-signup-form style="; display: none;">
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2024/08/subscribe-envelopes-flying-in-space-noted.lol.jpg" alt="Paperless-ngx: Scan and Digitize Your Documents"></picture>
<div class="kg-signup-card-content">
<div class="kg-signup-card-text ">
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
<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>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:50:"Tasks.md - Self-Hosted Markdown Based Task Manager";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:42:"Stupid simple self-hosted task management.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:27:"https://noted.lol/tasks-md/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66a3a7971df9fc000145532e";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:2:{i:0;a:5:{s:4:"data";s:36:"Self Hosted To-do/Project Management";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:28:"Self Hosted Note Taking apps";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Fri, 16 Aug 2024 14:08:14 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:71:"https://noted.lol/content/images/2024/08/tasks.md-self-hosted-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:6489:"<img src="https://noted.lol/content/images/2024/08/tasks.md-self-hosted-noted.jpg" alt="Tasks.md - Self-Hosted Markdown Based Task Manager"><p>I&apos;m completely honest when I say that organization just doesn&apos;t come naturally to me. Notes are scattered all over the place, reminders are stuck to random surfaces, and my calendars feel like wishful thinking rather than actual planning tools. It&apos;s as if my brain is a black hole for tasks and deadlines and anything that goes in seems to get sucked down and never makes it back out again! And let&apos;s be real, cloud-based solutions can be intimidating too. I get that they&apos;re supposed to make life easier, but I&apos;m just not comfortable entrusting my entire life to some company&apos;s servers. So, what I really need is a self-hosted solution that lets me get organized (or at least pretend to!). And that&apos;s exactly what Tasks.md is, the perfect antidote to my organizational chaos!</p><h2 id="what-is-tasksmd">What is Tasks.md</h2><p><a href="https://github.com/BaldissaraMatheus/Tasks.md?ref=noted.lol">Tasks.md</a> is a self-hosted, Markdown file-based task management board.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/tasks.md-noted-main.png" class="kg-image" alt="Tasks.md - Self-Hosted Markdown Based Task Manager" loading="lazy" width="1920" height="1015" srcset="https://noted.lol/content/images/size/w600/2024/08/tasks.md-noted-main.png 600w, https://noted.lol/content/images/size/w1000/2024/08/tasks.md-noted-main.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/tasks.md-noted-main.png 1600w, https://noted.lol/content/images/2024/08/tasks.md-noted-main.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="tasksmd-core-features">Tasks.md Core Features</h2><p><strong>Design &amp; Interface</strong></p><ul><li>Craft your task management system with ease using our modern, responsive interface that adapts to any device as a PWA.</li><li>Create cards, lanes, and tags to organize your tasks in a way that suits your workflow</li></ul><p><strong>Content Creation</strong></p><ul><li>Write tasks as Markdown files for a seamless and enjoyable experience</li><li>Take advantage of the power of Markdown to add rich formatting and style to your task descriptions</li></ul><p><strong>Installation &amp; Customization</strong></p><ul><li>Get started quickly with our easy-to-install single Docker image</li><li>Personalize your experience with light or dark themes that sync with your operating system settings</li><li>Choose from three default color themes (Adwaita, Nord, and Catppuccin) to match your unique style</li></ul><p><strong>Flexibility &amp; Integration</strong></p><ul><li>Seamlessly integrate Tasks.md into your existing workflow using subpath-based reverse-proxy support with an environment variable for base path</li></ul><h2 id="install-tasksmd-using-docker">Install Tasks.md using Docker</h2><p>To install Tasks.md on your server, use this Docker Compose stack, which makes the process easy to follow. If you&apos;re new to self-hosting, don&apos;t worry, we have guides available to help you <a href="https://noted.lol/get-started-self-hosting/">get started with self-hosting</a>. For information on the latest features and updates, refer to the <a href="https://github.com/BaldissaraMatheus/Tasks.md/releases?ref=noted.lol">Tasks.md releases</a>.</p><pre><code>version: &quot;3&quot;
services:
tasks.md:
image: baldissaramatheus/tasks.md
container_name: tasks.md
environment:
- PUID=1000
- PGID=1000
- Title=Noted Tasks
volumes:
- /path/to/tasks:/tasks
- /path/to/config:/config
restart: unless-stopped
ports:
- 3333:8080</code></pre><p>Let&apos;s begin! Set up your task management system by adding lanes and cards. Organizing can be a enjoyable experience with Tasks.md.</p><figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2024/08/demo.gif" class="kg-image" alt="Tasks.md - Self-Hosted Markdown Based Task Manager" loading="lazy" width="600" height="335" srcset="https://noted.lol/content/images/2024/08/demo.gif 600w"></figure><p>Easily organize your tasks by dragging and dropping cards into different lanes. This simple feature makes task management a seamless experience.</p><p>Tasks.md offers an effortless approach to organization. Each lane you create serves as a corresponding directory on your filesystem, making it easy to navigate and manage. Additionally, each task is represented by a file, providing a clear and structured system for tracking and managing your tasks.</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/08/directories-organization-1.png" width="1039" height="363" loading="lazy" alt="Tasks.md - Self-Hosted Markdown Based Task Manager" srcset="https://noted.lol/content/images/size/w600/2024/08/directories-organization-1.png 600w, https://noted.lol/content/images/size/w1000/2024/08/directories-organization-1.png 1000w, https://noted.lol/content/images/2024/08/directories-organization-1.png 1039w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/directories-organization-2.png" width="591" height="217" loading="lazy" alt="Tasks.md - Self-Hosted Markdown Based Task Manager"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/directories-organization-3.png" width="591" height="217" loading="lazy" alt="Tasks.md - Self-Hosted Markdown Based Task Manager"></div></div></div></figure><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>If you&apos;re looking for Kanban-style task management software, Tasks.md is an excellent choice. It offers a minimalist approach that even those new to task management can easily use. For those who prioritize simplicity, Tasks.md is a great option that gets the job done without overwhelming features. Give it a try and discover how simple it is to manage your tasks!</p><p>Swing by the <a href="https://github.com/BaldissaraMatheus/Tasks.md?ref=noted.lol">Tasks.md GitHub repo</a> and give it a star. If you have questions or would like to suggest new features, visit the issue tracker to get involved. Your feedback is important in helping to improve Tasks.md.</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:42:"Forgejo - Powerful Self-Hosted Git Service";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:84:"Safely self-host your code with Forgejo and take control of your project management.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:26:"https://noted.lol/forgejo/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66af7f1c1df9fc0001455f88";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:15:"Self Hosted Git";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Mon, 12 Aug 2024 15:02:12 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:58:"https://noted.lol/content/images/2024/08/forgejo-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:7737:"<img src="https://noted.lol/content/images/2024/08/forgejo-noted.jpg" alt="Forgejo - Powerful Self-Hosted Git Service"><p>Having a centralized platform to manage code repositories and collaborate with team members has become increasingly essential. With modern software development often involving multiple moving parts, maintaining control over your project&apos;s direction can be a challenge. This is where self-hosted solutions like Forgejo come into play, providing a single, unified space for teams to work together seamlessly.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/frgejo-main-1.png" class="kg-image" alt="Forgejo - Powerful Self-Hosted Git Service" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/frgejo-main-1.png 600w, https://noted.lol/content/images/size/w1000/2024/08/frgejo-main-1.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/frgejo-main-1.png 1600w, https://noted.lol/content/images/2024/08/frgejo-main-1.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="what-is-forgejo">What is Forgejo?</h2><p><a href="https://forgejo.org/?ref=noted.lol">Forgejo</a> is a self-hosted Git service that empowers developers to manage their projects without relying on proprietary tools. By self-hosting Forgejo, you&apos;ll gain control over your environment, allowing you to customize it to fit your team&apos;s needs. You can integrate Forgejo with other tools and services to streamline your workflow, ensure the integrity of your software development process, and collaborate seamlessly with your team members. With Forgejo, you&apos;ll have a lightweight, scalable, and secure platform that meets your unique project requirements.</p><p>Brought to you by the collaborative efforts of <a href="https://docs.codeberg.org/getting-started/what-is-codeberg/?ref=noted.lol#what-is-codeberg-e.v.%3F">Codeberg e.V.</a>, Forgejo is a community-driven project that prioritizes freedom and transparency. As a fully open-source solution, it can be trusted to always remain free from proprietary influences. Users have the flexibility to create an account on any instance, or download and self-host their own copy for maximum control and customization. With a focus on security, scalability, federation, and privacy, Forgejo is designed to empower developers like you to work together seamlessly.</p><h2 id="forgejo-key-highlights">Forgejo Key Highlights</h2><p>&#x2022; <strong>Easy Setup</strong>: Forgejo can be installed in minutes with a <a href="https://forgejo.org/download/?ref=noted.lol#installation-from-binary">simple binary installer</a> or using <a href="https://forgejo.org/docs/latest/admin/installation-docker/?ref=noted.lol">Docker</a> for maximum flexibility.<br>&#x2022; <strong>Wide Compatibility</strong>: Forgejo runs on Windows, macOS, Linux, ARM, and more making it accessible across a range of platforms.<br>&#x2022; <strong>Efficient Performance</strong>: Forgejo&apos;s lightweight design ensures that it can run smoothly even on resource constrained devices like Raspberry Pi.<br>&#x2022; <strong>Community-Driven</strong>: As an open-source project, Forgejo allows the community to contribute to its development, shape its future, and benefit from collective expertise.</p><h2 id="installing-forgejo-using-docker-compose">Installing Forgejo using Docker Compose</h2><p>To ensure a secure installation, when using Docker to install Forgejo, make sure to set up your Cloudflare tunnel or Nginx domain beforehand. This is necessary for the installation process, and once complete, you can access the web interface by pointing your domain to port 3000. </p><p>This Docker Compose stack can be used to install Forgejo 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>. Refer to the <a href="https://forgejo.org/releases/?ref=noted.lol">Forgejo releases</a> for the most recent version.</p><pre><code>version: &quot;3&quot;
networks:
forgejo:
external: false
services:
server:
image: codeberg.org/forgejo/forgejo:8.0.1
container_name: forgejo
environment:
- USER_UID=1000
- USER_GID=1000
- FORGEJO__database__DB_TYPE=postgres
- FORGEJO__database__HOST=db:5432
- FORGEJO__database__NAME=forgejo
- FORGEJO__database__USER=forgejo
- FORGEJO__database__PASSWD=forgejo
restart: always
networks:
- forgejo
volumes:
- /docker/forgejo/data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- &quot;3000:3000&quot;
- &quot;222:22&quot;
depends_on:
- db
db:
image: postgres:14
restart: always
environment:
- POSTGRES_USER=forgejo
- POSTGRES_PASSWORD=forgejo
- POSTGRES_DB=forgejo
networks:
- forgejo
volumes:
- /docker/forgejo/postgres:/var/lib/postgresql/data</code></pre><p>For added security, when deploying Forgejo in production environments, it is strongly recommended to modify the default database username and password. In our demonstration setup, we&apos;ll utilize the default credentials for simplicity, but please update these settings before going live.</p><p>After setting up the Docker Compose stack, navigate to your designated domain to access the Forgejo installation page. Fill out the required information to complete the installation process.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/forgejo-installation-postgress-noted.png" class="kg-image" alt="Forgejo - Powerful Self-Hosted Git Service" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/forgejo-installation-postgress-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/08/forgejo-installation-postgress-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/forgejo-installation-postgress-noted.png 1600w, https://noted.lol/content/images/2024/08/forgejo-installation-postgress-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>After completing the installation form, click the &quot;Install&quot; button to initiate the process. Once the installation is complete, you&apos;ll be automatically redirected to the main Forgejo dashboard. From here, you can start creating new repositories, organizations, or performing migrations to get started with managing your Git workflow.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/forgejo-main.png" class="kg-image" alt="Forgejo - Powerful Self-Hosted Git Service" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/forgejo-main.png 600w, https://noted.lol/content/images/size/w1000/2024/08/forgejo-main.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/forgejo-main.png 1600w, https://noted.lol/content/images/2024/08/forgejo-main.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h3 id="final-notes-and-thoughts">Final Notes and Thoughts</h3><p>As you begin your experience with Forgejo, remember that you&apos;re not just installing a Git service - you&apos;re joining a community committed to open-source principles. By choosing Forgejo, you&apos;re supporting a project that values transparency, collaboration, and the freedom to code without restrictions. With its flexible architecture and modular design, Forgejo enables you to tailor your Git workflow to meet your unique needs, while also contributing to the development of a platform that is truly yours.</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:43:"Wavelog - Self-Hosted Amateur Radio Logging";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:98:"Self-hosted online amateur radio logging software to record and track your contacts from anywhere!";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:26:"https://noted.lol/wavelog/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66b76aad00ed580001bc6555";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:12:"Self Hosting";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Sun, 11 Aug 2024 13:16:00 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:70:"https://noted.lol/content/images/2024/08/wavelog-self-hosted-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:10924:"<img src="https://noted.lol/content/images/2024/08/wavelog-self-hosted-noted.jpg" alt="Wavelog - Self-Hosted Amateur Radio Logging"><p>Amateur radio is a hobby where people around the world communicate with each other using special radios and frequencies. Ham radio operators, as they&apos;re called, love the thrill of making new contacts and sharing stories from all over the globe. But keeping track of those contacts can be a challenge. That&apos;s where Wavelog comes in! By self-hosting your contact logs on Wavelog, you avoid relying on third-party services and enjoy a more personalized experience.</p><h2 id="what-is-wavelog">What is Wavelog?</h2><p><a href="https://github.com/wavelog/wavelog?ref=noted.lol">Wavelog</a> is a self-hosted PHP application that lets you log your amateur radio contacts from anywhere, as long as you have a web browser and an internet connection.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/wavelog-self-hosted-ham-radio-log-main-1.png" class="kg-image" alt="Wavelog - Self-Hosted Amateur Radio Logging" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/wavelog-self-hosted-ham-radio-log-main-1.png 600w, https://noted.lol/content/images/size/w1000/2024/08/wavelog-self-hosted-ham-radio-log-main-1.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/wavelog-self-hosted-ham-radio-log-main-1.png 1600w, https://noted.lol/content/images/2024/08/wavelog-self-hosted-ham-radio-log-main-1.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Wavelog&apos;s development began as a spin-off of Cloudlog in late 2023, driven by four core developers (DF2ET, DJ7NT, HB9HIL, and LA8AJA). Since its initial release on February 1, 2024, Wavelog has made significant progress in stability and functionality. As an open-source project developed by radio amateurs for fellow enthusiasts, Wavelog&apos;s code is the result of dedicated effort to continuously improve this great software. With a focus on simplicity, powerful tools, and transparency, Wavelog offers web-based logging accessible from anywhere worldwide. Whether hosted on a professional server, rented space, or a RaspberryPi at home, Wavelog enables you to manage your logbook whenever and wherever you want.</p><h2 id="wavelog-core-features">Wavelog Core Features</h2><p>Wavelog offers a simple web interface for logging contacts. Additionally, the WLGate tool allows you to log contacts from WSJT-X or send CAT data from your radio directly to your Wavelog account. Supports: Windows, Mac, and Linux.</p><p>Wavelog includes advanced mapping features that enable you to easily create custom maps of your contacts. You can also export and share your QSOs as maps, or automatically include them in your QRZ.com bio.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/wavelog-self-hosted-ham-radio-log-QSO.png" class="kg-image" alt="Wavelog - Self-Hosted Amateur Radio Logging" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/wavelog-self-hosted-ham-radio-log-QSO.png 600w, https://noted.lol/content/images/size/w1000/2024/08/wavelog-self-hosted-ham-radio-log-QSO.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/wavelog-self-hosted-ham-radio-log-QSO.png 1600w, https://noted.lol/content/images/2024/08/wavelog-self-hosted-ham-radio-log-QSO.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Wavelog also provides in-depth analytics to help you understand your ham radio activities. Some examples of what you can track and analyze include:</p><ul><li>Number of grids worked</li><li>Average days per year spent hamming it up</li><li>Farthest distance worked on specific bands, like 70cm</li></ul><p>And many more insights to help you refine your amateur radio experience.</p><p>Wavelog also assists in analyzing your data, providing insights on how close you are to achieving your next award certificate. Currently, over 20 international award programs have been integrated into Wavelog, with more to come.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/wavelog-self-hosted-ham-radio-log-awards.png" class="kg-image" alt="Wavelog - Self-Hosted Amateur Radio Logging" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/wavelog-self-hosted-ham-radio-log-awards.png 600w, https://noted.lol/content/images/size/w1000/2024/08/wavelog-self-hosted-ham-radio-log-awards.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/wavelog-self-hosted-ham-radio-log-awards.png 1600w, https://noted.lol/content/images/2024/08/wavelog-self-hosted-ham-radio-log-awards.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Wavelog supports seamless integration with popular third-party services, including:</p><ul><li>eQSL</li><li>LoTW</li><li>HRDlog</li><li>QRZ.com</li><li>QO-100 Dx Club</li></ul><p>Your logged contacts are automatically confirmed with eQSL and LoTW, and you can also view and upload scanned eQSL cards directly within the Wavelog web interface.</p><p>Wavelog is available in partial translation across 16 languages, thanks to the collaborative efforts of developers and the community. Some languages still require further refinement, but the software&apos;s global reach is a testament to the power of teamwork. Anyone interested in contributing to Wavelog&apos;s translations can join the platform and get involved.</p><h2 id="install-wavelog-via-docker-compose">Install Wavelog via Docker Compose</h2><p>This Docker Compose stack can be used to install Wavelog 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>---
services:
wavelog-db:
image: mariadb:11.3
container_name: wavelog-db
environment:
MARIADB_RANDOM_ROOT_PASSWORD: yes
MARIADB_DATABASE: wavelog
MARIADB_USER: wavelog
MARIADB_PASSWORD: wavelog # &lt;- Insert a strong password here
volumes:
- wavelog-dbdata:/var/lib/mysql
restart: unless-stopped
wavelog-main:
container_name: wavelog-main
image: ghcr.io/wavelog/wavelog:latest
depends_on:
- wavelog-db
environment:
CI_ENV: docker
volumes:
- wavelog-config:/var/www/html/application/config/docker
- wavelog-uploads:/var/www/html/uploads
- wavelog-userdata:/var/www/html/userdata
ports:
- &quot;8086:80&quot;
restart: unless-stopped
volumes:
wavelog-dbdata:
wavelog-uploads:
wavelog-userdata:
wavelog-config:</code></pre><p>Access Wavelog by visiting the server&apos;s IP address on port 8086, where you&apos;ll initiate the pre check process.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/wavelog-installer-noted.png" class="kg-image" alt="Wavelog - Self-Hosted Amateur Radio Logging" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/wavelog-installer-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/08/wavelog-installer-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/wavelog-installer-noted.png 1600w, https://noted.lol/content/images/2024/08/wavelog-installer-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>To ensure Wavelog functions properly, you might need to adjust the permissions for three volumes within the wavelog-main container by running a CHMOD command. This allows the application to create and write files in these directories as needed.</p><p>If you leave everything in the Docker Compose as default, (as I did for testing purposes) this is what you will enter for the database section.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/wavelog-db-connection.png" class="kg-image" alt="Wavelog - Self-Hosted Amateur Radio Logging" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/wavelog-db-connection.png 600w, https://noted.lol/content/images/size/w1000/2024/08/wavelog-db-connection.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/wavelog-db-connection.png 1600w, https://noted.lol/content/images/2024/08/wavelog-db-connection.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>If you plan to deploy Wavelog through Cloudflare or a reverse proxy, it&apos;s strongly recommended that you update the Docker Compose configuration file to customize these settings.</p><p>If everything went well, you should see green checkmarks across the board.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/wavelog-installer-complete.png" class="kg-image" alt="Wavelog - Self-Hosted Amateur Radio Logging" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/wavelog-installer-complete.png 600w, https://noted.lol/content/images/size/w1000/2024/08/wavelog-installer-complete.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/wavelog-installer-complete.png 1600w, https://noted.lol/content/images/2024/08/wavelog-installer-complete.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Once you&apos;ve completed the pre check process, simply click &apos;Install Now&apos; to finalize the setup and start using Wavelog for logging your amateur radio contacts.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/wavelog-welcome.png" class="kg-image" alt="Wavelog - Self-Hosted Amateur Radio Logging" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/wavelog-welcome.png 600w, https://noted.lol/content/images/size/w1000/2024/08/wavelog-welcome.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/wavelog-welcome.png 1600w, https://noted.lol/content/images/2024/08/wavelog-welcome.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>Wavelog is more than just a tool for logging amateur radio contacts, it&apos;s a way to store and manage your QSOs exactly as you like, without relying on external services. By using Wavelog, you&apos;re getting a self-hosted solution that lets you keep your data private and customized to your needs. And with its open-source foundation, you have the power to shape the software&apos;s future and make it an even better fit for your ham radio journey.</p><p>Swing by the <a href="https://github.com/wavelog/wavelog?ref=noted.lol">Wavelog Github repo</a> and give it a star. Be sure to direct any support questions or feature requests on the issue tracker there.</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:5;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:39:"Homelab Spotlight - 3D Printed NUC Rack";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:92:"Homelab Spotlight makes a come back with Reddit user u/NeyPalm and their 6 NUC rack cluster!";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:38:"https://noted.lol/3d-printed-nuc-rack/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66abef5b1df9fc0001455e5e";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:17:"Homelab Spotlight";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Fri, 09 Aug 2024 17:46:49 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:82:"https://noted.lol/content/images/2024/08/3d-printed-nuc-rack-homelab-spotlight.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:5934:"<img src="https://noted.lol/content/images/2024/08/3d-printed-nuc-rack-homelab-spotlight.jpg" alt="Homelab Spotlight - 3D Printed NUC Rack"><p>I recently had the opportunity to conduct a Q&amp;A session with Reddit user u/NeyPalm. After I saw their impressive <a href="https://www.reddit.com/r/homelab/comments/1cbu80j/finally_finished_my_custom_rack_project/?ref=noted.lol">homelab setup posted on r/homelab</a>, I knew I had to share it with all of you. The level of detail and expertise on display is truly remarkable, and I think many people would benefit from seeing how they&apos;ve put together this system.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/finally-finished-my-custom-rack-project-v0-i75u1rapbewc1.webp" class="kg-image" alt="Homelab Spotlight - 3D Printed NUC Rack" loading="lazy" width="2000" height="1126" srcset="https://noted.lol/content/images/size/w600/2024/08/finally-finished-my-custom-rack-project-v0-i75u1rapbewc1.webp 600w, https://noted.lol/content/images/size/w1000/2024/08/finally-finished-my-custom-rack-project-v0-i75u1rapbewc1.webp 1000w, https://noted.lol/content/images/size/w1600/2024/08/finally-finished-my-custom-rack-project-v0-i75u1rapbewc1.webp 1600w, https://noted.lol/content/images/2024/08/finally-finished-my-custom-rack-project-v0-i75u1rapbewc1.webp 2000w" sizes="(min-width: 1200px) 1200px"></figure><p><strong>Tell us about the hardware in this homelab setup.</strong></p><p>My Homelab is only for my in-house IT and is intended as a playground for further training, testing services and simplifying everyday life.</p><p>Specs: 6x NUC7i3BNK each with 16GB RAM, Thinkcentre M720q 32GB, Netgear GS324 Switch 24 Port and a PC Engines APU 2D4 16GB Ram Firewall</p><p>The Thinkcentre is my ProxMox on which all services run. I also use the APU2 board as a firewall/router and the NUC Cluster as a Kubernetes playground.</p><p><strong>What inspired you to build the 3D rack and for what purpose? It sure looks awesome! But was it just for aesthetics?</strong></p><p>I wanted to have (almost) all my IT in one place. However, I had the problem that some things didn&apos;t fit into a 10inch rack and I decided to build a custom rack because I don&apos;t have the space for a 19inch rack. Besides, building it is certainly as much fun as using it afterwards. Aesthetics of course also play a big role, as it&apos;s quite open in my house and everyone can see it.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/finally-finished-my-custom-rack-project-v0-qoz14tapbewc1.webp" class="kg-image" alt="Homelab Spotlight - 3D Printed NUC Rack" loading="lazy" width="2000" height="1126" srcset="https://noted.lol/content/images/size/w600/2024/08/finally-finished-my-custom-rack-project-v0-qoz14tapbewc1.webp 600w, https://noted.lol/content/images/size/w1000/2024/08/finally-finished-my-custom-rack-project-v0-qoz14tapbewc1.webp 1000w, https://noted.lol/content/images/size/w1600/2024/08/finally-finished-my-custom-rack-project-v0-qoz14tapbewc1.webp 1600w, https://noted.lol/content/images/size/w2400/2024/08/finally-finished-my-custom-rack-project-v0-qoz14tapbewc1.webp 2400w" sizes="(min-width: 1200px) 1200px"></figure><p><strong>What 3D printer do you use?</strong></p><p>I&apos;m using a Anycubic Vyper. Its a 245x245 and it was pretty challenging to fit some parts on the bed. The panels are 28cm long, it was a tight fit diagonal.</p><p><strong>Can you share any files or links for the 3D project?</strong></p><p>I have shared some files under the following link:&#xA0;<a href="https://www.thingiverse.com/thing:6593228?ref=noted.lol">https://www.thingiverse.com/thing:6593228</a>&#xA0;Please note that these files were created for exactly my setup with custom sizes that are not standard.</p><p><strong>What self-hosted applications are you running on this setup?</strong></p><p>I used the NUC cluster to learn about Kubernetes, more precisely to build a barebones cluster and to train myself further for work. The Lenovo ThinkCentre runs Proxmox with some services like Docker, Plex with Debrid/Servarr Stack, Pihole, Bookstack and some Unix machines for testing. The PC Engines APU2 board is my router, it ran for Pfsense some time, but I have now switched to OPNsense because I had some problems with PFsense and because i didnt like.</p><p><strong>Have you added anything to it since the Reddit post? Any new photos you&apos;d like to share?</strong></p><p>The rack is currently being rebuilt. I no longer have any use for the NUC cluster and some of these machines are being replaced with other ThinkCentres to build a ProxMox cluster so that I have more computing power available and build redundancy. As I still have space available, I have other options in the pipeline that I can&apos;t say anything more about at the moment.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/finally-finished-my-custom-rack-project-v0-l18gwsapbewc1.webp" class="kg-image" alt="Homelab Spotlight - 3D Printed NUC Rack" loading="lazy" width="1080" height="608" srcset="https://noted.lol/content/images/size/w600/2024/08/finally-finished-my-custom-rack-project-v0-l18gwsapbewc1.webp 600w, https://noted.lol/content/images/size/w1000/2024/08/finally-finished-my-custom-rack-project-v0-l18gwsapbewc1.webp 1000w, https://noted.lol/content/images/2024/08/finally-finished-my-custom-rack-project-v0-l18gwsapbewc1.webp 1080w"></figure><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>I&apos;m really impressed by this homelab setup! It&apos;s one of the coolest I&apos;ve seen in a while. If you&apos;re not already inspired to build your own, I don&apos;t know what would be! And speaking of inspiration, wouldn&apos;t this make an amazing first post for someone starting a blog? Hint hint u/NeyPalm. &#x1F642;</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:6;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:45:"Snapp - Yet Another Self-Hosted Url Shortener";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:69:"Snapp empowers you to effortlessly create and manage shortened links.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:24:"https://noted.lol/snapp/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"669ff5dccaf0210001ac6379";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:26:"Self Hosted URL Shorteners";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Thu, 08 Aug 2024 14:49:00 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:91:"https://noted.lol/content/images/2024/07/snapp-self-hosted-url-shortener-main-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:6019:"<img src="https://noted.lol/content/images/2024/07/snapp-self-hosted-url-shortener-main-noted.lol.jpg" alt="Snapp - Yet Another Self-Hosted Url Shortener"><p>Introducing Snapp, a reliable self-hosted URL shortener, crafted to simplify link collecting and sharing.</p><h2 id="what-is-snapp">What is Snapp?</h2><p><a href="https://github.com/urania-dev/snapp?ref=noted.lol">Snapp</a>&#xA0;is your self-hostable URL shortening service. Effortlessly shorten links, and with Snapp&apos;s self-hosting capability, you have complete control. Create concise, shareable links on your terms with Snapp&apos;s user-friendly platform.</p><p>Snapp was created with an emphasis on privacy and control. With Snapp, you get to personalize your link endings, monitor how many times your links are clicked, and for an extra layer of security, you can set expiration dates on your links.</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/08/snapp-analytics.png" width="1920" height="911" loading="lazy" alt="Snapp - Yet Another Self-Hosted Url Shortener" srcset="https://noted.lol/content/images/size/w600/2024/08/snapp-analytics.png 600w, https://noted.lol/content/images/size/w1000/2024/08/snapp-analytics.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/snapp-analytics.png 1600w, https://noted.lol/content/images/2024/08/snapp-analytics.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/snapp-links.png" width="1920" height="911" loading="lazy" alt="Snapp - Yet Another Self-Hosted Url Shortener" srcset="https://noted.lol/content/images/size/w600/2024/08/snapp-links.png 600w, https://noted.lol/content/images/size/w1000/2024/08/snapp-links.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/snapp-links.png 1600w, https://noted.lol/content/images/2024/08/snapp-links.png 1920w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="snapp-core-features">Snapp Core Features</h2><ul><li><strong>Intuitive User Interface:</strong>&#xA0;Snapp offers a user-friendly interface for easy link shortening.</li><li><strong>Secure Authentication:</strong>&#xA0;Enjoy secure sessions for your user. Their information is protected.</li><li><strong>Custom Short Codes:</strong>&#xA0;Personalize your short codes to make your links memorable and easy to share.</li><li><strong>Expiration Dates:</strong>&#xA0;Manage link lifespans with expiration dates. You can set expiry dates for added security or let links remain active indefinitely.</li><li><strong>Secret Links:</strong>&#xA0;Enhance security with secret links, allowing you to share with a select audience using unique secrets.</li><li><strong>Usage Analytics:</strong>&#xA0;Access detailed, anonymous analytics for your links. Snapp provides insights into link engagements.</li><li><strong>Extended Metrics:</strong>&#xA0;Integrate Snapp with your self-hosted or cloud-based Umami Analytics for advanced metrics.</li><li><strong>URL Reputation Check:</strong>&#xA0;Ensure the safety of links with VirusTotal API reputation checks.</li><li><strong>REST API:</strong>&#xA0;Community-requested REST API endpoints enable remote management of your Snapp instance.</li></ul><p>Snapp started as a way for the developer to learn Svelte, Svelte5 Runes, and Tabler, which form the core of Snapp&apos;s functionality.</p><p>Snapp&apos;s easy installation using Docker allows you to get it up and running in seconds on your homelab or cloud host. 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><h2 id="install-snapp-using-docker">Install Snapp using Docker</h2><p>Use the following Docker run command to install Snapp on your system.</p><pre><code>services:
snapp:
image: uraniadev/snapp:0.8
ports:
- 3000:3000
environment:
DATABASE_URL: &apos;file:./db.sqlite&apos;
DATABASE_PROVIDER: sqlite # mysql | sqlite | pg
TOKEN_SECRET: # openssl rand -base64 32
ORIGIN: https://example.com</code></pre><p><strong>Note</strong>: SQLite database is located in /app/prisma/{DATABASE_URL} if you want to mount it</p><h2 id="default-admin-authentication">Default Admin Authentication</h2><p><a href="https://github.com/urania-dev/snapp?ref=noted.lol#default-admin-authentication"></a></p><p>If ENV variables ADMIN_USERNAME and ADMIN_PASSWORD are not set it defaults to:</p><pre><code> username: admin
password: password</code></pre><p>To get started, simply update the origin and public URL to your domain or local IP, and then access it through your web browser.</p><p>You can then begin adding links to be shortened.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/snapp-add-url.png" class="kg-image" alt="Snapp - Yet Another Self-Hosted Url Shortener" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/snapp-add-url.png 600w, https://noted.lol/content/images/size/w1000/2024/08/snapp-add-url.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/snapp-add-url.png 1600w, https://noted.lol/content/images/2024/08/snapp-add-url.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>Snapp is user-friendly and functions smoothly right away. I encountered a minor hiccup where the initial URL page didn&apos;t generate the custom short code on the first try. Instead, it gave it a random one so I had to edit the link and save it once more for it to work. Aside from that, it operates effectively, and I suggest you try it out! If you like using Snapp, don&apos;t forget to visit the&#xA0;<a href="https://github.com/urania-dev/snapp?ref=noted.lol">Snapp GitHub repository</a>&#xA0;and show your support with a star!</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:7;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:60:"Automate your Proxmox Homelab with Proxmox VE Helper Scripts";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:53:"Super cool scripts for Promox VE that automate tasks.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:44:"https://noted.lol/proxmox-ve-helper-scripts/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66af7cc11df9fc0001455f78";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:12:"Homelab Tips";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Wed, 07 Aug 2024 17:10:36 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:78:"https://noted.lol/content/images/2024/08/proxmox-helper-scripts-main-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:9587:"<img src="https://noted.lol/content/images/2024/08/proxmox-helper-scripts-main-noted.jpg" alt="Automate your Proxmox Homelab with Proxmox VE Helper Scripts"><p>For those who use Proxmox VE as part of their home lab setup, these helper scripts can be a valuable asset. By streamlining the process of setting up and deploying applications and tools, they make it possible to get started with new projects and experiments more quickly and efficiently.</p><h2 id="what-are-proxmox-ve-helper-scripts">What are Proxmox VE Helper Scripts?</h2><p>The <a href="https://github.com/tteck/Proxmox?ref=noted.lol">Proxmox VE Helper Scripts</a> were developed to simplify the process of deploying self-hosted applications and tools using Promox Virtual Environment. These scripts have gained popularity among users, particularly those who create and share their own homelab setups online. Notably, they&apos;ve been featured by popular YouTuber TechnoTim, a well-known figure in the homelab community. With over 12,000 stars on GitHub, these scripts are highly respected for making it easier to set up and manage virtual environments.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/kcpu4z5eSEU?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="Proxmox Automation with Proxmox Helper Scripts!"></iframe></figure><p>The Proxmox VE Helper Scripts repository offers a vast collection of nearly 200 pre-configured applications and tools, each accessible via a one line bash script that handles installation, updates, and configuration.</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/08/proxmox-helper-scripts-website-1.png" width="941" height="703" loading="lazy" alt="Automate your Proxmox Homelab with Proxmox VE Helper Scripts" srcset="https://noted.lol/content/images/size/w600/2024/08/proxmox-helper-scripts-website-1.png 600w, https://noted.lol/content/images/2024/08/proxmox-helper-scripts-website-1.png 941w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/proxmox-helper-scripts-website-2.png" width="1195" height="583" loading="lazy" alt="Automate your Proxmox Homelab with Proxmox VE Helper Scripts" srcset="https://noted.lol/content/images/size/w600/2024/08/proxmox-helper-scripts-website-2.png 600w, https://noted.lol/content/images/size/w1000/2024/08/proxmox-helper-scripts-website-2.png 1000w, https://noted.lol/content/images/2024/08/proxmox-helper-scripts-website-2.png 1195w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>You can use these scripts to create a Linux container or virtual machine by making choices interactively. You&apos;ll see options in a window that helps you set up your container or virtual machine.</p><p>There are two ways to do this: one is simple and uses default settings, and the other lets you customize those defaults if you want to. When you make your selections, the script will gather and check your input to create the final setup for your container or virtual machine.</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/08/proxmox-helper-scripts-debian.png" width="1423" height="613" loading="lazy" alt="Automate your Proxmox Homelab with Proxmox VE Helper Scripts" srcset="https://noted.lol/content/images/size/w600/2024/08/proxmox-helper-scripts-debian.png 600w, https://noted.lol/content/images/size/w1000/2024/08/proxmox-helper-scripts-debian.png 1000w, https://noted.lol/content/images/2024/08/proxmox-helper-scripts-debian.png 1423w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/proxmox-helper-scripts-debian-2.png" width="1421" height="614" loading="lazy" alt="Automate your Proxmox Homelab with Proxmox VE Helper Scripts" srcset="https://noted.lol/content/images/size/w600/2024/08/proxmox-helper-scripts-debian-2.png 600w, https://noted.lol/content/images/size/w1000/2024/08/proxmox-helper-scripts-debian-2.png 1000w, https://noted.lol/content/images/2024/08/proxmox-helper-scripts-debian-2.png 1421w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/proxmox-helper-scripts-debian-3.png" width="1429" height="626" loading="lazy" alt="Automate your Proxmox Homelab with Proxmox VE Helper Scripts" srcset="https://noted.lol/content/images/size/w600/2024/08/proxmox-helper-scripts-debian-3.png 600w, https://noted.lol/content/images/size/w1000/2024/08/proxmox-helper-scripts-debian-3.png 1000w, https://noted.lol/content/images/2024/08/proxmox-helper-scripts-debian-3.png 1429w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/proxmox-helper-scripts-debian-4.png" width="1595" height="663" loading="lazy" alt="Automate your Proxmox Homelab with Proxmox VE Helper Scripts" srcset="https://noted.lol/content/images/size/w600/2024/08/proxmox-helper-scripts-debian-4.png 600w, https://noted.lol/content/images/size/w1000/2024/08/proxmox-helper-scripts-debian-4.png 1000w, https://noted.lol/content/images/2024/08/proxmox-helper-scripts-debian-4.png 1595w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>As someone who uses Proxmox VE in my own homelab, I can attest to the value of these helper scripts firsthand. By leveraging them to quickly deploy applications and tools, I&apos;ve been able to save myself hours of setup time using them.</p><p>Be sure to check out the <a href="https://github.com/tteck/Proxmox?ref=noted.lol">Proxmox Helper Scripts Github</a> for more details and be sure to give it a star!</p><p><a href="https://www.proxmox.com/en/proxmox-virtual-environment/overview?ref=noted.lol">Proxmox VE</a> is a popular choice for those looking to sel-host their own applications and services at home. As an open-source solution, it offers a lot of flexibility and customization options. And as it&apos;s completely free to use, it&apos;s a great option for anyone who wants to experiment with virtualization or build a small-scale cloud infrastructure.</p><p>If you&apos;d like to learn more about Proxmox, see the following articles:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://noted.lol/proxmox-for-beginners/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">A Complete Beginners Guide to Proxmox</div><div class="kg-bookmark-description">Proxmox is a free, open-source virtualization platform that allows you to run multiple operating systems and virtual machines on a single physical server. Get started with Proxmox here! &#x1F525;</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="Automate your Proxmox Homelab with Proxmox VE Helper Scripts"><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/03/proxmox-getting-started-noted.lol.jpg" alt="Automate your Proxmox Homelab with Proxmox VE Helper Scripts"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://noted.lol/2-years-with-proxmox-on-a-nuc10i7fnh/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">2 Years with Proxmox on a NUC10i7FNH</div><div class="kg-bookmark-description">Small form factor PCs are becoming more popular in homelab environments. Here&#x2019;s my experience with the NUC 10 and Proxmox over the last 2 years.</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="Automate your Proxmox Homelab with Proxmox VE Helper Scripts"><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/2022/06/nuc-noted-main.png" alt="Automate your Proxmox Homelab with Proxmox VE Helper Scripts"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://noted.lol/an-intro-to-proxmox-backup-server/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">An Intro and Crash Course on Proxmox Backup Server</div><div class="kg-bookmark-description">Let&#x2019;s take a close look at Proxmox Backup Server and how to get started with it. &#x1F9E1;</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="Automate your Proxmox Homelab with Proxmox VE Helper Scripts"><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/03/an-intro-to-proxmox-backup-server-noted.lol.jpg" alt="Automate your Proxmox Homelab with Proxmox VE Helper Scripts"></div></a></figure>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:8;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:37:"Medama - Simple Self-Hosted Analytics";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:69:"Meet Medama, the ultra simple self-hosted website analytics solution!";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:25:"https://noted.lol/medama/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66abae611df9fc0001455de0";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:21:"Self Hosted Analytics";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Sat, 03 Aug 2024 14:52:58 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:79:"https://noted.lol/content/images/2024/08/medama-self-hosted-analytics-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:4501:"<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>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:9;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:36:"Glance - Self-Hosted Feeds Dashboard";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:75:"Organize all of your feeds and more using the self-hosted Glance dashboard.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:25:"https://noted.lol/glance/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66a924911df9fc0001455c3c";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:22:"Self Hosted Dashboards";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Thu, 01 Aug 2024 13:41:00 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:79:"https://noted.lol/content/images/2024/07/glance-self-hosted-dashboard-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:7843:"<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>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:10;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:52:"Dozzle - Self-Hosted Docker Container Log Monitoring";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:137:"Monitor your Docker containers in real-time with live log outputs directly from the source, all within the self-hosted Dozzle log viewer.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:25:"https://noted.lol/dozzle/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66a1265d1df9fc0001454a4c";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:19:"Self Hosted Logging";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Wed, 31 Jul 2024 11:35:07 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:69:"https://noted.lol/content/images/2024/07/dozzle-self-hosted-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:8490:"<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>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:11;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:66:"Docmost - Self -Hosted Collaborative Wiki and Documentation Portal";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:66:"Simplify your documentation using the self-hosted Docmost wiki app";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:26:"https://noted.lol/docmost/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66a3a3a31df9fc000145531f";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:3:{i:0;a:5:{s:4:"data";s:17:"Self Hosted Wikis";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:28:"Self Hosted Note Taking apps";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:25:"Self Hosted Documentation";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Tue, 30 Jul 2024 14:21:27 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:75:"https://noted.lol/content/images/2024/07/docmost-self-hosted-wiki-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:10154:"<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>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:12;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:62:"How to Convert any Website into a Zim File for Offline Viewing";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:169:"We explore how to convert a website into a ZIM file, providing you with a handy tool to keep your essential online resources at your fingertips, no matter where you are.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:60:"https://noted.lol/convert-any-website-into-a-zim-file-zimit/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"669ff5dccaf0210001ac636d";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:2:{i:0;a:5:{s:4:"data";s:12:"Linux Basics";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:6:"How To";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Mon, 29 Jul 2024 15:01:00 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:69:"https://noted.lol/content/images/2023/10/zimit-featured-noted.lol.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:14486:"<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>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:13;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:44:"PdfDing - Self-Hosted PDF Manager and Viewer";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:142:"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.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:26:"https://noted.lol/pdfding/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66a54f0b1df9fc000145599d";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:27:"Slef Hosted Document Viewer";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Sun, 28 Jul 2024 14:02:22 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"mrmn";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:70:"https://noted.lol/content/images/2024/07/self-hosted-pdfding-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:8959:"<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>
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:14;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:52:"Readeck - Self-Hosted Bookmark and Read it Later App";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:103:"Discover a smarter way to save what matters most online with the self-hosted Readeck read-it-later app.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:26:"https://noted.lol/readeck/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"66a12d851df9fc0001454a53";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:41:"Self Hosted Bookmark and Link Saving apps";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Sat, 27 Jul 2024 13:16:46 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:70:"https://noted.lol/content/images/2024/07/self-hosted-readeck-noted.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:8914:"<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>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}s:27:"http://www.w3.org/2005/Atom";a:1:{s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:3:{s:4:"href";s:22:"https://noted.lol/rss/";s:3:"rel";s:4:"self";s:4:"type";s:19:"application/rss+xml";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:13:{s:4:"date";s:29:"Mon, 26 Aug 2024 17:37:56 GMT";s:12:"content-type";s:23:"text/xml; charset=utf-8";s:13:"cache-control";s:17:"public, max-age=0";s:16:"content-encoding";s:4:"gzip";s:4:"etag";s:37:"W/"24395-jN5iv+wboPjaIUmX9rrWrU0Q8lY"";s:4:"vary";s:15:"Accept-Encoding";s:12:"x-powered-by";s:7:"Express";s:15:"cf-cache-status";s:7:"DYNAMIC";s:9:"report-to";s:231:"{endpoints:[{url:https:\/\/a.nel.cloudflare.com\/report\/v4?s=IDDGf0VSHfMgtjnqRx2A%2B%2FZUlWar%2FYU%2BQCCRI60J6bL8GRX2c0B7gYGeqw1O68MVv8oZLRnDDzsWBHm7fFCxx2lc%2BvyYfuKe9HP1zi6FsoNbX%2FT5ZFvQZXUQA1w%3D}],group:cf-nel,max_age:604800}";s:3:"nel";s:52:"{success_fraction:0,report_to:cf-nel,max_age:604800}";s:6:"server";s:10:"cloudflare";s:6:"cf-ray";s:20:"8b9597b6e9320492-CDG";s:7:"alt-svc";s:17:"h3=:443; ma=86400";}s:5:"build";s:14:"20240605153603";s:5:"mtime";i:1724693876;s:3:"md5";s:32:"1ed39908026cfe8ee5e965d3331b7a43";}