<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Self-Hosting on Lynx Tech Blog</title><link>https://blog.lynxflow.co/en/tags/self-hosting/</link><description>Recent content in Self-Hosting on Lynx Tech Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Mon, 24 Aug 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://blog.lynxflow.co/en/tags/self-hosting/index.xml" rel="self" type="application/rss+xml"/><item><title>I Migrated 45 Cron Jobs into Windmill: Five Lessons from a Migration</title><link>https://blog.lynxflow.co/en/posts/windmill-cron-migration-45-jobs-2026/</link><pubDate>Mon, 24 Aug 2026 00:00:00 +0800</pubDate><guid>https://blog.lynxflow.co/en/posts/windmill-cron-migration-45-jobs-2026/</guid><description>&lt;img src="https://blog.lynxflow.co/images/windmill-migration-45-2026.png" alt="Featured image of post I Migrated 45 Cron Jobs into Windmill: Five Lessons from a Migration" /&gt;45 scheduled tasks. 25 were lying in crontab, 18 were hanging on user-level systemd timers, and 2 were pilot/split-tier tasks on the original cron. At 05:40 on August 24, 2026, I migrated them all into my self-hosted Windmill—45/45 smoke tests green, all original schedules removed.
If I&amp;rsquo;d done this sooner, I would&amp;rsquo;ve saved a lot of midnight log-diving. But the closer I got to actually doing it, the more I realized the migration itself had more pitfalls than cron ever did.</description></item><item><title>Goodbye SaaS: I Cloned 7 Open-Source Social Media Distributors and Read Every One's Code</title><link>https://blog.lynxflow.co/en/posts/open-source-social-distributor-survey/</link><pubDate>Thu, 13 Aug 2026 00:00:00 +0800</pubDate><guid>https://blog.lynxflow.co/en/posts/open-source-social-distributor-survey/</guid><description>&lt;img src="https://blog.lynxflow.co/images/open-source-social-distributor-survey.png" alt="Featured image of post Goodbye SaaS: I Cloned 7 Open-Source Social Media Distributors and Read Every One's Code" /&gt;I&amp;rsquo;ve used the SaaS multi-posters (the Xiaodouyai type) — one click syncs a post to a dozen platforms. Convenient, but your account cookies live in their cloud, rate limits are billed monthly, and when a platform changes its UI you wait for them to patch it. This year I want to move to open-source self-hosting — keep my accounts in my own hands, be able to edit the code, stop paying subscriptions. Possibly even fork one into my own distribution base.</description></item><item><title>Why I self-host my AI agents (and built AgentHub)</title><link>https://blog.lynxflow.co/en/posts/why-self-host-agents-and-agenthub/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0800</pubDate><guid>https://blog.lynxflow.co/en/posts/why-self-host-agents-and-agenthub/</guid><description>&lt;img src="https://blog.lynxflow.co/images/why-self-host-agents-and-agenthub.png" alt="Featured image of post Why I self-host my AI agents (and built AgentHub)" /&gt; A self-hosted rack of agents reaching messaging channels|AI-generated illustration Every day I run two self-hosted AI agent harnesses: Hermes (from Nous Research — Python, self-improving, with a skills system) and OpenClaw (a Node-based multi-channel agent gateway with a skills marketplace). Both are MIT-licensed, both live on my own machine, and their channels cover everything from WeChat, Feishu, and DingTalk to Telegram.</description></item></channel></rss>