<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Digital Life — FoundersJP</title><description>Digital Life — Building a free, one-person business with AI and self-hosted tools: solo, self-hosted, sustainable.</description><link>https://www.foundersjp.com/</link><language>en</language><atom:link href="https://www.foundersjp.com/en/category/digital-life/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Mon, 19 Oct 2026 14:43:30 GMT</lastBuildDate><item><title>The Cheapest 10G WiFi 7 Router in Japan: Why I Still Can’t Recommend the TP-Link BE550 Pro</title><link>https://www.foundersjp.com/en/posts/the-cheapest-10g-wifi-7-router-in-japan-why-i-still-cant-recommend-the-tp-link-be550-pro/</link><guid isPermaLink="true">https://www.foundersjp.com/en/posts/the-cheapest-10g-wifi-7-router-in-japan-why-i-still-cant-recommend-the-tp-link-be550-pro/</guid><description>I recently switched my home internet in Tokyo from SoftBank&apos;s 10G fiber to NTT Docomo&apos;s 10G service. After seeing multiple users complain about the instability…</description><pubDate>Mon, 19 Oct 2026 14:43:30 GMT</pubDate><content:encoded>&lt;p&gt;I recently switched my home internet in Tokyo from SoftBank&apos;s 10G fiber to NTT Docomo&apos;s 10G service. After seeing multiple users complain about the instability of Docomo’s rented gateway WiFi, I decided to take matters into my own hands and buy a proper 10G WiFi 7 router: the &lt;strong&gt;TP-Link BE550 Pro&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/10/IMG_6371-768x1024-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At the time of purchase, this model was the cheapest 10G 6GHz WiFi 7 router available on the Japanese market. Thanks to the weak Yen and recent price adjustments across consumer electronics, I picked it up for &lt;strong&gt;26,000 JPY (around $175 USD)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/10/IMG_6408.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here is my honest, unfiltered review after putting it through its paces.&lt;/p&gt;
&lt;h5&gt;Unboxing &amp;amp; Design&lt;/h5&gt;
&lt;p&gt;The packaging is minimalist. Aside from the main unit and manual, you only get a wide-voltage power adapter and a 1.5-meter shielded Cat6A Ethernet cable.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/10/IMG_6409-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Visually, the router features hidden internal antennas with a recessed belt line running through the middle. The design language draws inspiration from the Dell XPS chassis from twenty years ago.Placed alongside other modern gaming consoles, it fits right in without looking like an alien spaceship.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/10/IMG_6376-768x1024.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h5&gt;The Highlights (Hardware Done Right)&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Antenna Array:&lt;/strong&gt; The upper half of the body houses 6 integrated antennas covering the 2.4GHz, 5GHz, and 6GHz bands. Each band utilizes a dual-antenna setup, delivering a theoretical wireless throughput of up to &lt;strong&gt;9,679 Mbps&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generous Ports:&lt;/strong&gt; It comes with &lt;strong&gt;one 10G WAN port and four 2.5G LAN ports&lt;/strong&gt;. Kudos to TP-Link here—many &quot;10G&quot; routers on the market foolishly pair a 10G WAN port with standard 1G LAN ports, bottlenecking the entire local network.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/10/IMG_6377-768x1024-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;The Bottleneck: Disastrous Software&lt;/h3&gt;
&lt;p&gt;While TP-Link stacked the hardware specs to the ceiling, the software implementation is a complete letdown.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Broken MLO:&lt;/strong&gt; Although Multi-Link Operation (MLO) is supported on paper, enabling it results in severe packet loss and unbearable latency, making it practically unusable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unstable Japanese IPoE (IPv4 over IPv6):&lt;/strong&gt; For a router officially sold in Japan, its adaptation to local IPoE connections is abysmal. These connections rely heavily on IPv6, yet the stock firmware frequently drops the IPv6 connection. Worse, when it drops, the system fails to auto-restart or reconnect the IPv6 service—leaving you with no choice but to manually reboot the device.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To solve this, I flashed a separate device with &lt;strong&gt;OpenWrt&lt;/strong&gt; to handle MAP-E link, converting the BE550 Pro into a glorified Access Point (AP).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;My Advice to TP-Link:&lt;/strong&gt; Spend less time on flashy, gimmick features and focus on rock-solid core software functionality.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;If I could turn back time, I would not buy this router again.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/10/IMG_6384-768x1024.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Final Thoughts: Why 10G Fiber Matters in the AI Era&lt;/h3&gt;
&lt;p&gt;Japan is currently pushing symmetric 10G fiber to residential homes (10Gbps down / 10Gbps up). In the age of local AI workflows, this bandwidth isn&apos;t just a luxury—it’s a necessity.&lt;/p&gt;
&lt;p&gt;For example, pulling a local 32B parameter AI model requires downloading around &lt;strong&gt;70GB of data&lt;/strong&gt;. On a standard 1Gbps connection, that download takes an entire night. On a full 10G connection, it wraps up in a matter of minutes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Related Reading :&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Advanced Play with Docker Compose in NAS&lt;/li&gt;
&lt;li&gt;Do you have to lose port 443 and your address will be with a little digital tail?No! Lucky+CloudFlare makes you clean and fresh!&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Follow me for more “survival” tips on &lt;strong&gt;&lt;a href=&quot;https://www.foundersjp.com/&quot;&gt;Digital nomad&lt;/a&gt;！&lt;/strong&gt;&lt;/h4&gt;</content:encoded></item><item><title>AI Filmmaking for Beginners: 3 Tools That Turn Stories Into Short Films</title><link>https://www.foundersjp.com/en/posts/ai-filmmaking-for-beginners-3-tools-that-turn-stories-into-short-films/</link><guid isPermaLink="true">https://www.foundersjp.com/en/posts/ai-filmmaking-for-beginners-3-tools-that-turn-stories-into-short-films/</guid><description>A friend of mine enjoys writing screenplays as a hobby. Recently, I helped her turn a few simple scripts into short videos. They are still far from Hollywood le…</description><pubDate>Thu, 17 Sep 2026 14:23:16 GMT</pubDate><content:encoded>&lt;p&gt;A friend of mine enjoys writing screenplays as a hobby.&lt;/p&gt;
&lt;p&gt;Recently, I helped her turn a few simple scripts into short videos.&lt;/p&gt;
&lt;p&gt;They are still far from Hollywood-level productions, but that was never the point.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/09/%E6%88%AA%E5%B1%8F2026-05-31-19.01.01.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Even with a rough production, seeing a story come to life on screen was surprisingly rewarding. The process itself was fun, creative, and satisfying.&lt;/p&gt;
&lt;p&gt;Experiences like this make me believe that AI is bringing us closer to a world where anyone can become the director of their own stories.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/09/ai-video-creation-tools-617x1024.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today I’d like to share three AI tools I used in this project. Together, they can handle most of the work needed to create a video.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;1.&lt;/strong&gt; Dreamina &lt;strong&gt;AI — Creating Images and Videos&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Dreamina AI is a generative AI platform developed by ByteDance. It supports text-to-image generation, image-to-video creation, and story-based content generation.&lt;/p&gt;
&lt;p&gt;For this project, I didn’t use advanced techniques such as keyframes or detailed camera control.&lt;/p&gt;
&lt;p&gt;Instead, I simply wrote a few short prompts and allowed the AI to interpret them creatively.&lt;/p&gt;
&lt;p&gt;That simplicity is one of the reasons I think beginners can start using AI video tools without a steep learning curve.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;2. ElevenLabs — Voiceovers and AI Music&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;ElevenLabs is best known for its high-quality text-to-speech technology.&lt;/p&gt;
&lt;p&gt;It supports multiple languages, emotional voice styles, and precise control over pacing, pauses, and tone. The resulting audio often sounds professional enough for podcasts, videos, and commercial projects.&lt;/p&gt;
&lt;p&gt;One feature I particularly like is its ability to generate songs.&lt;/p&gt;
&lt;p&gt;You can write your own lyrics, choose a musical style, and let AI create the music.&lt;/p&gt;
&lt;p&gt;For my New Year video, instead of searching for background music, I simply wrote a few lines of lyrics and asked the AI to generate a song that matched the mood.&lt;/p&gt;
&lt;p&gt;It saved time and made the final video feel more personal.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;3. DaVinci Resolve — Editing and Color Grading&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;DaVinci Resolve is a professional video editing and color grading application widely used in the film industry.&lt;/p&gt;
&lt;p&gt;It offers advanced editing tools, visual effects, multi-track editing, and industry-leading color correction features.&lt;/p&gt;
&lt;p&gt;In the past, I mainly used Premiere Pro for editing.&lt;/p&gt;
&lt;p&gt;This time, however, I found DaVinci Resolve surprisingly approachable.&lt;/p&gt;
&lt;p&gt;It sits somewhere between professional editing software and beginner-friendly tools.&lt;/p&gt;
&lt;p&gt;If DaVinci Resolve still feels too complex, CapCut is another great option. It is much easier to learn and can handle most basic editing tasks without much effort.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;AI has dramatically lowered the barrier to video creation.&lt;/p&gt;
&lt;p&gt;By combining AI-generated visuals from Dreamina AI, voiceovers and music from ElevenLabs, and editing in DaVinci Resolve, ordinary people can create unique videos in a relatively short amount of time.&lt;/p&gt;
&lt;p&gt;This is especially exciting for writers, storytellers, and creative hobbyists.&lt;/p&gt;
&lt;p&gt;For the first time, it’s becoming realistic to transform stories from the page into something closer to film.&lt;/p&gt;
&lt;p&gt;Tools can make creation easier.&lt;/p&gt;
&lt;p&gt;But meaningful stories still come from people.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Related Reading&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;How to Avoid AI Sycophancy: 6 Practical Ways to Get Honest, Unbiased Answers&lt;/li&gt;
&lt;li&gt;If you’re not a programmer，Where Are the Opportunities for Ordinary People in the Age of Rapid AI Growth? A More Optimistic View&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Follow me for more &quot;survival&quot; tips on &lt;a href=&quot;https://www.foundersjp.com/&quot;&gt;Digital nomad&lt;/a&gt;！&lt;/p&gt;</content:encoded></item><item><title>No need to worry, even for beginners—after SoftBank blocks IPv6, Lucky and Cloudflare Tunnel have you covered.</title><link>https://www.foundersjp.com/en/posts/no-need-to-worry-even-for-beginners-after-softbank-blocks-ipv6-lucky-and-cloudflare-tunnel-have-you-covered/</link><guid isPermaLink="true">https://www.foundersjp.com/en/posts/no-need-to-worry-even-for-beginners-after-softbank-blocks-ipv6-lucky-and-cloudflare-tunnel-have-you-covered/</guid><description>Today I suddenly realized that I couldn’t access my home NAS from outside the network, and the notes stored on it wouldn’t sync either. It took me a while to fi…</description><pubDate>Sun, 23 Aug 2026 13:55:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I suddenly realized that I couldn’t access my home NAS from outside the network, and the notes stored on it wouldn’t sync either. It took me a while to figure out the cause—a SoftBank router update had blocked incoming IPv6 connections. I’ve previously shared a method for “removing the ‘non-443 port’ suffix,” which can resolve many access issues, but that approach was completely ineffective against this IPv6 block.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.foundersjp.com/lifestyle/digitallife/do-you-have-to-lose-port-443-and-your-address-will-be-with-a-little-digital-tailno-luckycloudflare-makes-you-clean-and-fresh/&quot;&gt;https://www.foundersjp.com/lifestyle/digitallife/do-you-have-to-lose-port-443-and-your-address-will-be-with-a-little-digital-tailno-luckycloudflare-makes-you-clean-and-fresh/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since the old method didn’t work, I switched to a new solution: &lt;strong&gt;Lucky + Cloudflare (CF)&lt;/strong&gt; Tunnel. This solved the problem perfectly. Below, I’ll walk you through the detailed steps one by one so even beginners can follow along.&lt;/p&gt;
&lt;p&gt;First, let me talk about the main tool I’ve been using—&lt;strong&gt;Lucky&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/05/%E5%8A%9F%E8%83%BD%E5%88%97%E8%A1%A8E-382x1024.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Lucky is a highly integrated utility that combines a variety of practical features, including DDNS, reverse proxy, intranet access, port forwarding, WebDAV, and the CorazaWAF firewall. Whether you&apos;re using a standard router or installing it via Docker, it works seamlessly.&lt;/p&gt;
&lt;p&gt;Even better is its “lightweight” design: common setup combinations (such as NPM+cloudflared+ddclient) can take up 600–800 MB of disk space after installation and consume a significant amount of RAM; in contrast, the Lucky package is less than 30 MB, and its daily RAM usage is just over 50 MB, making it particularly well-suited for devices with limited hardware resources.&lt;/p&gt;
&lt;p&gt;Next, I’ll walk you through the setup step by step—just follow along 👇&lt;/p&gt;
&lt;h2&gt;Step 1: Create a tunnel in Cloudflare&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/05/%E6%B3%A8%E5%86%8C%E9%9A%A7%E9%81%93E-1024x565.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log in to your Cloudflare account, go to [Zero Trust] → [Network] → [Connectors], and click the [Create Tunnel] button.&lt;/li&gt;
&lt;li&gt;Follow the on-screen prompts to name the tunnel (any name will do, as long as you can tell them apart). Once creation is complete, the page will display a &lt;strong&gt;tunnel token&lt;/strong&gt;.&lt;br /&gt;
⚠️ Important reminder: This token is only displayed once! Be sure to copy it immediately, paste it into a text editor, and save it securely. If you lose it, you’ll have to recreate the tunnel. For example&lt;br /&gt;
, the page will display something like&lt;code&gt;--token 一串字符&lt;/code&gt;,&lt;code&gt;--token&lt;/code&gt;All characters following that are the tunnel token we need. Even if it isn’t displayed in full, you must copy and save the entire string.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/05/TokenJ-1024x571.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Step 2: Create a Cloudflare API token&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Click the profile icon in the upper-right corner of the page, go to [Profile], locate the [API Token] option, and click [Create Token].&lt;/li&gt;
&lt;li&gt;Select [Use Template] or configure permissions manually, and check the permissions as required below:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Permission 1: Account → Cloudflare Tunnel → Edit&lt;/li&gt;
&lt;li&gt;Permission 2: Zone → DNS → Edit&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;For 【Account Resources】 and 【Region Resources】, select &quot;All Accounts/Regions,&quot; or specify the account and region corresponding to the specific domain you want to use.&lt;/li&gt;
&lt;li&gt;After clicking &quot;Save,&quot; the page will generate &lt;strong&gt;an API token&lt;/strong&gt;, which is also displayed only once! Copy and save it; we recommend labeling it &quot;API-Token&quot; to avoid confusing it with the &quot;Tunnel-Token&quot; from the first step.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/05/APIE-1024x571.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Step 3: Add tunnel settings in Lucky&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Open the Lucky management interface, navigate to [Internal Network Penetration] → [Cloudflare], and click [Add Instance].&lt;/li&gt;
&lt;li&gt;Fill in the parameters according to the instructions below; leave any other options that aren&apos;t mentioned here at their default settings:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Note: Enter a name of your choice to help identify the purpose of this tunnel (e.g., &quot;NAS Access Tunnel&quot;).&lt;/li&gt;
&lt;li&gt;Instance type: Select [Tunnel]&lt;/li&gt;
&lt;li&gt;First token input field: Paste the &quot;Tunnel-Token&quot; you saved in the first step&lt;/li&gt;
&lt;li&gt;In the CF API Token input field at the bottom: Paste the &quot;API-Token&quot; you saved in Step 2.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;After saving, you&apos;ll see the newly added item in the tunnel list. Click [Apply Route] next to it, and the page will display a unique record value. Copy this value in its entirety.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/05/%E6%B7%BB%E5%8A%A0-1024x632.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Step 4: Configure DNS resolution in Cloudflare&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Return to the Cloudflare dashboard, go to [DNS] &amp;gt; [Records], and click [Add Record].&lt;/li&gt;
&lt;li&gt;Select the record type [CNAME] and fill in the required information:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Name: Enter the domain prefix you want to use to access the service (for example, if you want to access it via nas.xxx.com, enter &quot;nas&quot;)&lt;/li&gt;
&lt;li&gt;Content: Paste the record values copied from Lucky in the previous step&lt;/li&gt;
&lt;li&gt;Proxy status: Tap the &quot;Little Yellow Cloud&quot; icon (to enable CDN and proxy)&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Click &quot;Save,&quot; and the DNS record is now configured.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Step 5: Complete the final setup and start using it&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Return to the tunnel configuration page in Lucky, and enter the full domain name you created in the previous step (e.g., nas.xxx.com) in the [Hostname] field.&lt;/li&gt;
&lt;li&gt;Click [Test] next to it. Once the test result turns green, it means the tunnel is connected.&lt;/li&gt;
&lt;li&gt;In the [Destination Service] field, enter the address and port of the device on your internal network (for example, the NAS address 192.168.1.100:5000). After saving, you will be able to access the service normally via the domain name.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/05/%E6%B7%BB%E5%8A%A02-878x1024.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Finally, let’s discuss the pros and cons of this approach.&lt;/h2&gt;
&lt;p&gt;✅ Pros: Compared to traditional &quot;DDNS + reverse proxy&quot; solutions, this method offers stronger encryption. Plus, since traffic is routed through Cloudflare, it’s virtually impossible for ISPs to block or intercept it, ensuring maximum stability.&lt;br /&gt;
❌ Cons: Currently, it only supports services using the HTTP and HTTPS protocols. If you need to use other protocols, such as Remote Desktop or FTP, this solution isn’t suitable—you’ll need to find an alternative.&lt;/p&gt;</content:encoded></item><item><title>Do you have to lose port 443 and your address will be with a little digital tail?No! Lucky+CloudFlare makes you clean and fresh!</title><link>https://www.foundersjp.com/en/posts/do-you-have-to-lose-port-443-and-your-address-will-be-with-a-little-digital-tailno-luckycloudflare-makes-you-clean-and-fresh/</link><guid isPermaLink="true">https://www.foundersjp.com/en/posts/do-you-have-to-lose-port-443-and-your-address-will-be-with-a-little-digital-tailno-luckycloudflare-makes-you-clean-and-fresh/</guid><description>Those of you who are familiar with me know that I love to toss NAS, and I run a lot of services in my NAS at home. As a family of geeks, most of my use is throu…</description><pubDate>Tue, 11 Aug 2026 15:41:00 GMT</pubDate><content:encoded>&lt;p&gt;Those of you who are familiar with me know that I love to toss NAS, and I run a lot of services in my NAS at home. As a family of geeks, most of my use is through the routing side of the intranet address to jump to use, and did not pay attention to the access status of the public network. Recently, however, one day, I suddenly went out and found that these services on the NAS could not be accessed through the public network.&lt;/p&gt;
&lt;p&gt;I found out the reason is that port 443 of IPv6 is blocked, and in the past, IPv6 was not blocked for 443 in my city. I thought it was a phased blocking of ports and would be unblocked after a while, however, more than a month has passed and it still hasn&apos;t been unblocked, so I&apos;m afraid it won&apos;t be unblocked for quite some time.&lt;/p&gt;
&lt;h2&gt;Lucky.&lt;/h2&gt;
&lt;p&gt;In the past, my service on the NAS has been realized through &lt;strong&gt;DDNS-Go&lt;/strong&gt; + &lt;strong&gt;Ngnix Prosy Manager&lt;/strong&gt;. I experienced &lt;strong&gt;Lucky&lt;/strong&gt; Daikichi when I tossed iStoreOS on my Lab machine some time ago, and this time I plan to formally apply Lucky to the NAS as well. I&apos;m not the only one who uses the network at home, and there&apos;s a history of being criticized by the whole family because of something going wrong with All In One. So I have all my services on the NAS now, and the routing will just be routing.&lt;/p&gt;
&lt;p&gt;Lucky Daji is based on DDNS integrated reverse proxy solution, support for many domain name service provider platform, also through the API and key management (I believe that friends can see here, must know how to apply for API and key), but its management background design is more humanized, a variety of processes are also more intuitive. ssl certificates are also managed individually, more suitable for the use of national I&apos;ve used CloudCloud myself. I myself have used CloudFlare&apos;s 15-year certificate, so long cycle, or very worrying.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/tictak/wp-content/uploads/2025/10/2024-12-01-13.06.57-dash.cloudflare.com_-1024x577.png&quot; alt=&quot;CloudFlare Source Certificate&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Of course the biggest problem is still the port issue. Because I&apos;m a lazy person, I only set up one external listening port when shadowing ports through Biggie, and the various services are differentiated by secondary domain names. The reverse proxy service addresses on the NAS are prefixed with nasx.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/tictak/wp-content/uploads/2025/10/2024-11-28-16.38.18-192.168.7.18-d30f8120e89e-1024x534.png&quot; alt=&quot;prefix (linguistics)&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;source rules&lt;/h2&gt;
&lt;p&gt;Although a port is better to remember, through the domain name plus port can also be used. But as a slightly obsessive-compulsive have bacteria, always feel very awkward, so also have been looking for ways to realize the public port jump. Before in the big mom also have seen other friends write, through the redirection rules and source rules to realize the way, but let a person more helpless is the free version only 10 redirection and 10 source rules to use the authority.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/tictak/wp-content/uploads/2025/10/2024-11-16-00.02.04-dash.cloudflare.com-a1e4f732507f-1024x802.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the course of my attempts, I found that the source rule has &lt;strong&gt;an option to match &quot;SSL/HTTPS&quot;&lt;/strong&gt; to point the default port 443 to the specified port of the service host, which is literally customized for my current situation.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/tictak/wp-content/uploads/2025/10/2024-11-16-12.20.27-dash.cloudflare.com-8e015202deb0-851x1024.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;CloudFlare&apos;s source rules are very user-friendly and can be used to &lt;strong&gt;create a variety of complex judgment combinations through &quot;And&quot; and &quot;Ro&quot;&lt;/strong&gt; to adapt to various situations. If there is only one host in a single network segment, it can be judged by the IPv6 segment, which does not need a prefix and is easy to remember. But I have other hosts under &quot;2408&quot;, so I chose the prefix way to do the judgment, the services on the NAS are in the second-level domain name added &quot;nasx&quot; as a prefix, this setup ensures that the other hosts under the main domain name will not conflict with the second-level domain name. This setting ensures that the other second-level domain names under the primary domain name will not conflict with each other.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/tictak/wp-content/uploads/2025/10/2024-12-01-13.01.49-dash.cloudflare.com_-1024x607.png&quot; alt=&quot;CDNon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Of course the little yellow cloud in DNS must be turned on, or it will not take effect.&lt;/p&gt;
&lt;h2&gt;utilization effect&lt;/h2&gt;
&lt;p&gt;After these settings, you can access your own private service directly with just the domain name, no problem for either browsers or clients. However, it is important to note that the actual port for accessing through the domain name is 443, not a customized port. For remote Aria downloads or remote database access, the port needs to be 443. For remote desktop access, the domain name can be used to connect directly without a port.&lt;/p&gt;
&lt;p&gt;In practice, the DNS access through CloudFlare is a bit slower than AliDNS with port resolution, but it is more stable. In the course of my business trip, I found that some cities through the Ali DNS access will fail, but CloudFlare is not a problem. I haven&apos;t tried Tencent&apos;s DNSPod or Volcano, and I don&apos;t know if other platforms in China support this kind of source rule, so I&apos;d like to hear from those who have used it.&lt;/p&gt;</content:encoded></item><item><title>Performing Brain Surgery on AI: Can We Use Ollama Modelfile to Fine-Tune a Local Large Model and Teach It the &quot;Shadow Clone&quot; Technique?</title><link>https://www.foundersjp.com/en/posts/ai-template-ollama-modelfile/</link><guid isPermaLink="true">https://www.foundersjp.com/en/posts/ai-template-ollama-modelfile/</guid><description>In the era of agent privatization, Ollama serves as an ideal platform for running AI models. Depending on specific requirements, different models can be loaded…</description><pubDate>Tue, 11 Aug 2026 13:57:00 GMT</pubDate><content:encoded>&lt;p&gt;In the era of agent privatization, Ollama serves as an ideal platform for running AI models. Depending on specific requirements, different models can be loaded in a staggered manner to achieve the agent’s behavioral objectives. However, the models in the official Ollama library generally take up a significant amount of space and cannot be customized. In comparison, fetching models from Hugging Face is a great alternative.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/04/kdn-ollama-hugging-face-1024x545.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As it happens, both Qwen and Gemma have recently released new models that are supposedly agent- and skill-friendly, so I decided to give them a try. However, even though I pulled in the most powerful Qwen 3.5, it ran like a madman talking to himself. This is most likely not a problem with the model’s intelligence, but rather a case where the Ollama model file needs a bit of “brain surgery.”&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/04/%E8%8B%B1%E6%96%87%E9%94%99%E8%AF%AF-1024x655.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When pulling models from HuggingFace, we need to create a ModeFile tailored to our specific needs, but this is often where the most issues arise. We may encounter hallucinations, self-questioning and self-answering, looping outputs, or no output at all. The reason for this is that Ollama is extremely sensitive to the Template in the model’s ModeFile.In most cases, each model includes a pre-configured Chat Template provided by the publisher. The root cause of model runaway behavior is a conflict arising from inconsistencies between the ModeFile and the model’s built-in Chat Template.&lt;/p&gt;
&lt;p&gt;Even within the same model series, there can be significant differences between the built-in chat templates. For example, if you place a Qwen3 ModeFile into Qwen3.5, it will malfunction. Therefore, the safest approach is to export the chat template from the model and use it to build a ModeFile that meets your specific needs.&lt;/p&gt;
&lt;h2&gt;Export Template&lt;/h2&gt;
&lt;p&gt;Ollama typically runs in a container, but since container environments are often minimal, the best way to extract chat templates is to run the command directly on the host machine. I run Ollama on UNRAID, which doesn’t come with a Python environment by default, but you can install it from the App Store. Similarly, you can install it on Synology and Feiniu as well.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/04/Screenshot-2026-04-12-at-00-04-31-Zion_Apps-1024x662.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Simply run the following command in the model directory using Python:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python3 -c &quot;



