434 lines
220 KiB
Plaintext
Executable File
434 lines
220 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:"Thu, 19 Dec 2024 18:13:01 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:67:"ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server";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:164:"Experience the power of community-driven video streaming with Ersatz TV - personalize your channels, stream your own content, and embrace a diverse media landscape!";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:85:"https://noted.lol/ersatztv-a-comprehensive-guide-to-setting-up-a-private-iptv-server/";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:"669ff5dccaf0210001ac6380";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:25:"Self Hosted Media Serving";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, 19 Dec 2024 13:11: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:62:"https://noted.lol/content/images/2024/07/ersatztv-notedlol.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:25021:"<img src="https://noted.lol/content/images/2024/07/ersatztv-notedlol.jpg" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server"><p>The way we consume television is undergoing a major transformation. With the rise of streaming services and social media platforms, traditional TV has become more accessible than ever before. But what if you could take control of your own television experience? Enter ErsatzTV, a community driven project that aims to revolutionize the way we watch and interact with each other through decentralized, open-source video content. ErsatzTV is poised to shake up the status quo and give viewers more choice, more control, and more opportunity for connecting to streaming media.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/chrome_YMxhWn3VdT.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/chrome_YMxhWn3VdT.png 600w, https://noted.lol/content/images/size/w1000/2024/08/chrome_YMxhWn3VdT.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/chrome_YMxhWn3VdT.png 1600w, https://noted.lol/content/images/2024/08/chrome_YMxhWn3VdT.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="what-is-ersatztv">What is ErsatzTV?</h2><p><a href="https://github.com/ErsatzTV/ErsatzTV?ref=noted.lol">ErsatzTV</a> is a community-driven project that allows users to stream their own video content in a decentralized manner. By empowering creators to share their work directly with viewers, it offers an innovative and diverse media landscape for both entertainment and educational purposes. With features like customizable schedules and personalized channels, ErsatzTV provides an easy-to-use platform for creating and enjoying your favorite streaming content.</p><h3 id="core-features">Core Features</h3><ul><li>Use local media files and optional sidecar <a href="https://kodi.wiki/view/NFO_files?ref=noted.lol" rel="nofollow">NFO metadata</a>; no need for a full media server</li><li>IPTV server and HDHomeRun emulation support a wide range of client applications</li><li>Channel-specific streaming mode (MPEG-TS or HLS) and transcoding settings</li><li>Collection-based scheduling, with collections containing television shows, seasons, episodes and movies</li><li>Powerful scheduling options such as chronological collection playback throughout the day or over multiple days</li><li>Hardware-accelerated transcoding options (QSV, NVENC, VAAPI)</li><li><a href="https://www.plex.tv/?ref=noted.lol" rel="nofollow">Plex</a> media and metadata</li><li><a href="https://jellyfin.org/?ref=noted.lol" rel="nofollow">Jellyfin</a> media and metadata</li><li><a href="https://emby.media/?ref=noted.lol" rel="nofollow">Emby</a> media and metadata</li><li>Song and music video libraries</li><li>Pre-roll, mid-roll, post-roll filler options</li><li>Subtitle burn-in</li></ul><h2 id="why-use-ersatztv">Why use ErsatzTV?</h2><p>Have you ever ran into a self-hosted app that you never knew you needed? That's how I felt with <a href="https://www.reddit.com/r/selfhosted/comments/1dmh3mt/what_are_your_selfhosted_apps_you_cant_live/?ref=noted.lol">ErsatzTV when I saw it being talked about over on the r/selfhosted subreddit</a>. I thought to myself "why would I need that?" Then I got to reading the comments and saw someone mention a concern I had which was - what if the service keeps running in the background even when I'm not using it? It turned out to be just the opposite.</p><figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2024/08/chrome_7TqCm7BNT7.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="592" height="350"></figure><p>As I thought more about ErsatzTV, a question kept popping up: why do people need this app? But then I remembered my own experiences trying to find something to watch with my family, we'd all agree on nothing! That's when it clicked: ErsatzTV helps you curate your favorite content into streaming channels that play seamlessly. Just turn it on, and there's always something good playing.</p><p>You can also use ErsatzTV as a live music streaming station, home videos, YouTube videos and all sorts of other media you can think of.</p><h2 id="installing-ersatztv-using-docker">Installing ErsatzTV using Docker</h2><p>In my personal setup, I integrate ErsatzTV with Emby for seamless streaming. However, it's worth noting that other popular streaming apps like Plex and Jellyfin can also be used in conjunction with ErsatzTV, depending on your preferences and needs.</p><p>ErsatzTV is it's own standalone app that sees your media via a Docker volume mount. Take the following Docker Compose and change it to your needs. If you do not have Docker installed, see our <a href="https://noted.lol/get-started-self-hosting/" rel="noreferrer">guides about getting started with self-hosting</a>.</p><pre><code class="language-yamlversion:">version: '3.9'
|
|
services:
|
|
ersatztv:
|
|
image: jasongdove/ersatztv
|
|
restart: unless-stopped
|
|
volumes:
|
|
- '/srv/tv:/tv:ro'
|
|
- '/srv/movies:/movies:ro'
|
|
- '/srv/docker/ersatztv:/root/.local/share/ersatztv'
|
|
ports:
|
|
- '8409:8409'
|
|
environment:
|
|
- TZ=America/Washington
|
|
container_name: ersatztv
|
|
</code></pre><p>To set up our local media on ErsatzTV, we can create TV and Movies volumes in the compose file. It's possible to link your Emby instance by using an API key, but I encountered some permission issues and found it easier to simply mount the volumes instead. This method seems to work well for me.</p><p>Once you get Ersatz up and running via Docker, visit the web UI on port 8409.</p><h2 id="adding-a-local-media-source">Adding a Local Media Source</h2><p>The first thing I would do when you get to the ErsatzTV web UI is add a local media source. With this, we will use TV shows as the example. Click on "Local" under the Media Sources section on the left side panel. Now find "Shows" and click edit. Here you can add the path where our TV shows are. If you recall in the Docker Compose, it is mounted to /tv within the container. So that is what we will put in the path, then click "Add Path" then "Save Changes".</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/ersatztv-add-source.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-add-source.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-add-source.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-add-source.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-add-source.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>This will trigger a media scan and I recommend letting it scan your media before you do anything else. You don't have to wait but I recommend it to avoid running into any issues. Once the scan is complete you should now see your TV shows listed alphabetically under localhost:8409/media/tv/shows. If it does not initiate a scan, you can go to the Libraries section under Media and initiate the scan for Shows.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/ersatztv-tvshows.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-tvshows.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-tvshows.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-tvshows.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-tvshows.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>If you want metadata and posters to show within Ersatz, you must have posters and NFO handling enabled in Emby. The scan in Ersatz is noticeably faster without all the metadata and posters however, it looks much nicer with it. You can enable the options in Emby and rescan your libraries.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/ersatz-tvshow-view.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatz-tvshow-view.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatz-tvshow-view.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatz-tvshow-view.png 1600w, https://noted.lol/content/images/2024/08/ersatz-tvshow-view.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="adding-channels-collections-schedules-and-playouts-in-ersatztv">Adding Channels, Collections, Schedules and Playouts in ErsatzTV</h2><p>While the <a href="https://ersatztv.org/docs/intro?ref=noted.lol">ErsatzTV documentation</a> is very well written, I thought this part was a bit confusing. So I'll try to do my best explaining how channels are added and the process of getting them working properly. Overall, if you know the proper steps, it's not difficult.</p><h3 id="step-1-add-a-channel">Step 1: Add a Channel</h3><p>Click "Channels" at the top left. The default FFmpeg profile should work for you but will work better if you use a GPU. I do not have a GPU in this particular server however, you can use what's called <a href="https://en.wikipedia.org/wiki/HTTP_Live_Streaming?ref=noted.lol"><strong>HTTP Live Streaming</strong></a> also known as HLS Direct. It does not transcode content and can perform better on low power systems, but does not support watermarks and some clients will have issues at program boundaries. Keep in mind that if you use the default MPEG-TS Streaming Mode, it WILL use your CPU or GPU. You can try both modes to see which you prefer but make sure to give the system time to idle down your CPU or GPU before trying each option. It can take a couple minutes.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/ersatztv-add-channel-hls.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-add-channel-hls.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-add-channel-hls.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-add-channel-hls.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-add-channel-hls.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Adding a channel is pretty basic. You should already have an idea of what type of content you will be streaming on this channel. As an example, I will create one called Family.</p><p>I have 4 other channels already so for this example I will use number 5 as the channel number. From here, I name it Family, change the Streaming Mode to HLS Direct and everything else stays as is. You can change things but this is bare minimum setup to get your channel going. Upload a logo of your choice and hit "Add Channel".</p><h3 id="step-2-create-a-collection">Step 2: Create a Collection</h3><p>Collections are used as groups for the media you want to stream on a schedule. <strong>Once you create a collection you need to add media to that collection</strong>. Since we are making a Family channel, I'll add shows like Full House, Home Improvement, Step by Step etc. You can also add single episodes rather than the whole series if you wish. You can add media to a collection by browsing to TV Shows under Media on the left side panel. You can either use the search bar at the top or the alphabet index on the right side to make the process quicker.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/ersatztv-add-collection.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-add-collection.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-add-collection.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-add-collection.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-add-collection.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/ersatztv-add-media-collection.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-add-media-collection.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-add-media-collection.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-add-media-collection.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-add-media-collection.png 1920w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h3 id="step-3-add-a-schedule">Step 3: Add a Schedule</h3><p>The schedule is what tells the channel how often it will play.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/ersatztv-add-schedule.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-add-schedule.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-add-schedule.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-add-schedule.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-add-schedule.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>To create a new schedule, start by clicking "Add Schedule." For this example we will use the Shuffle Schedule option. You can change this as you get more used to how the application works. Again, naming the schedule "Family" to keep everything organized and so I know which collections, schedules and playouts go together.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/ersatztv-add-schedule-item.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-add-schedule-item.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-add-schedule-item.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-add-schedule-item.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-add-schedule-item.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Then, you can proceed to add a new Schedule Item. To do this, click on the relevant button and enter the Collection name in the provided field. It will auto populate with the collections you have if you type the name correctly. Once you've saved your item, the schedule will know which media is being scheduled for playback. For now, everything else stays as default. Make sure you save the changes.</p><h3 id="step-4-add-a-playout">Step 4: Add a Playout</h3><p>The final stage is adding the playout. Playouts are essential components in ErsatzTV, as they assign schedules to specific channels and track their individual playback of collection items. When using the same schedule across multiple channels (playouts), it's important to note that the content may not necessarily play simultaneously on all channels due to differences in timing or other factors. This ensures a more personalized viewing experience for each channel, tailored to its unique audience and preferences.</p><p>Under "Schedule" on the left panel, click Playouts and add a new one.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/ersatztv-add-playout.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-add-playout.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-add-playout.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-add-playout.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-add-playout.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/ersatztv-add-playout-edit.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-add-playout-edit.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-add-playout-edit.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-add-playout-edit.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-add-playout-edit.png 1920w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>Add the name of the channel and schedule we created then click "Add Playout". Now you can view your playout and see the media that is shuffled in the list to be streamed. You can reshuffle the order by clicking the the circle with an arrow icon. Keep in mind, if you reshuffle, it may take a while to change in the Emby guide, or you can manually update/refresh the guide.</p><h2 id="adding-the-iptv-link-and-guide-to-emby">Adding the IPTV link and Guide to Emby</h2><p>To implement the stream into Emby it is very simple. In the upper right corner on ErsatzTV web UI, you should see the M3U link. Right click that link and copy to your clipboard. Now navigate into Emby in the server dashboard to Live TV.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/ersatztv-add-to-emby.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1118" height="539" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-add-to-emby.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-add-to-emby.png 1000w, https://noted.lol/content/images/2024/08/ersatztv-add-to-emby.png 1118w"></figure><p>Add a new TV Source as a M3U tuner then paste the link in your clipboard.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/ersatztv-add-to-emby-2.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1060" height="554" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-add-to-emby-2.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-add-to-emby-2.png 1000w, https://noted.lol/content/images/2024/08/ersatztv-add-to-emby-2.png 1060w"></figure><p>Scroll down and click save. Now go back to your ErsatzTV web UI and right click the XMLTV link and copy that to your clipboard. Back on the Emby Live TV page, add a Guide Data Source, choose your country and select XMLTV. Click next and paste the link into the url input from your clipboard.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/ersatztv-add-to-emby-guide.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1073" height="571" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-add-to-emby-guide.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-add-to-emby-guide.png 1000w, https://noted.lol/content/images/2024/08/ersatztv-add-to-emby-guide.png 1073w"></figure><p>Now if we should be able to find our "Family" channel by searching for it in Emby.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/ersatztv-emby-1.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-emby-1.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-emby-1.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-emby-1.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-emby-1.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/ersatztv-emby-2.png" width="1920" height="911" loading="lazy" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-emby-2.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-emby-2.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-emby-2.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-emby-2.png 1920w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>When you click on a channel in Emby, you can view the list of collection items that are scheduled to play. This makes it easy to keep track of what's currently streaming and plan your viewing accordingly. And with the ability to customize each channel's schedule in ErsatzTV, you can create a truly personalized media experience for every member of your family.</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>I'm running ErsatzTV on an i7 8700k CPU without a GPU and it seems to run great using the MPEG-TS Stream Mode, however it does run up the cores pretty good. But that's ffmpeg for you.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/ersatztv-btop-stats.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1403" height="581" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-btop-stats.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-btop-stats.png 1000w, https://noted.lol/content/images/2024/08/ersatztv-btop-stats.png 1403w" sizes="(min-width: 1200px) 1200px"></figure><p>Running it using the HLS Direct Streaming Mode uses... no resources? I'm not sure what this sorcery is but I like it ALOT!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/ersatztv-btop-stats-HLS.png" class="kg-image" alt="ErsatzTV: A Comprehensive Guide to setting up a Private IPTV Server" loading="lazy" width="1880" height="968" srcset="https://noted.lol/content/images/size/w600/2024/08/ersatztv-btop-stats-HLS.png 600w, https://noted.lol/content/images/size/w1000/2024/08/ersatztv-btop-stats-HLS.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/ersatztv-btop-stats-HLS.png 1600w, https://noted.lol/content/images/2024/08/ersatztv-btop-stats-HLS.png 1880w" sizes="(min-width: 1200px) 1200px"></figure><p>It may take a while for the channels to start streaming on your devices when using HLS Direct but maybe it's worth it if you are using a lower powered machine.</p><p>Here's an interesting tidbit, the man behind ErsatzTV, <a href="https://jasondove.me/?ref=noted.lol">Jason Dove</a>, happens to be the lead developer for Disney Streaming! Isn't it ironic that he's helping to create a platform that competes with his own employer? It just goes to show that innovation and creativity often come from unexpected places.</p><p>If you enjoy this app, be sure to swing by the <a href="https://github.com/ErsatzTV/ErsatzTV?ref=noted.lol">ErsatzTV Github repo</a> and give it a star. Maybe consider becoming a sponsor of the project! I would also ask that you ask any support related questions for Ersatz there on the Github issue tracker.</p><p><a href="https://discord.gg/zA9FT8qW9g?ref=noted.lol">Check us out on Discord</a> and join over 1,200 members who self-host apps like this!</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:62:"Hoarder - The Ultimate All-In-One Bookmark and Note Taking 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:149:"Bring your links, bookmarks, notes and code snippets to one self-hosted location using Hoarder. The ultimate all-In-one bookmark and note taking app.";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/hoarder/";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:"669ff5dccaf0210001ac637f";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: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:1;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:"Sun, 15 Dec 2024 17:20: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:74:"https://noted.lol/content/images/2024/07/hoarder-self-hosted-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:11085:"<img src="https://noted.lol/content/images/2024/07/hoarder-self-hosted-noted.lol.jpg" alt="Hoarder - The Ultimate All-In-One Bookmark and Note Taking App"><p>There are lots of self-hosted note-taking apps and plenty of link-saving and bookmarking apps. But not many apps let you do both in one place. That's where Hoarder comes in. It handles both tasks and more.</p><h2 id="what-is-hoarder">What is Hoarder?</h2><p><a href="https://github.com/hoarder-app/hoarder?ref=noted.lol" rel="noreferrer">Hoarder</a> is a self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search.</p><p>Hoarder is quite the fun tool for creating notes, saving links and images making it easy to... well, hoard all your data in one place.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/hoarder-1.png" class="kg-image" alt="Hoarder - The Ultimate All-In-One Bookmark and Note Taking App" loading="lazy" width="1920" height="919" srcset="https://noted.lol/content/images/size/w600/2024/08/hoarder-1.png 600w, https://noted.lol/content/images/size/w1000/2024/08/hoarder-1.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/hoarder-1.png 1600w, https://noted.lol/content/images/2024/08/hoarder-1.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Did I mention it also has a <a href="https://github.com/hoarder-app/hoarder?tab=readme-ov-file&ref=noted.lol#features" rel="noreferrer">Chrome and Firefox extension</a>? Yeah it has that too! You can quickly save pages with a flick of a button on the extension to your self-hosted Hoarder app. Just plop in the server address, log in and it's done.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/hoarder-extension.png" class="kg-image" alt="Hoarder - The Ultimate All-In-One Bookmark and Note Taking App" loading="lazy" width="1919" height="832" srcset="https://noted.lol/content/images/size/w600/2024/08/hoarder-extension.png 600w, https://noted.lol/content/images/size/w1000/2024/08/hoarder-extension.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/hoarder-extension.png 1600w, https://noted.lol/content/images/2024/08/hoarder-extension.png 1919w" sizes="(min-width: 1200px) 1200px"></figure><p>You can add tags and add it to a list straight from the extension. But let's look closer at the app itself and all the features behind it.</p><h2 id="hoarder-primary-features">Hoarder Primary Features</h2><ul><li>Bookmark links, take simple notes and store images.</li><li>Automatic fetching for link titles, descriptions and images.</li><li>Sort your bookmarks into lists.</li><li>Full text search of all the content stored.</li><li>AI-based (aka chatgpt) automatic tagging. With supports for local models using ollama!</li><li><a href="https://chromewebstore.google.com/detail/hoarder/kgcjekpmcjjogibpjebkhaanilehneje?ref=noted.lol" rel="nofollow">Chrome plugin</a> and <a href="https://addons.mozilla.org/en-US/firefox/addon/hoarder/?ref=noted.lol" rel="nofollow">Firefox addon</a> for quick bookmarking.</li><li>An <a href="https://apps.apple.com/us/app/hoarder-app/id6479258022?ref=noted.lol" rel="nofollow">iOS app</a>, and an <a href="https://play.google.com/store/apps/details?id=app.hoarder.hoardermobile&pcampaignid=web_share&ref=noted.lol" rel="nofollow">Android app</a>.</li><li>Dark mode support (web only so far).</li><li>Self-hosting first.</li><li>[Planned] Downloading the content for offline reading.</li></ul><h2 id="install-hoarder-using-docker">Install Hoarder using Docker</h2><p>If you don't have Docker installed and need help getting started, I recommend checking out our <a href="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/get-started-self-hosting/?ref=noted.lol">self-hosting guides for beginners</a>. These guides cover the basics of setting up a small server to host apps using Docker. They're designed to help you get up and running smoothly, even if you're new to self-hosting.</p><p>For more detailed instructions, see the <a href="https://docs.hoarder.app/Installation/docker?ref=noted.lol">Hoarder documentation here</a>.</p><p>First you will need to create an .env file with the following:</p><pre><code>HOARDER_VERSION=latest
|
|
NEXTAUTH_SECRET=qxo0NvLCphGhkAu5fBcS1B0MxCeoig8G
|
|
MEILI_MASTER_KEY=aqxYm5UWCphGhkAu5fBcSJAPbSzeoiC2X
|
|
NEXTAUTH_URL=http://localhost:3000</code></pre><p>Change the secret keys if you wish.</p><p>Create a docker-compose.yml file and place it along side the .env file with the following:</p><pre><code>version: "3.8"
|
|
services:
|
|
web:
|
|
image: ghcr.io/hoarder-app/hoarder-web:latest
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /docker/hoarder/data:/data
|
|
ports:
|
|
- 3000:3000
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
REDIS_HOST: redis
|
|
MEILI_ADDR: http://meilisearch:7700
|
|
DATA_DIR: /data
|
|
redis:
|
|
image: redis:7.2-alpine
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /docker/hoarder/redis:/data
|
|
chrome:
|
|
image: gcr.io/zenika-hub/alpine-chrome:123
|
|
restart: unless-stopped
|
|
command:
|
|
- --no-sandbox
|
|
- --disable-gpu
|
|
- --disable-dev-shm-usage
|
|
- --remote-debugging-address=0.0.0.0
|
|
- --remote-debugging-port=9222
|
|
- --hide-scrollbars
|
|
meilisearch:
|
|
image: getmeili/meilisearch:v1.6
|
|
restart: unless-stopped
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
MEILI_NO_ANALYTICS: "true"
|
|
volumes:
|
|
- /docker/hoarder/meilisearch:/meili_data
|
|
workers:
|
|
image: ghcr.io/hoarder-app/hoarder-workers:latest
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /docker/hoarder/data:/data
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
REDIS_HOST: redis
|
|
MEILI_ADDR: http://meilisearch:7700
|
|
BROWSER_WEB_URL: http://chrome:9222
|
|
DATA_DIR: /data
|
|
# OPENAI_API_KEY: ...
|
|
depends_on:
|
|
web:
|
|
condition: service_started
|
|
|
|
volumes:
|
|
redis:
|
|
meilisearch:
|
|
data:</code></pre><p>You can change the volume locations to your needs for persistent data. Keep in mind this needs that .env file in order to work properly. You can <a href="https://docs.hoarder.app/configuration?ref=noted.lol#inference-configs-for-automatic-tagging">implement OpenAI for automatic tagging</a> if you wish but we will not be covering that today.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/hoarder-homepage.png" class="kg-image" alt="Hoarder - The Ultimate All-In-One Bookmark and Note Taking App" loading="lazy" width="2000" height="1079" srcset="https://noted.lol/content/images/size/w600/2024/08/hoarder-homepage.png 600w, https://noted.lol/content/images/size/w1000/2024/08/hoarder-homepage.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/hoarder-homepage.png 1600w, https://noted.lol/content/images/2024/08/hoarder-homepage.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="using-hoarder">Using Hoarder</h2><p>Currently, Hoarder is behind authentication and only available for private use which is fine for most people. So you will have to register a new account. The first account will be setup as the administrator of Hoarder. They have been looking at ways to allow users to share notes publicly <a href="https://github.com/hoarder-app/hoarder/issues/37?ref=noted.lol">here</a> and <a href="https://github.com/hoarder-app/hoarder/issues/126?ref=noted.lol">here</a>.</p><p>Once logged in you can paste a link and Hoarder will fetch the data to be displayed including cached content or text, a screenshot and soon to come an archive for offline viewing of the content. Perhaps as a PDF? Not sure yet but we will see soon!</p><p>You can view the saved data by clicking on the expand icon on the lower right side of the bookmark card.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/hoarder-bookmark.png" class="kg-image" alt="Hoarder - The Ultimate All-In-One Bookmark and Note Taking App" loading="lazy" width="1920" height="953" srcset="https://noted.lol/content/images/size/w600/2024/08/hoarder-bookmark.png 600w, https://noted.lol/content/images/size/w1000/2024/08/hoarder-bookmark.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/hoarder-bookmark.png 1600w, https://noted.lol/content/images/2024/08/hoarder-bookmark.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>From here, you can add tags and create notes that will appear in search results, which I think is just awesome! At the top, there's a small dropdown menu where you can switch from Cached Content to Screenshot. Soon, you'll also be able to access archived content. This feature makes organizing and finding your information so much easier.</p><p>Hoarder has mobile apps for both iOS and Android, which is great for keeping everything synced across devices. I haven't checked them out yet, but I've heard they are pretty awesome from folks on the selfhosted Reddit sub. They say the mobile experience is smooth and feature-rich, making it easy to access your notes, links, and images on the go. I'm excited to see how well it works in my daily routine.</p><figure class="kg-card kg-embed-card"><blockquote class="reddit-embed-bq" style="height:316px">
|
|
<a href="https://www.reddit.com/r/selfhosted/comments/1bo9tdq/introducing_hoarder_an_open_source/?ref=noted.lol">Introducing Hoarder 📦 - An open source Bookmark-Everything app with AI based tagging (mymind open source alternative)</a><br> by
|
|
<a href="https://www.reddit.com/user/MohamedBassem/?ref=noted.lol">u/MohamedBassem</a> in
|
|
<a href="https://www.reddit.com/r/selfhosted/?ref=noted.lol">selfhosted</a>
|
|
</blockquote>
|
|
<script async src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script></figure><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p><a href="https://www.reddit.com/user/MohamedBassem/?ref=noted.lol">Mohamed Bassem</a>, the creator of Hoarder, is really passionate about the project. He's actively working on it and welcomes ideas and requests from users. If you have any suggestions, issues, or just want to say thank you, head over to the <a href="https://github.com/hoarder-app/hoarder?ref=noted.lol">Hoarder project page on GitHub</a> and check it out.</p><p>I've been using <a href="https://library.kiwix.org/content/noted.lol_en_2024-07/noted.lol/memos/?ref=noted.lol">Memos</a> for things like this, and I recently discovered that the creator of Hoarder used to use Memos too. What a coincidence! I've been searching for an all-in-one solution for links, notes, images, and code snippets, and Hoarder just might be the answer. It was designed with people like us in mind, bringing everything together in one convenient place. This could really streamline how I organize my information and I hope you are as excited to use Hoarder as I am!</p>";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:35:"How Can I Get Started Self-Hosting?";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:86:"Want to get started self-hosting? Here's the rundown on the basics to get you started.";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:53:"https://noted.lol/how-can-i-get-started-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:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:24:"669ff5dccaf0210001ac6352";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:24:"Get Started Self Hosting";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Sat, 07 Dec 2024 16:55: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:83:"https://noted.lol/content/images/2023/09/getting-started-self-hosting-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:10466:"<img src="https://noted.lol/content/images/2023/09/getting-started-self-hosting-noted.lol.jpg" alt="How Can I Get Started Self-Hosting?"><p>Self-hosting means running your own server and hosting your own applications and data instead of relying on third-party services. It gives you more control over your data and privacy, and it can also save you money in the long run. Here are some steps to get started with self-hosting:</p><ol><li>Choose a server: You'll need a <a href="https://noted.lol/homelab-hardware/">server to host your applications and data</a>. You can either buy a physical server or rent a virtual server from a cloud provider such as Amazon Web Services (AWS), Google Cloud Platform (GCP), or Microsoft Azure.</li><li>Choose an operating system: The next step is to choose an operating system (OS) to run on your server. Linux is a popular choice for self-hosting because it's open-source and has a wide range of tools and applications available.</li><li>Set up your server: Once you have your server and OS, you'll need to set it up. This involves installing any necessary software, configuring your network settings, and <a href="https://noted.lol/tag/security/">securing your server</a>.</li><li>Choose your applications: Next, you'll need to choose the applications you want to self-host. Popular options include email servers, web servers, file sharing applications, and content management systems.</li><li>Install and configure your applications: Once you've chosen your applications, you'll need to install and configure them on your server.</li><li>Back up your data: It's important to back up your data regularly to ensure you don't lose anything in case of a hardware failure or other issue.</li><li>Monitor your server: Finally, you'll need to monitor your server to make sure everything is running smoothly and fix any issues that arise.</li></ol><div class="kg-card kg-product-card">
|
|
<div class="kg-product-card-container">
|
|
<img src="https://noted.lol/content/images/2023/09/self-host-ghost-blog-noted-1.jpg" width="1280" height="720" class="kg-product-card-image" loading="lazy" alt="How Can I Get Started Self-Hosting?">
|
|
<div class="kg-product-card-title-container">
|
|
<h4 class="kg-product-card-title"><span style="white-space: pre-wrap;">Get Started Self Hosting</span></h4>
|
|
</div>
|
|
|
|
|
|
<div class="kg-product-card-description"><p><span style="white-space: pre-wrap;">Learn the basics of self-hosting and start by self-hosting your own website using Ghost. This series will cover installing Ghost using Docker, setting up your domain with Cloudflare then using Zero Trust to protect your login page.</span></p></div>
|
|
|
|
<a href="https://noted.lol/tag/get-started-self-hosting/" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Get Started</span></a>
|
|
|
|
</div>
|
|
</div><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">👋</div><div class="kg-callout-text">Like what you see? Consider <a href="https://noted.lol/#/portal/signup">subscribing to the Noted newsletter</a>! You can always unsubscribe at any time. We also have <a href="https://discord.gg/zA9FT8qW9g?ref=noted.lol">Discord</a>!</div></div><p>Self-hosting can be a complex process, so it's important to do your research and follow best practices to ensure the security and stability of your server.</p><p>Here are some good self-hosting resources to get you started:</p><ol><li>Self-hosting software: There are many software applications available that can be self-hosted. Some popular options include Bookstack, Ghost, Portainer and Pi-Hole.</li><li>Documentation and tutorials: Many self-hosted applications have detailed documentation and tutorials available online. Check the application's website, GitHub repository, or forums for resources.</li><li>Online communities: There are many online communities dedicated to self-hosting and homelabbing. Reddit's <a href="https://www.reddit.com/r/selfhosted/?ref=noted.lol">/r/selfhosted</a> and <a href="https://www.reddit.com/r/homelab/?ref=noted.lol">/r/homelab</a> are popular communities, as well as the <a href="https://discord.gg/zA9FT8qW9g?ref=noted.lol">Noted Discord</a> server.</li><li>Blogs and websites: There are many blogs and websites that cover self-hosting topics and provide useful information and resources. Some popular options include <a href="https://alexgallacher.com/?ref=noted.lol">Alex Gallacher</a>, <a href="https://blog.networkprofile.org/?ref=noted.lol">Network Profile</a>, <a href="https://perfectmediaserver.com/?ref=noted.lol">Perfect Media Server</a>, and ofcourse <a href="https://noted.lol/" rel="noreferrer">Noted</a>.</li><li>YouTube channels and podcasts: There are many YouTube channels and podcasts dedicated to self-hosting and homelabbing. Some popular options include <a href="https://selfhosted.show/?ref=noted.lol">Self-Hosted Show</a>, <a href="https://thehomelab.show/?ref=noted.lol">Homelab Show</a>, and the <a href="https://hasspodcast.io/?ref=noted.lol">Home Assistant Podcast</a>.</li><li>Self-hosting platforms: There are also platforms that make it easy to self-host applications without the need for extensive technical knowledge. Some popular options include <a href="https://casaos.io/?ref=noted.lol">CasaOS</a>, <a href="https://www.runtipi.io/?ref=noted.lol">Tipi</a> and <a href="https://cosmos-cloud.io/?ref=noted.lol">Cosmos Cloud</a>.</li></ol><h3 id="final-notes-and-thoughts">Final Notes and Thoughts</h3><p>Self-hosting can be a deep rabbit hole and our goal is to help you learn the basics. You can use Noted as a stepping stone towards more advanced self-hosted techniques.</p><div class="kg-card kg-product-card">
|
|
<div class="kg-product-card-container">
|
|
<img src="https://noted.lol/content/images/2023/09/homelab-server-hardware-noted.lol-1.jpg" width="1280" height="720" class="kg-product-card-image" loading="lazy" alt="How Can I Get Started Self-Hosting?">
|
|
<div class="kg-product-card-title-container">
|
|
<h4 class="kg-product-card-title"><span style="white-space: pre-wrap;">What Hardware to Choose for your First Homelab Server?</span></h4>
|
|
</div>
|
|
|
|
|
|
<div class="kg-product-card-description"><p><span style="white-space: pre-wrap;">Let's discuss some common hardware choices that are power efficient to get you started with self hosting.</span></p></div>
|
|
|
|
<a href="https://noted.lol/homelab-hardware/" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Get Started</span></a>
|
|
|
|
</div>
|
|
</div><p>You don't need elaborate hardware or commercial grade servers to self-host. It can be done on something as small as a Raspberry Pi. Check out our guide on selecting the right hardware for self-hosting to get an idea.</p><h3 id="rather-listen">Rather Listen?</h3><p>Listen to the article in podcast form below.</p><div class="kg-card kg-audio-card"><img src="https://noted.lol/content/media/2024/09/How-Can-I-Get-Started-Self-Hosting__thumb.jpg" alt="How Can I Get Started Self-Hosting?" class="kg-audio-thumbnail"><div class="kg-audio-thumbnail placeholder kg-audio-hide"><svg width="24" height="24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M7.5 15.33a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm-2.25.75a2.25 2.25 0 1 1 4.5 0 2.25 2.25 0 0 1-4.5 0ZM15 13.83a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm-2.25.75a2.25 2.25 0 1 1 4.5 0 2.25 2.25 0 0 1-4.5 0Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M14.486 6.81A2.25 2.25 0 0 1 17.25 9v5.579a.75.75 0 0 1-1.5 0v-5.58a.75.75 0 0 0-.932-.727.755.755 0 0 1-.059.013l-4.465.744a.75.75 0 0 0-.544.72v6.33a.75.75 0 0 1-1.5 0v-6.33a2.25 2.25 0 0 1 1.763-2.194l4.473-.746Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M3 1.5a.75.75 0 0 0-.75.75v19.5a.75.75 0 0 0 .75.75h18a.75.75 0 0 0 .75-.75V5.133a.75.75 0 0 0-.225-.535l-.002-.002-3-2.883A.75.75 0 0 0 18 1.5H3ZM1.409.659A2.25 2.25 0 0 1 3 0h15a2.25 2.25 0 0 1 1.568.637l.003.002 3 2.883a2.25 2.25 0 0 1 .679 1.61V21.75A2.25 2.25 0 0 1 21 24H3a2.25 2.25 0 0 1-2.25-2.25V2.25c0-.597.237-1.169.659-1.591Z"/></svg></div><div class="kg-audio-player-container"><audio src="https://noted.lol/content/media/2024/09/How-Can-I-Get-Started-Self-Hosting_.wav" preload="metadata"></audio><div class="kg-audio-title">How Can I Get Started Self Hosting </div><div class="kg-audio-player"><button class="kg-audio-play-icon" aria-label="Play audio"><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-audio-pause-icon kg-audio-hide" aria-label="Pause audio"><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-audio-current-time">0:00</span><div class="kg-audio-time">/<span class="kg-audio-duration">892.44</span></div><input type="range" class="kg-audio-seek-slider" max="100" value="0"><button class="kg-audio-playback-rate" aria-label="Adjust playback speed">1×</button><button class="kg-audio-unmute-icon" aria-label="Unmute"><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-audio-mute-icon kg-audio-hide" aria-label="Mute"><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-audio-volume-slider" max="100" value="100"></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: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:47:"Blinko - Self-Hosted Notes with AI RAG Baked In";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:99:"What do you get when you mix note taking, micro blogging, pastebin, task management and AI? Blinko!";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/blinko/";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:"674dcd2817cdc1000154eb35";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: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:1;a:5:{s:4:"data";s:21:"Self Hosted Pastebins";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;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:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Tue, 03 Dec 2024 17:28:25 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:86:"https://noted.lol/content/images/2024/12/blinko-self-hosted-note-taking-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:6061:"<img src="https://noted.lol/content/images/2024/12/blinko-self-hosted-note-taking-main-noted.jpg" alt="Blinko - Self-Hosted Notes with AI RAG Baked In"><p>For many users, a digital note-taking app can feel like a bare minimum of features or a simple text editor with some limited organization tools. But for those who need more than just a basic notes system, the search for a better way to manage their thoughts and ideas is ongoing.</p><p>Few apps have managed to strike the perfect balance between functionality and usability, offering features that are both powerful and accessible. Blinko stands out as a unique solution that goes beyond the norm to give you more options.</p><h2 id="what-is-blinko">What is Blinko?</h2><p><a href="https://github.com/blinko-space/blinko?ref=noted.lol">Blinko</a> is a revolutionary open-source initiative that empowers people to seize their creative energy at any moment, capturing and organizing their instant thoughts with unparalleled ease.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/12/blinko-main-self-hosted.png" class="kg-image" alt="Blinko - Self-Hosted Notes with AI RAG Baked In" loading="lazy" width="1920" height="1440" srcset="https://noted.lol/content/images/size/w600/2024/12/blinko-main-self-hosted.png 600w, https://noted.lol/content/images/size/w1000/2024/12/blinko-main-self-hosted.png 1000w, https://noted.lol/content/images/size/w1600/2024/12/blinko-main-self-hosted.png 1600w, https://noted.lol/content/images/2024/12/blinko-main-self-hosted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="blinko-features"><strong>Blinko Features</strong></h2><ul><li><strong>AI-Enhanced Note Retrieval </strong>: Quickly search and access your notes using natural language queries, making it effortless to find exactly what you need. Connect to OpenAI or Ollama for RAG.</li><li>Export and import your notes easily.</li><li>Enable automated scheduled backups of the Blinko DB.</li><li>Choose which Notes or Blinkos to share publicly.</li><li><strong>Data Ownership </strong>: Securely store all your notes and data in your self-hosted environment, ensuring complete control over your information.</li></ul><h3 id="efficiency-and-performance"><strong>Efficiency and Performance</strong></h3><ul><li><strong>Efficient and Fast </strong>: Capture ideas instantly and store them as plain text for easy access, with full Markdown support for quick formatting and seamless sharing.</li><li><strong>Lightweight Architecture </strong>: Built on Next.js, delivering robust performance without sacrificing speed or efficiency.</li></ul><h3 id="open-source-community"><strong>Open-Source Community</strong></h3><ul><li><strong>Open for Collaboration </strong>: Contribute to the open-source project and help shape its future through GitHub.</li><li><strong>Completely Free </strong>: Use Blinko completely free of cost, with no hidden fees or premium features locked behind paywalls.</li></ul><p>Create individual "Blinkos" or Notes that serve as digital reminders, helping you stay focused on your priorities and keep track of your thoughts and ideas. With Blinko, you can organize your life in a way that works for you, separating work from leisure between the two.</p><p>You can try the <a href="https://blinko-demo.vercel.app/?ref=noted.lol">Blinko demo</a> here before you decide to install in yourself.</p><h2 id="install-blinko-using-docker">Install Blinko using Docker</h2><p>I installed Blinko on my Proxmox server using Docker Compose. If you need help installing Docker and want to learn more about how to get started self-hosting with Docker, please see our <a href="https://noted.lol/get-started-self-hosting/">getting started with self-hosting guides</a>.</p><pre><code class="language-YAML">networks:
|
|
blinko-network:
|
|
driver: bridge
|
|
|
|
services:
|
|
blinko-website:
|
|
image: blinkospace/blinko:latest
|
|
container_name: blinko-website
|
|
environment:
|
|
NODE_ENV: production
|
|
# NEXTAUTH_URL: http://localhost:1111
|
|
# NEXT_PUBLIC_BASE_URL: http://localhost:1111
|
|
NEXTAUTH_SECRET: ePxiS9WnT1
|
|
DATABASE_URL: postgresql://postgres:XDcONxlyRAn@postgres:5432/postgres
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
# Make sure you have enough permissions.
|
|
volumes:
|
|
- /docker/blinko/app:/app/.blinko
|
|
restart: always
|
|
logging:
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
ports:
|
|
- 1111:1111
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://blinko-website:1111/"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 30s
|
|
networks:
|
|
- blinko-network
|
|
|
|
postgres:
|
|
image: postgres:14
|
|
container_name: blinko-postgres
|
|
restart: always
|
|
ports:
|
|
- 5435:5432
|
|
environment:
|
|
POSTGRES_DB: postgres
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: XDcONxlyRAn
|
|
TZ: AAmerica/Detroit
|
|
# Persisting container data
|
|
# Make sure you have enough permissions.
|
|
volumes:
|
|
- /docker/blinko/db:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test:
|
|
["CMD", "pg_isready", "-U", "postgres", "-d", "postgres"]
|
|
interval: 5s
|
|
timeout: 10s
|
|
retries: 5
|
|
networks:
|
|
- blinko-network</code></pre><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>I'm thoroughly enjoying Blinko as my go-to app for capturing memories, jotting down notes, bookmarking websites, and even sharing snippets of code with others. What I love is how it fills the gap between what <a href="https://noted.lol/memos/" rel="noreferrer">Usememos</a> should have been, but wasn't, making it an excellent alternative solution that's exceeded my expectations.</p><p>Show your support by giving the project a star on the <a href="https://github.com/blinko-space/blinko?ref=noted.lol">Blinko Github page</a>!</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:0:"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:34:"Nexterm - Self-Hosted Web Terminal";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:"A hassle-free way to manage, and connect to your self-hosted servers.";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/nexterm/";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:"6745c17317cdc1000154e965";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:12:"Self Hosting";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:32:"Self Hosted Server Orchestrators";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:21:"Self Hosted Web Tools";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Mon, 02 Dec 2024 15:04:08 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:70:"https://noted.lol/content/images/2024/12/self-hosted-nexterm-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:5215:"<img src="https://noted.lol/content/images/2024/12/self-hosted-nexterm-noted.jpg" alt="Nexterm - Self-Hosted Web Terminal"><p>If you're one of the many homelab enthusiasts who has set up a self-hosted server, you probably spend a lot of time navigating the terminal to access your virtual machines, containers, or mini PCs. Nexterm changes that with its user-friendly interface, making it simple to save and recall all your connections with just a few clicks.</p><p>This convenience feature alone is a big step forward for anyone who's struggled with tedious manual setup or lost track of their server configurations in the past.</p><h2 id="what-is-nexterm">What is Nexterm?</h2><p><a href="https://github.com/gnmyt/Nexterm?ref=noted.lol">Nexterm</a> is a comprehensive server management tool that supports SSH, VNC, and RDP protocols.</p><h3 id="nexterm-key-features">Nexterm Key Features</h3><ul>
|
|
<li>Nexterm is currently in development and is open for preview.</li>
|
|
<li>Nexterm offers two-factor authentication and session management.</li>
|
|
<li>Nexterm is structured into folders and tabs for easy navigation.</li>
|
|
</ul>
|
|
<p>One key feature of Nexterm is its support for two-factor authentication, which adds an extra layer of security when accessing servers. The software also includes session management capabilities, allowing users to track who is logged in and when.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/12/welcome-DQKW0EwL.png" class="kg-image" alt="Nexterm - Self-Hosted Web Terminal" loading="lazy" width="2000" height="1196" srcset="https://noted.lol/content/images/size/w600/2024/12/welcome-DQKW0EwL.png 600w, https://noted.lol/content/images/size/w1000/2024/12/welcome-DQKW0EwL.png 1000w, https://noted.lol/content/images/size/w1600/2024/12/welcome-DQKW0EwL.png 1600w, https://noted.lol/content/images/2024/12/welcome-DQKW0EwL.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><p>The interface of Nexterm is organized into clear folders and tabs, making it easy to navigate and find specific settings or resources. This design should be intuitive for those familiar with server management tools.</p><p>Nexterm integrates with Proxmox, a popular open-source virtualization platform. With this integration, users can gain fine-grained control over LXC (Linux Containers) and VMs directly from the Nexterm interface. This makes it easier to manage complex server configurations and scaling needs.</p><p>Nexterm also appears to be expanding its capabilities through an integrated app store, which will allow users to easily deploy self-hosted applications with just one click. This feature promises to simplify the process of turning a remote server into a fully-fledged application platform, without requiring extensive technical expertise.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/12/nexterm-self-hosted-app-store.png" class="kg-image" alt="Nexterm - Self-Hosted Web Terminal" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/12/nexterm-self-hosted-app-store.png 600w, https://noted.lol/content/images/size/w1000/2024/12/nexterm-self-hosted-app-store.png 1000w, https://noted.lol/content/images/size/w1600/2024/12/nexterm-self-hosted-app-store.png 1600w, https://noted.lol/content/images/2024/12/nexterm-self-hosted-app-store.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p></p><h2 id="install-nexterm-using-docker">Install Nexterm using Docker</h2><p>I installed Nexterm on my Proxmox server using Docker Compose. If you need help installing Docker and want to learn more about how to get started self-hosting with Docker, please see our <a href="https://noted.lol/get-started-self-hosting/">getting started with self-hosting guides</a>.</p><pre><code>services:
|
|
nexterm:
|
|
ports:
|
|
- "6989:6989"
|
|
restart: always
|
|
volumes:
|
|
- /docker/nexterm:/app/data
|
|
image: germannewsmaker/nexterm:1.0.2-OPEN-PREVIEW
|
|
volumes:
|
|
nexterm:
|
|
</code></pre>
|
|
<h3 id="final-notes-and-thoughts">Final Notes and Thoughts</h3><p>I've had the opportunity to put Nexterm to the test in my homelab setup over the past couple of months, and I've been impressed with its capabilities. Initially, I was concerned that the project might be stalled due to lack of updates, but fortunately, I recently came across the Discord server where the developer is engaged with the community... for the most part.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/12/nexterm-release.png" class="kg-image" alt="Nexterm - Self-Hosted Web Terminal" loading="lazy" width="652" height="124" srcset="https://noted.lol/content/images/size/w600/2024/12/nexterm-release.png 600w, https://noted.lol/content/images/2024/12/nexterm-release.png 652w"></figure><p>This renewed interest has given me hope for Nexterm's future development and success. Perhaps we will see a new release in the coming New Year? Swing by the <a href="https://github.com/gnmyt/Nexterm?ref=noted.lol">Nexterm Github page</a> and show your support 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: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: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:"Wed, 27 Nov 2024 11:00: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: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:8929:"<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're everywhere. But finding a simple way to view and manage them across all your devices can be a challenge. That'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://github.com/mrmn2/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'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'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's <a href="https://noted.lol/get-started-self-hosting/">guides about getting started with self-hosting</a>.</p>
|
|
<pre><code>version: '3'
|
|
|
|
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:
|
|
- "8000:8000"
|
|
|
|
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'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: '$pbkdf2-sha512$310000$<rest_of_hashed_secret>'
|
|
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://github.com/mrmn2/PdfDing?ref=noted.lol">issue</a> on Github</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://github.com/mrmn2/PdfDing?ref=noted.lol">PdfDing repo</a> on Github and give it a star. I would also ask that you ask any support related questions for PdfDing there on the Github issue tracker.</p>
|
|
<p>As PdfDing is open source you are invited to modify or contribute. More information can be found <a href="https://github.com/mrmn2/PdfDing?ref=noted.lol">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: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:55:"Romm - Self-Hosted ROM Manager with EmulatorJS Baked In";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:122:"Bring back childhood nostalgia with classic games by self-hosting Romm. A tool for organizing and playing ROM based games.";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:23:"https://noted.lol/romm/";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:"6744a7b4fe9c21000164c74f";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:18:"Self Hosted Gaming";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, 25 Nov 2024 18:22:48 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:67:"https://noted.lol/content/images/2024/11/romm-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:15903:"<img src="https://noted.lol/content/images/2024/11/romm-self-hosted-noted.jpg" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In"><p>When I was a child in the 80's, game systems were a rare commodity and something we never had until Christmas of 1988. I opened a square box that had a Nintendo Entertainment System! I was 6 years old and on cloud nine when I opened that box.</p><p>Today, to me, games seem much more based on eye candy and graphics. It feels like more effort goes into how games look than the experience you have with them. So when I discovered Romm it was a huge look back into the past and the nostalgia grew stronger with every level I played. Soon I had my 9 year old son and 5 year old daughter playing with me and we have been sharing laughs and competitive smirks ever since. We actually just got done playing Super Mario 3 with the better graphic sprites. What an amazing time we had!</p><h2 id="what-is-romm">What is Romm?</h2><p><a href="https://github.com/rommapp/romm?ref=noted.lol">Romm</a> is a helpful tool for gamers who use emulators. Its easy-to-use interface allows you to quickly scan and organize your game collection, making it simpler to find the ones you want to play next. It also supports multiple platforms and lets you add custom tags to help you categorize your games. The baked in <a href="https://emulatorjs.org/?ref=noted.lol">EmulatorJS</a> platform allows you to play supported system games right in your browser.</p><figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2024/11/romm-desktop-slider.gif" class="kg-image" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In" loading="lazy" width="1152" height="648" srcset="https://noted.lol/content/images/size/w600/2024/11/romm-desktop-slider.gif 600w, https://noted.lol/content/images/size/w1000/2024/11/romm-desktop-slider.gif 1000w, https://noted.lol/content/images/2024/11/romm-desktop-slider.gif 1152w" sizes="(min-width: 720px) 720px"></figure><h2 id="what-are-game-roms">What are Game ROMs?</h2><p>In gaming, a ROM (short for "read-only memory") is a digital copy of a video game that's stored on a cartridge or chip in an old console. You can use special devices to copy these games onto your computer or phone, so you can play them on different devices. In this case, we are using EmulatorJS packaged within Romm to play our games.</p><h2 id="install-romm-on-your-system">Install Romm on your System</h2><p>First, you'll need to hop over to <a href="https://www.igdb.com/?ref=noted.lol">IGDB</a> and grab an ID and Secret <a href="https://api-docs.igdb.com/?ref=noted.lol#account-creation">using their API</a> through Twitch. It's pretty painless so don't worry, it only takes a couple minutes. If you already have a Twitch.TV account you can log in with that. Later you will add the key and secret in the Docker Compose.</p><p>This allows Romm to pull metadata into the DB like box cover art, game descriptions and more. It's not required to play the games in the browser but definitely makes the Romm experience more enjoyable.</p><p>Adding ROMs is really the only tricky part because the folder structure needs to be that of which Romm understands. See the image below for how mine are setup.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/romm-file-structure.png" class="kg-image" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In" loading="lazy" width="1919" height="364" srcset="https://noted.lol/content/images/size/w600/2024/11/romm-file-structure.png 600w, https://noted.lol/content/images/size/w1000/2024/11/romm-file-structure.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/romm-file-structure.png 1600w, https://noted.lol/content/images/2024/11/romm-file-structure.png 1919w" sizes="(min-width: 1200px) 1200px"></figure><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">🎮</div><div class="kg-callout-text">Don't have ROMs? Don't ask me for any but you can easily find them on the Internet Archive and other websites out there.</div></div><p>One thing I advise against is adding folders with thousands of ROMs. I had issues with the DB breaking on multiple occasions and it was not a good experience. So I only add the games I enjoy most. Most likely something I was doing but it's working great now!</p><p>For more on folder structure, see the <a href="https://github.com/rommapp/romm?tab=readme-ov-file&ref=noted.lol#folder-structure">Romm documentation</a> that explains this in much more detail. Also, the names of the <a href="https://github.com/rommapp/romm/wiki/Supported-Platforms?ref=noted.lol">Romm folders for each system must be as follows</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/rommapp/romm/wiki/Supported-Platforms?ref=noted.lol"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Supported Platforms</div><div class="kg-bookmark-description">A beautiful, powerful, self-hosted rom manager. Contribute to rommapp/romm development by creating an account on GitHub.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">rommapp</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://repository-images.githubusercontent.com/611338935/3677cd9a-9d50-4415-aebc-b77360d8afed" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In"></div></a></figure><p>I installed Romm on my Proxmox server using Docker Compose. If you need help installing Docker and want to learn more about how to get started self-hosting with Docker, please see our <a href="https://noted.lol/get-started-self-hosting/">getting started with self-hosting guides</a>.</p><p>Use the following Docker Compose stack to setup Romm on your host:</p><pre><code class="language-YAML">services:
|
|
romm:
|
|
image: rommapp/romm:latest
|
|
container_name: romm
|
|
restart: unless-stopped
|
|
environment:
|
|
- DB_HOST=romm-db
|
|
- DB_NAME=romm # Should match MYSQL_DATABASE in mariadb
|
|
- DB_USER=romm-user # Should match MYSQL_USER in mariadb
|
|
- DB_PASSWD=4I15WdXs6M2k9V # Should match MYSQL_PASSWORD in mariadb
|
|
- DB_PORT=3306
|
|
- ROMM_AUTH_SECRET_KEY=<YOUR KEY> # Generate a key with `openssl rand -hex 32`
|
|
- IGDB_CLIENT_ID=<YOUR ID> # Generate an ID and SECRET in IGDB
|
|
- IGDB_CLIENT_SECRET=<YOUR SECRET> # https://api-docs.igdb.com/#account-creation
|
|
volumes:
|
|
- /docker/romm/romm_resources:/romm/resources # Resources fetched from IGDB (covers, screenshots, etc.)
|
|
- /docker/romm/romm_redis_data:/redis-data # Cached data for background tasks
|
|
- /ROMS/Romm:/romm/library # Your game library
|
|
- /docker/romm/assets:/romm/assets # Uploaded saves, states, etc.
|
|
- /docker/romm/config:/romm/config # Path where config.yml is stored
|
|
ports:
|
|
- 8998:8080
|
|
depends_on:
|
|
- romm-db
|
|
|
|
romm-db:
|
|
image: mariadb:latest # if you experience issues, try: linuxserver/mariadb:latest
|
|
container_name: romm-db
|
|
restart: unless-stopped
|
|
environment:
|
|
- MYSQL_ROOT_PASSWORD=4I15WdXs6M2k9V # Use a unique, secure password
|
|
- MYSQL_DATABASE=romm
|
|
- MYSQL_USER=romm-user
|
|
- MYSQL_PASSWORD=4I15WdXs6M2k9V
|
|
- PUID=1000
|
|
- PGID=1000
|
|
ports:
|
|
- 3306:3306
|
|
volumes:
|
|
- /docker/romm/mysql_data:/var/lib/mysql</code></pre><p>You may need to change ports and volumes to suit your needs but if its the only app on the host you shouldn't have to. Don't forget to add your IGDB secret and key!</p><p>Once Romm in installed, go to the IP of the host on port 8998 and create an admin account. </p><h2 id="setting-up-romm-for-the-first-time">Setting up Romm for the first Time</h2><p>Once logged in you can go to /scan to scan for ROMs on your host. </p><p>Keep in mind that <a href="https://github.com/rommapp/romm/wiki/EmulatorJS-Player?ref=noted.lol#supported-systems">Romm and EmulatorJS only support certain game systems</a> to play in your browser. So if you are expecting to play PS3 games on this, you will be sadly disappointed to figure out you can't... yet. It mostly supports older systems at this time. You can still add ROMs for cataloguing and browsing but won't be able to play the ones that are not supported by the emulator system.</p><p>That's pretty much it! Let the games scan in and then you can browse and play supported games.</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/11/romm-self-hosted-game-info-noted.png" width="1920" height="911" loading="lazy" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In" srcset="https://noted.lol/content/images/size/w600/2024/11/romm-self-hosted-game-info-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/romm-self-hosted-game-info-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/romm-self-hosted-game-info-noted.png 1600w, https://noted.lol/content/images/2024/11/romm-self-hosted-game-info-noted.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/11/romm-self-hosted-game-play-noted.png" width="1920" height="1080" loading="lazy" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In" srcset="https://noted.lol/content/images/size/w600/2024/11/romm-self-hosted-game-play-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/romm-self-hosted-game-play-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/romm-self-hosted-game-play-noted.png 1600w, https://noted.lol/content/images/2024/11/romm-self-hosted-game-play-noted.png 1920w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="using-a-usb-game-pad-with-romm">Using a USB Game Pad with Romm</h2><p>You can easily setup and use USB game pads with Romm. First you need to enter a game and on the bottom left side click the game pad icon. Make sure your game pad is plugged in <strong>then press a button to activate the game pad</strong>. From here you can map the buttons and this is where it gets really fun! You can map quick save, quick load, rewind and fast forward. So if you are not feeling as skilled as you once were when you were a child, those buttons will come in handy and sure have your back.</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/11/romm-gamepad-control-mapping-1-noted.png" width="1247" height="848" loading="lazy" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In" srcset="https://noted.lol/content/images/size/w600/2024/11/romm-gamepad-control-mapping-1-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/romm-gamepad-control-mapping-1-noted.png 1000w, https://noted.lol/content/images/2024/11/romm-gamepad-control-mapping-1-noted.png 1247w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/11/romm-gamepad-control-mapping-noted-1.png" width="305" height="135" loading="lazy" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In"></div></div></div></figure><p>I use a <a href="https://www.amazon.com/Classic-Controller-Gamepad-kiwitat%C3%A1-Joysticks/dp/B01JYGYAUG/ref=sr_1_18?asc_campaign=32c11b7e871d97ee68d3ad0803d0f417&asc_source=01H1P39M5ZSG9J6WR6B1HBK9M0&crid=RXSPKI3E1IJB&dib=eyJ2IjoiMSJ9.3garTwvXA82LcFppB4nl__LfvxDUvebKCUXeXT1NEh8O3i2Hwfbq15pEO65amfGubGBgg_EmmdUH8J0Z9FYnrJLZdQDzyheJc-tx0051KzDGmx7qDbYCAh37BeDqSKwhG-TvIG-3VMNkVrLZ-1fJWN0HzPXadt8X2rdQ-JY5F_d4gQy34ginaOwtNfHxxq8vNkbTOc4TTarIPkRK8NrBeyCjCk8G-uPeg2XXyDBIjWY.woUXB_Setop1BOSgADsuitv7GafpvchnzfBDoB6rrWc&dib_tag=se&keywords=snes+game+pad&qid=1732556788&sprefix=snes+game+pa%2Caps%2C177&sr=8-18&ref=noted.lol">SNES style game pad</a> (NOT and affiliate link) and they seem to work great for every game I've tried. They are dirt cheap but the quality of the controls are phenomenal.</p><p>While Romm is installed on my Proxmox server, I use a laptop to access it for better portability so I can place it where I want it and use HDMI to the TV. My laptop has 3 USB ports and easily supports 2 USB game pads.</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/11/IMG_4222.JPG" width="2000" height="1500" loading="lazy" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In" srcset="https://noted.lol/content/images/size/w600/2024/11/IMG_4222.JPG 600w, https://noted.lol/content/images/size/w1000/2024/11/IMG_4222.JPG 1000w, https://noted.lol/content/images/size/w1600/2024/11/IMG_4222.JPG 1600w, https://noted.lol/content/images/size/w2400/2024/11/IMG_4222.JPG 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/11/romm-playtime.jpg" width="1256" height="940" loading="lazy" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In" srcset="https://noted.lol/content/images/size/w600/2024/11/romm-playtime.jpg 600w, https://noted.lol/content/images/size/w1000/2024/11/romm-playtime.jpg 1000w, https://noted.lol/content/images/2024/11/romm-playtime.jpg 1256w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="some-other-useful-info">Some other useful Info</h2><p>The quick save button will only save states in your current session and <strong>will not</strong> save to the server. To save to the server, you need to use the mouse and click the disk icon in the emulator tray. I could not find a way to map that option but would love to see that happen some day in a later Romm release. Because of this, I stopped using the quick save and now only use rewind as this allows you to scrub back to wherever you wish. Fast forward allows you to scrub through dialogue and other things that take time. It's a feature of Romm that really makes the experience more enjoyable for people like me who are less skilled and definitely have less patience. It saves you from having to start all over again!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/romm-save-state-noted.png" class="kg-image" alt="Romm - Self-Hosted ROM Manager with EmulatorJS Baked In" loading="lazy" width="1196" height="769" srcset="https://noted.lol/content/images/size/w600/2024/11/romm-save-state-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/romm-save-state-noted.png 1000w, https://noted.lol/content/images/2024/11/romm-save-state-noted.png 1196w"></figure><p>Now I can close the game and pick up where I left off another day. I sure wish I had these options back in the day!</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>Romm has filled a void this holiday season. My kids and I have the week off for Thanksgiving and we have been having a blast playing retro games that I played as a child. One quote from my son. "Dada, why are your games so hard?! Why are they so flat!?" HA!</p><p>I highly recommend checking out Romm. Swing by the <a href="https://github.com/rommapp/romm?ref=noted.lol">Romm Github repo</a> and give the project a star. Any issues should also be directed to the Romm issue tracker.</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:55:"What Self-Hosted Apps can you not live Without in 2024?";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:87:"It's time to take another tour of my self-hosted apps and the hardware we host them on.";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:36:"https://noted.lol/self-hosting-2024/";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:"6708039afe9c21000164a9a4";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:"Fri, 22 Nov 2024 18:19:18 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:68:"https://noted.lol/content/images/2024/11/self-hosting-2024-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:16761:"<img src="https://noted.lol/content/images/2024/11/self-hosting-2024-noted.jpg" alt="What Self-Hosted Apps can you not live Without in 2024?"><p>Like Noted, most of the self-hosted apps I use are being hosted on an Intel NUC. This small but powerful mini PC is more than sufficient for the job and has been trucking away now for almost 3 years 24/7.</p><p>As a self-hosting enthusiast, I rely heavily on <a href="https://noted.lol/proxmox-for-beginners/">Proxmox</a> to manage some containers and applications both locally and remotely. Not all the apps I host are running on Proxmox but the most important ones are due to the ability to easily create snapshots and implement Proxmox Backup Server for backups.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/proxmox-self-hosted-noted.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1920" height="703" srcset="https://noted.lol/content/images/size/w600/2024/11/proxmox-self-hosted-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/proxmox-self-hosted-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/proxmox-self-hosted-noted.png 1600w, https://noted.lol/content/images/2024/11/proxmox-self-hosted-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://noted.lol/install-docker-and-portainer/">Portainer</a> simplifies container operations by offering a single point of management for Docker containers, allowing users to easily start, stop, update, remove, and manage them in a centralized way.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/portainer-self-hosted-noted.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/11/portainer-self-hosted-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/portainer-self-hosted-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/portainer-self-hosted-noted.png 1600w, https://noted.lol/content/images/2024/11/portainer-self-hosted-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://noted.lol/homepage-dashboard/">Homepage</a> is my dashboard of choice this year. It helps keep my apps and services organized because lord knows I have way to many to remember.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/homarr-self-hosted-noted.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/11/homarr-self-hosted-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/homarr-self-hosted-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/homarr-self-hosted-noted.png 1600w, https://noted.lol/content/images/2024/11/homarr-self-hosted-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://noted.lol/paperless-ngx/">Paperless-ngx</a> is what I use to scan important documents to manage. It keeps them organized and uses OCR to scan text in images and PDF files for easy searching of the docs and images. I can tag and label them as much as I wish. The only gripe I have about Paperless is the lack of folder hierarchy.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/paperless-ngx-documents-smallcards-dark.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1600" height="1146" srcset="https://noted.lol/content/images/size/w600/2024/11/paperless-ngx-documents-smallcards-dark.png 600w, https://noted.lol/content/images/size/w1000/2024/11/paperless-ngx-documents-smallcards-dark.png 1000w, https://noted.lol/content/images/2024/11/paperless-ngx-documents-smallcards-dark.png 1600w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://noted.lol/bookstack/">Bookstack</a> is a self-hosted wiki platform where I keep all of my notes, configurations and other personal information I want to remember for later. I have been using Bookstack for roughly 5 years and it has been one of my most used self-hosted apps.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/bookstack-self-hosted-noted-2024.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/11/bookstack-self-hosted-noted-2024.png 600w, https://noted.lol/content/images/size/w1000/2024/11/bookstack-self-hosted-noted-2024.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/bookstack-self-hosted-noted-2024.png 1600w, https://noted.lol/content/images/2024/11/bookstack-self-hosted-noted-2024.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://noted.lol/pinchflat/">Pinchflat</a> is what I use as my YouTube PVR. It downloads, organizes and will even remove videos that are older than a certain date! Just add a source and it will automatically download the channels you want. I use the "Media Center" preset so it displays the videos nicely in Emby just like a TV show!</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/11/emby-youtube-channel-pinchflat-self-hosted-noted.jpg" width="1920" height="911" loading="lazy" alt="What Self-Hosted Apps can you not live Without in 2024?" srcset="https://noted.lol/content/images/size/w600/2024/11/emby-youtube-channel-pinchflat-self-hosted-noted.jpg 600w, https://noted.lol/content/images/size/w1000/2024/11/emby-youtube-channel-pinchflat-self-hosted-noted.jpg 1000w, https://noted.lol/content/images/size/w1600/2024/11/emby-youtube-channel-pinchflat-self-hosted-noted.jpg 1600w, https://noted.lol/content/images/2024/11/emby-youtube-channel-pinchflat-self-hosted-noted.jpg 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/11/pinchflat-self-hosted-youtube-downloader-noted-1.png" width="1920" height="911" loading="lazy" alt="What Self-Hosted Apps can you not live Without in 2024?" srcset="https://noted.lol/content/images/size/w600/2024/11/pinchflat-self-hosted-youtube-downloader-noted-1.png 600w, https://noted.lol/content/images/size/w1000/2024/11/pinchflat-self-hosted-youtube-downloader-noted-1.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/pinchflat-self-hosted-youtube-downloader-noted-1.png 1600w, https://noted.lol/content/images/2024/11/pinchflat-self-hosted-youtube-downloader-noted-1.png 1920w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>I'm a bit of a sentimental guy, and <a href="https://noted.lol/memos/">Usememos</a> is my way of keeping track of the little things that matter most, reminders from loved ones, memories I want to hold onto forever or just silly selfies with reminders of things I did that day.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/usememos-self-hosted-noted.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/11/usememos-self-hosted-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/usememos-self-hosted-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/usememos-self-hosted-noted.png 1600w, https://noted.lol/content/images/2024/11/usememos-self-hosted-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://noted.lol/ollama-openwebui/">Ollama and Open WebUI</a> allows you to run high-performance language models directly on local devices and gives users complete freedom to customize and optimize LLMs to suit their specific needs. Together with Open WebUI, you can easily chat with LLMs or Large Language Models to get answers to questions, learn a new language, learn how to code and much more.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/ollama-openwebui-self-hosted-noted.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/11/ollama-openwebui-self-hosted-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/ollama-openwebui-self-hosted-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/ollama-openwebui-self-hosted-noted.png 1600w, https://noted.lol/content/images/2024/11/ollama-openwebui-self-hosted-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://getsharex.com/?ref=noted.lol">ShareX </a>is an open-source app that enables users to capture screenshots and record video clips along with many more amazing tools. Zipline, provides an easy-to-use interface for sharing files across different devices or platforms. By integrating the settings of <a href="https://noted.lol/zipline/">Zipline into ShareX</a>, you can create custom configurations tailored to your needs.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/zipline-self-hosted-sharex-noted.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/11/zipline-self-hosted-sharex-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/zipline-self-hosted-sharex-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/zipline-self-hosted-sharex-noted.png 1600w, https://noted.lol/content/images/2024/11/zipline-self-hosted-sharex-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://github.com/gnmyt/Nexterm?ref=noted.lol">Nexterm</a> is a self-hosted web terminal that lets you access and control your server from different devices. It has been improving over time with new features, but currently it mainly provides a simple way to log in and interact with your server through SSH credentials.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://noted.lol/content/images/2024/11/nexterm-self-hosted-terminal-noted.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/11/nexterm-self-hosted-terminal-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/nexterm-self-hosted-terminal-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/nexterm-self-hosted-terminal-noted.png 1600w, https://noted.lol/content/images/2024/11/nexterm-self-hosted-terminal-noted.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Nexterm with the nvtop command running</span></figcaption></figure><p><a href="https://noted.lol/netdata-prometheus-and-grafana/">Grafana</a> is a great way to see your system metrics at a glance. It may seem overwhelming to learn (and I have articles about setting it up) but it's worth the effort.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/grafana-dashboard-english.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="2000" height="1118" srcset="https://noted.lol/content/images/size/w600/2024/11/grafana-dashboard-english.png 600w, https://noted.lol/content/images/size/w1000/2024/11/grafana-dashboard-english.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/grafana-dashboard-english.png 1600w, https://noted.lol/content/images/size/w2400/2024/11/grafana-dashboard-english.png 2400w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://github.com/AnalogJ/scrutiny?ref=noted.lol">Scrutiny</a> only has one job. It runs SMART scans on my server hard drives and provide<em>s</em> a simple view of the health status of each drive.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/scrutiny-self-hosted-noted.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/11/scrutiny-self-hosted-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/scrutiny-self-hosted-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/scrutiny-self-hosted-noted.png 1600w, https://noted.lol/content/images/2024/11/scrutiny-self-hosted-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://noted.lol/fileflows/">FileFlows</a> has saved me tons of disk space by converting files to another container by using NVIDIA encoding. It condenses the file sizes down while maintaining a great quality in the end result. I have spent hours testing different quality settings and have provided my Flow in the article here on the site.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/fileflows-self-hosted-noted.lol.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/11/fileflows-self-hosted-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2024/11/fileflows-self-hosted-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/fileflows-self-hosted-noted.lol.png 1600w, https://noted.lol/content/images/2024/11/fileflows-self-hosted-noted.lol.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://noted.lol/romm/" rel="noreferrer">Romm</a> is how I organize and browse the ROM collection I have. It also allows me to play the games in the browser using <a href="https://emulatorjs.org/?ref=noted.lol">EmulatorJS</a>! Only supported systems apply though for gameplay.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/romm-self-hosted-noted.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1484" height="411" srcset="https://noted.lol/content/images/size/w600/2024/11/romm-self-hosted-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/romm-self-hosted-noted.png 1000w, https://noted.lol/content/images/2024/11/romm-self-hosted-noted.png 1484w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://noted.lol/audiobookshelf-a-self-hosted-audiobook-and-podcast-server-with-phone-apps/">Audiobookshelf</a> is what I use to catch up on podcasts... alright, I admit it, I horde podcasts. ABS can automatically download any podcast you subscribe to!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/audiobookshelf-self-hosted-noted.png" class="kg-image" alt="What Self-Hosted Apps can you not live Without in 2024?" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/11/audiobookshelf-self-hosted-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/audiobookshelf-self-hosted-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/audiobookshelf-self-hosted-noted.png 1600w, https://noted.lol/content/images/2024/11/audiobookshelf-self-hosted-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>There's no way I'll ever get around to listening to all 8,195 hours of audio between every podcast. But, it's fun to have a variety of things to choose from.</p><p><a href="https://noted.lol/self-host-ghost/">Ghost</a> is my favorite open-source blogging platform. If you didn't know already, Noted (this website) is running on Ghost in Docker as I mentioned before. Ghost is fast, easy to use and distraction free. I highly recommend it to anyone who wants to start a blog.</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>Another year in the books for self-hosting. There's so many more apps lined up for review that you may see on the list next year but for now, not much has changed.</p><p>What apps did you find this year and which are your favorites?</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: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:54:"Data Hoarding - The Hobby and Habit Nobody Talks About";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:68:"Let's talk about Data Hoarding and why I do it for the greater good.";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/data-hoarding/";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:"673df66efe9c21000164ba31";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:13:"Data Hoarding";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:12:"Self Hosting";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:12:"Desktop 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:"Wed, 20 Nov 2024 16:30:40 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeremy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:29:"http://search.yahoo.com/mrss/";a:1:{s:7:"content";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"url";s:73:"https://noted.lol/content/images/2024/11/data-hoarding-noted-featured.jpg";s:6:"medium";s:5:"image";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:12641:"<img src="https://noted.lol/content/images/2024/11/data-hoarding-noted-featured.jpg" alt="Data Hoarding - The Hobby and Habit Nobody Talks About"><p>As someone who values cleanliness and orderliness in my everyday life, it might seem ironic that I'm also prone to collecting and storing digital data. However, for me, this behavior is more about "preservation", a hobby where I keep digital files and information safe and organized... Well, most of it. While having too many files can become overwhelming, it's a different beast from the cluttered homes often featured on hoarding shows. Like any hobby, though, an excessive focus on preservation can tip into obsession, leading to an unhealthy attachment.</p><h2 id="what-is-data-hoarding">What is Data Hoarding?</h2><p>Data hoarding is a personal habit where individuals collect and accumulate large amounts of digital information, often without any clear purpose or organization. For some people, hoarding digital data is a nostalgic impulse, while others do it out of habit or anxiety about losing important information. Whatever the reason, data hoarders often struggle to manage their collections, leading to digital clutter and disorganization that can be overwhelming and difficult to navigate.</p><figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2024/11/hdd-pile.jpeg" class="kg-image" alt="Data Hoarding - The Hobby and Habit Nobody Talks About" loading="lazy" width="1000" height="667" srcset="https://noted.lol/content/images/size/w600/2024/11/hdd-pile.jpeg 600w, https://noted.lol/content/images/2024/11/hdd-pile.jpeg 1000w" sizes="(min-width: 720px) 720px"></figure><h2 id="what-do-you-data-hoard">What do you Data Hoard?</h2><p>I have a fascination with older media. Think print magazines, vintage comics, classic e-books, podcasts and radio shows. I'm also into older YouTube content that's no longer widely available. On the less exciting side, I tend to collect academic papers, user manuals, and instruction guides. It's my way of preserving pieces of history and making them accessible to myself (and others) when they're otherwise lost to time. For me, it's not just about preserving nostalgia or sentimentality, although those aspects can be appealing too.</p><h2 id="why-do-you-data-hoard">Why do you Data Hoard?</h2><p>A growing number of online shows, such as podcasts, YouTube channels, and publications, are facing "cultural cancellation", where content is suddenly removed or demonized due to shifting social norms and accusations of offense. This phenomenon erases historical context, stifles free speech, and disproportionately targets artists and creators who dare to challenge the status quo.</p><p>On a more practical level, I'm drawn to these types of materials because they often offer a unique perspective on history, culture, and technology that's no longer widely available today. Magazines from the 80s and 90s, for example, provide a fascinating glimpse into the social, economic, and cultural context of those times.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/the-magazine-rack-archive.org-internet-archive.png" class="kg-image" alt="Data Hoarding - The Hobby and Habit Nobody Talks About" loading="lazy" width="1901" height="906" srcset="https://noted.lol/content/images/size/w600/2024/11/the-magazine-rack-archive.org-internet-archive.png 600w, https://noted.lol/content/images/size/w1000/2024/11/the-magazine-rack-archive.org-internet-archive.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/the-magazine-rack-archive.org-internet-archive.png 1600w, https://noted.lol/content/images/2024/11/the-magazine-rack-archive.org-internet-archive.png 1901w" sizes="(min-width: 1200px) 1200px"></figure><p>Comics and graphic novels also hold a special interest for me. I love how they can convey complex ideas and emotions through a combination of text and images in a way that's both accessible and powerful. Many classic comics have been lost over the years, either due to changes in cultural attitudes or simply because they were published in small quantities.</p><p>As for e-books, podcasts, and radio shows, I'm drawn to their ephemeral nature, they're often short-lived and easily forgotten. This makes them all the more precious when preserved. Some of these older podcasts are like interviews with people from another era, offering a glimpse into the thoughts, experiences, and opinions of individuals who've long since passed on.</p><figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2024/11/paul-harvey.jpg" class="kg-image" alt="Data Hoarding - The Hobby and Habit Nobody Talks About" loading="lazy" width="1280" height="720" srcset="https://noted.lol/content/images/size/w600/2024/11/paul-harvey.jpg 600w, https://noted.lol/content/images/size/w1000/2024/11/paul-harvey.jpg 1000w, https://noted.lol/content/images/2024/11/paul-harvey.jpg 1280w" sizes="(min-width: 720px) 720px"></figure><h2 id="where-can-you-get-data-to-hoard">Where can you get data to hoard?</h2><p><a href="https://www.reddit.com/r/libgen/comments/15p8h24/announcement_access_library_genesis_via_the/?ref=noted.lol">LibGen</a>, <a href="https://annas-archive.org/?ref=noted.lol">Anas Archive</a>, <a href="https://the-eye.eu/?ref=noted.lol">The Eye</a>, <a href="https://archive.org/">Internet Archive</a> and other sites like torrent trackers and tools like <a href="https://nicotine-plus.org/?ref=noted.lol">Nicotine+</a> ( a <a href="https://www.slsknet.org/news/?ref=noted.lol">SoulSeek</a> client) are often overlooked by mainstream users, but for someone like me who's passionate about preservation, they offer a wealth of valuable resources. These platforms might be less well-known, but that's precisely what makes them so appealing.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/11/libgen-noted.png" class="kg-image" alt="Data Hoarding - The Hobby and Habit Nobody Talks About" loading="lazy" width="1105" height="480" srcset="https://noted.lol/content/images/size/w600/2024/11/libgen-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/11/libgen-noted.png 1000w, https://noted.lol/content/images/2024/11/libgen-noted.png 1105w"></figure><p>LibGen, in particular, is a great example of a platform that's often misunderstood. To many people, it sounds like just another "piracy" site, but the truth is that LibGen provides access to a vast library of e-books and other digital content that might otherwise be lost forever.</p><h2 id="why-should-we-talk-about-data-hoarding">Why should we talk about Data Hoarding?</h2><p>Discussing data hoarding as it relates to preservation highlights the importance of safeguarding our collective cultural heritage. By collecting and storing digital data, individuals can help preserve a record of history, literature, art, and innovation that might otherwise be lost or forgotten. This preservation effort is not just about accumulating files, but about safeguarding knowledge, memories, and experiences for future generations to learn from and build upon. If you have any questions about the hobby, you can check out the <a href="https://www.reddit.com/r/DataHoarder/?ref=noted.lol">r/DataHoarder</a> subreddit.</p><h2 id="what-are-some-self-hosted-tools-good-for-data-hoarding">What are some Self-Hosted tools good for Data Hoarding?</h2><p>There are some very useful tools that make hoarding digital data easier and can help you organize your collections. Here's a shortlist of my favorites.</p><ul>
|
|
<li><a href="https://noted.lol/audiobookshelf-a-self-hosted-audiobook-and-podcast-server-with-phone-apps/">Audiobookshelf</a> - Organizing and downloading podcasts</li>
|
|
<li><a href="https://github.com/linuxserver/docker-readarr?ref=noted.lol">Readarr</a> with <a href="https://github.com/TheWicklowWolf/BookBounty?ref=noted.lol">Bookbounty</a> - Organizing and downloading e-books from LibGen</li>
|
|
<li><a href="https://noted.lol/pinchflat/">Pinchflat</a> or <a href="https://noted.lol/ytdl-sub/">ytdl-sub</a> - Organizing and automating downloading YouTube content</li>
|
|
<li><a href="https://noted.lol/kapowarr/">Kapowarr</a> - Organizing and downloading comics</li>
|
|
<li><a href="https://nicotine-plus.org/?ref=noted.lol">Nicotine+</a> or <a href="https://github.com/fletchto99/nicotine-plus-docker?ref=noted.lol">Docker image</a> - Finding and downloading more hard to find items. Also good for sharing your collection if you plan to do that</li>
|
|
<li><a href="https://github.com/linuxserver/docker-diskover?ref=noted.lol">Diskover</a> - Open source file indexer, file search engine and data management and analytics powered by Elasticsearch</li>
|
|
<li><a href="https://www.voidtools.com/?ref=noted.lol">Everything</a> - Search and browse your files on Windows with options to serve over HTTP, FTP and ETP</li>
|
|
<li><a href="https://github.com/filebrowser/filebrowser?ref=noted.lol">Filebrowser</a> - Search, browse and share your files over HTTP</li>
|
|
</ul>
|
|
<figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://noted.lol/content/images/2024/11/nicotine-plus.png" class="kg-image" alt="Data Hoarding - The Hobby and Habit Nobody Talks About" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/11/nicotine-plus.png 600w, https://noted.lol/content/images/size/w1000/2024/11/nicotine-plus.png 1000w, https://noted.lol/content/images/size/w1600/2024/11/nicotine-plus.png 1600w, https://noted.lol/content/images/2024/11/nicotine-plus.png 1920w" sizes="(min-width: 1200px) 1200px"><figcaption><a href="https://github.com/fletchto99/nicotine-plus-docker?ref=noted.lol"><span style="white-space: pre-wrap;">Nicotine+ Interface using Docker</span></a></figcaption></figure><p>I'm still waiting for a user friendly magazine management tool to come along. Currently, <a href="https://lazylibrarian.gitlab.io/?ref=noted.lol">LazyLibrarian</a> (<a href="https://www.reddit.com/r/LazyLibrarian/?ref=noted.lol">r/</a>) is an option, but it can be overwhelming with all its settings and features. It requires some patience and research to set it up correctly, which isn't always easy. I've also found that using magazines with it can be tricky and <a href="https://www.reddit.com/r/LazyLibrarian/comments/1gj161b/problem_with_issue_date_of_magazines/?ref=noted.lol">I haven't quite figured out how to make it work smoothly yet</a> (not my post).</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>For me, the thrill of the hunt is part of what makes this hobby so enjoyable. And when I finally track down something elusive, it's an incredible feeling like I've uncovered a piece of history that was thought to be lost forever.</p><p>Of course, I'm aware that not everyone might share my enthusiasm for these types of platforms and communities. Some people might view them as shady or untrustworthy, but for me, they represent a unique opportunity to preserve cultural heritage and make it accessible to others. On the flip side of the thin line lies piracy, an issue I don't condone. Rather than dictating how you choose to spend your leisure time, I'd like to pose a thought-provoking question: If buying something doesn't necessarily mean owning it, then what does constitute piracy?</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://medium.com/@beatmekanik/if-buying-isnt-owning-then-piracy-isn-t-stealing-0faae966ef04?ref=noted.lol"><div class="kg-bookmark-content"><div class="kg-bookmark-title">“If Buying isn’t Owning, then Piracy isn’t Stealing”</div><div class="kg-bookmark-description">In an era where digital goods dominate the market, the rights of consumer ownership has shifted dramatically. The age-old notion that…</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156" alt="Data Hoarding - The Hobby and Habit Nobody Talks About"><span class="kg-bookmark-author">Medium</span><span class="kg-bookmark-publisher">Johnathon M. Horner</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://miro.medium.com/v2/resize:fit:1200/1*rTDR4Bj18eMSWwm2ESrBVw.jpeg" alt="Data Hoarding - The Hobby and Habit Nobody Talks About"></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: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:61:"Kapowarr - The arr Comic Manager You've been Waiting For";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:96:"You never knew you wanted comics until you try this self hosted comic manager. This is Kapowarr!";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/kapowarr/";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:"669ff5dccaf0210001ac6332";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:"Tue, 05 Nov 2024 22:18: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:80:"https://noted.lol/content/images/2023/05/self-hosted-kapowarr-noted.lol-main.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:8913:"<img src="https://noted.lol/content/images/2023/05/self-hosted-kapowarr-noted.lol-main.jpg" alt="Kapowarr - The arr Comic Manager You've been Waiting For"><p>Kapowarr brings us the connection that's missing between reading your favorite comics online to owning them and collecting them to save for later. I've written about the popular <a href="https://noted.lol/komga">Komga</a> app that can serve up your comics and it pairs very nicely with Kapowarr.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/05/kapowarr-self-hosted-comic-manager-noted.lol.jpg" class="kg-image" alt="Kapowarr - The arr Comic Manager You've been Waiting For" loading="lazy" width="1785" height="927" srcset="https://noted.lol/content/images/size/w600/2023/05/kapowarr-self-hosted-comic-manager-noted.lol.jpg 600w, https://noted.lol/content/images/size/w1000/2023/05/kapowarr-self-hosted-comic-manager-noted.lol.jpg 1000w, https://noted.lol/content/images/size/w1600/2023/05/kapowarr-self-hosted-comic-manager-noted.lol.jpg 1600w, https://noted.lol/content/images/2023/05/kapowarr-self-hosted-comic-manager-noted.lol.jpg 1785w" sizes="(min-width: 1200px) 1200px"></figure><p>If you are familiar with Sonarr or Radarr then the Kapowarr learning curve should be fairly easy for you. There are a few small things that are different that I will go over.</p><h3 id="how-does-kapowarr-work">How does Kapowarr Work?</h3><p>Kapowarr comes packaged into a Docker image that can easily be spun up pretty much anywhere.</p><p>Kapowarr first needs a directory to store comics. This can be applied in the settings under "Media Management". Under "Root Folders" you have to add <code>/content</code> which is what the Docker image maps to your comic storage.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/05/kapowarr-file-naming-noted.lol.png" class="kg-image" alt="Kapowarr - The arr Comic Manager You've been Waiting For" loading="lazy" width="1785" height="927" srcset="https://noted.lol/content/images/size/w600/2023/05/kapowarr-file-naming-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/05/kapowarr-file-naming-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/05/kapowarr-file-naming-noted.lol.png 1600w, https://noted.lol/content/images/2023/05/kapowarr-file-naming-noted.lol.png 1785w" sizes="(min-width: 1200px) 1200px"></figure><p>Then you need to apply a free <a href="https://comicvine.gamespot.com/api/?ref=noted.lol">Comic Vine API key</a>.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/05/kapowarr-comic-vine-api-noted.lol.png" class="kg-image" alt="Kapowarr - The arr Comic Manager You've been Waiting For" loading="lazy" width="1785" height="927" srcset="https://noted.lol/content/images/size/w600/2023/05/kapowarr-comic-vine-api-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/05/kapowarr-comic-vine-api-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/05/kapowarr-comic-vine-api-noted.lol.png 1600w, https://noted.lol/content/images/2023/05/kapowarr-comic-vine-api-noted.lol.png 1785w" sizes="(min-width: 1200px) 1200px"></figure><p>Kapowarr searches and scrapes links on a website known as <a href="https://getcomics.org/?ref=noted.lol">Get Comics</a> (I suggest using an ad blocker before clicking on the link) to scan and find complete volumes or single issues. Currently, Get Comics is the only source for comics within Kapowarr. Eventually, plans are to implement Usenet to allow users to connect their favorite servers for other sources. Oh! and in case you are wondering, the owner of the Get Comics website is well aware of Kapowarr and loves the idea!</p><p>My favorite part about Kapowarr and all of the arr suit of apps is the ability to customize the file structure at the click of a button.</p><p>As it sits right now, there is no way to do it all in one go but only per volume. I think maybe soon that will be added in though.</p><p>Viewing volumes lets you see all of the issues obtained or missing. And by clicking on a issue you can see the info. As long as Comic Vine has information about the issue, you can see it here too.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/05/kapowarr-volume-info-noted.lol.png" class="kg-image" alt="Kapowarr - The arr Comic Manager You've been Waiting For" loading="lazy" width="1785" height="870" srcset="https://noted.lol/content/images/size/w600/2023/05/kapowarr-volume-info-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/05/kapowarr-volume-info-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/05/kapowarr-volume-info-noted.lol.png 1600w, https://noted.lol/content/images/2023/05/kapowarr-volume-info-noted.lol.png 1785w" sizes="(min-width: 1200px) 1200px"></figure><p>Kapowarr supports automatic and manual searching for issues. I find manual seems to work better right now but Kapowarr still does 90% of the leg work you would do otherwise downloading all of these outside of the app.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/05/kapowarr-search-noted.lol.png" class="kg-image" alt="Kapowarr - The arr Comic Manager You've been Waiting For" loading="lazy" width="1785" height="927" srcset="https://noted.lol/content/images/size/w600/2023/05/kapowarr-search-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/05/kapowarr-search-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/05/kapowarr-search-noted.lol.png 1600w, https://noted.lol/content/images/2023/05/kapowarr-search-noted.lol.png 1785w" sizes="(min-width: 1200px) 1200px"></figure><p>Kapowarr will download the files to the folder specified in the "File Naming" section, rename them and get your collection more organized than ever before.</p><p>It's important to note that Kapowarr scrapes all the links on the Get Comics page when you run a search. If it finds a link that works, it will begin the download process which you can see on the "Activity" page under "Queue"</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/05/kapowarr-activity-queue-noted.lol.png" class="kg-image" alt="Kapowarr - The arr Comic Manager You've been Waiting For" loading="lazy" width="1791" height="320" srcset="https://noted.lol/content/images/size/w600/2023/05/kapowarr-activity-queue-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/05/kapowarr-activity-queue-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/05/kapowarr-activity-queue-noted.lol.png 1600w, https://noted.lol/content/images/2023/05/kapowarr-activity-queue-noted.lol.png 1791w" sizes="(min-width: 1200px) 1200px"></figure><p>There is one other page I can't forget to mention because I think it's important to show that you can donate to the owner of Get Comics and the creator of Kapowarr.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/05/kapowarr-system-about-noted.lol.png" class="kg-image" alt="Kapowarr - The arr Comic Manager You've been Waiting For" loading="lazy" width="1785" height="870" srcset="https://noted.lol/content/images/size/w600/2023/05/kapowarr-system-about-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/05/kapowarr-system-about-noted.lol.png 1000w, https://noted.lol/content/images/size/w1600/2023/05/kapowarr-system-about-noted.lol.png 1600w, https://noted.lol/content/images/2023/05/kapowarr-system-about-noted.lol.png 1785w" sizes="(min-width: 1200px) 1200px"></figure><p>This can be found on the "System" page under "Status" where you will also find links to the docs, Kapowarr Discord server and you can report any issues you find with the app.</p><h3 id="final-notes-and-thoughts">Final Notes and Thoughts</h3><p>I never knew how many comic series there were until I started testing Kapowarr. <a href="https://github.com/Casvt?ref=noted.lol">Cas</a> is the dev behind the app and I have been working with him and brutally testing Kapowarr for several weeks now.</p><p>Watching this app grow into what it is today is truly awesome. It's not completely bug free yet, but Cas has been squashing bugs left and right that I have been sending his way.</p><p>I know many of you will be eager to try it out and wondering how you can get your hands on it. Keep your eyes peeled on Kapowarr <a href="https://discord.gg/zgPUhJqdny?ref=noted.lol">Discord</a> or check out the <a href="https://github.com/Casvt/Kapowarr?ref=noted.lol">Kapowarr Github repo</a>. Be sure to drop 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:55:"Draw and Map your Self Hosted Services using Excaladraw";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:123:"You'll have a blast drawing your self-hosted diagram using the self-hosted and open source Excalidraw. Here's how I did it.";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:47:"https://noted.lol/self-hosted-services-diagram/";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:"669ff5dccaf0210001ac6347";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: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:"";}i:1;a:5:{s:4:"data";s:12:"Self Hosting";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Sun, 03 Nov 2024 12:25: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:85:"https://noted.lol/content/images/2023/09/self-hosted-diagram-excalidraw-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:12597:"<img src="https://noted.lol/content/images/2023/09/self-hosted-diagram-excalidraw-noted.lol.jpg" alt="Draw and Map your Self Hosted Services using Excaladraw"><p>Back in March of 2023 I wrote an article highlighting an app called <a href="https://noted.lol/excalidraw/">Excalidraw</a>. Since then, I have been seeing quite a few people using it or recommending it for drawing diagrams.</p><p>Excaladraw is a great self-hosted and open source web tool for drawing diagrams and mapping out projects that you want to display comprehensive visuals of.</p><p>I'm going to create a simple diagram that shows my self-hosted services setup and explain how I did it using nothing more than Excalidraw and <a href="https://github.com/walkxcode/dashboard-icons?ref=noted.lol">free icons from WalkxCode on Github</a>. </p><h3 id="step-1-install-excalidraw-using-docker">Step 1. Install Excalidraw using Docker</h3><p> If you're new to self-hosting, don't worry, we have guides available to help you <a href="https://noted.lol/get-started-self-hosting/">get started with self-hosting</a>. There you can quickly learn how to install Docker on your system.</p><p>What's awesome is Excalidraw is very easy to install. Two simple commands is all you need to get it up and running. Use the following commands on any LXC or VM to get Excalidraw up and running.</p><pre><code>docker pull docker.io/excalidraw/excalidraw:latest
|
|
docker run -p 8080:80 -d docker.io/excalidraw/excalidraw:latest</code></pre><p>This will pull the latest Excalidraw image and install it on your machine using Docker. Once it is finished just open your browser to the IP and port of the application.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://noted.lol/content/images/2023/09/excalidraw-self-hosted-dark-mode-noted.lol-1.gif" class="kg-image" alt="Draw and Map your Self Hosted Services using Excaladraw" loading="lazy" width="1920" height="931" srcset="https://noted.lol/content/images/size/w600/2023/09/excalidraw-self-hosted-dark-mode-noted.lol-1.gif 600w, https://noted.lol/content/images/size/w1000/2023/09/excalidraw-self-hosted-dark-mode-noted.lol-1.gif 1000w, https://noted.lol/content/images/size/w1600/2023/09/excalidraw-self-hosted-dark-mode-noted.lol-1.gif 1600w, https://noted.lol/content/images/2023/09/excalidraw-self-hosted-dark-mode-noted.lol-1.gif 1920w"></figure><p>To switch to dark mode, click the small hamburger icon in the upper left corner and click "Dark mode". From here we will start drawing using premade tools. Mostly rectangles and text tools.</p><h3 id="step-2-read-the-help-dialog-box-and-keyboard-shortcuts">Step 2. Read the "help" dialog box and keyboard shortcuts</h3><p>Before we begin, it's important to note that no files will be saved on the server. All diagrams created are saved locally on the machine and in the browser cache. So get used to pressing Ctrl+S (using a Windows machine) when your cursor is targeting the Excalidraw canvas. This is a shortcut that will save files to your machine as .excalidraw files. These are like Photoshop PSD files. The file contains the raw contents of your project including layers, images and everything else. I will explain how to export as PNG later when the project is completed.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://noted.lol/content/images/2023/09/excalidraw-self-hosted-keybind-shortcuts-noted.lol.gif" class="kg-image" alt="Draw and Map your Self Hosted Services using Excaladraw" loading="lazy" width="1920" height="931" srcset="https://noted.lol/content/images/size/w600/2023/09/excalidraw-self-hosted-keybind-shortcuts-noted.lol.gif 600w, https://noted.lol/content/images/size/w1000/2023/09/excalidraw-self-hosted-keybind-shortcuts-noted.lol.gif 1000w, https://noted.lol/content/images/size/w1600/2023/09/excalidraw-self-hosted-keybind-shortcuts-noted.lol.gif 1600w, https://noted.lol/content/images/2023/09/excalidraw-self-hosted-keybind-shortcuts-noted.lol.gif 1920w"></figure><p>You should take a minute to look at the help section that covers a bunch more useful keyboard shortcuts that will help you drastically save time when creating projects in Excalidraw. Some of which I didn't even know existed until I started writing this article!</p><h3 id="step-3-begin-drawing-using-tools-on-the-toolbar">Step 3. Begin drawing using tools on the toolbar</h3><p>I started with the rectangle tool. When you create shapes, you will notice the side panel open on the left side giving you options to change color, fill the shape, change the border and more.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2023/09/excalidraw-self-hosted-diagram-drawing-noted.lol.gif" class="kg-image" alt="Draw and Map your Self Hosted Services using Excaladraw" loading="lazy" width="1920" height="931" srcset="https://noted.lol/content/images/size/w600/2023/09/excalidraw-self-hosted-diagram-drawing-noted.lol.gif 600w, https://noted.lol/content/images/size/w1000/2023/09/excalidraw-self-hosted-diagram-drawing-noted.lol.gif 1000w, https://noted.lol/content/images/size/w1600/2023/09/excalidraw-self-hosted-diagram-drawing-noted.lol.gif 1600w, https://noted.lol/content/images/2023/09/excalidraw-self-hosted-diagram-drawing-noted.lol.gif 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>From here, you can let your imagination run wild. I started with the basic server I have in my homelab and went from there. I wanted to display what the server is and how the Docker images are hosted and which applications are on that server.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://noted.lol/content/images/2023/09/homelab-2023-1.png" class="kg-image" alt="Draw and Map your Self Hosted Services using Excaladraw" loading="lazy" width="1600" height="1968" srcset="https://noted.lol/content/images/size/w600/2023/09/homelab-2023-1.png 600w, https://noted.lol/content/images/size/w1000/2023/09/homelab-2023-1.png 1000w, https://noted.lol/content/images/2023/09/homelab-2023-1.png 1600w"></figure><p>When I was done, this is what I came up with. I created this diagram using nothing more than default tools in Excalidraw, <a href="https://github.com/walkxcode/dashboard-icons?ref=noted.lol">icons</a> and a couple images. I did google for an image of my Orbi RBR760 router. I just searched for "RBR760 PNG" and found one pretty easily. Same with my Unify switch and the internet icon at the top. All of the other application icons were found in the Github repo I linked above.</p><h3 id="step-4-export-your-final-excalidraw-project-as-a-png">Step 4. Export your final Excalidraw project as a PNG</h3><p>When you are finished, you can export the final project as an image or svg file.</p><p>For a transparent image like mine, I removed the background and chose dark mode. I then chose scale 3x so people can zoom in and view more details. Then just click 'PNG" and it will download the image to your 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/2023/09/excalidraw-self-hosted-diagram-exporting-1-noted.lol.png" width="1284" height="598" loading="lazy" alt="Draw and Map your Self Hosted Services using Excaladraw" srcset="https://noted.lol/content/images/size/w600/2023/09/excalidraw-self-hosted-diagram-exporting-1-noted.lol.png 600w, https://noted.lol/content/images/size/w1000/2023/09/excalidraw-self-hosted-diagram-exporting-1-noted.lol.png 1000w, https://noted.lol/content/images/2023/09/excalidraw-self-hosted-diagram-exporting-1-noted.lol.png 1284w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2023/09/excalidraw-self-hosted-diagram-exporting-noted.lol-1.png" width="1200" height="593" loading="lazy" alt="Draw and Map your Self Hosted Services using Excaladraw" srcset="https://noted.lol/content/images/size/w600/2023/09/excalidraw-self-hosted-diagram-exporting-noted.lol-1.png 600w, https://noted.lol/content/images/size/w1000/2023/09/excalidraw-self-hosted-diagram-exporting-noted.lol-1.png 1000w, https://noted.lol/content/images/2023/09/excalidraw-self-hosted-diagram-exporting-noted.lol-1.png 1200w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>Take it for a spin yourself on my <a href="https://draw.hosted.lol/?ref=noted.lol">self-hosted demo server here</a>.</p><div class="kg-card kg-signup-card kg-width-wide " data-lexical-signup-form style="; display: none;">
|
|
|
|
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/09/subscribe-space-rocket-planets-noted.lol-1.jpg" alt="Draw and Map your Self Hosted Services using Excaladraw"></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><h3 id="final-notes-and-thoughts">Final Notes and Thoughts</h3><p>This was a fun project that made me feel good when it was done. Sure it's simple, but Excalidraw made this project much easier than trying to draw this all out by hand. And I just added the Grafana dashboard at the bottom just as a bonus visual.</p><p>If you want to learn more about Excalidraw or if you find it useful, be sure to swing by the <a href="https://github.com/excalidraw/excalidraw?ref=noted.lol">Excalidraw Github repo</a> and give it a star or consider singing up for Excalidraw+. For more details visit the <a href="https://plus.excalidraw.com/?ref=noted.lol">Excalidraw website</a>.</p><div class="kg-card kg-button-card kg-align-center"><a href="https://www.paypal.com/donate/?hosted_button_id=D7QL96HGX53Z8&ref=noted.lol" class="kg-btn kg-btn-accent">Make a Donation ❤️</a></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: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:67:"Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:256:"Cosmos is a versatile all-in-one platform for self-hosting that's designed to cater to both newcomers and seasoned users alike. It offers features like a reverse proxy, seamless Docker integration, an app store, robust security tools, and a whole lot more.";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/cosmos-server/";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:"669ff5dccaf0210001ac6360";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:32:"Self Hosted Server Orchestrators";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, 01 Nov 2024 13:54: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:14:"Yann Stepienik";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:83:"https://noted.lol/content/images/2023/09/cosmos-self-hosting-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:33265:"<img src="https://noted.lol/content/images/2023/09/cosmos-self-hosting-featured-noted.lol.jpg" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting"><p>As the developer of Cosmos, when I write about it I very often get to talk about the <em>what</em>. On the other hand, I rarely get the opportunity to talk about the <em>how </em>or even the<em> <strong>why</strong></em>. I am grateful to receive such an opportunity here, not only because Noted is an awesome blog to read, but also because it is a great platform to share the story behind the inception and development of Cosmos.</p><p>Most people know me by my Github and Discord handle: azukaar, and I have now been solo developing Cosmos for about 6 months (0.1.0 was released in April). <strong>In a nutshell, Cosmos is an all-in-one solution for self-hosting on home server</strong>, which includes:</p><ul><li>A full <strong>reverse proxy </strong>(like Nginx or Traefik) with Let’s Encrypt HTTPS negotiation to manage domains and secure access to applications</li><li>A <strong>docker container manager </strong>(like Portainer) to edit, start/stop but also automatically update your containers</li><li>A community maintained <strong>app-store</strong> to easily install many applications in a few clicks</li><li>A suite of <strong>security tools </strong>like anti-bot and anti-DDOS mechanisms, as well as a strong authentication gate supporting 2FA for any container</li><li>A few other things such as an Identity Provider with an <strong>OpenID </strong>server to make your journey a breeze</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://noted.lol/content/images/2023/09/Screen-Shot-2023-09-24-at-19.23.38.png" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="1920" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/09/Screen-Shot-2023-09-24-at-19.23.38.png 600w, https://noted.lol/content/images/size/w1000/2023/09/Screen-Shot-2023-09-24-at-19.23.38.png 1000w, https://noted.lol/content/images/size/w1600/2023/09/Screen-Shot-2023-09-24-at-19.23.38.png 1600w, https://noted.lol/content/images/2023/09/Screen-Shot-2023-09-24-at-19.23.38.png 1920w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">The Cosmos home page</span></figcaption></figure><p>With Cosmos you can <strong>easily self-host any Docker based application </strong>(Jellyfin, Nextcloud, Navidrome, etc...) and <strong>secure </strong>them behind strong authentication, server hardening, etc... All of this without having to spend hours debugging a reverse proxy setup that does not work each time you install something! <strong>And while it does take care of the few annoying bits for you, it does not hide or lock away anything</strong>: you can still tinker with your containers in Portainer / the CLI and you can still manually look into the innards of each application freely to customize them.</p><p>If you are interested to hear more about the details of the functionalities, the details can be found here <a href="https://github.com/azukaar/Cosmos-Server?ref=noted.lol">https://github.com/azukaar/Cosmos-Server</a> a demo can also be found here: <a href="https://cosmos-cloud.io/cosmos-ui?ref=noted.lol">https://cosmos-cloud.io/cosmos-ui</a></p><p>While all those tools are already available separately, <strong>the first thing that makes Cosmos special is proposing those tools in an integrated, all-in-one and seamless experience.</strong> The reverse-proxy naturally react to your security settings, and can directly connect to containers rather than IPs/Hostname, the OpenID Provider uses the same accounts than the admin dashboard, the Anti-DDOS can prioritize your traffic based on what account you logged in with. This synergy is the foundation of the <em>Cosmos experience</em>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://noted.lol/content/images/2023/09/image.png" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="995" height="942" srcset="https://noted.lol/content/images/size/w600/2023/09/image.png 600w, https://noted.lol/content/images/2023/09/image.png 995w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Here's an example, when creating a URL in the reverse proxy you can directly pick a container in a list and it will even automatically select the right port for you</span></figcaption></figure><p>The second most important core value for Cosmos is the <strong>home-first approach</strong>. NGINX, Portainer, Traefik are all amazing tools but they have one big defect in common: <strong>they are not designed for you</strong>. They are designed for people whose jobs are to use those tools for 8h a day. Not only that make them un-necessary tedious and verbose to setup, but it also mean that many vital features might be paywalled behind very expensive price tags (affordable to companies, but not to individuals). <strong>Cosmos on the other hand,</strong> <strong>has been designed with one and only one target in mind: you</strong>. It does not intend to scale to a multi-billion company’s large-scale infrastructure. Instead, it has been designed for you and your family, to own and use a home server.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://noted.lol/content/images/2023/09/image-1.png" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="1422" height="912" srcset="https://noted.lol/content/images/size/w600/2023/09/image-1.png 600w, https://noted.lol/content/images/size/w1000/2023/09/image-1.png 1000w, https://noted.lol/content/images/2023/09/image-1.png 1422w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">While highly customizable, The feature set of Cosmos is kept to a level of what is useful for you and your setup</span></figcaption></figure><h1 id="why-did-i-start">Why did I start </h1><p>The first feature I wrote for Cosmos (before I even found the name) was the file manager. Ironically, 6 months later that feature has still not been released! Initially the direction the product was taking was to propose an alternative to Nextcloud. I was mostly frustrated with the bugs and performance issues it had. Over time, something odd got me interested. It was not the “office tool” Nextcloud that allows you to open edit share office files, and collaborate on them. What I found most interesting was the app store, and the integration to the API it proposed. I thought it was very satisfying to setup the tool once, and then to allow other software to re-use the authentication, the file system, and so on, simply behind an API integration.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://noted.lol/content/images/2023/09/Untitled-1.png" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="1023" height="543" srcset="https://noted.lol/content/images/size/w600/2023/09/Untitled-1.png 600w, https://noted.lol/content/images/size/w1000/2023/09/Untitled-1.png 1000w, https://noted.lol/content/images/2023/09/Untitled-1.png 1023w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">example of a budget app integrated in Nextcloud</span></figcaption></figure><p>Of course the proposition behind Cosmos evolved a lot since. Mostly for two reasons. First, Self-Hosting is still currently at a “baby” stage. There are <strong>a lot of challenges</strong> for a lambda person to be able to self-host, especially around <strong>security and reliability</strong>. Most self-hosted tools have weak setup, questionable security, and do not offer the right amount of scaffolding for a user who is not a professional to use the tool in a healthy and safe manner. Even when they do, it does not make sense for example for a user to setup dozens of HTTPS certificates (in the case of tools like Jellyfin of Nextcloud who natively support HTTPS).</p><p>The second reason is in fact the opposite: <strong>Self-Hosting is meant to be somehow a journey</strong>. Users enjoy tinkering with their servers, finding new things to self-host and setting them up. They usually like to go into a terminal and learn things, and they want to know what exactly is running on their server (Fair! Since, after all, it is theirs!). While Nextcloud and their very abstracted system solved the first problem well, it definitely clashed heavily with the second one.</p><p>Designing <strong>a system that allow both beginners and power users to enjoy themselves </strong>and find the level of abstraction they seek is a huge challenge from product and UX perspective that I had to tackle all throughout the development of Cosmos. I also believe that while Nextcloud was (mostly) a smooth experience to install and use apps, it being as gate-closed as it is has adverse implications especially around vendor-locking, that in my sense are against the basics of the self-hosting philosophy. All that thinking brought me to the dream I had for the future of the internet: an Internet rooted in its origin — <strong>a decentralized network collectively owned by its users, prioritizing the interests of the many in both consumption and production aspects.</strong></p><h1 id="the-vision-of-the-universe">The vision of the Universe</h1><p>That dream, that vision, is what gave Cosmos its name: <strong>a place beyond the clouds, only accessible with the apotheosis of technological progress, that brings all nations together working tirelessly to achieve a single common goal</strong>. In this case, that goal is sharing information. In an age where the internet seems to drift away bits by bits from its users to become a tool of alienation, I saw the chance for a different future.</p><figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/09/banner.jpg" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="1456" height="676" srcset="https://noted.lol/content/images/size/w600/2023/09/banner.jpg 600w, https://noted.lol/content/images/size/w1000/2023/09/banner.jpg 1000w, https://noted.lol/content/images/2023/09/banner.jpg 1456w" sizes="(min-width: 720px) 720px"></figure><p>While there’s nothing that can be done to prevent corporation from organizing monopolies, there is a chance to help the internet become more than a high-way for the same few videos, the same few articles, and the same few musics to be consumed by everyone. <strong>There is a way to let users own the content of the internet, and shape it the way we want, the way we need, to express everyone’s individuality. </strong>Currently, the way the main platforms' algorithms work, the way Netflix cancels shows or remove them because they are not popular enough even when they have some large viewership (just to give an example that I think everyone can relate to), and the way decisions are made by either bots or business teams preemptively and mostly arbitrarily on a scale that impacts literally everyone’s life, is putting that individuality to risk. People are getting mind-numbed into consuming what is trendy, what the algorithms push to them, what makes them docile to repetition.</p><p>Furthermore, <strong>aside from the content’s diversity issue, there is an additional problem about its safety</strong>. Examples are plenty. The Last Pass hack of all their users’ credential data, Gitlab accidentally deleting all their data from their database, and having no backups almost costing hundreds of thousands of people all their hard work. This year alone, millions of users have seen their data breached by dozens of companies, such as T-Mobile, Google, Norton, MailChimp, etc...</p><p>If we were to somehow crack the code, and allow self-hosting to be a legitimate way to consume and share data for the many, then suddenly both those problems would be solved. Additionally, it would have the benefit of being both consumer and business friendly. <strong>The people consuming the data could own data again</strong>, smaller data producer (aka. Content creator) would have <strong>more personal platform to express themselves </strong>where they would feel <strong>less helpless against the cogs of the machine</strong>, and everyone would get the chance to make the internet their own. Larger companies would also find that not investing a large chunk of their earnings into infrastructure is beneficial. Finally, decentralizing the data would make it near impossible to orchestrate large scale hacking, <strong>lowering the risk </strong>personal data is currently at, both for the users and for the companies developing softwares.</p><p>Between the moment I had this vision, and the moment where I created the Cosmos repository, over 2 months had elapsed. I had to figure out how to somehow <strong>conjugate power, security, stability and ease of use in a single solution</strong>. How to make things <strong>accessible and seamless</strong>, while still keeping it <strong>exhaustive</strong>, <strong>fun </strong>to use for advanced users, and <strong>transparent </strong>for all to learn how things work. It was clear to me that I needed to re-think fundamentals, such as how Docker and HTTP are used, to design what would eventually become Cosmos.</p><h1 id="the-current-state-of-cosmos">The current state of Cosmos</h1><p>A few weeks of work later, I had released the first version of Cosmos. Back then it was only the reverse proxy with the authentication gate. Having a fully fledged reverse proxy behind a nice UI was already kind of ground breaking on its own. NPM being the only alternative, adding the authentication on top of it would already make Cosmos a somehow attractive option for a lot of people to consider.</p><p>The first few users had it rough: not going to lie, it was not a disaster but there were a few hiccups for sure. I quickly realised that I had to speed up the release of very crucial features, especially the Docker container management system, for Cosmos to truly shine as a promising piece of tech. And so I started working on it. One week-end, I went a little crazy and pretty much rewrote docker-compose entirely to offer the powerful cosmos-compose alternative. Finally, Docker management got fully released, and so did OpenID support eventually.</p><p>The community of users has been growing steadily and I am still very excited to meet all the users who join the Discord server on a daily basis. At this point, Cosmos is full packaged experience from install to usage for users. First, you can find the apps you need in the app store:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://noted.lol/content/images/2023/09/Screen-Shot-2023-09-24-at-23.32.58.png" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="1920" height="1080" srcset="https://noted.lol/content/images/size/w600/2023/09/Screen-Shot-2023-09-24-at-23.32.58.png 600w, https://noted.lol/content/images/size/w1000/2023/09/Screen-Shot-2023-09-24-at-23.32.58.png 1000w, https://noted.lol/content/images/size/w1600/2023/09/Screen-Shot-2023-09-24-at-23.32.58.png 1600w, https://noted.lol/content/images/2023/09/Screen-Shot-2023-09-24-at-23.32.58.png 1920w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Audiobook Shelf in the Cosmos App Store</span></figcaption></figure><p>Installing this app will take 2 clicks, and it is fully customizable if you want to change anything:</p><figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/09/image-6.png" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="977" height="930" srcset="https://noted.lol/content/images/size/w600/2023/09/image-6.png 600w, https://noted.lol/content/images/2023/09/image-6.png 977w" sizes="(min-width: 720px) 720px"></figure><p>The Cosmos app store relies on Cosmos-Compose to offer a <strong>unique cocktail </strong>between a <strong>solid and a flexible setup</strong>. In the landscape you currently have two alternatives. Either you get a simple/bare setup but very flexible (CasaOS, Umbrel, ...) or you get a solid setup with HTTPS, and improved security, but in a very inscrutable black box (Cloudron, YUNoHost, ...). Cosmos sits in the middle, although <strong>most apps will fully work and will be secure from the get go</strong>, on rare occasions you might have to do a tiny bit of manual tinkering. <strong>The upside on the other hand, is you have full visibility and full control over your apps </strong>as if you had set them up from CLI with hundreds of lines of config files.</p><p>Of course in the spirit of control, you can simply import an existing custom docker-compose file directly:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://noted.lol/content/images/2023/09/image-2.png" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="1182" height="876" srcset="https://noted.lol/content/images/size/w600/2023/09/image-2.png 600w, https://noted.lol/content/images/size/w1000/2023/09/image-2.png 1000w, https://noted.lol/content/images/2023/09/image-2.png 1182w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Importing a custom Jellyfin compose</span></figcaption></figure><p>And thanks to its design, doing this will still allow you to use the full range of functionalities on your newly created container, just as if as you used the app store. </p><p>Talking about functionalities, you can of course fully manage your container, such as editing its labels and network settings:</p><figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2023/09/image-3.png" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="1422" height="923" srcset="https://noted.lol/content/images/size/w600/2023/09/image-3.png 600w, https://noted.lol/content/images/size/w1000/2023/09/image-3.png 1000w, https://noted.lol/content/images/2023/09/image-3.png 1422w" sizes="(min-width: 720px) 720px"></figure><p>And obviously, it wouldn't be complete without the reverse proxy, and its ability to quickly connect a container to the world with a <strong>full set of protection, security layer, HTTPS encryption. All this, in 2 clicks.</strong></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://noted.lol/content/images/2023/09/image-4.png" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="627" height="888" srcset="https://noted.lol/content/images/size/w600/2023/09/image-4.png 600w, https://noted.lol/content/images/2023/09/image-4.png 627w"><figcaption><span style="white-space: pre-wrap;">First click</span></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://noted.lol/content/images/2023/09/image-5.png" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="990" height="927" srcset="https://noted.lol/content/images/size/w600/2023/09/image-5.png 600w, https://noted.lol/content/images/2023/09/image-5.png 990w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Second click (Cosmos auto discover port and propose a URL based on the container name, which you can of course customize in the form)</span></figcaption></figure><p>This 2 click install, 2 clicks connect approach, while being completely customizable from A to Z, is the essence of <strong>what makes Cosmos the solution </strong>to bridge the disconnect between self-hosting as a whole, the power user and the beginner. It is why Cosmos is a suitable solution to the previously mentioned challenges. Why <strong>Cosmos seduced both advanced and inexperienced users alike</strong>. It makes things easy without dumbing them down.<strong> It let you appreciate every step for full transparency and let you learn things at your own pace.</strong></p><p>On top of that, <strong>the strong accent on security</strong> makes Cosmos a safe platform for everyone to experiment, discover and learn. <strong>I have seen way too many people with extremely insecure setup </strong>lacking authentication, using HTTP only, having no backups, etc... And I do not blame the users, as they were never educated about those issues and solutions like CasaOS and Umbrel who target newer users conveniently do a very bad job at warning users about those things. Users also tend to settle for half solutions such as Cloudflare Tunnel that actually leave your setup very vulnerable.</p><p>One thing that I keep repeating is that <strong>keeping your server safe is difficult and requires you to use the full amount of tools available to you</strong>. People often think that because their server is not exposed to the internet it will be safe, and that may be they don't even need HTTPS, but they couldn't be further from the truth. <strong>Your local network is not safe. </strong>There are way too many devices in your local network that can be easily taken advantage of (Smartphones, Smart TV, PCs, IOT devices, ...). In fact, <strong>even your server is not safe from itself </strong>as you install multiple Docker containers that might not be completely safe. <strong>That is why Cosmos puts so much effort into making security accessible in a unique way.</strong> And no one should not take those point lightly.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://noted.lol/content/images/2023/09/image-7.png" class="kg-image" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting" loading="lazy" width="1062" height="482" srcset="https://noted.lol/content/images/size/w600/2023/09/image-7.png 600w, https://noted.lol/content/images/size/w1000/2023/09/image-7.png 1000w, https://noted.lol/content/images/2023/09/image-7.png 1062w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">With one single click you can enable authentication (think Authentik/Authelia), use the smart shield protection and/or restrict the container to your VPN</span></figcaption></figure><p>Ironically, the more advanced of a user you are, the more you will be crippled by your own experience and knowledge. <strong>I'm sure some of you have experienced the "setup fatigue" before</strong>. Knowing the amount of work you have to do to setup properly a new software makes you less likely to even try it. Or sometime, you like a new software but just not quite enough to go through the effort of "productionising" it. Let's be honest: while setting up Backups, HTTPS, Encryption, etc... on individual applications the first few times might be fun, I am sure a lot of you will find that actually the real fun part comes after; when the software is up and running and you can dive into its admin panel and discover its functionalities. As you become more familiar with it, Cosmos is designed to make setting up and managing multiple apps easier, without taking away the joy of experiencing new software as it gets up and running for the first time.</p><h1 id="the-future-of-cosmos">The future of Cosmos</h1><p>Cosmos has come a long way, but the end of the road is still far. Aside from some of the missing, more immediate features such as monitoring and backups, 3 big milestones are left to be reached.</p><p>First of all, <strong>Constellation</strong>. Setting up a <strong>VPN </strong>to access your server securely without opening your ports is not only a <strong>crucial step </strong>for a safe self-hosting environment, but it is more often than not even a <strong>required </strong>one (for example because of CGNAT, but also because of mobile apps, since they can't support web authentication). The problem is, it is also one of the most complex things to setup. Not only it is very demanding (many different things to setup) but also very difficult to get <em>right,</em> and very manual too (ex. having to manually rewire DNS in your local setup).</p><p><strong>Constellation aims to solve all those issues</strong>. It is a <strong>fully automated VPN </strong>that requires <strong>no maintenance</strong>, is setup in <strong>one click </strong>and (as for everything in Cosmos) is fully integrated to the rest of the stack: it <strong>automatically rewrite your domains </strong>to use <strong>encrypted tunnels</strong>, it allows you to <strong>restrict </strong>a reverse proxy <strong>URL </strong>to the <strong>VPN </strong>in (literally) one single click, and allow your users to manage their devices themselves in an easy to use interface where they just have to scan a single QR code. It is also naturally split tunneling all the routes defined in Cosmos for you, to not affect the rest of your traffic. Constellation is close to completion, and an open beta phase <strong>should be available soon</strong>.</p><p>Next milestone, going back a bit on the initial goals of Cosmos, is the API. In the same fashion as Nextcloud and its apps, I would like Cosmos to provide functionalities that <strong>make developping self-hosted apps easier</strong>. While I already started designing Cosmos in a way that achieve such result (from day one Cosmos has been sending authentication headers to apps for example) I want this to go much further, to make application development easier but also to <strong>improve user experience</strong>.</p><p>The reason why I am leaning that way is because s<strong>elf hosted tools are realistically still a poorly developed ecosystem</strong>. A large chunk of the community either started to self-host to replace Dropbox/Office, in which case they started with <strong>Nextcloud </strong>(or similar) OR they started self-hosting to do some other questionable things (<strong>arr</strong>, <strong>arr</strong>!). That is why those two sides are the most developed by far, and offer the most advanced solutions. I think it is increasingly though, that <strong>people start seeing self-hosting for the wonderful opportunity that it is, and try to push it further. </strong>Unfortunately it is <strong>no small task</strong>, and that is why I believe that <strong>making self-hosted apps as easy to develop as mobile app</strong>, rather than being of the complexity of a SaaS app (with manually maintaining Databases, having to re-write a whole authentication system every time, and having a huge burden of having to maintain performance and security to a high standard) will <strong>boost up the possibilities for developers to propose myriad of new experiences and tools for users to enjoy.</strong></p><p>Last but not least, I would like some day to leap into the infrastructure side of things. Having some more integrated web architecture that would be hosted to allow users to further deepen their reliance on their own server without hindering their ability to enjoy their everyday usage of services. I am purposely being vague on this as I don't like to over-promise, but I do hope that one day people will be able to get their domain-names directly from Cosmos (if they want to do so of course! As usual Cosmos will continue to foster customization and individuality).</p><div class="kg-card kg-signup-card kg-width-wide " data-lexical-signup-form style="; display: none;">
|
|
|
|
<picture><img class="kg-signup-card-image" src="https://noted.lol/content/images/2023/09/subscribe-space-rocket-planets-noted.lol-2.jpg" alt="Introducing Cosmos: The All-in-One Secure Platform for Self-Hosting"></picture>
|
|
|
|
<div class="kg-signup-card-content">
|
|
|
|
<div class="kg-signup-card-text ">
|
|
<h2 class="kg-signup-card-heading" style="color: #FFFFFF;"><span style="white-space: pre-wrap;">Sign up for Noted</span></h2>
|
|
<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><h1 id="closing-words">Closing words</h1><p>If you've read this article in its entirety, <strong>THANK YOU!</strong></p><p>I cannot express enough gratitude to the growing community around Cosmos. <strong>You all have been amazing</strong>, and I am so pleased to have worked on this project to what it has come to be today. This makes me want to work even harder toward <strong>a world where self-hosting becomes a viable solution for both users and business alike</strong> as an alternative to the cloud and SaaS solutions, while offering the same level of service quality.</p><p>You can find me on the Noted and Cosmos Discord, or on github. If you have any questions or feedback please let me know I would love to hear it! And if you share the same dream I have, and I think you probably do since you are here, every little bit of contribution matters, you matter! <strong>Let's make it happen together.</strong></p><p>Happy hosting!</p><h3 id="useful-links"><strong>Useful links</strong></h3><p>Main Site: <a href="https://cosmos-cloud.io/?ref=noted.lol" rel="noopener nofollow ugc">https://cosmos-cloud.io/</a></p><p>Github: <a href="https://github.com/azukaar/cosmos-Server?ref=noted.lol" rel="noopener nofollow ugc">github.com/azukaar/cosmos-Server</a></p><p>Discord: <a href="https://discord.gg/PwMWwsrwHA?ref=noted.lol" rel="noopener nofollow ugc">https://discord.gg/PwMWwsrwHA</a></p><p>Demo: <a href="https://cosmos-cloud.io/demo?ref=noted.lol" rel="noopener nofollow ugc">https://cosmos-cloud.io/demo</a></p><p>Documentation: <a href="https://cosmos-cloud.io/doc?ref=noted.lol" rel="noopener nofollow ugc">https://cosmos-cloud.io/doc</a></p><p>Tutorial: <a href="https://cosmos-cloud.io/blog/getting-started-with-cosmos-cloud-a-beginners-guide-to-self-hosting.html?ref=noted.lol" rel="noopener nofollow ugc">https://cosmos-cloud.io/blog/getting-started-with-cosmos-cloud-a-beginners-guide-to-self-hosting.html</a></p><p>Another tutorial by Engel: <a href="https://guides.engels.zip/?ref=noted.lol" rel="noopener nofollow ugc">https://guides.engels.zip/</a></p><p>A video tutorial by BigBearTechWorld: <a href="https://www.youtube.com/playlist?list=PL2RAscIdkpt_xLNFsYzXSETZjeX8zdBYj&ref=noted.lol" rel="noopener nofollow ugc">https://www.youtube.com/playlist?list=PL2RAscIdkpt_xLNFsYzXSETZjeX8zdBYj</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: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:47:"Pinchflat - Simple Self-Hosted Youtube Archiver";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:177:"Pinchflat offers an uncomplicated approach to archiving YouTube content. It's designed for easy use and is self-hosted, ensuring simplicity and control over their stored videos.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:28:"https://noted.lol/pinchflat/";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:"669ff5dccaf0210001ac637d";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 Downloaders";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, 31 Oct 2024 13:03: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:81:"https://noted.lol/content/images/2024/07/self-hosted-pinchflat-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:7641:"<img src="https://noted.lol/content/images/2024/07/self-hosted-pinchflat-main-noted.lol.jpg" alt="Pinchflat - Simple Self-Hosted Youtube Archiver"><p>There are lots of tools out there for saving videos from YouTube and other sites. Lately, I've been using Tube Archivist to download videos for my kids to watch later. It's been great for keeping an eye on what they're watching and making sure it's suitable for their age.</p><p><a href="https://noted.lol/how-i-control-what-media-my-kids-watch-using-tube-archivist/" rel="noreferrer">Tube Archivist</a> is really handy, but I've been feeling like it's gotten too complicated for me lately. There are just so many features and options to navigate. So, I started looking for something more simple. That's when I stumbled upon this new alternative, Pinchflat! I was excited to give it a try and see if it's a better fit for what I need and boy was I glad I did!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/chrome_u24KHy9q4J.png" class="kg-image" alt="Pinchflat - Simple Self-Hosted Youtube Archiver" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/chrome_u24KHy9q4J.png 600w, https://noted.lol/content/images/size/w1000/2024/08/chrome_u24KHy9q4J.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/chrome_u24KHy9q4J.png 1600w, https://noted.lol/content/images/2024/08/chrome_u24KHy9q4J.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><p><a href="https://github.com/kieraneglin/pinchflat?ref=noted.lol">Pinchflat</a> is an app you can host yourself that helps you download YouTube videos. It's made using yt-dlp and is meant to be really simple and easy to use. You basically tell it what kind of videos you want from YouTube channels or playlists, and it handles the downloading for you. Plus, it keeps checking for new videos regularly.</p><p>This app is perfect if you're into organizing your media for things like Plex, Jellyfin, or Kodi, or if you just want to make sure you always have your favorite videos saved.</p><p>But here's the thing: Pinchflat isn't great for grabbing one video here and there. It's built more for downloading a bunch of videos at once and keeping them all updated. Also, it doesn't play videos within the app itself. Instead, it saves them to your computer so you can watch them using a media center app like VLC, Emby, Jellyfin etc.</p><p>One thing I really like about Pinchflat is the ability to change how it saves your files.</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/chrome_7XNvV83VBw.png" width="1920" height="911" loading="lazy" alt="Pinchflat - Simple Self-Hosted Youtube Archiver" srcset="https://noted.lol/content/images/size/w600/2024/08/chrome_7XNvV83VBw.png 600w, https://noted.lol/content/images/size/w1000/2024/08/chrome_7XNvV83VBw.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/chrome_7XNvV83VBw.png 1600w, https://noted.lol/content/images/2024/08/chrome_7XNvV83VBw.png 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://noted.lol/content/images/2024/08/chrome_t0F8LKljDw-1.png" width="1920" height="911" loading="lazy" alt="Pinchflat - Simple Self-Hosted Youtube Archiver" srcset="https://noted.lol/content/images/size/w600/2024/08/chrome_t0F8LKljDw-1.png 600w, https://noted.lol/content/images/size/w1000/2024/08/chrome_t0F8LKljDw-1.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/chrome_t0F8LKljDw-1.png 1600w, https://noted.lol/content/images/2024/08/chrome_t0F8LKljDw-1.png 1920w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>This adds a lot of customization options. It also does not mess with the filename unless you tell it to. By looking at the file name you can easily see what video it is. This is much better than random letters and numbers.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/08/chrome_qC42yWnyc0.png" class="kg-image" alt="Pinchflat - Simple Self-Hosted Youtube Archiver" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/08/chrome_qC42yWnyc0.png 600w, https://noted.lol/content/images/size/w1000/2024/08/chrome_qC42yWnyc0.png 1000w, https://noted.lol/content/images/size/w1600/2024/08/chrome_qC42yWnyc0.png 1600w, https://noted.lol/content/images/2024/08/chrome_qC42yWnyc0.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h2 id="pinchflat-core-features">Pinchflat Core Features</h2><ul><li>Self-contained - just one Docker container with no external dependencies</li><li>Powerful naming system so content is stored where and how you want it</li><li>Easy-to-use web interface with presets to get you started right away</li><li>First-class support for media center apps like Plex, Jellyfin, and Kodi</li><li>Supports serving RSS feeds to your favorite podcast app (beta - <a href="https://github.com/kieraneglin/pinchflat/wiki/Podcast-RSS-Feeds-(beta)?ref=noted.lol">docs</a>)</li><li>Automatically downloads new content from channels and playlists<ul><li>Uses a novel approach to download new content more quickly than other apps</li></ul></li><li>Supports downloading audio content</li><li>Custom rules for handling YouTube Shorts and livestreams</li><li>Advanced options like setting cutoff dates and filtering by title</li><li>Reliable hands-off operation</li><li>Can pass cookies to YouTube to download your private playlists (<a href="https://github.com/kieraneglin/pinchflat/wiki/YouTube-Cookies?ref=noted.lol">docs</a>)</li><li>Sponsorblock integration</li></ul><p>Pinchflat is incredibly easy to install and start using. You can get it up and running within seconds by deploying a simple <a href="https://github.com/kieraneglin/pinchflat?tab=readme-ov-file&ref=noted.lol#portainer">Docker Compose</a> stack through Portainer or locally on your Linux machine via terminal.</p><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>Pinchflat may not be ideal for those seeking to download individual videos sporadically. Additionally, it's important to note that Pinchflat stores downloaded videos on the local disk for playback using external media players. Overall, Pinchflat offers a convenient and efficient solution for managing and archiving YouTube content.</p><p>Give it a try for yourself and let us know what you think!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/kieraneglin/pinchflat?ref=noted.lol"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - kieraneglin/pinchflat: Your next YouTube media manager</div><div class="kg-bookmark-description">Your next YouTube media manager. Contribute to kieraneglin/pinchflat development by creating an account on GitHub.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" alt="Pinchflat - Simple Self-Hosted Youtube Archiver"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">kieraneglin</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/10cde0cdcc798151c5fba4d1e2f744352d7e4a0a8af6e97dfb5e8723393196a5/kieraneglin/pinchflat" alt="Pinchflat - Simple Self-Hosted Youtube Archiver"></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: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:43:"Obsidian Meets Ollama: Write Faster, Better";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:158:"The world is changing fast, and writing tools are keeping pace. AI-powered helpers are becoming more common, making it easier to put your thoughts into words.";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:47:"https://noted.lol/obsidian-companion-ai-plugin/";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:"66f851f54fc4690001735d34";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: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:"Thu, 17 Oct 2024 17:31:19 GMT";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s: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/10/obsidian-companion-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:7156:"<img src="https://noted.lol/content/images/2024/10/obsidian-companion-noted.jpg" alt="Obsidian Meets Ollama: Write Faster, Better"><p>As a student, writer, or simply someone who likes to stay organized, note-taking is an essential skill. With the rise of digital tools, we now have access to numerous apps and plugins that can help us take notes more efficiently. In this article, we'll explore how Obsidian, a popular note-taking app, and its Companion plugin powered by Ollama, can revolutionize your note-taking experience.</p><h2 id="what-is-obsidian"><strong>What is Obsidian?</strong></h2><p><a href="https://obsidian.md/?ref=noted.lol">Obsidian</a> is designed to help users organize their thoughts, ideas, and knowledge in a structured yet flexible way. With Obsidian, you can create notes, link them together, and use tags to categorize your content. The app is available for Windows, macOS, Linux, and mobile devices.</p><h2 id="introducing-the-companion-plugin"><strong>Introducing the Companion Plugin</strong></h2><p><a href="https://github.com/rizerphe/obsidian-companion?ref=noted.lol">Companion</a>'s autocomplete feature is subtle yet helpful. Suggestions appear in ghost text, giving you the freedom to accept or ignore them as needed. It works similarly to <a href="https://github.com/features/copilot?ref=noted.lol">GitHub Copilot</a>.</p><p>By using Companion, you can write notes more efficiently and effectively. If you're a student, researcher, or knowledge worker looking to boost your productivity and creativity, Companion might be worth checking out.</p><h3 id="how-does-it-work"><strong>How Does it Work?</strong></h3><p>Here's how Companion works:</p><ol><li><strong>Note Creation </strong>: You create a new note in Obsidian.</li><li><strong>Companion Activation </strong>: You toggle on the Companion plugin for that specific note by pressing Ctrl + P then searching "Companion: Toggle completion".</li><li><strong>Typing Begins </strong>: As you start typing, Companion kicks in and suggests relevant content. If you like what you see, just hit tab to use the suggested text and continue working. Otherwise just keep typing as usual!</li></ol><figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2024/10/obsidian-companion-noted.gif" class="kg-image" alt="Obsidian Meets Ollama: Write Faster, Better" loading="lazy" width="1137" height="613" srcset="https://noted.lol/content/images/size/w600/2024/10/obsidian-companion-noted.gif 600w, https://noted.lol/content/images/size/w1000/2024/10/obsidian-companion-noted.gif 1000w, https://noted.lol/content/images/2024/10/obsidian-companion-noted.gif 1137w" sizes="(min-width: 720px) 720px"></figure><h3 id="benefits-of-using-companion"><strong>Benefits of Using Companion</strong></h3><p>The benefits of using Companion with Obsidian are numerous:</p><ol><li><strong>Increased Productivity </strong>: With AI-powered autocomplete, you can take notes faster and more efficiently.</li><li><strong>Reduced Duplicates </strong>: Companion helps prevent duplicate notes by suggesting existing content that matches what you're typing.</li><li><strong>Improved Organization </strong>: By linking your notes together and utilizing Ollama's AI capabilities, Companion encourages a structured approach to note-taking.</li></ol><h2 id="ollama-the-power-behind-companion"><strong>Ollama: The Power Behind Companion</strong></h2><p>Ollama is an AI platform designed specifically for knowledge graph applications like Obsidian and the Companion plugin. Its capabilities enable the AI engine to:</p><ol><li><strong>Learn from Your Notes </strong>: Ollama learns from your existing notes, allowing it to suggest relevant content based on context.</li><li><strong>Understand Relationships </strong>: The AI engine understands relationships between notes, enabling seamless linking and organization.</li></ol><h3 id="tips-for-getting-the-most-out-of-companion"><strong>Tips for Getting the Most Out of Companion</strong></h3><p>To maximize the benefits of Companion:</p><ol><li><strong>Use Consistent Tags </strong>: Establish a consistent tagging system to help Companion suggest relevant content powered by Ollama's AI capabilities.</li><li><strong>Link Your Notes </strong>: Create links between related notes to enable seamless navigation and organization enabled by Companion and Ollama.</li></ol><h1 id="installation">Installation</h1><p>Companion is available in the <a href="https://obsidian.md/plugins?id=companion&ref=noted.lol" rel="noopener">Obsidian Community Plugin Directory</a>. Here's how to install it:</p><ol><li>Find <a href="https://obsidian.md/plugins?id=companion&ref=noted.lol" rel="noopener">Companion</a> in the <strong>Community Plugins</strong> settings page in Obsidian.</li><li>Click on the <strong>Install</strong> button next to the Companion plugin.</li><li>Once the installation is complete, you will see a confirmation message in the top right corner of the Obsidian window.</li><li>Finally, enable the Companion plugin by toggling the switch next to its name in the Community Plugins settings page.</li><li>Add your Ollama server URL to the settings.</li><li>To activate the autocomplete feature, open the command palette by pressing <code>Ctrl/Cmd + P</code> and search for "Toggle Completion". Select the command and hit Enter.</li><li>Once a suggestion appears, use the <code>Tab</code> key to accept the next word or sentence.</li></ol><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/10/obsidian-companion-settings-noted.png" class="kg-image" alt="Obsidian Meets Ollama: Write Faster, Better" loading="lazy" width="1078" height="641" srcset="https://noted.lol/content/images/size/w600/2024/10/obsidian-companion-settings-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/10/obsidian-companion-settings-noted.png 1000w, https://noted.lol/content/images/2024/10/obsidian-companion-settings-noted.png 1078w"></figure><p>The 'Accept' option is crucial for getting the tab key to work properly. To do this, you need to click on one of the boxes. I chose "One word at a time" because it seems like the most sensible choice for me.</p><p>User Prompt:</p><pre><code>The following text has been written by the user. You will continue writing the next few words of the text as if you were the original writer. Do not begin the text with '"..." and don't summarize the text.
|
|
{{context}}
|
|
{{last_line}}</code></pre><p>This will tell the script how to complete your sentence or phrases.</p><h2 id="final-notes-and-thoughts"><strong>Final Notes and Thoughts</strong></h2><p>The Obsidian Companion plugin offers a valuable feature set to support your note-taking routine. Its purpose is not to write an entire article, but rather to offer suggestions and guidance, helping you to structure and organize your thoughts. By using this tool effectively, you can simplify your note-taking process and find new ideas.</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:46:"Whisper WebUI - The Self-Hosted AI Transcriber";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:46:"Transcribe audio to text locally using Whisper";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/whisper-webui/";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:"670fb9dbfe9c21000164aacb";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:20:"Self Hosted AI Tools";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:29:"Wed, 16 Oct 2024 15:08: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:70:"https://noted.lol/content/images/2024/10/self-hosted-whisper-webui.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:8196:"<img src="https://noted.lol/content/images/2024/10/self-hosted-whisper-webui.jpg" alt="Whisper WebUI - The Self-Hosted AI Transcriber"><p>We've been testing AI tools for self-hosting, and Whisper WebUI is one that's caught our attention. In this article, we'll take a closer look at its features, capabilities, and how it can be used to streamline your workflow.</p><h2 id="what-is-whisper-webui">What is Whisper WebUI?</h2><p><a href="https://github.com/jhj0517/Whisper-WebUI?tab=readme-ov-file&ref=noted.lol">Whisper WebUI</a> is way more than just a subtitle generator, it's a full-fledged content translation tool! With Whisper, you can not only generate subtitles, but also do some really cool stuff like translating audio files, transcribing YouTube videos, and even using your own voice to convert spoken words into text.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/10/whisper-webui-mic-noted.png" class="kg-image" alt="Whisper WebUI - The Self-Hosted AI Transcriber" loading="lazy" width="1920" height="911" srcset="https://noted.lol/content/images/size/w600/2024/10/whisper-webui-mic-noted.png 600w, https://noted.lol/content/images/size/w1000/2024/10/whisper-webui-mic-noted.png 1000w, https://noted.lol/content/images/size/w1600/2024/10/whisper-webui-mic-noted.png 1600w, https://noted.lol/content/images/2024/10/whisper-webui-mic-noted.png 1920w" sizes="(min-width: 1200px) 1200px"></figure><h3 id="core-features-of-whisper-web-ui"><strong>Core Features of Whisper Web UI</strong></h3><ul><li>Generate subtitles from various sources: files, YouTube, microphone</li><li>Supports multiple subtitle formats: SRT, WebVTT, txt</li><li>Speech-to-text translation and text-to-text translation capabilities</li><li>Pre-processing and post-processing tools for audio input and output</li></ul><h3 id="what-is-whisper">What is Whisper?</h3><p><a href="https://github.com/openai/whisper?ref=noted.lol">Whisper</a> is a multimodal speech recognition model that has been trained on a large and diverse dataset of audio materials. Its architecture enables it to perform multiple linguistic tasks in parallel, including multilingual speech recognition, translation, and language identification.</p><h3 id="what-is-webvtt">What is WebVTT?</h3><p>WebVTT is a format that provides a way to display timed text, such as subtitles or captions, on top of video content. It allows you to define and manipulate these text tracks, which can include information like chapter titles, audio descriptions, and other metadata. The WebVTT API makes it easy to work with this format, enabling features like automatic captioning, easier navigation, and more.</p><h3 id="what-is-srt">What is SRT?</h3><p>SRT stands for SubRip Subtitle file format. It's a widely used format for storing subtitles or captions that are time-aligned with audio or video content.</p><h2 id="install-whisper-webui-using-docker">Install Whisper WebUI using Docker</h2><p>To install Whisper WebUI on your server, use this Docker Compose stack, which makes the process easy to follow. If you're new to self-hosting, don'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/jhj0517/Whisper-WebUI?ref=noted.lol">Whisper WebUI Github</a>.</p><pre><code class="language-YAML">services:
|
|
app:
|
|
# build: .
|
|
image: jhj0517/whisper-webui:latest
|
|
|
|
volumes:
|
|
# Update paths to mount models and output paths to your custom paths like this, e.g:
|
|
# - C:/whisper-models/custom-path:/Whisper-WebUI/models
|
|
# - C:/whisper-webui-outputs/custom-path:/Whisper-WebUI/outputs
|
|
- /Whisper-WebUI:/Whisper-WebUI/models
|
|
- /Whisper-WebUI:/Whisper-WebUI/outputs
|
|
|
|
ports:
|
|
- "7860:7860"
|
|
|
|
stdin_open: true
|
|
tty: true
|
|
|
|
entrypoint: ["python", "app.py", "--server_port", "7860", "--server_name", "0.0.0.0",]
|
|
|
|
# If you're not using nvidia GPU, Update device to match yours.
|
|
# See more info at : https://docs.docker.com/compose/compose-file/deploy/#driver
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
count: all
|
|
capabilities: [ gpu ]</code></pre><p>This particular stack will utilize your NVIDIA GPU. If you do not have a GPU, please modify the stack above to use your CPU. I have an NVIDIA 2080ti.</p><p>The first time you run Whisper WebUI it will take a while to download the Whisper model used for transcription. Using the default settings below, it will download the Whisper large-v2 model so it may take a couple minutes to download the 2.8GB file.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/10/whisper-webui-self-hosted-transcoding.png" class="kg-image" alt="Whisper WebUI - The Self-Hosted AI Transcriber" loading="lazy" width="1473" height="114" srcset="https://noted.lol/content/images/size/w600/2024/10/whisper-webui-self-hosted-transcoding.png 600w, https://noted.lol/content/images/size/w1000/2024/10/whisper-webui-self-hosted-transcoding.png 1000w, https://noted.lol/content/images/2024/10/whisper-webui-self-hosted-transcoding.png 1473w" sizes="(min-width: 1200px) 1200px"></figure><p>Running this on my NVIDIA 2080ti with 11GB of VRAM, the complete VRAM used was ~4GB on the larg-v2 model. It took 23 seconds to complete a transcription on a 6 minute YouTube video. Not bad!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://noted.lol/content/images/2024/10/whisper-webui-nvidia.png" class="kg-image" alt="Whisper WebUI - The Self-Hosted AI Transcriber" loading="lazy" width="759" height="67" srcset="https://noted.lol/content/images/size/w600/2024/10/whisper-webui-nvidia.png 600w, https://noted.lol/content/images/2024/10/whisper-webui-nvidia.png 759w"></figure><p>No additional configuration is required, however, some users may find value in adjusting some of the settings to further customize their subtitle generation process.</p><p>When using Whisper WebUI with its tiny model, I obtained very similar results to those achieved with the larger model, despite the much shorter processing time. There was no noticeable improvement in the transcript's accuracy or quality, which was an interesting observation. Perhaps with longer videos it may be more noticeable.</p><h2 id="adding-models-from-hugging-face">Adding Models from Hugging Face</h2><p>If you want to add more models to use from Hugging Face, you can do so by following this folder format.</p><p>The model should work fine if you place the model files (including metadata files) in the <code>Whisper-WebUI\models\Whisper\faster-whisper</code>.</p><p>This is an example directory structure for the <a href="https://huggingface.co/deepdml/faster-whisper-large-v3-turbo-ct2/tree/main?ref=noted.lol" rel="nofollow"><code>faster-whisper-large-v3-turbo-ct2</code></a> :</p><figure class="kg-card kg-image-card"><img src="https://noted.lol/content/images/2024/10/whisper-webui-model-folder-format.png" class="kg-image" alt="Whisper WebUI - The Self-Hosted AI Transcriber" loading="lazy" width="524" height="383"></figure><h2 id="final-notes-and-thoughts">Final Notes and Thoughts</h2><p>Before using Whisper WebUI with your microphone, ensure you're using a secure connection in your browser. A standard local connection may not work, so consider using a reverse proxy or Cloudflare tunnel instead. While this will enable audio input, please be aware that Whisper WebUI does not have built-in authentication measures, which means exposing it to the public could pose security risks.</p><p>Swing by the Whisper <a href="https://github.com/jhj0517/Whisper-WebUI?ref=noted.lol">WebUI 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 the project!</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:14:{s:4:"date";s:29:"Tue, 31 Dec 2024 15:56:29 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/"31126-r4UIzpfKrvL6f8I4HU06R1EuqUY"";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:225:"{endpoints:[{url:https:\/\/a.nel.cloudflare.com\/report\/v4?s=%2BdBpLwZ3QGHcY6RcSYDgZcfKliM2eAkKVjvytdoGzTS5UzaORpENI0pXZrvwxEdNuPg35XUfqRe5msI8qEjQkSfDWCxHKAcIS9awYkTvjf1ODSt7aV%2F74%2BazsO8%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:"8fab75b93ce80781-MRS";s:7:"alt-svc";s:17:"h3=:443; ma=86400";s:13:"server-timing";s:198:"cfL4;desc=?proto=TCP&rtt=49583&min_rtt=18179&rtt_var=30000&sent=6&recv=9&lost=0&retrans=0&sent_bytes=3379&recv_bytes=1013&delivery_rate=148087&cwnd=221&unsent_bytes=0&cid=63d6d0a0538f9bb1&ts=604&x=0";}s:5:"build";s:14:"20240924100504";s:5:"mtime";i:1735660589;s:3:"md5";s:32:"24cd2daedad48b7d912b0fed5c67e565";} |