<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Synology on Margrop Blog</title>
    <link>https://blog.margrop.net/en/tag/synology/</link>
    <description>Recent content in Synology on Margrop Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <lastBuildDate>Wed, 15 Jul 2026 19:30:00 +0800</lastBuildDate>
    <atom:link href="https://blog.margrop.net/en/tag/synology/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Docker Pulls Keep Timing Out? How to Choose, Configure, and Verify Chinese Registry Mirrors</title>
      <link>https://blog.margrop.net/en/post/docker-mirror-source-selection-guide/</link>
      <pubDate>Wed, 15 Jul 2026 19:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/docker-mirror-source-selection-guide/</guid>
      <description>The short answer&#xA;When Docker image pulls fail on a mainland China network, the image is not necessarily missing and DNS is not always the culprit. More often, the public registry path is congested, a mirror is temporarily unavailable, or the configuration was edited but Docker was never restarted.&#xA;My practical recommendation is simple: open status.anye.xyz first and treat it as a “weather report” for Docker mirrors; select a recently healthy HTTPS endpoint; edit the correct daemon configuration for your operating system; validate the JSON; restart Docker; and finally verify with a real pull of a small image.</description>
    </item>
    <item>
      <title>RAID Is Not Backup: How to Choose the Right NAS Layout for Synology, fnOS, and Unraid</title>
      <link>https://blog.margrop.net/en/post/nas-raid-selection-guide/</link>
      <pubDate>Sat, 11 Jul 2026 12:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/nas-raid-selection-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The short answer&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;RAID primarily keeps a NAS available when one or more drives fail. Backup restores data after deletion, ransomware, filesystem damage, theft, fire, or a failed NAS. You normally need both.&lt;/p&gt;&#xA;&lt;p&gt;On Synology, SHR-1 is the practical default for many homes, while larger and more critical arrays deserve SHR-2 consideration. On fnOS, choose the filesystem, storage mode, drive count, and backup destination as one design. On Unraid, understand that the classic Array is not a conventional striped RAID: data disks keep independent filesystems while one or two parity disks provide failure recovery.&lt;/p&gt;&#xA;&lt;p&gt;A useful starting rule is: mirror two-drive systems; use single-drive redundancy when capacity matters and a separate backup exists; seriously consider dual-drive redundancy as drive count and individual drive capacity grow. Anything irreplaceable still needs an offline or off-site copy.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>The Password Was Right—So Why Did Synology Reject It? Rebuilding DSM’s RSA &#43; AES WebAPI Login</title>
      <link>https://blog.margrop.net/en/post/synology-webapi-login-encryption-deep-dive/</link>
      <pubDate>Sat, 11 Jul 2026 08:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/synology-webapi-login-encryption-deep-dive/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Some Synology WebAPI clients do more than post &lt;code&gt;account&lt;/code&gt; and &lt;code&gt;passwd&lt;/code&gt; to &lt;code&gt;auth.cgi&lt;/code&gt;. The implementation preserved in OpenStack Cinder first calls &lt;code&gt;SYNO.API.Encryption.getinfo&lt;/code&gt;, receives an RSA public modulus, server time, and two dynamic field names, then generates a one-use passphrase. RSA PKCS#1 v1.5 encrypts that passphrase; an OpenSSL-compatible AES-256-CBC envelope encrypts the URL-encoded login parameters; both Base64 values are finally placed inside the server-provided &lt;code&gt;cipherkey&lt;/code&gt; field.&lt;/p&gt;&#xA;&lt;p&gt;This is an authorized WebAPI compatibility technique—not a password bypass. A SID for &lt;code&gt;session=DSM&lt;/code&gt; is also not automatically the same thing as a complete browser UI login state. Parameter encryption does not replace HTTPS, because TLS still authenticates the server and protects integrity against an active intermediary.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Original cover: an RSA outer envelope and AES inner envelope protect a NAS login&#34; src=&#34;https://blog.margrop.net/post-images/synology-webapi-login-encryption-deep-dive/00-cover-original.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stop Fighting Over the Remote: Use DSM Scheduled Tasks to Lock a Kids&#39; Video Folder Automatically</title>
      <link>https://blog.margrop.net/en/post/synology-kid-video-acl-curfew/</link>
      <pubDate>Sun, 05 Jul 2026 06:50:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/synology-kid-video-acl-curfew/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is not an account lockout guide. The goal is narrower and cleaner: lock one kids&amp;rsquo; video folder on a Synology DSM 7.2.1 NAS during selected hours, while leaving the account, password, homework folders, photo folders, and other shares alone. The script inserts one temporary &lt;code&gt;deny&lt;/code&gt; ACL entry with &lt;code&gt;synoacltool&lt;/code&gt;, removes that entry during open windows, backs up the ACL before each change, and verifies the result after each operation.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Original cover: the kids&amp;rsquo; video folder is locked by schedule&#34; src=&#34;https://blog.margrop.net/post-images/synology-kid-video-acl-curfew/00-ai-cover.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Synology locked root behind three doors — I spent twenty minutes teaching it how to let me back in</title>
      <link>https://blog.margrop.net/en/post/synology-root-and-ssh-key/</link>
      <pubDate>Thu, 18 Jun 2026 16:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/synology-root-and-ssh-key/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Synology DSM, by design, ships with SSH &lt;strong&gt;disabled&lt;/strong&gt; and root login &lt;strong&gt;prohibited&lt;/strong&gt; — both sensible defaults. This guide walks you through &amp;ldquo;doing it the right way&amp;rdquo;:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Control Panel → Terminal &amp;amp; SNMP → Enable SSH&lt;/strong&gt; (open the gate)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Log in as a normal user, then &lt;code&gt;sudo -i&lt;/code&gt; to become root&lt;/strong&gt; (borrow the landlord&amp;rsquo;s key first)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Edit &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt; and set &lt;code&gt;PermitRootLogin yes&lt;/code&gt;&lt;/strong&gt; (tell the bouncer &amp;ldquo;root is family&amp;rdquo;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;synouser --setpw root xxx&lt;/code&gt; to set a root password, and append your public key to &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;&lt;/strong&gt; (hand back a key that can never be lost)&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Total time: about twenty minutes. I&amp;rsquo;ll explain &lt;em&gt;why&lt;/em&gt; every step exists using a &amp;ldquo;key and lock&amp;rdquo; metaphor, give you a 3-second vi crash course, list the error messages you&amp;rsquo;ll see, and answer the seven most common questions.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Moving Bedtime Out of the Living Room: Letting macOS launchd Disable Your Kids&#39; Synology Accounts at 22:00 and Quietly Re-enable Them at 08:00</title>
      <link>https://blog.margrop.net/en/post/synology-mykid-curfew-launchd/</link>
      <pubDate>Sun, 14 Jun 2026 08:20:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/synology-mykid-curfew-launchd/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Synology DSM has a &amp;ldquo;disable this account&amp;rdquo; checkbox in the Control Panel, but it does not run on a schedule. With macOS&amp;rsquo;s built-in &lt;code&gt;launchd&lt;/code&gt; and a 50-line bash script, you can flip the &lt;code&gt;expired&lt;/code&gt; flag on two local accounts at 22:00 every night and flip it back at 08:00. The script does a before-query, a change, an after-query, and &lt;code&gt;exit 1&lt;/code&gt; the moment the after state does not match expectations. &lt;code&gt;launchd&lt;/code&gt; writes stdout and stderr to dedicated log files. The interesting part is that the word &amp;ldquo;parent&amp;rdquo; quietly leaves the conversation: you no longer have to remind anyone to go to bed, the machine does it for you, on time, every day.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This post is not a comprehensive &amp;ldquo;family NAS management&amp;rdquo; guide. It is about one specific thing: turning a manual button click that depends on human memory into a system-level event that just happens on time.&lt;/p&gt;&#xA;&lt;p&gt;If you only want the picture, the overview diagram in Section 2 is the whole article in one frame.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Lights out at 22:00, lights on at 08:00&#34; src=&#34;https://blog.margrop.net/post-images/synology-mykid-curfew-launchd/05-curfew-overview.svg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>PhotoPrism Stuck for 5 Minutes on First Boot? A Postmortem on PHOTOPRISM_INIT=intel</title>
      <link>https://blog.margrop.net/en/post/photoprism-init-intel-stuck/</link>
      <pubDate>Sat, 13 Jun 2026 08:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/photoprism-init-intel-stuck/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR (The Short Version)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;PHOTOPRISM_INIT: &amp;quot;intel&amp;quot;&lt;/code&gt; line in PhotoPrism&amp;rsquo;s Plus Docker image is &lt;strong&gt;not&lt;/strong&gt; just a flag to enable Intel hardware acceleration at runtime — it&amp;rsquo;s a one-shot &lt;strong&gt;system-level installer&lt;/strong&gt; that runs &lt;code&gt;apt-get dist-upgrade&lt;/code&gt; against &lt;code&gt;archive.ubuntu.com&lt;/code&gt; and then installs 8 Intel/VA-API packages before the main process is allowed to start. On a fresh container this takes &lt;strong&gt;5–10 minutes&lt;/strong&gt; (sometimes more), during which nothing inside the container listens on port &lt;code&gt;2342&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Meanwhile: &lt;code&gt;docker ps&lt;/code&gt; says &lt;code&gt;Up&lt;/code&gt;, Portainer is green, &lt;code&gt;ss -ltn&lt;/code&gt; on the host shows &lt;code&gt;:2342&lt;/code&gt; LISTEN — but your browser gets &lt;code&gt;ERR_CONNECTION_RESET&lt;/code&gt; / &lt;code&gt;Connection reset by peer&lt;/code&gt;. Because host-side &lt;code&gt;docker-proxy&lt;/code&gt; accepts the connection and then tries to forward to a port inside the container that has no listener, the kernel sends back an RST.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; just remove or empty that one line. If you already pass &lt;code&gt;/dev/dri/renderD128&lt;/code&gt; via &lt;code&gt;devices:&lt;/code&gt;, the host&amp;rsquo;s drivers and userland libraries are perfectly usable from the container — there&amp;rsquo;s nothing to &amp;ldquo;install&amp;rdquo; in there.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Integrating Synology Operations as an OpenClaw / HermesAgent Skill: From One Sentence to Auditable NAS Automation</title>
      <link>https://blog.margrop.net/en/post/openclaw-hermesagent-synology-skill/</link>
      <pubDate>Tue, 05 May 2026 12:20:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/openclaw-hermesagent-synology-skill/</guid>
      <description>&lt;p&gt;I have already written two Synology CLI references on this blog:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.margrop.net/en/post/synology-ssh-commands/&#34;&gt;Synology SSH Commands Cheatsheet&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.margrop.net/en/post/synology-diskstation-cli-administration-guide/&#34;&gt;Synology NAS CLI Administration Guide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Those posts answer the question: “What commands can a human run on a Synology NAS?” This article answers a different question: if I already use OpenClaw / HermesAgent, how can I turn those commands into an operations Skill so that I can ask the agent, in one sentence, to inspect the NAS, summarize evidence, prepare a maintenance plan, and execute approved commands only when the risk is acceptable?&lt;/p&gt;&#xA;&lt;p&gt;The short answer is: yes, but the Skill must not become an unrestricted root shell. The right design is:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Make Synology SSH access controlled, testable, and revocable.&lt;/li&gt;&#xA;&lt;li&gt;Put common Synology CLI operations into a Skill, together with command categories, risk levels, and output rules.&lt;/li&gt;&#xA;&lt;li&gt;Allow read-only diagnostics by default.&lt;/li&gt;&#xA;&lt;li&gt;Require explicit approval for service restarts, permission changes, user changes, network changes, deletion, and storage operations.&lt;/li&gt;&#xA;&lt;li&gt;Preserve commands, output, and reasoning so each operation remains auditable.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;If you only want the big picture, the diagram below summarizes the whole article.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;OpenClaw / HermesAgent Synology Skill overview&#34; src=&#34;https://blog.margrop.net/post-images/openclaw-hermesagent-synology-skill/01-overview-handdrawn.svg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>[Transfer] Synology NAS CLI Administration Guide</title>
      <link>https://blog.margrop.net/en/post/synology-diskstation-cli-administration-guide/</link>
      <pubDate>Thu, 30 Apr 2026 18:20:04 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/synology-diskstation-cli-administration-guide/</guid>
      <description>&lt;p&gt;This guide contains command tools that allow your applications to make use of the resources on Synology DiskStation and also includes a list of Synology Error Numbers for reference.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[Transfer] Synology DiskStation Administration CLI Guide: Reading Notes and Command Cheatsheet</title>
      <link>https://blog.margrop.net/en/post/zhuan-synology-diskstation-administration-cli-guide/</link>
      <pubDate>Thu, 30 Apr 2026 18:14:05 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/zhuan-synology-diskstation-administration-cli-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Synology&amp;rsquo;s official CLI administration guide is not a beginner manual for the DSM web interface. It is a compact reference for scripting, automation, and system integration. The useful parts cover local users, local groups, shared folders, network configuration, service management, Windows workgroup or ADS domain settings, and DSM error numbers.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This post is an English reading note and command cheatsheet based on Synology&amp;rsquo;s official PDF, &lt;em&gt;CLI Administrator Guide for Synology NAS&lt;/em&gt;. Because the original PDF is a copyrighted Synology document, this post does not reproduce or translate the full document verbatim. Instead, it reorganizes the material into a bilingual blog-friendly guide for quick reading and daily operations. For exact wording, parameter definitions, version-specific behavior, and legal notices, use the official PDF linked at the end.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[Translation] Synology SSH Commands Cheatsheet</title>
      <link>https://blog.margrop.net/en/post/synology-ssh-commands/</link>
      <pubDate>Thu, 30 Apr 2026 10:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/synology-ssh-commands/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Warning: Running these SSH commands may damage your system/hard drive. Do not execute them if you don&amp;rsquo;t understand what they do!&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>When Docker Networks Collide with the Home LAN: Moving Auto-Allocated Subnets Back to 172</title>
      <link>https://blog.margrop.net/en/post/docker-network-subnet-conflict-migration-record/</link>
      <pubDate>Mon, 13 Apr 2026 08:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/docker-network-subnet-conflict-migration-record/</guid>
      <description>&lt;p&gt;This post records a very practical Docker networking failure: the number of containers kept growing, Docker&amp;rsquo;s auto-assigned user-defined bridge networks eventually started landing in &lt;code&gt;192.168.x.x&lt;/code&gt;, and those networks began colliding with the real home LAN. The symptoms were not dramatic at first. Nothing looked “broken” in the usual sense. Containers were still running, the host was still alive, and the dashboard still looked normal. But parts of the home network became unreliable, and once I dug into it on my NAS, the root cause turned out to be the Docker network allocation strategy rather than any single bad container.&lt;/p&gt;&#xA;&lt;p&gt;The fix was straightforward in principle, but important in practice: I moved Docker&amp;rsquo;s automatic network pool to &lt;code&gt;172.16.0.0/12&lt;/code&gt;, migrated the existing &lt;code&gt;192.168.*&lt;/code&gt; networks onto the 172 private range, and made sure future networks created through Portainer, Dockhand, or plain &lt;code&gt;docker compose&lt;/code&gt; would follow the same rule.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Synology Chat download and installation address</title>
      <link>https://blog.margrop.net/en/post/synology-chat-download-address/</link>
      <pubDate>Mon, 07 Jun 2021 08:31:39 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/synology-chat-download-address/</guid>
      <description>Due to well-known reasons, Chat has now disappeared&#xA;However, the international version of the Synology site can still be downloaded and used normally.&#xA;Use and cherish&#xA;DS3617xsInternational Version Download Center&#xA;Chat Kit download address&#xA;Chat Android version download address&#xA;*Chat Apple users must find an overseas iCloud account to install it.&#xA;The above Chat package and APK have been backed up to the download center of this site </description>
    </item>
    <item>
      <title>【Transfer】The latest method of half-washing Synology</title>
      <link>https://blog.margrop.net/en/post/synology-half-crack-way-docker-ddsm/</link>
      <pubDate>Tue, 19 Jan 2021 18:10:53 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/synology-half-crack-way-docker-ddsm/</guid>
      <description>I recently built a new NAS. After installing it, I found that the semi-whitewashing solution provided before no longer worked. Previous Posthttp://blog.lixx.vip/黑群晖（synology）nas-6-22-折腾记-半洗白/ Mainly because Synology’s new version of Docker 18.09.0-0506 has closed the installation of DDSM&#xA;Download old version of Docker *Old version of Docker download address (Docker-x64-17.05.0-0401.spk):&#xA;DDSM’s PAT download address (DSM_VirtualDSM_15284.pat): It can also be downloaded at 我的网盘&#xA;You need to uninstall the newly installed Docker in the package center, and then install the downloaded old version</description>
    </item>
    <item>
      <title>How to Run N2N on Synology (DSM) - Compilation Guide</title>
      <link>https://blog.margrop.net/en/post/how-to-use-n2n-dsm/</link>
      <pubDate>Fri, 15 Jan 2021 13:18:07 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/how-to-use-n2n-dsm/</guid>
      <description>&lt;p&gt;Synology (abbreviated as &lt;code&gt;DSM&lt;/code&gt; below) is currently the most famous &lt;code&gt;NAS&lt;/code&gt; system, bar none.&#xA;How to run &lt;code&gt;N2N&lt;/code&gt; directly on &lt;code&gt;DSM&lt;/code&gt;? Of course, cross-compilation is needed again 😂.&#xA;The following cross-compilation operations require a basic understanding of &lt;code&gt;Linux&lt;/code&gt; and proficiency in &lt;code&gt;vim&lt;/code&gt; operations.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