def read_gguf_template(file_path):
    try:
        with open(file_path, &apos;rb&apos;) as f:
            magic = f.read(4)
            if magic != b&apos;GGUF&apos;: return &apos;【Invalid GGUF】&apos;
            # 2MB Covers the vast majority of metadata scenarios
            header_data = f.read(2 * 1024 * 1024)
            key = b&apos;tokenizer.chat_template&apos;
            pos = header_data.find(key)
            if pos == -1: return &apos;【Template field not found】&apos;
            
            # Identifying Jinja template delimiters
            start_jinja = header_data.find(b&apos;{%&apos;, pos)
            if start_jinja == -1: start_jinja = header_data.find(b&apos;{{&apos;, pos)
            
            if start_jinja != -1:
                raw = header_data[start_jinja : start_jinja + 2000]
                end_jinja = raw.rfind(b&apos;%}&apos;)
                # Decode and clean up any remaining binary data
                res = raw[:end_jinja + 2].decode(&apos;utf-8&apos;, &apos;ignore&apos;) if end_jinja != -1 else raw.decode(&apos;utf-8&apos;, &apos;ignore&apos;)
                return res.strip()
            return &apos;【The keyword was found, but the starting point could not be located.】&apos;
    except Exception as e:
        return f&apos;【Read error: {e}】&apos;

files = sorted([f for f in os.listdir(&apos;.&apos;) if f.endswith(&apos;.gguf&apos;)])
if not files:
    print(&apos;Error: No .gguf files were found in the current directory.&apos;)
else:
    for file in files:
        print(&apos;\n&apos; + &apos;★&apos; * 40)
        print(f&apos;Model file: {file}&apos;)
        print(&apos;--- Original template content ---&apos;)
        print(read_gguf_template(file))
        print(&apos;★&apos; * 40)
&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You will then see an item with the same name under the model.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/04/%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;P.S.: I mostly use the Q4_K_M model, which offers a fairly moderate compression ratio.&lt;/p&gt;
&lt;h2&gt;The cause of the confusion&lt;/h2&gt;
&lt;p&gt;Taking Qwen 3.5 as an example:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/04/think-1024x211.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The template includes &amp;lt;think&amp;gt;\n\n&amp;lt;/think&amp;gt;structure. If Ollama&apos;s  Modelfile has not defined &lt;strong&gt;PARAMETER stop &quot;&amp;lt;|im_end|&amp;gt;&quot;&lt;/strong&gt; or if the thought chain tags are not handled properly, the model will enter a loop.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/04/tool-1024x521.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;To keep pace with the current trend in agents and skills, Qwen 3.5 has added a large number &amp;lt;tool_call&amp;gt;, &amp;lt;function=...&amp;gt;, and  &amp;lt;parameter=...&amp;gt; tags. If the System Prompt passed from Ollama is incomplete, the model may &quot;mistakenly assume&quot; that it needs to call a tool. When it realizes there are no tools available, it will start &lt;strong&gt;randomly generating function names and parameters&lt;/strong&gt; based on a template format, resulting in &quot;nonsensical content.&quot;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/04/user-1024x235.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There is logic in the template:{% if message.role == &quot;tool&quot; %} This will be followed by &amp;lt;|im_start|&amp;gt;user\n&amp;lt;tool_response&amp;gt;. IIn Ollama’s default logic, the &quot;user&quot; and &quot;assistant&quot; roles alternate. However, to maintain compatibility with tool responses, Qwen 3.5 wraps tool wraps the return content of user a role. If Ollama’s Modelfile simply defines a role, it can lead to &lt;strong&gt;a misalignment of contextual roles&lt;/strong&gt;. The model may suddenly perceive itself as the user, creating the illusion of a &quot;loop.&quot;&lt;/p&gt;
&lt;h2&gt;Custom Modeflie&lt;/h2&gt;
&lt;p&gt;With the built-in templates in the structural model, building Modeflies is much simpler. Based on the Chat Template included in the model, I built two Modeflies: Think and Agent.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Think Mode (Thinking Type)&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Agent Pattern (Executing)&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Temperature (Temp)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.6–0.8 (to allow for creativity)&lt;/td&gt;
&lt;td&gt;0.1–0.4 (for stability)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context (Ctx)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;32768 (Long-form text analysis)&lt;/td&gt;
&lt;td&gt;8,192–16,384 (as long as it’s sufficient)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Core Logic&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Inductive &amp;lt;think&amp;gt; Inductive Activation&lt;/td&gt;
&lt;td&gt;Enforce Constraints on Tool Calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stop words&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Standard Role Tags&lt;/td&gt;
&lt;td&gt;Increase &amp;lt;/think&amp;gt; Truncate&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Think is used &amp;lt;think&amp;gt; for scheduling, planning, breaking down plans, and studying existing documents. It improves the quality of generated content by allowing the model to self-validate. If the base model you’ve selected does not support the Think mode, do not attempt &amp;lt;think&amp;gt; to convert it into a Think model within Modeflie, as this will result in garbled text.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;FROM ./Qwen3.5-4B-Q4_K_M.gguf

TEMPLATE &quot;&quot;&quot;&amp;lt;|im_start|&amp;gt;system
{{ .System }}&amp;lt;|im_end|&amp;gt;
{{ range .Messages }}&amp;lt;|im_start|&amp;gt;{{ .Role }}
{{ .Content }}&amp;lt;|im_end|&amp;gt;
{{ end }}&amp;lt;|im_start|&amp;gt;assistant
&amp;lt;think&amp;gt;
&quot;&quot;&quot;

SYSTEM &quot;&quot;&quot;You are an expert reasoning assistant. For every problem, think carefully and thoroughly before answering. Show your reasoning process inside &amp;lt;think&amp;gt; tags, then provide a clear, well-structured final answer after &amp;lt;/think&amp;gt;.&quot;&quot;&quot;

PARAMETER stop &quot;&amp;lt;|im_end|&amp;gt;&quot;
PARAMETER stop &quot;&amp;lt;|im_start|&amp;gt;&quot;
PARAMETER stop &quot;&amp;lt;|endoftext|&amp;gt;&quot;

PARAMETER num_gpu 99

PARAMETER num_ctx 32768
PARAMETER temperature 0.6
PARAMETER top_p 0.95
PARAMETER top_k 40
PARAMETER repeat_penalty 1.1
PARAMETER num_predict 8192
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;An Agent is responsible for invoking various tools and quickly generating real-time content. The Agent’s modefile strictly enforces rules governing which tools can be invoked, how they are executed, and what their outputs should be. Allowing the model to think during execution reduces efficiency and can cause deviations in the execution process. Therefore, the thinking process is terminated using the &amp;lt;/think&amp;gt; tag during execution; alternatively, thinking can be forcibly terminated using the PARAMETER stop &quot;&amp;lt;/think&amp;gt;&quot; parameter.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;FROM ./Qwen3.5-4B-Q4_K_M.gguf

TEMPLATE &quot;&quot;&quot;&amp;lt;|im_start|&amp;gt;system
{{ .System }}&amp;lt;|im_end|&amp;gt;
{{ range .Messages }}&amp;lt;|im_start|&amp;gt;{{ .Role }}
{{ .Content }}&amp;lt;|im_end|&amp;gt;
{{ end }}&amp;lt;|im_start|&amp;gt;assistant
&amp;lt;think&amp;gt;

&amp;lt;/think&amp;gt;

&quot;&quot;&quot;

SYSTEM &quot;&quot;&quot;You are a precise, execution-focused AI assistant operating as an agent backend.

## Tool Usage
- Call tools proactively when external data, retrieval, or computation is needed.
- Return tool calls as valid JSON strictly following the provided schema.
- Include all required fields. Never omit or fabricate parameter values.
- If a required parameter is missing or ambiguous, ask for clarification before calling.
- After receiving tool results, synthesize and respond — do not re-expose raw tool output.

## Task Handling
- RAG / Retrieval: Query precisely. Summarize retrieved content faithfully without hallucination.
- Data processing: Apply operations step by step. Validate output structure before responding.
- Multi-step planning: Break complex tasks into subtasks. Track progress and adjust plan if a step fails.

## Output Rules
- Structured tasks → use JSON or markdown tables as appropriate.
- Free-form tasks → plain concise prose, no filler.
- Never guess. Never pad. If uncertain, say so explicitly.&quot;&quot;&quot;

PARAMETER stop &quot;&amp;lt;|im_end|&amp;gt;&quot;
PARAMETER stop &quot;&amp;lt;|im_start|&amp;gt;&quot;
PARAMETER stop &quot;&amp;lt;|endoftext|&amp;gt;&quot;

PARAMETER num_gpu 99

PARAMETER num_ctx 16384
PARAMETER temperature 0.6
PARAMETER top_p 0.9
PARAMETER top_k 40
PARAMETER repeat_penalty 1.1
PARAMETER num_predict 2048
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can adjust the PARAMETER section according to your device environment and requirements.&lt;/p&gt;
&lt;h2&gt;Teamwork: 1 + 1 &amp;gt; 2&lt;/h2&gt;
&lt;p&gt;Through this &quot;brain surgery&quot; on the model file, we have essentially split a single model into two distinct &quot;personalities.&quot; This is the &lt;strong&gt;&quot;Shadow Clone Technique&lt;/strong&gt;&quot; of local large models:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Thinker:&lt;/strong&gt; Responsible for digesting lengthy documents and refining logic, &lt;code&gt;&amp;lt;think&amp;gt;&lt;/code&gt; the tag to construct complex chains of reasoning.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Executor:&lt;/strong&gt; Handles the dirty and tedious work, strictly executes JSON output, never wastes words, and delivers only results.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Compared to mixing and matching models from different brands and of different scales, this collaborative approach based on “clones from the same source” offers a decisive advantage:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zero communication overhead:&lt;/strong&gt; Since they share the same vocabulary (tokenizer) and underlying logic, Clone B can instantly and accurately grasp the intent planned by Clone A, significantly reducing the protocol alignment overhead associated with cross-model calls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ultra-space-saving:&lt;/strong&gt; No matter how many partitions you create, it always occupies only a single &lt;code&gt;Qwen3.5-4B-Q4_K_M.gguf&lt;/code&gt; of disk space.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Leap in NAS Performance:&lt;/strong&gt; Even in resource-constrained NAS environments, a &quot;specialized and fine-tuned&quot; small-parameter model can deliver greater stability and responsiveness for specific tasks than even those bloated, general-purpose large models.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;The Ultimate Closed-Loop Solution for Agent Privatization&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Amid the trend toward agent privatization, Ollama is no longer just a model loader; it’s more like a “&lt;strong&gt;talent marketplace.”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With Modelfile’s precise control, you can summon countless “clones” just like in *Naruto*, tailored to the difficulty of the task: one for security reviews, one for code audits, one for data cleansing… They all share a single brain (Weights) but each performs its own specific role.&lt;/p&gt;
&lt;p&gt;When your local AI can automatically and seamlessly switch between “thoughtful deliberation” and “swift action” based on your instructions, you no longer have just a chatbot—you have a &lt;strong&gt;special forces&lt;/strong&gt; unit &lt;strong&gt;of AI that is at your beck and call, absolutely loyal, and deeply attuned to your needs.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The brain surgery is complete. Now, restart Ollama and experience the power of the avatar combo!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2026/04/cu3w4waljpib1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>Registering a personal account with Azure is essential to resolve issues accessing Outlook email.</title><link>https://www.foundersjp.com/en/posts/registering-a-personal-account-with-azure-is-essential-to-resolve-issues-accessing-outlook-email/</link><guid isPermaLink="true">https://www.foundersjp.com/en/posts/registering-a-personal-account-with-azure-is-essential-to-resolve-issues-accessing-outlook-email/</guid><description>The world renowned tech giant Microsoft has truly taken a firm stance, vigorously promoting modern secure connection methods for data security reasons. Since 20…</description><pubDate>Sat, 08 Nov 2025 15:51:53 GMT</pubDate><content:encoded>&lt;p&gt;The world-renowned tech giant Microsoft has truly taken a firm stance, vigorously promoting modern secure connection methods for data security reasons. Since 2022, it has phased out basic authentication (username/password) for enterprise email services. In September 2024, it announced that basic authentication for personal users would also be discontinued starting May 2025, though this deadline has now been extended to the end of April 2026.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/11/Opera-%E5%BF%AB%E7%85%A7_2025-10-16_200131_techcommunity.microsoft.com_-1024x902.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For users who frequently use Outlook&apos;s website and app, as well as major email clients like Apple Mail and Gmail, there appears to be little impact since these apps already have built-in OAuth2 support. However, those who have long relied on third-party clients or self-hosted tools and accumulated years of email data may find themselves in a bind, forced to take matters into their own hands.&lt;/p&gt;
&lt;p&gt;Regardless of which client or app you use, if it doesn&apos;t have Microsoft&apos;s OAuth2 interface built-in, you must first obtain OAuth credentials for your personal Outlook account.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/11/Azure-Sign-up-1-1024x574.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;First, you need to register for a free account on Azure, Microsoft&apos;s cloud service platform. For enterprise users, the corporate ID is typically already linked to the corresponding Azure account. Individual users, however, must register anew using the email address associated with their Outlook account.&lt;/p&gt;
&lt;p&gt;Please note that during registration, you will be required to verify your credit card. Supported credit cards include VISA, American Express, Mastercard, and JCB.&lt;/p&gt;
&lt;p&gt;After completing registration, go to the homepage of the personal management platform and select &lt;strong&gt;App Registration&lt;/strong&gt;. If you don&apos;t see the Application Registration option, you can search for it in the search bar.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/11/Home-Microsoft-Azure-1024x580.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On the application registration page, click &lt;strong&gt;New Registration&lt;/strong&gt;, then fill in the application name, account type, and other information. If this account is solely for your personal use, select Single Tenant. Since I have separate Outlook email accounts for work and personal use, I need to choose &lt;strong&gt;Multi-tenant and Personal Account&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/11/Register-an-application-Microsoft-Azure-1024x578.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After that, determine the redirect address. Select &lt;strong&gt;Web&lt;/strong&gt; as the method, and the address is&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;&lt;code&gt;https://login.microsoftonline.com/common/oauth2/nativeclient
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;This address is a special address whose function is to inform the Microsoft Identity Platform that the application we are currently registering is intended for API authorization.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/11/Add-a-client-secret-Microsoft-Azure-1-1024x578.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After clicking &quot;Finish,&quot; you&apos;ll arrive at the application details page. Under &quot;Manage&quot; on the left, select &quot;Certificates and Passwords.&quot; Here, create a new client password. You can choose the password&apos;s validity period, with a maximum of 24 months (two years). After two years, if you wish to continue using it, you&apos;ll need to reapply for the password—a security measure implemented by Microsoft. Note that this password will only be displayed once. If forgotten, you&apos;ll have to reapply for the application. Therefore, it&apos;s advisable to record this password in a secure location.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/11/Request-API-permissions-Microsoft-Azure-2-1024x577.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After obtaining the password, select the API permissions on the right. Then choose &lt;strong&gt;Microsoft Graph&lt;/strong&gt; and select &lt;strong&gt;Delegated permissions&lt;/strong&gt; within it. Check the boxes for &lt;strong&gt;IMAP&lt;/strong&gt; and &lt;strong&gt;SMTP&lt;/strong&gt;. After adding them, click &lt;strong&gt;Grant admin consent&lt;/strong&gt;, which represents the default directory.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/11/myoutlookmail-Microsoft-Azure-3-1024x576.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then, in the third-party application or app you use, simply add the corresponding application tenant account and password.&lt;/p&gt;
&lt;p&gt;On your Azure personal homepage, you can view your current subscription plan. Mine is the free tier. Clicking &quot;Details&quot; shows which services are included at no cost. If you need to set up a simple website or personal application, you can fully leverage these resources.&lt;/p&gt;</content:encoded></item><item><title>Advanced Play with Docker Compose in NAS</title><link>https://www.foundersjp.com/en/posts/hello-world/</link><guid isPermaLink="true">https://www.foundersjp.com/en/posts/hello-world/</guid><description>Those of you who are familiar with me know that I often toss NAS, and I also belong to the NAS deployment of many self hosted services, which Docker is essentia…</description><pubDate>Sun, 02 Nov 2025 04:17:06 GMT</pubDate><content:encoded>&lt;p&gt;Those of you who are familiar with me know that I often toss NAS, and I also belong to the NAS deployment of many self-hosted services, which Docker is essential. Different NAS systems have different solutions for Docker, and Docker Compose is currently the most widely applicable one.&lt;/p&gt;
&lt;h2&gt;Labeling instructions&lt;/h2&gt;
&lt;p&gt;The Docker Compose configuration file is in YAML format, usually a docker-compose.yml or compose.yaml file. The top-level tags define the configuration of services, networks, storage volumes, etc. for the entire application. The following is a list of common and important top-level tag names and their functions in the Docker Compose configuration file. This list is based on the Compose Specification, which replaces the older v2 and v3 formats and is the recommended and widely used standard at this stage.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;version&lt;/code&gt;&lt;/strong&gt; (deprecated)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;(no longer recommended in newer Compose specifications)&lt;/strong&gt; Used in older Compose file formats (v2 and v3) to specify the profile version. When using the Compose specification now, this field is usually omitted or used only for backward compatibility.&lt;/td&gt;
&lt;td&gt;old version&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;services&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Defines all services in the application.&lt;/strong&gt; Each service entry (such as &lt;code&gt;image&lt;/code&gt;, &lt;code&gt;container_name&lt;/code&gt;, etc. as you mentioned) acts as a subconfiguration under this key. This is the core part of the Compose file.&lt;/td&gt;
&lt;td&gt;compulsory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;volumes&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Define Named Volumes.&lt;/strong&gt; These volumes can be shared between different services and are independent of the container lifecycle.&lt;/td&gt;
&lt;td&gt;selectable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;networks&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Define custom networks.&lt;/strong&gt; Allows services to connect to a specific network in order to communicate with each other or with an external network.&lt;/td&gt;
&lt;td&gt;selectable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;configs&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Define Config Data.&lt;/strong&gt; Allows a service to access sensitive or non-sensitive configuration data, typically used for application configuration.&lt;/td&gt;
&lt;td&gt;selectable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;secrets&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Define Sensitive Data (Secrets).&lt;/strong&gt; Allows services to securely access sensitive information such as passwords or API keys.&lt;/td&gt;
&lt;td&gt;selectable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;include&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Contains additional Compose files.&lt;/strong&gt; Allows configuration to be split into multiple files for easy management and reuse.&lt;/td&gt;
&lt;td&gt;selectable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;name&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Specifies the project name.&lt;/strong&gt; Used to override the default behavior of directory names as project names.&lt;/td&gt;
&lt;td&gt;selectable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Of these top-level tags, &lt;strong&gt;&lt;code&gt;the services tag&lt;/code&gt;&lt;/strong&gt; is essential for building containers, and there are a number of common sub-tags under it.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;image&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Specifies the image used to build the container.&lt;/strong&gt; This can be a public image on Docker Hub, a private repository or a local image.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;build&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Defines how to build the image.&lt;/strong&gt; Use this to specify the Dockerfile path and build context if not using an existing &lt;code&gt;image&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;container_name&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Specify a fixed name for the container.&lt;/strong&gt; By default Compose generates a name (e.g. &lt;code&gt;projectname-servicename-1&lt;/code&gt; ).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;ports&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Publish the container&apos;s port to the host.&lt;/strong&gt; The format is usually &lt;code&gt;Host Port:Container Port&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;volumes&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Mount storage volumes or host paths to containers.&lt;/strong&gt; Used for data persistence or shared host files. The format can be &lt;code&gt;host path:container path&lt;/code&gt; or &lt;code&gt;volume name:container path&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;environment&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Sets an environment variable in the container.&lt;/strong&gt; This can be a list of key-value pairs or file references.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;env_file&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Add environment variables from the file.&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;networks&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Specifies which networks the service should connect to.&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;depends_on&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Define dependencies between services.&lt;/strong&gt; Ensure that dependent services are started before the current service is started.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;restart&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Defines the restart policy when the container exits.&lt;/strong&gt; Examples are &lt;code&gt;always&lt;/code&gt;, &lt;code&gt;on-failure&lt;/code&gt;, &lt;code&gt;unless-stopped&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;command&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Overrides the default commands executed when the container starts.&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;entrypoint&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Overrides the default entry point of the container.&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;labels&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Add custom metadata (tags) to the container.&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;healthcheck&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Define a command to check the health status of a container.&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;logging&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Configure the logging driver and options for the service.&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;deploy&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Specify deployment and runtime constraints (mainly used in Swarm mode).&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;example&lt;/h2&gt;
&lt;p&gt;To make it easier to understand, I&apos;ll use two samples to illustrate. I&apos;ll add comments (notes) using the &lt;code&gt;#&lt;/code&gt; symbol next to each tag.&lt;/p&gt;
&lt;p&gt;The following example shows a scenario where a standalone web server container (using an Nginx image) is configured through a single container.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Top-level configuration keys (tags) for the Compose file

# The &apos;version&apos; key is generally discouraged in favor of the latest Compose Specification.
# If needed for backward compatibility, it can be added as:
# version: &apos;3.8&apos;

# Core tag: Defines all services in the application
services:
  # Service Name: Can be any name you choose; it acts as a network alias
  web_server:
    # Service sub-tags:

    # Specifies the image used to build the container
    image: nginx:latest

    # Assigns a fixed name to the container
    container_name: my_single_nginx_container

    # Mounts volumes or host paths to the container
    # Format: [Host Path or Volume Name]:[Container Internal Path]
    volumes:
      # Mounts the local ./html directory to the Nginx default web directory in the container
      - ./html:/usr/share/nginx/html:ro

    # Publishes container ports to the host
    # Format: [Host Port]:[Container Port]
    ports:
      # Maps the container&apos;s 80 port to the host&apos;s 8080 port
      - &quot;8080:80&quot;

    # Sets environment variables inside the container
    environment:
      # This is an example environment variable
      - TIMEZONE=Asia/Shanghai

    # Defines the restart policy when the container exits
    # &apos;unless-stopped&apos; means the container will restart upon exiting, unless manually stopped
    restart: unless-stopped

    # Adds custom metadata (labels) to the container
    labels:
      - &quot;com.example.description=Single Nginx Web Server&quot;

# Top-level tag: Defines named volumes (if needed)
# Since this example uses host mounting, the &apos;volumes&apos; tag can be omitted.
# volumes:
#   my_data:

# Top-level tag: Defines custom networks (if needed)
# In this single container example, Compose will use the default bridge network.
# networks:
#   default:
#     driver: bridge
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This example configures a web application (using the Node.js example) and a database (using PostgreSQL) with multiple containers and configures the dependencies and communication between them.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Top-level configuration keys (tags) for the Compose file

# Core tag: Defines all services in the application
services:
  # Service One: Web Application
  app_service:
    # Service sub-tags:

    # Specifies how to build the image (building from a Dockerfile)
    # &apos;context&apos; specifies the directory containing the Dockerfile, &apos;dockerfile&apos; specifies the Dockerfile name
    build:
      context: .
      dockerfile: Dockerfile.app

    # Assigns a fixed name to the container
    container_name: web_app_container

    # Publishes container ports to the host
    # Maps the container&apos;s 3000 port to the host&apos;s 3000 port
    ports:
      - &quot;3000:3000&quot;

    # Sets environment variables inside the container
    environment:
      # Environment variables needed to connect to the database
      - DB_HOST=db_service  # Use the service name as the hostname for connection
      - DB_PORT=5432
      - DB_USER=user
      - DB_PASSWORD=secret

    # Defines dependencies between services
    # Ensures the db_service container is started and running before starting app_service
    depends_on:
      db_service:
        condition: service_started

    # Specifies which networks the service should connect to
    networks:
      - internal_network
      - public_network

  # Service Two: Database Service
  db_service:
    # Service sub-tags:

    # Specifies the database image to use
    image: postgres:14-alpine

    # Assigns a fixed name to the container
    container_name: postgres_db_container

    # Mounts volumes to the container
    volumes:
      # Uses a named volume for data persistence, ensuring data is not lost after container restarts
      - postgres_data:/var/lib/postgresql/data

    # Adds environment variables from a file (a safer way to manage secrets)
    # Assumes a file named .env.db exists, containing variables like POSTGRES_USER
    env_file:
      - .env.db

    # Defines the restart policy when the container exits
    restart: always

    # Specifies which networks the service should connect to
    # Note: Database services are usually not exposed directly to the public, only connecting to the internal network
    networks:
      - internal_network

# Top-level tag: Defines named volumes
volumes:
  # Defines a volume named &apos;postgres_data&apos;
  postgres_data:
    # Can specify driver and options; using default driver here
    driver: local

# Top-level tag: Defines custom networks
networks:
  # Defines an internally used network for app and db communication
  internal_network:
    driver: bridge
  # Defines a network that might require external connection
  public_network:
    driver: bridge
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Used in NAS&lt;/h2&gt;
&lt;p&gt;At present, all mainstream NAS systems support Docker Compose, according to their own needs to find the corresponding project Docker Compose, copy and paste into the NAS Docker Compose, and according to their own specific circumstances can be edited.&lt;/p&gt;
&lt;p&gt;One special note is to modify the path in the Docker Compose file when using it in your own NAS. As mentioned in the previous section, &lt;strong&gt;the mount tag &lt;code&gt;volumes&lt;/code&gt;&lt;/strong&gt; and the &lt;strong&gt;variable file &lt;code&gt;env_file&lt;/code&gt;&lt;/strong&gt; tag are both involved in setting the path. Most NAS systems require a path to be set when adding Docker Compose, and this path is where the container project stores its files in the NAS.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/11/%E8%8B%B1-1024x801.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the Docker Compose file, the items under each tab are separated by &quot;:&quot;, the first colon before the first is the mapped host port or address, after the first colon is the port or address within the container, and after the second colon is the setup items such as read/write permissions.&lt;/p&gt;
&lt;p&gt;Depending on different developers&apos; editing code habits, when mapping the mount address, some developers will write the absolute address, while others will write the relative address, using the above sample for reference:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Absolute Address：/volume1/docker/Test/html

Relative Address：./html
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In the above example, the &lt;strong&gt;html&lt;/strong&gt; folder is the mapped mount folder, and the &quot; &lt;strong&gt;.&lt;/strong&gt; &lt;strong&gt;/&lt;/strong&gt; &quot; means that the html folder is in the &lt;strong&gt;/docker/Test&lt;/strong&gt; directory. Personally, I prefer to use relative paths so that if the container or docker directory is relocated, it doesn&apos;t invalidate the container by losing the directory.&lt;/p&gt;
&lt;p&gt;The other is the port, in the example above, it is mapping port 80 in the container to port 8080 on the host, if there are multiple Docker containers running in the NAS, make sure to pay attention to which ports are already occupied, avoid mapping the same port in different containers, which will also lead to invalid containers.&lt;/p&gt;</content:encoded></item><item><title>NextCloud-AIO Use and Optimization, Online Collaboration Office All in One Click</title><link>https://www.foundersjp.com/en/posts/nextcloud-aio-use-and-optimization-online-collaboration-office-all-in-one-click/</link><guid isPermaLink="true">https://www.foundersjp.com/en/posts/nextcloud-aio-use-and-optimization-online-collaboration-office-all-in-one-click/</guid><description>I installed NextCloud AIO some time ago, and some of you said that when you use it outside the network, sometimes Office still gives errors. There are also frie…</description><pubDate>Mon, 23 Dec 2024 12:14:29 GMT</pubDate><content:encoded>&lt;p&gt;I installed NextCloud-AIO some time ago, and some of you said that when you use it outside the network, sometimes Office still gives errors. There are also friends who ask how to migrate data. So put together a variety of situations to say.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.foundersjp.com/zh/digital-life-zh/unriad-nextcloud-aio/&quot;&gt;https://www.foundersjp.com/zh/digital-life-zh/unriad-nextcloud-aio/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Installer Password&lt;/h2&gt;
&lt;p&gt;Friends who often toss may delete containers, or even delete mirrors, etc., and when reinstalling, they find that they don&apos;t remember the installer&apos;s password, which is embarrassing. If you forget the installer password, it doesn&apos;t matter, you can retrieve the password through the following command.&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;&lt;code&gt;docker exec nextcloud-aio-mastercontainer cat /mnt/docker-aio-config/data/configuration.json | grep password
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Accordingly, if the Docker is under Win, you need to manually complete the absolute path yourself.&lt;/p&gt;
&lt;h2&gt;Missing containers&lt;/h2&gt;
&lt;p&gt;Because of network reasons, it may fail when pulling images, some items are red when you start NextCloud on the installer page, and if you find multiple containers missing in UnRaid&apos;s Docker list, you can choose to stop the service first, and then select Start or and Update afterwards, and the installer will automatically fill in the missing containers.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-24-22.30.34-192.168.7.17-f8892015cc9f-1024x830.png&quot; alt=&quot;stopped&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;modify a password&lt;/h2&gt;
&lt;p&gt;After logging in with the random password generated by the installer, you can change the Admin password in the &quot;Personal Settings-Security&quot; menu in the upper right corner of the avatar. Here you need to verify the original password, and the new password is only entered once, there is no secondary verification, so be sure to point to the back of the small eyes to close the mask to confirm, so as not to enter the wrong, do not ask me how to know.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-22.32.44-ncloud.tictak.work-17639ff8d747-scaled-1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Office&lt;/h2&gt;
&lt;p&gt;NextCloud has enabled WOPI whitelist verification by default, but NextCloud also explains that Office components may not be able to connect when used on the public network, so it is recommended to disable the WOPI whitelist verification in the case of installing via AIO. In the &quot;Management Settings - Office&quot; option, clear the input box under &quot;Allow list for WOPI requests&quot; and click the right arrow.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-22-19.59.21-nstesta.tictak.work-6635df364d55-scaled-1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;backing up&lt;/h2&gt;
&lt;p&gt;NextCloud-AIO uses PostgreSQL database, and the data files are not placed in &quot;/appdata/nextcloud/&quot;, so it is not safe to backup the &quot;appdata&quot; data just by UnRaid regularly, but NextCloud-AIO installer provides backup function, which can support local and remote backup, and also supports regular backup. It is not safe to backup &quot;appdata&quot; data regularly by UnRaid, but NextCloud-AIO installer provides backup function, which can support local backup and remote backup, and also support timed backup, the NextCloud service will be stopped when backup is performed, so remember to choose the time when there is no synchronization plan.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-22-20.23.14-192.168.7.13-067164f35cbc-scaled-1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;synchronization&lt;/h2&gt;
&lt;p&gt;NextCloud itself is integrated into the network disk, notes, photo albums, contacts, mail, calendar, TodoList and other functions, in the mobile terminal also has a wealth of APP support, can completely replace iCloud, millet cloud and other manufacturers of cloud services, after all, their digital assets or in their own hands the most peace of mind.&lt;/p&gt;
&lt;p&gt;Common files, pictures, notes, etc. can be synchronized directly to your own NAS at home through NextCloud&apos;s series of apps, safely and securely.&lt;/p&gt;
&lt;h3&gt;iOS&lt;/h3&gt;
&lt;p&gt;Contacts and calendar synchronization for iPhone and iPad is still relatively simple and convenient as you can add addresses and accounts directly in Contacts and Calendar in the system settings.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/IMG_3207-2-1024x607.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;android&lt;/h3&gt;
&lt;p&gt;Android phones need to install DAVx⁵ this APP to synchronize, but compared to the iPhone, through the DAVx⁵ in addition to synchronization of contacts and calendars, but also can synchronize Tasks (ToDoList), it is an unexpected pleasure. DAVx⁵ is just a synchronization DAVx⁵ is just a synchronization tool, Tasks can be used on Android phones through jtxBoard, OpenTasks or Tasks in any of them, more recommended jtxBoard, including diary, notes and Tasks, can be synchronized to NextCloud.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/WechatIMG97-2-scaled-1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Digital Life&lt;/h2&gt;
&lt;p&gt;In &quot;Three Bodies&quot;, it is written that higher dimensional beings look at us as a painting left behind by the points formed by our life trajectories, which is indeed the case, in this digital age, we will leave countless data and countless points in our life, instead of worrying about the data in the cloud that this project is offline and that company is running away, it is better to hold these important life trajectories in our own hands. The NAS contains my preferences, my interests, and my life data.&lt;/p&gt;</content:encoded></item><item><title>Hands-on tutorials, online collaborative Office all in one click, UnRiad+NextCloud-AIO</title><link>https://www.foundersjp.com/en/posts/hands-on-tutorials-online-collaborative-office-all-in-one-click-unriadnextcloud-aio/</link><guid isPermaLink="true">https://www.foundersjp.com/en/posts/hands-on-tutorials-online-collaborative-office-all-in-one-click-unriadnextcloud-aio/</guid><description>Recently, I&apos;ve been working on a project with a friend, so I&apos;m planning to build a powerful self hosted collaboration platform. We chose NextCloud for two reaso…</description><pubDate>Fri, 20 Dec 2024 15:12:26 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I&apos;ve been working on a project with a friend, so I&apos;m planning to build a powerful self-hosted collaboration platform. We chose NextCloud for two reasons: firstly, it has a wide range of features, including task boards, Office suite, and ToDoList management; and secondly, each of the features is equipped with corresponding mobile apps, which allows us to advance the project process anytime, anywhere.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-20-16.19.24-ncloud.tictak.work-f13a8d7f16c4-1-1024x411.png&quot; alt=&quot;NextCloud&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Previously also installed Docker&apos;s NextCloud in UnRaid, but it is not a good realization of the Office function, there are always a variety of problems. Recently found NextCloud official launched All In One solution, claiming to solve the office problem, but also comes with antivirus bottom and other more enhanced features, just this time to try.&lt;/p&gt;
&lt;h2&gt;mountings&lt;/h2&gt;
&lt;p&gt;Search for NextCloud in the UnRaid app market and you will find &quot;nextcloud-aio-mastercontainer&quot;, which is not NextCloud itself, but the installer of NextCloud-AIO, which is specially labeled as the official version. This is not the NextCloud itself, but the NextCloud-AIO installer, which is specially labeled as the official version.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-21.35.50-192.168.7.13-07014a1ebda5-scaled-1.gif&quot; alt=&quot;unraid app market&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Before installing, you will be prompted to enable &quot;Keep user-defined network&quot; in UnRaid&apos;s Docker settings.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-21.36.04-192.168.7.13-8f24cc2c2779-scaled-1.gif&quot; alt=&quot;Installation Tips&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-20-16.25.31-1024x256.png&quot; alt=&quot;network setup&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Clicking OK takes you to the configuration page for the installer container, where many of the less commonly used options are hidden. Click More Settings below to see more.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-21.37.01-192.168.7.13-52292abe3d8b-scaled-1.gif&quot; alt=&quot;set up&quot; /&gt;&lt;/p&gt;
&lt;p&gt;AIO webui&quot; is the intranet access port of the installer, and &quot;Nextcloud apache port&quot; is the actual access port of NextCloud, which requires domain name resolution and reverse proxy in advance. This port is required for domain name resolution and reverse proxy, the default is 11000, these two ports can be modified according to your network environment. These two ports can be modified according to your own network environment:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.foundersjp.com/zh/digital-life-zh/no443luckycloudflare/&quot;&gt;https://www.foundersjp.com/zh/digital-life-zh/no443luckycloudflare/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&quot;NextCloud Data Directory&quot; is the path where NextCloud&apos;s files are stored in the host, for UnRaid, except for the location here, you don&apos;t need to change anything else. The bottom &quot;Skip domain check&quot; is to skip the domain check, if you are sure that the domain pointing to the reverse generation has been bound, this item can be selected ture. click on the application to start pulling the image, and then you can see the installer in the Docker page of UnRaid.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-21.41.01-192.168.7.13-1f9a226d9b6e-scaled-1.gif&quot; alt=&quot;Pulling Mirrors&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-21.41.32-192.168.7.13-1aa994d6c598-scaled-1.gif&quot; alt=&quot;control menu&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Installation Options&lt;/h2&gt;
&lt;p&gt;When you open the installer, the system automatically generates a phrase which is the password for the first login.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-21.41.53-192.168.7.13-d29cf449a86c-scaled-1.png&quot; alt=&quot;Installation Password&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-21.42.04-192.168.7.13-6df3589d80ec-scaled-1.png&quot; alt=&quot;enter a password&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After logging into the NextCloud-AIO installer, the first thing you need is to verify the domain name, which is the reverse proxy domain name that was previously pointing to 11000.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-21.43.34-192.168.7.13-e2dda56276ec-scaled-1.png&quot; alt=&quot;access address&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After that comes the installation options, from top to bottom:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;antivirus engine&lt;/p&gt;
&lt;p&gt;Office Components&lt;/p&gt;
&lt;p&gt;Full-text search component&lt;/p&gt;
&lt;p&gt;Image Viewer&lt;/p&gt;
&lt;p&gt;chat tool&lt;/p&gt;
&lt;p&gt;Provision of &lt;a href=&quot;https://www.smzdm.com/ju/sn0n41w/&quot;&gt;recording&lt;/a&gt; services for chat tools&lt;/p&gt;
&lt;p&gt;Docker Agent Manager&lt;/p&gt;
&lt;p&gt;tabula rasa&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-21.53.56-192.168.7.13-764b239d16fe-scaled-1.png&quot; alt=&quot;Installation Options&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here according to their own needs to choose to install the components, of which &quot;Docker Agent Manager&quot; NextCloud official Git specifically stated that &quot; &lt;strong&gt;not recommended for use in the AIO&lt;/strong&gt; &quot;. After selecting the components, you need to save them. Click &quot;Download and start containers&quot; to start the download and installation. This is a long process, go back to UnRaid&apos;s Docker page and refresh the page, you can see a few new containers appear.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-22.26.23-192.168.7.13-5bb8671f0503-scaled-1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Completion of the installation&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://img.foundersjp.com/wp-content/uploads/2025/10/2024-12-18-22.27.59-192.168.7.13-08435a6bab8a-scaled-1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At this point the NextCloud-AIO installation is complete, all containers will be randomly generated after the completion of the startup of the initial password for the admin account, through this password you can happily log in to use.&lt;/p&gt;</content:encoded></item></channel></rss>