<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Alwyn Soh | Blog</title>
    <link>https://alwynsoh.com/blog/</link>
    <description>Recent content on Alwyn Soh | Blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 27 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://alwynsoh.com/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Why I Built FoodieTrack</title>
      <link>https://alwynsoh.com/blog/posts/why-i-built-foodietrack/</link>
      <pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/why-i-built-foodietrack/</guid>
      <description>&lt;p&gt;FoodieTrack is a Telegram-based meal tracker built to make logging meals quick, simple, and effortless.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;🌐 &lt;a href=&#34;https://foodietrack.com&#34;&gt;https://foodietrack.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;🤖 &lt;a href=&#34;https://foodietrack.app&#34;&gt;https://foodietrack.app&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;the-problem&#34;&gt;The Problem&lt;/h2&gt;&#xA;&lt;p&gt;Most meal tracking apps have one thing in common: &lt;strong&gt;they ask you to do too much.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Open the app.&lt;/li&gt;&#xA;&lt;li&gt;Wait for it to load.&lt;/li&gt;&#xA;&lt;li&gt;Search for the food.&lt;/li&gt;&#xA;&lt;li&gt;Choose the correct entry.&lt;/li&gt;&#xA;&lt;li&gt;Adjust the serving size.&lt;/li&gt;&#xA;&lt;li&gt;Save it.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Repeat that for every meal, every day.&lt;/p&gt;&#xA;&lt;p&gt;Eventually, many people stop logging—not because they don&amp;rsquo;t care about their health, but because the process becomes too much work.&#xA;That&amp;rsquo;s why I built &lt;strong&gt;FoodieTrack&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Set Up OpenClaw — Your Personal AI Agent</title>
      <link>https://alwynsoh.com/blog/posts/how-to-setup-openclaw/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/how-to-setup-openclaw/</guid>
      <description>&lt;p&gt;OpenClaw is an open-source AI assistant that runs on your own machine, connects to messaging platforms, and can automate tasks, check emails, manage calendars, and more. Unlike cloud-based AI assistants, OpenClaw runs locally — giving you control over your data and flexibility in how your AI assistant behaves.&lt;/p&gt;&#xA;&lt;p&gt;In this guide, I&amp;rsquo;ll walk you through setting up OpenClaw on a Windows machine (though it supports Linux and macOS too).&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-what-youll-need&#34;&gt;🧰 What You&amp;rsquo;ll Need&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A computer (Windows 10/11, Linux, or macOS)&lt;/li&gt;&#xA;&lt;li&gt;A Telegram account (for bot integration)&lt;/li&gt;&#xA;&lt;li&gt;An API key from a model provider (OpenAI, Anthropic, Google, etc.)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-step-1-install-openclaw&#34;&gt;⚙️ Step 1: Install OpenClaw&lt;/h2&gt;&#xA;&lt;p&gt;The installer script automatically detects your OS and installs Node.js if needed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Secure SSH with Tailscale on a Linux VPS</title>
      <link>https://alwynsoh.com/blog/posts/tailscale-ssh-vps/</link>
      <pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/tailscale-ssh-vps/</guid>
      <description>&lt;p&gt;Your Linux VPS is probably one of your most exposed assets. It&amp;rsquo;s constantly scanned, probed, and targeted by bots running brute force attacks on port 22. In this guide, I&amp;rsquo;ll show you how to restrict SSH on your Linux VPS so it&amp;rsquo;s &lt;strong&gt;only accessible via Tailscale&lt;/strong&gt; — keeping port 22 closed to the public internet.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-what-youll-need&#34;&gt;🧰 What You&amp;rsquo;ll Need&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A Linux VPS running Ubuntu, Debian, or AlmaLinux/Rocky&lt;/li&gt;&#xA;&lt;li&gt;Tailscale installed on your VPS&lt;/li&gt;&#xA;&lt;li&gt;SSH access to your VPS&lt;/li&gt;&#xA;&lt;li&gt;Another device with Tailscale to test the connection&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-step-1-install-tailscale-on-your-vps&#34;&gt;⚙️ Step 1: Install Tailscale on Your VPS&lt;/h2&gt;&#xA;&lt;h3 id=&#34;ubuntudebian&#34;&gt;Ubuntu/Debian&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL https://tailscale.com/install.sh | sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;almalinuxrocky&#34;&gt;AlmaLinux/Rocky&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL https://tailscale.com/install.sh | sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;start-tailscale&#34;&gt;Start Tailscale&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tailscale up&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Log in with your Tailscale account when prompted. Once connected, your VPS has a Tailscale IP address (typically in the &lt;code&gt;100.64.0.0/10&lt;/code&gt; range).&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Secure SSH with Tailscale on Synology NAS</title>
      <link>https://alwynsoh.com/blog/posts/tailscale-ssh-synology/</link>
      <pubDate>Sun, 25 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/tailscale-ssh-synology/</guid>
      <description>&lt;p&gt;Exposing SSH directly to the internet is risky. Even with a strong password or key-based auth, brute force attacks are constant. In this guide, I&amp;rsquo;ll show you how to restrict SSH on your Synology NAS so it&amp;rsquo;s &lt;strong&gt;only accessible via Tailscale&lt;/strong&gt; — keeping port 22 closed to the public internet.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-what-youll-need&#34;&gt;🧰 What You&amp;rsquo;ll Need&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A Synology NAS running DSM 7+ (or DSM 6)&lt;/li&gt;&#xA;&lt;li&gt;Tailscale installed on your Synology NAS&lt;/li&gt;&#xA;&lt;li&gt;Admin access to Synology (for firewall configuration)&lt;/li&gt;&#xA;&lt;li&gt;Another device with Tailscale to test the connection&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-step-1-install-tailscale-on-synology&#34;&gt;⚙️ Step 1: Install Tailscale on Synology&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Open &lt;strong&gt;Package Center&lt;/strong&gt; on your Synology NAS&lt;/li&gt;&#xA;&lt;li&gt;Search for &lt;strong&gt;Tailscale&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Install the Tailscale app&lt;/li&gt;&#xA;&lt;li&gt;Log in with your Tailscale account (or create a free one)&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Once connected, your Synology NAS is now part of your tailnet and has a Tailscale IP address (typically in the &lt;code&gt;100.64.0.0/10&lt;/code&gt; range).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tailscale vs Cloudflare Tunnel: Free Tier Comparison</title>
      <link>https://alwynsoh.com/blog/posts/tailscale-vs-cloudflare-tunnel-free-tier-comparison/</link>
      <pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/tailscale-vs-cloudflare-tunnel-free-tier-comparison/</guid>
      <description>&lt;p&gt;Both Tailscale and Cloudflare Tunnel (cloudflared) offer free tiers that are popular among self-hosters and home lab enthusiasts. But they work differently under the hood, and each has its strengths. In this guide, I&amp;rsquo;ll break down the key differences so you can pick the right tool for your setup.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-what-youll-need&#34;&gt;🧰 What You&amp;rsquo;ll Need&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A service or device you want to expose remotely (NAS, home server, IoT devices)&lt;/li&gt;&#xA;&lt;li&gt;A domain (optional but recommended for Cloudflare Tunnel)&lt;/li&gt;&#xA;&lt;li&gt;Basic comfort with command line / Docker&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-how-they-work-architecture&#34;&gt;⚙️ How They Work: Architecture&lt;/h2&gt;&#xA;&lt;h3 id=&#34;tailscale--mesh-vpn&#34;&gt;Tailscale — Mesh VPN&lt;/h3&gt;&#xA;&lt;p&gt;Tailscale creates a &lt;strong&gt;mesh VPN&lt;/strong&gt; — a virtual private network where devices connect directly to each other peer-to-peer. Traffic flows encrypted from device to device, without passing through a middleman. Tailscale uses WireGuard under the hood for end-to-end encryption.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Install Nginx Proxy Manager on Synology NAS (DSM 7.2&#43;)</title>
      <link>https://alwynsoh.com/blog/posts/nginx-proxy-manager-with-synology-docker/</link>
      <pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/nginx-proxy-manager-with-synology-docker/</guid>
      <description>&lt;p&gt;Nginx Proxy Manager (NPM) is a free, open-source reverse proxy tool with a powerful web interface. It lets you expose your self-hosted services to the internet with free automatic SSL certificates — without needing to know Nginx configuration syntax.&lt;/p&gt;&#xA;&lt;p&gt;In this guide, I&amp;rsquo;ll walk you through installing Nginx Proxy Manager on your Synology NAS using Docker.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-what-youll-need&#34;&gt;🧰 What You&amp;rsquo;ll Need&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A Synology NAS running DSM 7.2+ (or Docker for older DSM versions)&lt;/li&gt;&#xA;&lt;li&gt;Container Manager installed (from Package Center)&lt;/li&gt;&#xA;&lt;li&gt;SSH access to your NAS&lt;/li&gt;&#xA;&lt;li&gt;A domain pointed to your home IP (via Cloudflare or similar)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;⚠️ &lt;strong&gt;Important:&lt;/strong&gt; Nginx Proxy Manager requires ports 80 and 443. If you have Web Station or DSM&amp;rsquo;s built-in web services using these ports, uninstall them first.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Set Up IMAP in Outlook (Windows / macOS)</title>
      <link>https://alwynsoh.com/blog/posts/how-to-setup-zoho-mail-on-outlook/</link>
      <pubDate>Wed, 24 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/how-to-setup-zoho-mail-on-outlook/</guid>
      <description>&lt;p&gt;IMAP (Internet Message Access Protocol) keeps your email synced across all your devices. Read an email on your phone? It&amp;rsquo;ll show as read on your laptop. Delete something? Gone everywhere. It&amp;rsquo;s the superior choice for anyone using multiple devices.&lt;/p&gt;&#xA;&lt;p&gt;In this guide, I&amp;rsquo;ll walk you through setting up IMAP in Microsoft Outlook on both Windows and macOS.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-what-youll-need&#34;&gt;🧰 What You&amp;rsquo;ll Need&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Your email address (e.g. &lt;code&gt;you@example.com&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;Your email account password&lt;/li&gt;&#xA;&lt;li&gt;IMAP server settings (hostname, port, encryption)&lt;/li&gt;&#xA;&lt;li&gt;SMTP (outgoing) server settings&lt;/li&gt;&#xA;&lt;li&gt;Microsoft Outlook installed&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;💡 If you don&amp;rsquo;t know your IMAP/SMTP settings, check with your email provider — most list them in their support documentation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Maintenance Page with Cloudflare Workers</title>
      <link>https://alwynsoh.com/blog/posts/maintenance-page-with-cloudflare-workers/</link>
      <pubDate>Sun, 21 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/maintenance-page-with-cloudflare-workers/</guid>
      <description>&lt;p&gt;Sometimes you need to take a service offline — upgrades, migrations, or just fixing the mess you accidentally deployed at 2 AM. Instead of letting users hit a broken site, you can drop in a lightweight &lt;strong&gt;maintenance page&lt;/strong&gt; using a Cloudflare Worker. No servers, no Nginx rewrites, no duct tape. Just edge logic.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;why-use-a-worker&#34;&gt;Why use a Worker?&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Always on edge&lt;/strong&gt; – served before any origin call, so downtime at the backend doesn’t matter.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Simple rollback&lt;/strong&gt; – one click deploy/remove in the Cloudflare dashboard.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cheap&lt;/strong&gt; – Workers free tier covers most maintenance use cases.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;the-worker-script&#34;&gt;The Worker script&lt;/h2&gt;&#xA;&lt;p&gt;Here’s a minimal example:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Access Synology NAS Securely Using Cloudflare Tunnel</title>
      <link>https://alwynsoh.com/blog/posts/cloudflared-your-synology/</link>
      <pubDate>Fri, 04 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/cloudflared-your-synology/</guid>
      <description>&lt;p&gt;Exposing services like Synology DSM, File Station, or Photos should never mean opening ports to the internet. In this guide, I’ll walk through setting up &lt;strong&gt;Cloudflare Tunnel&lt;/strong&gt; on a Synology NAS the &lt;em&gt;easy way&lt;/em&gt; — no port forwarding, no headaches.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-what-youll-need&#34;&gt;🧰 What You’ll Need&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A domain managed in &lt;a href=&#34;https://dash.cloudflare.com&#34;&gt;Cloudflare&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Cloudflare Zero Trust enabled (free tier works)&lt;/li&gt;&#xA;&lt;li&gt;SSH and Docker access on your Synology NAS (DSM 7+ preferred)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-step-1-create-the-tunnel-in-cloudflare&#34;&gt;⚙️ Step 1: Create the Tunnel in Cloudflare&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Log into &lt;a href=&#34;https://one.dash.cloudflare.com&#34;&gt;Cloudflare Zero Trust&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Go to &lt;strong&gt;Access → Tunnels&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Click &lt;strong&gt;Create a Tunnel&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Give it a name like &lt;code&gt;synology-nas&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;For the connector, select &lt;strong&gt;Docker&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Copy the generated &lt;code&gt;docker run&lt;/code&gt; command — it includes your tunnel ID and credentials&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;💡 Keep this tab open. You’ll run the Docker command on your NAS in the next step.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why I Chose Cloudflare Pages Over Netlify</title>
      <link>https://alwynsoh.com/blog/posts/cloudflare-vs-netlify/</link>
      <pubDate>Sun, 29 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/cloudflare-vs-netlify/</guid>
      <description>&lt;p&gt;Both Netlify and Cloudflare Pages are excellent platforms for deploying static sites. After testing both for my personal blog and projects, I chose &lt;strong&gt;Cloudflare&lt;/strong&gt; — here&amp;rsquo;s why it won me over.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-what-youll-need&#34;&gt;🧰 What You&amp;rsquo;ll Need&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A domain (managed in Cloudflare recommended)&lt;/li&gt;&#xA;&lt;li&gt;A static site generator (Hugo, Astro, etc.)&lt;/li&gt;&#xA;&lt;li&gt;GitHub or GitLab repository for CI/CD&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-why-cloudflare&#34;&gt;⚙️ Why Cloudflare?&lt;/h2&gt;&#xA;&lt;h3 id=&#34;-built-in-dns-integration&#34;&gt;🔗 Built-in DNS Integration&lt;/h3&gt;&#xA;&lt;p&gt;My domains were already managed through &lt;a href=&#34;https://www.cloudflare.com/dns/&#34;&gt;Cloudflare DNS&lt;/a&gt;, which means full control with fast propagation, CNAME flattening, and tight integration. Keeping everything under one roof reduces friction.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox Browser in Synology Docker</title>
      <link>https://alwynsoh.com/blog/posts/firefox-browser-in-synology-docker/</link>
      <pubDate>Tue, 28 Feb 2023 05:58:40 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/firefox-browser-in-synology-docker/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;em&gt;Purchases made on this page help support my site. I may earn a small commission when you purchase through links on our site.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Why would you need a functioning web browser in your Synology? Aren&amp;rsquo;t we already using a web browser when accessing the Synology?&lt;/p&gt;&#xA;&lt;p&gt;Easy, at times you need a web browser which is on your LAN, maybe to manage local services when you&amp;rsquo;re remote. It&amp;rsquo;s not exactly the same as using a VPN service, especially when you are working from a borrowed/work PC that has web filtering in place.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pixelfed🇸🇬 is now Live!</title>
      <link>https://alwynsoh.com/blog/posts/pixelfedsg-is-now-live/</link>
      <pubDate>Fri, 24 Feb 2023 02:05:58 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/pixelfedsg-is-now-live/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://pixelfed.sg&#34;&gt;Pixelfed.SG&lt;/a&gt; instance is Live but &lt;a href=&#34;https://github.com/pixelfed/pixelfed/releases/tag/v0.11.4&#34;&gt;Pixelfed&lt;/a&gt; is technically still a v0.&#xA;During our beta launch, we&amp;rsquo;ve taken the time to learn how Pixelfed ticks. And we are satisfied to go live.&lt;/p&gt;&#xA;&lt;p&gt;We&amp;rsquo;ve been listed on &lt;a href=&#34;https://pixelfed.org&#34;&gt;Pixelfed.org&lt;/a&gt;!&lt;br&gt;&#xA;&lt;a href=&#34;https://pixelfed.org/servers/41/pixelfed.sg&#34;&gt;https://pixelfed.org/servers/41/pixelfed.sg&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Servers listed are required to adhere to the Privacy Pledge:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;No analytics or 3rd party trackers&lt;/li&gt;&#xA;&lt;li&gt;User data is not sold to any 3rd parties&lt;/li&gt;&#xA;&lt;li&gt;Data is stored securely in accordance with industry standards&lt;/li&gt;&#xA;&lt;li&gt;Admin accounts are protected with 2FA&lt;/li&gt;&#xA;&lt;li&gt;Follow strict support procedures to keep your accounts safe&lt;/li&gt;&#xA;&lt;li&gt;Give at least 6 months warning in the event we shut down&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In the back, we can see that a Pixelfed instance doesn&amp;rsquo;t require much CPU or RAM.&lt;br&gt;&#xA;At least for a small instance, but we have the resources to scale up (maybe to about 1k+ active Users).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redirect Backblaze B2 not_found with Cloudflare Worker</title>
      <link>https://alwynsoh.com/blog/posts/redirect-backblaze-b2-not_found-with-cloudflare-worker/</link>
      <pubDate>Wed, 22 Feb 2023 10:14:21 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/redirect-backblaze-b2-not_found-with-cloudflare-worker/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.backblaze.com/b2/cloud-storage.html&#34;&gt;Backblaze&lt;/a&gt; combined with &lt;a href=&#34;https://www.cloudflare.com/&#34;&gt;Cloudflare&lt;/a&gt; seems to make the most sense if you&amp;rsquo;re selfhosting, that&amp;rsquo;s because Cloudflare is Backblaze&amp;rsquo;s &lt;a href=&#34;https://help.backblaze.com/hc/en-us/articles/360010017893-Delivering-Backblaze-B2-Content-Through-Cloudflare-CDN&#34;&gt;Bandwidth Alliance partner&lt;/a&gt;.&lt;br&gt;&#xA;What that means is that we can take advantage of Cloudflare&amp;rsquo;s performance and free data transfer between Backblaze B2 and Cloudflare. Mainly because of $0 Egress fees.&lt;/p&gt;&#xA;&lt;p&gt;Now you&amp;rsquo;ll notice when accessing the B2 path that no longer available or invalid you&amp;rsquo;d see this:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;{&#xA;  &amp;quot;code&amp;quot;: &amp;quot;not_found&amp;quot;,&#xA;  &amp;quot;message&amp;quot;: &amp;quot;File with such name does not exist.&amp;quot;,&#xA;  &amp;quot;status&amp;quot;: 404&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Doesn&amp;rsquo;t look very nice does it? Now insert &lt;a href=&#34;https://workers.cloudflare.com/&#34;&gt;Cloudflare Worker&lt;/a&gt; to the picture. Using the worker, we can automatically redirect the User when they encounter the Error 404.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Experimenting Pixelfed</title>
      <link>https://alwynsoh.com/blog/posts/experimenting-pixelfed/</link>
      <pubDate>Fri, 17 Feb 2023 02:54:29 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/experimenting-pixelfed/</guid>
      <description>&lt;p&gt;Ever since working on &lt;a href=&#34;https://mastodon.sg&#34;&gt;Mastodon.SG&lt;/a&gt;, I&amp;rsquo;ve noticed &lt;a href=&#34;https://pixelfed.org&#34;&gt;Pixelfed&lt;/a&gt; and it&amp;rsquo;s potential. So I&amp;rsquo;ve decided to selfhost another decentralized social platform.&lt;/p&gt;&#xA;&lt;h2 id=&#34;welcome-pixelfed&#34;&gt;Welcome Pixelfed🇸🇬!&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pixelfed.sg&#34;&gt;Pixelfed.SG&lt;/a&gt; is hosted in Singapore and it serves as a replacement to Instagram. The difference is, privacy. Pixelfed will not dump ads on you. We will not collect &amp;amp; sell your information.&lt;/p&gt;&#xA;&lt;p&gt;The infrastructure is hosted together with Mastodon.SG, domain (pixelfed.sg) recently purchased, using SMTP2GO for emails, Backblaze B2 for object storage and Cloudflare for CDN.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Crosspost From Mastodon To Twitter or vice versa</title>
      <link>https://alwynsoh.com/blog/posts/crosspost-from-mastodon-to-twitter-or-vice-versa/</link>
      <pubDate>Sat, 11 Feb 2023 02:00:08 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/crosspost-from-mastodon-to-twitter-or-vice-versa/</guid>
      <description>&lt;p&gt;Some still have lives in Twitter and find it hard to let go, they might want to keep followers from both sides updated as well.&lt;/p&gt;&#xA;&lt;p&gt;There are tools like &lt;a href=&#34;https://moa.party/&#34;&gt;Moa&lt;/a&gt; and &lt;a href=&#34;https://crossposter.masto.donte.com.br/&#34;&gt;Crossposter&lt;/a&gt;. But these services are shutting down ever since Twitter decides to &lt;a href=&#34;https://techcrunch.com/2023/02/08/twitter-says-the-basic-tier-of-its-api-will-cost-100-per-month/&#34;&gt;limit their API&lt;/a&gt; and start charging it.&lt;/p&gt;&#xA;&lt;p&gt;Why not just &amp;ldquo;do it yourself&amp;rdquo; and use &lt;a href=&#34;https://ifttt.com/&#34;&gt;IFTTT&lt;/a&gt;? IFTTT free plan allows you to create 2 apps. Which is perfect for what we want to do here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mastodon v4.1.0 is out!</title>
      <link>https://alwynsoh.com/blog/posts/mastodon-v4-1-0-is-out/</link>
      <pubDate>Sat, 11 Feb 2023 01:23:01 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/mastodon-v4-1-0-is-out/</guid>
      <description>&lt;p&gt;Mastodon has just released v4.1.0 stable version and there are tons of features and fixes to it.&#xA;Here are some of the noteable features and fixes.&lt;/p&gt;&#xA;&lt;p&gt;New Features:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Add option to make the landing page be &lt;code&gt;/about&lt;/code&gt; even when trends are enabled&lt;/li&gt;&#xA;&lt;li&gt;Add &lt;code&gt;tootctl accounts prune&lt;/code&gt;, delete any remote account that is never interacted with local&lt;/li&gt;&#xA;&lt;li&gt;Add support for importing/exporting server-wide domain blocks&lt;/li&gt;&#xA;&lt;li&gt;Add setting for status page URL&lt;/li&gt;&#xA;&lt;li&gt;Change API rate limits from 300/5min per user to 1500/5min per user, 300/5min per app&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Fixes:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generating a Token on Mastodon</title>
      <link>https://alwynsoh.com/blog/posts/generating-a-token-on-mastodon/</link>
      <pubDate>Fri, 10 Feb 2023 05:00:53 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/generating-a-token-on-mastodon/</guid>
      <description>&lt;p&gt;Mastodon is very flexible and useful, there are plenty of &lt;a href=&#34;https://docs.joinmastodon.org/client/intro/&#34;&gt;APIs&lt;/a&gt; available to play around with.&lt;br&gt;&#xA;To make use of most of the APIs, you&amp;rsquo;ll need to generate a token and grant specific permissions to it.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s how you do it:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Login to your Mastodon instance, ie. &lt;a href=&#34;https://mastodon.sg&#34;&gt;https://mastodon.sg&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Go to Preference -&amp;gt; Development, click on &lt;em&gt;New Application&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Enter the name of the Application and modify the scopes required.&lt;br&gt;&#xA;*It is &lt;strong&gt;not recommended&lt;/strong&gt; to give &lt;code&gt;read:all&lt;/code&gt; or &lt;code&gt;write:all&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to setup WordPress on Synology Docker</title>
      <link>https://alwynsoh.com/blog/posts/how-to-setup-wordpress-on-synology-docker/</link>
      <pubDate>Wed, 08 Feb 2023 04:00:09 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/how-to-setup-wordpress-on-synology-docker/</guid>
      <description>&lt;p&gt;WordPress is the easiest blogging platform to host, so why not selfhost and use your own domain without paying extra for that feature?&lt;/p&gt;&#xA;&lt;p&gt;Synology has an existing package for WordPress, should you use that? Or what if you have more than 1 webpage to host? You might even consider using the new mulit-site feature on WordPress.&lt;br&gt;&#xA;Otherwise, here&amp;rsquo;s how you can set it up on Synology Docker.&lt;/p&gt;&#xA;&lt;h3 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Go to Package Center and install Docker&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tapbots Releases New Ivory Beta v1.0.2</title>
      <link>https://alwynsoh.com/blog/posts/tapbots-releases-new-ivory-beta-v1-0-2/</link>
      <pubDate>Mon, 06 Feb 2023 23:57:44 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/tapbots-releases-new-ivory-beta-v1-0-2/</guid>
      <description>&lt;p&gt;Guys at &lt;a href=&#34;https://tapbots.com/ivory/&#34;&gt;Tapbots&lt;/a&gt; has just released a new beta v1.0.2 (10200) for &lt;a href=&#34;https://apps.apple.com/us/app/ivory-for-mastodon-by-tapbots/id6444602274&#34;&gt;Ivory&lt;/a&gt; which has a whole slew of yummies!&lt;/p&gt;&#xA;&lt;p&gt;What&amp;rsquo;s new:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Edit Profile. You can now edit your profile within the app by going to your account settings or from the profile tab.&lt;/li&gt;&#xA;&lt;li&gt;Follow Request Actions. Private accounts can now approve or deny follow requests from the notifications tab.&lt;/li&gt;&#xA;&lt;li&gt;“Read More” posts within a post thread are now automatically expanded.&lt;/li&gt;&#xA;&lt;li&gt;“View Faves” and “View Boosts” added to the “long press” menu of their action icon.&lt;/li&gt;&#xA;&lt;li&gt;Better indication that a timeline filter is active when you switch to a tab with an active filter. (Filter name will be displayed momentarily at the top of the timeline.)&lt;/li&gt;&#xA;&lt;li&gt;Fixed issue where the “Filter User from Home” option was grayed out in iOS15 when adding someone to a list.&lt;/li&gt;&#xA;&lt;li&gt;Fixed the quality of custom emoji displayed as a badge next the avatar. (Adding a custom emoji after your display name makes it an avatar badge in Ivory)&lt;/li&gt;&#xA;&lt;li&gt;When replying to a content warning post, the preview of the post you are replying to will now be displayed in the compose view instead of hidden.&lt;/li&gt;&#xA;&lt;li&gt;Fixed issues with the notification setting “All, People You Follow…”&lt;/li&gt;&#xA;&lt;li&gt;Various other small bug fixes.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;  &#xA;  &#xA;    &lt;a href=&#34;https://alwynsoh.com/blog/posts/tapbots-releases-new-ivory-beta-v1-0-2/untitled_o.png&#34; class=&#34;image-link glightbox&#34; data-gallery=&#34;gallery&#34;&gt;&#xA;      &lt;img src=&#34;https://alwynsoh.com/blog/posts/tapbots-releases-new-ivory-beta-v1-0-2/untitled_o.png&#34; alt=&#34;Image&#34;&gt;&#xA;    &lt;/a&gt;&#xA;  &#xA;&#xA; &#xA; &#xA; &#xA; &#xA; &#xA; &#xA; &#xA; &#xA; &#xA; &#xA; &#xA; &#xA; &#xA;   &#xA;   &#xA;     &lt;a href=&#34;https://alwynsoh.com/blog/posts/tapbots-releases-new-ivory-beta-v1-0-2/untitled2_o.png&#34; class=&#34;image-link glightbox&#34; data-gallery=&#34;gallery&#34;&gt;&#xA;       &lt;img src=&#34;https://alwynsoh.com/blog/posts/tapbots-releases-new-ivory-beta-v1-0-2/untitled2_o.png&#34; alt=&#34;Image&#34;&gt;&#xA;     &lt;/a&gt;&#xA;   &#xA; &#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to setup Ghost on Synology Docker</title>
      <link>https://alwynsoh.com/blog/posts/how-to-setup-ghost-on-synology/</link>
      <pubDate>Mon, 06 Feb 2023 14:49:57 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/how-to-setup-ghost-on-synology/</guid>
      <description>&lt;p&gt;Ghost has recently started to support MySQL and dropped support for SQLite.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s how you can set it up on Synology Docker.&lt;/p&gt;&#xA;&lt;h3 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Go to Package Center and install Docker&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Go to File stations and navigate to Docker folder&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Create two folders, &lt;code&gt;ghost-app&lt;/code&gt; and &lt;code&gt;ghost-db&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Open Docker on Synology and select Registry tab&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Search for &lt;code&gt;Ghost&lt;/code&gt; and &lt;code&gt;MySQL&lt;/code&gt;, download both with &lt;code&gt;latest&lt;/code&gt; tag&lt;br&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;  &#xA;  &#xA;    &lt;a href=&#34;https://alwynsoh.com/blog/posts/how-to-setup-ghost-on-synology/Screenshot-2023-02-06-at-22.07.06_o.png&#34; class=&#34;image-link glightbox&#34; data-gallery=&#34;gallery&#34;&gt;&#xA;      &lt;img src=&#34;https://alwynsoh.com/blog/posts/how-to-setup-ghost-on-synology/Screenshot-2023-02-06-at-22.07.06_o.png&#34; alt=&#34;Image&#34;&gt;&#xA;    &lt;/a&gt;&#xA;  &#xA;&#xA;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Buy me a drink on &lt;a href=&#34;https://ko-fi.com/alwynsoh&#34;&gt;Ko-fi&lt;/a&gt; :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to update IP address on Cloudflare</title>
      <link>https://alwynsoh.com/blog/posts/how-to-update-ip-address-on-cloudflare/</link>
      <pubDate>Wed, 01 Feb 2023 13:13:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/how-to-update-ip-address-on-cloudflare/</guid>
      <description>&lt;p&gt;Hosting your services from home? But ISP is providing Dynamic IP Address?&lt;/p&gt;&#xA;&lt;p&gt;In my scenario, I’ll be using a Synology’s Task Scheduler and Cloudflare.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;You’ll need to get all the details for the following variables&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; #Email associated with your Cloudflare account&#xA; EMAIL=&amp;quot;&amp;quot;&#xA; #Global API Key&#xA; KEY=&amp;quot;&amp;quot;&#xA; #Unique ID provided by Cloudflare&#xA; ZONE_ID=&amp;quot;&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;To get your &lt;code&gt;KEY&lt;/code&gt;, go to your Cloudflare Profile &amp;gt; API Tokens and copy your Global API Key&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to self-host WriteFreely on a Synology</title>
      <link>https://alwynsoh.com/blog/posts/how-to-self-host-writefreely-on-a-synology/</link>
      <pubDate>Tue, 31 Jan 2023 16:00:00 +0000</pubDate>
      <guid>https://alwynsoh.com/blog/posts/how-to-self-host-writefreely-on-a-synology/</guid>
      <description>&lt;p&gt;While most guides focuses on installing WriteFreely on Ubuntu or Docker (docker-compose), I could not find one that simply uses Synology with Docker.&lt;/p&gt;&#xA;&lt;p&gt;And here’s how you do it:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Install Docker for your Synology.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Search and download algernon/writefreely.&lt;br&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;  &#xA;  &#xA;    &lt;a href=&#34;https://alwynsoh.com/blog/posts/how-to-self-host-writefreely-on-a-synology/Screenshot-2023-02-07-102301_o.png&#34; class=&#34;image-link glightbox&#34; data-gallery=&#34;gallery&#34;&gt;&#xA;      &lt;img src=&#34;https://alwynsoh.com/blog/posts/how-to-self-host-writefreely-on-a-synology/Screenshot-2023-02-07-102301_o.png&#34; alt=&#34;Image&#34;&gt;&#xA;    &lt;/a&gt;&#xA;  &#xA;&#xA;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Create a container with that image:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Select &lt;code&gt;bridge&lt;/code&gt; network&lt;/li&gt;&#xA;&lt;li&gt;Enable auto restart&lt;/li&gt;&#xA;&lt;li&gt;Set your desired port, leaving the container port as &lt;code&gt;8080&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Create a folder on your NAS and attach the folder here pointing to &lt;code&gt;/data&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Declare these two variables: &lt;code&gt;WRITEFREELY_ADMIN_USERNAME&lt;/code&gt; and &lt;code&gt;WRITEFREELY_ADMIN_PASSWORD&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Start container&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Buy me a drink on &lt;a href=&#34;https://ko-fi.com/alwynsoh&#34;&gt;Ko-Fi&lt;/a&gt; :)&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
