If running Docker Desktop for Mac could always install watchtower and you would just run that from the containers to update your containers. Although I install Fastchannels from the Olivetin setup on my Mac mini m2, and also have the watchtower installed, I just run that when I need to update. Not sure about the synology side though.
Not running on desktop, running on Synology NAS Container Manager.
Portainer is a much better tool, and can be installed anywhere Docker runs, including Synology. Rather than messing with platform-specific tools, go with this cross-platform solution. Learn it once, use it everywhere. 
Here’s one of several guides on installing Portainer on Synology. Once you get it installed, install Olive Tin and Project One Click to make life much easier.
I'm not sure if it's me, but my Frndly channels in the favorites section will not show the current program, only the channel logos. The program information is in the guide, however.
Made no difference between the 3 settings. Hardware has always seemed to work the best for me over the years. If anything it's worse on Hybrid/Software.
YouTube channels no longer working.

Thanks for the reply
Appreciate the link, thanks
I tried Portainer for my initial install of this app, and even though I'd noted the password I'd set up, it wouldn't log me back in. Given that, I am in no hurry to try to set it up again.
Your kitten factory isn't completly dead yet, but reading the YT-DLP github, it looks like it's a constant cat and mouse game (pun intended). Youtube now requires a bound-PO token and we tried web_safari, web, iOS (in order) and all of those are now dead. There is one that still works -- android_vr that I didn't have in the list. I just added it and it works. I'll push out a small update later.
Pushed 4.8.0
- Fixed YouTube. Also, put in an auto-weekly updater inside the container to update YT-DLP (the program that controls YT integration).
- Fixed tvg-chnum issue @jator
Just an FYI about this and another option you can explore:
I assume you updated yt-dlp on your end as well, babson?
More than updated; I generally keep myself on the bleeding edge daily edition, at least in development.
Thanks.
Working again now.
Distro is missing channels on scrapes.
Since Midnight this morning, only getting 18 channels scraped, instead of 193.
Log
2026-07-09 22:02:30,833 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-09 22:02:31,810 INFO app.worker: [distro] Scrape job started
2026-07-09 22:02:32,203 INFO app.scrapers.distro: [distro] parsed 90 channels for geo=US
2026-07-09 22:02:32,299 INFO app.scrapers.distro: [distro] parsed 103 channels for geo=QQ
2026-07-09 22:02:32,299 INFO app.scrapers.distro: [distro] parsed 193 channels across 2 geo feed(s)
2026-07-09 22:02:33,356 INFO app.scrapers.distro: [distro] parsed 5617 EPG entries
2026-07-09 22:02:37,085 INFO app.worker: [distro] Scrape complete — 193 channels, 5617 programs (5.3s)
2026-07-09 23:02:30,832 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-09 23:02:31,805 INFO app.worker: [distro] Scrape job started
2026-07-09 23:02:32,167 INFO app.scrapers.distro: [distro] parsed 63 channels for geo=US
2026-07-09 23:02:32,245 INFO app.scrapers.distro: [distro] parsed 72 channels for geo=QQ
2026-07-09 23:02:32,246 INFO app.scrapers.distro: [distro] parsed 135 channels across 2 geo feed(s)
2026-07-09 23:02:33,101 INFO app.scrapers.distro: [distro] parsed 4012 EPG entries
2026-07-09 23:02:36,201 INFO app.worker: [distro] Scrape complete — 135 channels, 4012 programs (4.4s)
2026-07-10 00:02:30,831 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 00:02:31,803 INFO app.worker: [distro] Scrape job started
2026-07-10 00:02:32,123 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 00:02:32,191 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 00:02:32,192 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 00:02:32,245 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 00:02:32,810 INFO app.scrapers.distro: [distro] parsed 764 EPG entries
2026-07-10 00:02:33,536 INFO app.worker: [distro] Scrape complete — 18 channels, 764 programs (1.7s)
2026-07-10 01:02:30,831 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 01:02:31,810 INFO app.worker: [distro] Scrape job started
2026-07-10 01:02:32,079 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 01:02:32,146 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 01:02:32,146 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 01:02:32,199 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 01:02:32,740 INFO app.scrapers.distro: [distro] parsed 764 EPG entries
2026-07-10 01:02:33,536 INFO app.worker: [distro] Scrape complete — 18 channels, 764 programs (1.7s)
2026-07-10 02:02:30,832 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 02:02:31,800 INFO app.worker: [distro] Scrape job started
2026-07-10 02:02:32,061 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 02:02:32,128 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 02:02:32,128 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 02:02:32,181 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 02:02:32,775 INFO app.scrapers.distro: [distro] parsed 764 EPG entries
2026-07-10 02:02:33,493 INFO app.worker: [distro] Scrape complete — 18 channels, 764 programs (1.7s)
2026-07-10 03:02:30,832 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 03:02:31,814 INFO app.worker: [distro] Scrape job started
2026-07-10 03:02:32,198 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 03:02:32,267 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 03:02:32,268 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 03:02:32,321 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 03:02:32,885 INFO app.scrapers.distro: [distro] parsed 762 EPG entries
2026-07-10 03:02:33,494 INFO app.worker: [distro] Scrape complete — 18 channels, 762 programs (1.7s)
2026-07-10 04:02:30,832 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 04:02:31,804 INFO app.worker: [distro] Scrape job started
2026-07-10 04:02:32,234 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 04:02:32,301 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 04:02:32,301 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 04:02:32,354 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 04:02:32,930 INFO app.scrapers.distro: [distro] parsed 762 EPG entries
2026-07-10 04:02:33,578 INFO app.worker: [distro] Scrape complete — 18 channels, 762 programs (1.8s)
2026-07-10 05:02:30,831 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 05:02:31,828 INFO app.worker: [distro] Scrape job started
2026-07-10 05:02:32,266 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 05:02:32,334 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 05:02:32,335 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 05:02:32,388 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 05:02:32,945 INFO app.scrapers.distro: [distro] parsed 762 EPG entries
2026-07-10 05:02:33,685 INFO app.worker: [distro] Scrape complete — 18 channels, 762 programs (1.9s)
2026-07-10 06:02:30,832 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 06:02:31,810 INFO app.worker: [distro] Scrape job started
2026-07-10 06:02:32,167 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 06:02:32,241 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 06:02:32,242 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 06:02:32,295 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 06:02:32,860 INFO app.scrapers.distro: [distro] parsed 778 EPG entries
2026-07-10 06:02:33,766 INFO app.worker: [distro] Scrape complete — 18 channels, 778 programs (2.0s)
2026-07-10 07:02:30,832 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 07:02:31,796 INFO app.worker: [distro] Scrape job started
2026-07-10 07:02:32,082 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 07:02:32,154 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 07:02:32,155 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 07:02:32,207 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 07:02:32,763 INFO app.scrapers.distro: [distro] parsed 776 EPG entries
2026-07-10 07:02:33,595 INFO app.worker: [distro] Scrape complete — 18 channels, 776 programs (1.8s)
2026-07-10 08:02:30,832 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 08:02:31,803 INFO app.worker: [distro] Scrape job started
2026-07-10 08:02:32,069 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 08:02:32,132 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 08:02:32,133 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 08:02:32,185 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 08:02:32,772 INFO app.scrapers.distro: [distro] parsed 774 EPG entries
2026-07-10 08:02:33,482 INFO app.worker: [distro] Scrape complete — 18 channels, 774 programs (1.7s)
2026-07-10 09:02:30,833 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 09:02:31,826 INFO app.worker: [distro] Scrape job started
2026-07-10 09:02:32,115 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 09:02:32,187 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 09:02:32,188 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 09:02:32,241 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 09:02:32,818 INFO app.scrapers.distro: [distro] parsed 770 EPG entries
2026-07-10 09:02:33,815 INFO app.worker: [distro] Scrape complete — 18 channels, 770 programs (2.0s)
2026-07-10 10:02:30,831 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 10:02:31,819 INFO app.worker: [distro] Scrape job started
2026-07-10 10:02:32,075 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 10:02:32,139 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 10:02:32,139 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 10:02:32,379 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 10:02:33,046 INFO app.scrapers.distro: [distro] parsed 772 EPG entries
2026-07-10 10:02:34,061 INFO app.worker: [distro] Scrape complete — 18 channels, 772 programs (2.2s)
2026-07-10 11:02:30,831 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 11:02:31,814 INFO app.worker: [distro] Scrape job started
2026-07-10 11:02:32,082 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 11:02:32,146 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 11:02:32,146 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 11:02:32,199 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 11:02:32,733 INFO app.scrapers.distro: [distro] parsed 768 EPG entries
2026-07-10 11:02:33,623 INFO app.worker: [distro] Scrape complete — 18 channels, 768 programs (1.8s)
2026-07-10 12:02:30,831 INFO __main__: [scheduler] Enqueued distro (cron=2 * * * *)
2026-07-10 12:02:31,814 INFO app.worker: [distro] Scrape job started
2026-07-10 12:02:32,098 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=US
2026-07-10 12:02:32,171 INFO app.scrapers.distro: [distro] parsed 9 channels for geo=QQ
2026-07-10 12:02:32,171 INFO app.scrapers.distro: [distro] parsed 18 channels across 2 geo feed(s)
2026-07-10 12:02:32,224 WARNING app.worker: [distro] suspicious channel refresh collapse: existing_active=193 incoming=18 missing_active=175; preserving prior active rows
2026-07-10 12:02:32,776 INFO app.scrapers.distro: [distro] parsed 764 EPG entries
2026-07-10 12:02:33,808 INFO app.worker: [distro] Scrape complete — 18 channels, 764 programs (2.0s)
i think it might be legit.. look at their website- only 9 channels listed. maybe they're falling apart. didn't we lose a bunch of channels a few months ago from them too?
I lost most Pluto channels
Update: Docker was no longer running.......
Surprising that you didn’t lose ALL of them, then!
