<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tailscale Archives - Prsm Studio</title>
	<atom:link href="https://prsm-studio.com/en/tag/tailscale-en/feed/" rel="self" type="application/rss+xml" />
	<link>https://prsm-studio.com/en/tag/tailscale-en/</link>
	<description>automation · homeserver · side projects · game · gadgets · play</description>
	<lastBuildDate>Sun, 22 Mar 2026 13:49:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://prsm-studio.com/wp-content/uploads/2026/03/ic_launcher-playstore-150x150.png</url>
	<title>Tailscale Archives - Prsm Studio</title>
	<link>https://prsm-studio.com/en/tag/tailscale-en/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Even a Code-Illiterate Built It! Home Server Journey (8) — Zero Visitors — Fixing Search Visibility with Custom Domain and Cloudflare Tunnel</title>
		<link>https://prsm-studio.com/en/code-illiterate-home-server-build-8-custom-domain-cloudflare-tunnel-2/</link>
					<comments>https://prsm-studio.com/en/code-illiterate-home-server-build-8-custom-domain-cloudflare-tunnel-2/#respond</comments>
		
		<dc:creator><![CDATA[Toaster]]></dc:creator>
		<pubDate>Sun, 22 Mar 2026 13:48:59 +0000</pubDate>
				<category><![CDATA[Computer Play]]></category>
		<category><![CDATA[Home Server]]></category>
		<category><![CDATA[Cloudflare Tunnel]]></category>
		<category><![CDATA[custom domain]]></category>
		<category><![CDATA[domain migration]]></category>
		<category><![CDATA[non-coder]]></category>
		<category><![CDATA[search engine registration]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Tailscale]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://prsm-studio.com/?p=486</guid>

					<description><![CDATA[<p>My blog had zero visitors because of the .ts.net subdomain. Here's how a non-coder bought a custom domain on Cloudflare, set up a Tunnel, migrated 636 WordPress URLs, and registered with 4 search engines — all done by AI (Claude Code).</p>
<p>The post <a href="https://prsm-studio.com/en/code-illiterate-home-server-build-8-custom-domain-cloudflare-tunnel-2/">Even a Code-Illiterate Built It! Home Server Journey (8) — Zero Visitors — Fixing Search Visibility with Custom Domain and Cloudflare Tunnel</a> appeared first on <a href="https://prsm-studio.com/en">Prsm Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In Part 6, I set up WordPress. In Part 7, I completed automation with n8n. Blog — done. Automation — done. I was writing posts consistently. But here&#8217;s the thing.</p>
<p><strong>I had virtually zero visitors.</strong></p>
<p>To be precise, 5 total visitors over 2 weeks. 3 of them were bots (crawlers), and only 2 were real people — and they didn&#8217;t even come from search. They clicked a link from somewhere. Search my blog on Google? Nothing. Naver? Nothing. Only Daum showed results, but if you&#8217;re invisible on Google and Naver, you basically don&#8217;t exist.</p>
<p>The cause was embarrassingly simple.</p>
<h2>Tailscale Funnel&#8217;s Fatal Flaw: Google Ignores .ts.net Subdomains</h2>
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="1024" src="https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-tsnet.png" alt=".ts.net subdomain not indexed by search engines" class="wp-image-481" srcset="https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-tsnet.png 1024w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-tsnet-300x300.png 300w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-tsnet-150x150.png 150w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-tsnet-768x768.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Not a single Google search result for the .ts.net address</figcaption></figure>
<p>Remember setting up Tailscale Funnel in <a href="/en/code-illiterate-home-server-build-2-tailscale-remote-access-2/">Part 2</a>? It was magical — free public access to my server. The address was <code>blog.dace-sidemirror.ts.net</code>. It worked, SSL was automatic, everything was perfect.</p>
<p>But this address had a critical problem.</p>
<p><strong>.ts.net is a subdomain owned by Tailscale.</strong> From Google&#8217;s perspective, this is just &#8220;a page on someone else&#8217;s platform.&#8221; It&#8217;s one of thousands of subdomains under Tailscale&#8217;s root domain. Google doesn&#8217;t prioritize indexing such subdomains because crawling thousands of subdomains under a single root domain would be a waste of resources. Tailscale&#8217;s own documentation states that Funnel is intended for &#8220;development and testing.&#8221;</p>
<pre><code>site:ts.net  →  Google results: 0
site:blog.dace-sidemirror.ts.net  →  0</code></pre>
<p><strong>16 posts over 2 weeks, not a single one indexed by Google.</strong> No matter how good your content is, if search engines ignore your address, it&#8217;s meaningless.</p>
<p>Tailscale Funnel is excellent for development — internal testing, quick demos, webhook testing. But for a public-facing blog, it simply doesn&#8217;t work. <strong>A blog that doesn&#8217;t show up in search is not a blog.</strong></p>
<h2>Why a Home Server Blog Needs a Custom Domain</h2>
<p>Custom domains aren&#8217;t just about SEO:</p>
<ul>
<li><strong>Branding</strong> — <code>prsm-studio.com</code> is memorable; <code>blog.dace-sidemirror.ts.net</code> is not</li>
<li><strong>Credibility</strong> — A custom domain signals &#8220;this person is serious about their site&#8221;</li>
<li><strong>Portability</strong> — Switch servers, switch hosts — your domain stays the same</li>
<li><strong>Email</strong> — You can later create custom emails like <code>hello@prsm-studio.com</code></li>
</ul>
<h2>The Solution: Custom Domain + Cloudflare Tunnel</h2>
<p>I needed two things:</p>
<ol>
<li><strong>My own domain</strong> — .com, .dev, whatever — an address I own</li>
<li><strong>A way to connect it to my server</strong> — without router port forwarding</li>
</ol>
<p>Cloudflare solves both. Domain purchase on Cloudflare, tunnel on Cloudflare. And <strong>both are free</strong> (except the domain registration fee).</p>
<table>
<thead>
<tr>
<th></th>
<th>Tailscale Funnel</th>
<th>Cloudflare Tunnel</th>
</tr>
</thead>
<tbody>
<tr>
<td>Domain</td>
<td>.ts.net (fixed)</td>
<td><strong>Custom domain</strong></td>
</tr>
<tr>
<td>SEO</td>
<td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Not indexed</td>
<td><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Normal indexing</strong></td>
</tr>
<tr>
<td>SSL</td>
<td>Auto</td>
<td>Auto</td>
</tr>
<tr>
<td>Speed</td>
<td>Normal</td>
<td><strong>Cloudflare CDN caching</strong></td>
</tr>
<tr>
<td>Setup</td>
<td>Very easy</td>
<td>Easy (10 min)</td>
</tr>
<tr>
<td>Cost</td>
<td>Free</td>
<td>Free (domain ~$10-15/year)</td>
</tr>
<tr>
<td>Port forwarding</td>
<td>Not needed</td>
<td>Not needed</td>
</tr>
</tbody>
</table>
<p>I kept Tailscale Funnel for internal services. Only the public blog moved to Cloudflare Tunnel. Both tunnels run simultaneously on the same server with no issues.</p>
<h2>Step 1: Buy Domain on Cloudflare (5 min, $10.44)</h2>
<p>Choosing the domain name took the longest. I wanted something related to a personal project, but all the good ones were taken. After searching around, <code>prsm-studio.com</code> felt right.</p>
<p>I purchased it directly on the <a href="https://dash.cloudflare.com" target="_blank">Cloudflare dashboard</a>. <strong>$10.44/year</strong> — less than a dollar per month. This is at-cost pricing (ICANN registration fee), cheaper than anywhere else. GoDaddy and Namecheap look cheap the first year but renewal prices jump 2-3x. Cloudflare charges at-cost, renewals included. They&#8217;ve publicly committed to never marking up domain prices.</p>
<p><strong>Domain tip:</strong> .com is the safest choice. .dev and .io look cool but cost 2-3x more annually, and some users don&#8217;t trust non-.com addresses.</p>
<h2>Step 2: Install Cloudflare Tunnel (10 min)</h2>
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="1024" src="https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-cloudflare.png" alt="Secure tunnel between home server and Cloudflare" class="wp-image-482" srcset="https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-cloudflare.png 1024w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-cloudflare-300x300.png 300w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-cloudflare-150x150.png 150w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-cloudflare-768x768.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Cloudflare Tunnel: secure connection between server and Cloudflare</figcaption></figure>
<p>Cloudflare Tunnel creates a secure connection between my server and Cloudflare. No port forwarding needed. Similar to Tailscale Funnel, but the key difference: <strong>you use your own domain</strong>.</p>
<p>What I did: <strong>clicked &#8216;Create Tunnel&#8217; on Cloudflare dashboard</strong> and passed the token to Claude Code. That&#8217;s it. Claude Code handled everything else.</p>
<pre><code># Command executed by Claude Code
sudo cloudflared service install [token from Cloudflare]</code></pre>
<p>One command registers <code>cloudflared</code> as a system service that auto-connects on reboot. Claude Code also guided me through the tunnel routing setup:</p>
<ul>
<li><strong>Public hostname</strong>: prsm-studio.com</li>
<li><strong>Service</strong>: http://localhost:8080 (WordPress port)</li>
</ul>
<p>Now <code>prsm-studio.com</code> → Cloudflare Tunnel → my server&#8217;s WordPress. Auto SSL, auto CDN caching, and Cloudflare WAF for security — safer than raw port forwarding.</p>
<h2>Step 3: WordPress URL Migration — I Just Watched</h2>
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="1024" src="https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-migration.png" alt="AI automatically replacing 636 WordPress URLs" class="wp-image-483" srcset="https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-migration.png 1024w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-migration-300x300.png 300w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-migration-150x150.png 150w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-migration-768x768.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>AI replaced 636 URLs while the human just watched</figcaption></figure>
<p>Changing domains means updating every URL inside WordPress — image paths in posts, internal links, SEO metadata, RSS feed URLs. There&#8217;s way more than you&#8217;d expect.</p>
<p><strong>What needed changing:</strong></p>
<ul>
<li><code>wp-config.php</code>&#8216;s <code>WP_HOME</code> and <code>WP_SITEURL</code> — core settings for WordPress&#8217;s self-awareness</li>
<li>All database URLs — image paths, internal links, metadata</li>
<li>Yoast SEO schema and OG tags — URLs shown in search results and social shares</li>
<li>robots.txt sitemap URL — path referenced by search crawlers</li>
<li>n8n workflow monitoring URLs — automation tool health checks</li>
</ul>
<p>If I had to do this manually, it would take a week. I wouldn&#8217;t even know what to change. <strong>I told Claude Code: &#8220;Domain changed, handle the rest.&#8221;</strong> It found and replaced everything:</p>
<pre><code># Command executed by Claude Code
wp search-replace 'blog.dace-sidemirror.ts.net' 'prsm-studio.com' --all-tables
# Result: 636 replacements</code></pre>
<p><strong>636 items</strong> needed changing. Beyond database URLs, Claude Code also modified wp-config.php, cleared Yoast SEO cache, updated robots.txt, changed n8n workflow URLs via API, and updated the blog publishing script&#8217;s domain — all automatically. I just watched the terminal output scroll by.</p>
<p>There was a <strong>Cloudflare cache</strong> hiccup. After updating robots.txt, the old version kept appearing. Cloudflare was caching static files for 4 hours. Claude Code diagnosed the issue and set no-cache headers. All I did was click &#8220;Purge Everything&#8221; in the Cloudflare dashboard.</p>
<h2>Step 4: 301 Redirect for the Old Address</h2>
<p>In case anyone visits the old address (<code>blog.dace-sidemirror.ts.net</code>), they should auto-redirect to the new one. Claude Code added redirect rules to Apache&#8217;s <code>.htaccess</code>:</p>
<pre><code>RewriteCond %{HTTP_HOST} blog\.dace-sidemirror\.ts\.net [NC]
RewriteRule ^(.*)$ https://prsm-studio.com/$1 [R=301,L]</code></pre>
<p>301 means &#8220;permanent move.&#8221; It tells search engines: &#8220;This address has permanently moved to the new one.&#8221; From an SEO perspective, 301 redirects transfer the old address&#8217;s domain authority to the new one — essential for preserving any existing search equity.</p>
<h2>Step 5: Search Engine Registration — I Clicked Buttons</h2>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-seo.png" alt="Google Naver Bing Daum search engine registration" class="wp-image-484" srcset="https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-seo.png 1024w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-seo-300x300.png 300w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-seo-150x150.png 150w, https://prsm-studio.com/wp-content/uploads/2026/03/blog-8-img-seo-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>All 4 search engines registered</figcaption></figure>
<p>Time to tell search engines &#8220;I&#8217;m here!&#8221; Four registrations needed:</p>
<ul>
<li><strong>Google Search Console</strong> — Add property → DNS verification → Submit sitemap</li>
<li><strong>Naver Search Advisor</strong> — Register site → HTML meta tag verification</li>
<li><strong>Bing Webmaster Tools</strong> — Register site → URL submission</li>
<li><strong>Daum Webmaster Tools</strong> — robots.txt verification code</li>
</ul>
<p>Honestly, all I did was say &#8220;register these,&#8221; copy verification codes from each site, pass them to Claude Code, and click confirmation buttons. Inserting verification codes into WordPress, setting up Naver/Daum meta tags, updating robots.txt — Claude Code handled all of it.</p>
<p>Yoast SEO auto-generates the sitemap at <code>prsm-studio.com/sitemap_index.xml</code>. Submit this to search engines and they&#8217;ll crawl all listed URLs.</p>
<p>Claude Code also submitted 32 URLs via <strong>IndexNow</strong> — an instant indexing protocol supported by Bing, Yandex, and Naver. I didn&#8217;t even ask for this. It decided on its own that the new domain needed immediate search engine notification.</p>
<h2>Result: Search Visibility Begins</h2>
<p>Current status after domain change:</p>
<ul>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <code>prsm-studio.com</code> working</li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Google/Naver/Bing/Daum all registered</li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Sitemap submitted</li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 32 URLs submitted via IndexNow</li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Old address 301 redirects</li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Daum search confirmed (Daum was the only engine that indexed .ts.net)</li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/23f3.png" alt="⏳" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Google/Naver indexing pending (typically days to 2 weeks)</li>
</ul>
<p>Fun fact: Daum indexed the .ts.net address all along — the only engine out of four. But Daum alone isn&#8217;t enough in Korea. Google and Naver are where the real traffic comes from. My n8n Blog Indexing Monitor checks indexing status every 12 hours and sends Telegram alerts.</p>
<p>Two lessons learned. First, <strong>free has its reasons.</strong> Tailscale Funnel is free and convenient, but it&#8217;s missing a fundamental blog feature: search visibility. $10.44/year completely solved that.</p>
<p>Second, <strong>AI really does handle everything.</strong> Here&#8217;s everything I personally did in this episode:</p>
<ul>
<li>Bought domain on Cloudflare (entered credit card)</li>
<li>Clicked &#8216;Create Tunnel&#8217; on Cloudflare dashboard</li>
<li>Copied verification codes from search engine sites + clicked confirm</li>
</ul>
<p>wp-config modifications, 636 database URL replacements, .htaccess redirect rules, SEO meta tag insertion, n8n workflow updates, IndexNow batch submission, cache debugging — <strong>100% of the technical work was done by Claude Code.</strong> A non-coder doing domain migration? In the AI era, it&#8217;s possible.</p>
<h2>Next Episode Preview</h2>
<p>Next up: <strong>automatic web meeting transcription + AI meeting minutes</strong>. Join Google Meet, Zoom, or Teams calls, automatically convert speech to text, and have AI organize key points and action items — a story about how meeting minutes are already done when the meeting ends.</p>
<p>Thanks for reading! Stay tuned for the next episode!</p>
<p><em>This post was also written by AI (Claude Code). The domain migration, this blog post — all done by AI. I just said &#8220;do it.&#8221;</em></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-8-custom-domain-cloudflare-tunnel-2%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%288%29%20%E2%80%94%20Zero%20Visitors%20%E2%80%94%20Fixing%20Search%20Visibility%20with%20Custom%20Domain%20and%20Cloudflare%20Tunnel" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-8-custom-domain-cloudflare-tunnel-2%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%288%29%20%E2%80%94%20Zero%20Visitors%20%E2%80%94%20Fixing%20Search%20Visibility%20with%20Custom%20Domain%20and%20Cloudflare%20Tunnel" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-8-custom-domain-cloudflare-tunnel-2%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%288%29%20%E2%80%94%20Zero%20Visitors%20%E2%80%94%20Fixing%20Search%20Visibility%20with%20Custom%20Domain%20and%20Cloudflare%20Tunnel" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-8-custom-domain-cloudflare-tunnel-2%2F&#038;title=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%288%29%20%E2%80%94%20Zero%20Visitors%20%E2%80%94%20Fixing%20Search%20Visibility%20with%20Custom%20Domain%20and%20Cloudflare%20Tunnel" data-a2a-url="https://prsm-studio.com/en/code-illiterate-home-server-build-8-custom-domain-cloudflare-tunnel-2/" data-a2a-title="Even a Code-Illiterate Built It! Home Server Journey (8) — Zero Visitors — Fixing Search Visibility with Custom Domain and Cloudflare Tunnel"></a></p><p>The post <a href="https://prsm-studio.com/en/code-illiterate-home-server-build-8-custom-domain-cloudflare-tunnel-2/">Even a Code-Illiterate Built It! Home Server Journey (8) — Zero Visitors — Fixing Search Visibility with Custom Domain and Cloudflare Tunnel</a> appeared first on <a href="https://prsm-studio.com/en">Prsm Studio</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://prsm-studio.com/en/code-illiterate-home-server-build-8-custom-domain-cloudflare-tunnel-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Even a Code-Illiterate Built It! Home Server Journey (6) — WordPress Blog Setup: AI Did Everything</title>
		<link>https://prsm-studio.com/en/code-illiterate-home-server-build-6-wordpress-blog-en/</link>
					<comments>https://prsm-studio.com/en/code-illiterate-home-server-build-6-wordpress-blog-en/#respond</comments>
		
		<dc:creator><![CDATA[Toaster]]></dc:creator>
		<pubDate>Tue, 10 Mar 2026 06:24:12 +0000</pubDate>
				<category><![CDATA[Computer Play]]></category>
		<category><![CDATA[Home Server]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Code-Illiterate]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Polylang]]></category>
		<category><![CDATA[self-hosting]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Tailscale]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://prsm-studio.com/code-illiterate-home-server-build-6-wordpress-blog-en/</guid>

					<description><![CDATA[<p>A non-developer's journey of installing WordPress on a home server, exposing it to the world with Tailscale Funnel, and building an AI-powered auto-publishing pipeline. From Docker setup to bilingual blogging and SEO.</p>
<p>The post <a href="https://prsm-studio.com/en/code-illiterate-home-server-build-6-wordpress-blog-en/">Even a Code-Illiterate Built It! Home Server Journey (6) — WordPress Blog Setup: AI Did Everything</a> appeared first on <a href="https://prsm-studio.com/en">Prsm Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>&#8211;</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-6-wordpress-blog-en%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%286%29%20%E2%80%94%20WordPress%20Blog%20Setup%3A%20AI%20Did%20Everything" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-6-wordpress-blog-en%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%286%29%20%E2%80%94%20WordPress%20Blog%20Setup%3A%20AI%20Did%20Everything" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-6-wordpress-blog-en%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%286%29%20%E2%80%94%20WordPress%20Blog%20Setup%3A%20AI%20Did%20Everything" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-6-wordpress-blog-en%2F&#038;title=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%286%29%20%E2%80%94%20WordPress%20Blog%20Setup%3A%20AI%20Did%20Everything" data-a2a-url="https://prsm-studio.com/en/code-illiterate-home-server-build-6-wordpress-blog-en/" data-a2a-title="Even a Code-Illiterate Built It! Home Server Journey (6) — WordPress Blog Setup: AI Did Everything"></a></p><p>The post <a href="https://prsm-studio.com/en/code-illiterate-home-server-build-6-wordpress-blog-en/">Even a Code-Illiterate Built It! Home Server Journey (6) — WordPress Blog Setup: AI Did Everything</a> appeared first on <a href="https://prsm-studio.com/en">Prsm Studio</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://prsm-studio.com/en/code-illiterate-home-server-build-6-wordpress-blog-en/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[Computer Play] Even a Code-Illiterate Built It! Home Server Journey (2) — Access Your Server From Anywhere with Tailscale</title>
		<link>https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/</link>
					<comments>https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#respond</comments>
		
		<dc:creator><![CDATA[Toaster]]></dc:creator>
		<pubDate>Fri, 06 Mar 2026 10:58:36 +0000</pubDate>
				<category><![CDATA[Computer Play]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[Funnel]]></category>
		<category><![CDATA[Tailscale]]></category>
		<category><![CDATA[tailscale homelab]]></category>
		<category><![CDATA[VPN]]></category>
		<category><![CDATA[WSL2]]></category>
		<category><![CDATA[미니PC]]></category>
		<category><![CDATA[원격접속]]></category>
		<category><![CDATA[코알못]]></category>
		<category><![CDATA[홈서버]]></category>
		<category><![CDATA[홈서버 구축기]]></category>
		<category><![CDATA[홈서버 원격접속]]></category>
		<guid isPermaLink="false">https://prsm-studio.com/?p=150</guid>

					<description><![CDATA[<p>In Part 1, I set up a Beelink SER9 MAX with WSL2 and Docker, building the backbone of my home server. With a mini PC running a server environment, I was ready to host anything. But there was one problem. &#8220;If I can only access it at home&#8230; isn&#8217;t it just an external hard drive?&#8221; ... <a title="[Computer Play] Even a Code-Illiterate Built It! Home Server Journey (2) — Access Your Server From Anywhere with Tailscale" class="read-more" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/" aria-label="Read more about [Computer Play] Even a Code-Illiterate Built It! Home Server Journey (2) — Access Your Server From Anywhere with Tailscale">Read more</a></p>
<p>The post <a href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/">[Computer Play] Even a Code-Illiterate Built It! Home Server Journey (2) — Access Your Server From Anywhere with Tailscale</a> appeared first on <a href="https://prsm-studio.com/en">Prsm Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In <a href="/code-illiterate-home-server-build-1-ser9max-windows11-wsl2-docker-en/">Part 1</a>, I set up a Beelink SER9 MAX with WSL2 and Docker, building the backbone of my home server. With a mini PC running a server environment, I was ready to host anything.</p>
<p>But there was one problem.</p>
<p><strong>&#8220;If I can only access it at home&#8230; isn&#8217;t it just an external hard drive?&#8221;</strong></p>
<p>The real value of a home server begins when you can <strong>access it from anywhere</strong>. During the day I work at the office, and when I get home, there&#8217;s never enough time to sit in front of the computer. Days are packed. Commute time, lunch breaks, quick moments between tasks — I needed to be able to <strong>check and manage my server from my smartphone</strong> during these gaps.</p>
<p>So Part 2 is all about <strong>making the home server accessible from outside</strong>. And once again, I didn&#8217;t type a single line of code. I just told <strong>Claude Code</strong>, &#8220;Make it so I can access my server remotely.&#8221;</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="416" height="650" src="https://prsm-studio.com/wp-content/uploads/2026/03/replaced-33536043.jpg" alt="Working remotely from anywhere" class="wp-image-248" /><figcaption>Photo by Max Zaharenkov / Pexels</figcaption></figure>
<div id="ez-toc-container" class="ez-toc-v2_0_81 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title" style="cursor:inherit">Table of Contents</p>
<p><span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav>
<ul class='ez-toc-list ez-toc-list-level-1 ' >
<li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#Remote_Access_Options_for_a_Home_Server" >Remote Access Options for a Home Server</a></li>
<li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#What_is_Tailscale_%E2%80%94_The_VPN_That_Just_Works" >What is Tailscale? — The VPN That Just Works</a></li>
<li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#Installing_Tailscale_%E2%80%94_Without_Writing_a_Single_Line_of_Code" >Installing Tailscale — Without Writing a Single Line of Code</a>
<ul class='ez-toc-list-level-3' >
<li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-4" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#Installing_Tailscale_on_the_PC" >Installing Tailscale on the PC</a></li>
<li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-5" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#What_About_WSL2_and_Docker" >What About WSL2 and Docker?</a></li>
</ul>
</li>
<li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#Accessing_from_a_Smartphone_%E2%80%94_The_Magical_Moment" >Accessing from a Smartphone — The Magical Moment</a></li>
<li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-7" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#Tailscale_Funnel_%E2%80%94_Opening_Your_Server_to_the_World" >Tailscale Funnel — Opening Your Server to the World</a>
<ul class='ez-toc-list-level-3' >
<li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#Setting_Up_Funnel_%E2%80%94_Claude_Code_Did_This_Too" >Setting Up Funnel — Claude Code Did This Too</a></li>
<li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#Funnels_Limitations" >Funnel&#8217;s Limitations</a></li>
</ul>
</li>
<li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-10" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#The_Non-Coders_Secret_I_Just_Said_%E2%80%9CDo_It%E2%80%9D" >The Non-Coder&#8217;s Secret: I Just Said &#8220;Do It&#8221;</a></li>
<li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-11" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#What_My_Home_Server_Can_Do_Now" >What My Home Server Can Do Now</a></li>
<li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-12" href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/#Coming_Up_Next" >Coming Up Next</a></li>
</ul>
</nav>
</div>
<h2><span class="ez-toc-section" id="Remote_Access_Options_for_a_Home_Server"></span>Remote Access Options for a Home Server<span class="ez-toc-section-end"></span></h2>
<p>There are roughly three ways to access a home server from outside.</p>
<p>The first is <strong>port forwarding</strong>. You go into your router settings and open ports. The moment questions like &#8220;TCP or UDP?&#8221; come up, someone like me — a complete non-coder — is already lost. Plus, there are security risks, and if your home IP changes, you lose access.</p>
<p>The second is <strong>setting up your own VPN server</strong> — installing something like WireGuard or OpenVPN. Great if you have networking knowledge, but the setup is complex and requires certificate management. Mountain after mountain for a non-coder.</p>
<p>The third is <strong>Tailscale</strong>. And naturally, that&#8217;s what I chose.</p>
<h2><span class="ez-toc-section" id="What_is_Tailscale_%E2%80%94_The_VPN_That_Just_Works"></span>What is Tailscale? — The VPN That Just Works<span class="ez-toc-section-end"></span></h2>
<p>Tailscale, in one sentence: <strong>&#8220;Install it, log in, and you&#8217;re done.&#8221;</strong></p>
<p>Traditional VPNs require setting up servers, creating certificates, configuring firewalls, setting up clients&#8230; the list never ends. Tailscale eliminates all of that. Install the app, log in with your Google or Microsoft account, and <strong>your devices automatically connect to each other securely</strong>.</p>
<p>Technically, it&#8217;s a mesh network built on top of WireGuard, a modern VPN protocol. But honestly, I don&#8217;t know exactly what that means. What matters is:</p>
<ul>
<li><strong>Free for personal use</strong> — up to 100 devices</li>
<li><strong>30-second install, almost nothing to configure</strong> — no networking knowledge needed</li>
<li><strong>Direct device-to-device connections</strong> — fast because there&#8217;s no middleman server</li>
<li><strong>Works on every platform</strong> — Windows, Linux, macOS, iOS, Android</li>
</ul>
<p>The &#8220;nothing to configure&#8221; part is key. For non-developers like me, fewer settings means a better tool.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="940" height="627" src="https://prsm-studio.com/wp-content/uploads/2026/03/stock-442150-3.jpg" alt="서버에 케이블을 고정하는 전자 엔지니어" class="wp-image-145" srcset="https://prsm-studio.com/wp-content/uploads/2026/03/stock-442150-3.jpg 940w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-442150-3-300x200.jpg 300w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-442150-3-768x512.jpg 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /><figcaption>Photo by Field Engineer / Pexels</figcaption></figure>
<h2><span class="ez-toc-section" id="Installing_Tailscale_%E2%80%94_Without_Writing_a_Single_Line_of_Code"></span>Installing Tailscale — Without Writing a Single Line of Code<span class="ez-toc-section-end"></span></h2>
<p>My home server runs Docker on WSL2 inside Windows 11. Tailscale gets installed on the Windows side.</p>
<h3><span class="ez-toc-section" id="Installing_Tailscale_on_the_PC"></span>Installing Tailscale on the PC<span class="ez-toc-section-end"></span></h3>
<p>I told Claude Code, &#8220;Install Tailscale for me,&#8221; and followed its instructions:</p>
<ol>
<li>Download the Windows version from the official Tailscale website</li>
<li>Run the installer — Next, Next, Done</li>
<li>A Tailscale icon appears in the system tray</li>
<li>Click the icon → <strong>Log in</strong> → Sign in with Google</li>
</ol>
<p>That&#8217;s it. The moment you log in, your server gets a <strong>dedicated Tailscale IP address</strong>. This IP is permanent — it doesn&#8217;t change even if your home internet IP changes. With this IP, you can access your server from anywhere.</p>
<h3><span class="ez-toc-section" id="What_About_WSL2_and_Docker"></span>What About WSL2 and Docker?<span class="ez-toc-section-end"></span></h3>
<p>I was worried about this, but the answer is simple: <strong>you don&#8217;t need to do anything extra</strong>. Docker containers running inside WSL2 share Windows&#8217; network, so installing Tailscale on Windows automatically makes all WSL2 services accessible.</p>
<p>For example, my WordPress runs as a Docker container, and accessing it via the Tailscale IP just works. Same for Immich (photo backup), Open WebUI (AI chat), and everything else.</p>
<p>I asked Claude Code, &#8220;Does this work with WSL2?&#8221; It said, &#8220;Install on Windows and WSL2 works too.&#8221; And it did. I didn&#8217;t need to understand why.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="867" height="650" src="https://prsm-studio.com/wp-content/uploads/2026/03/stock-35301163-3.jpg" alt="나무 작업대 위에 RAM 모듈, 드라이버, 공구 세트가 놓인 열린 노트북의 클로즈업 사진." class="wp-image-146" srcset="https://prsm-studio.com/wp-content/uploads/2026/03/stock-35301163-3.jpg 867w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-35301163-3-300x225.jpg 300w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-35301163-3-768x576.jpg 768w" sizes="auto, (max-width: 867px) 100vw, 867px" /><figcaption>Photo by Andrey Matveev / Pexels</figcaption></figure>
<h2><span class="ez-toc-section" id="Accessing_from_a_Smartphone_%E2%80%94_The_Magical_Moment"></span>Accessing from a Smartphone — The Magical Moment<span class="ez-toc-section-end"></span></h2>
<p>This is where it gets real.</p>
<p>The <strong>biggest reason</strong> I installed Tailscale was smartphone access. Working at the office all day, then coming home to household responsibilities — there&#8217;s surprisingly little time to sit at a computer. During lunch breaks, on the subway home, lying on the couch for a few minutes — I wanted to check my server during these in-between moments.</p>
<p>The setup is remarkably simple:</p>
<ol>
<li>Install the <strong>Tailscale app</strong> on your smartphone</li>
<li>Log in with the <strong>same account</strong> you used on your PC</li>
<li>Turn on the VPN connection</li>
<li>Type the Tailscale IP in your browser</li>
</ol>
<p><strong>That&#8217;s it.</strong> During lunch at work, I check photos on Immich, send commands to my AI assistant via Telegram, and review my blog on WordPress admin — all from my phone.</p>
<p>The speed is surprisingly good too. Since it&#8217;s WireGuard-based, there&#8217;s none of the sluggishness you&#8217;d expect from a typical VPN. It feels like you&#8217;re on the same WiFi network.</p>
<p>For a busy professional with no time to sit at a computer, this is a game changer. The home server transforms from &#8220;something I use only at home&#8221; to <strong>&#8220;my personal cloud, always in my pocket.&#8221;</strong></p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="940" height="529" src="https://prsm-studio.com/wp-content/uploads/2026/03/replaced-2064586.jpg" alt="Secure VPN network connection" class="wp-image-249" /><figcaption>Photo by Stefan Coders / Pexels</figcaption></figure>
<h2><span class="ez-toc-section" id="Tailscale_Funnel_%E2%80%94_Opening_Your_Server_to_the_World"></span>Tailscale Funnel — Opening Your Server to the World<span class="ez-toc-section-end"></span></h2>
<p>Everything so far has been about connecting &#8220;my own devices.&#8221; But what about services that <strong>anyone should be able to access</strong>, like a blog?</p>
<p>Tailscale has a feature called <strong>Funnel</strong>. It exposes a specific service on your server to the internet, complete with an automatically assigned domain and HTTPS certificate.</p>
<h3><span class="ez-toc-section" id="Setting_Up_Funnel_%E2%80%94_Claude_Code_Did_This_Too"></span>Setting Up Funnel — Claude Code Did This Too<span class="ez-toc-section-end"></span></h3>
<p>I told Claude Code, &#8220;Make my WordPress blog visible to the outside world.&#8221; Claude Code ran the necessary commands, and the result:</p>
<ul>
<li>Tailscale <strong>automatically assigned a domain</strong></li>
<li>An <strong>HTTPS certificate was automatically issued</strong> (Let&#8217;s Encrypt)</li>
<li>External traffic was routed to my WordPress server</li>
</ul>
<p>No need to buy a domain. No need to manually renew certificates. Tailscale handles everything.</p>
<p><strong>This is exactly how you&#8217;re reading this blog right now.</strong> This post is served from the WordPress instance on my mini PC at home, exposed to the internet through Tailscale Funnel. No separate cloud server. No hosting service. Directly from the mini PC on my desk.</p>
<h3><span class="ez-toc-section" id="Funnels_Limitations"></span>Funnel&#8217;s Limitations<span class="ez-toc-section-end"></span></h3>
<p>It&#8217;s not perfect, of course:</p>
<ul>
<li>The domain is fixed as <code>*.ts.net</code> — custom domains aren&#8217;t supported</li>
<li>Speed depends on your home internet&#8217;s upload bandwidth — not suitable for heavy traffic</li>
<li>Only certain ports are available</li>
</ul>
<p>But for a personal blog or small project, it&#8217;s more than enough. Being able to run a blog directly from your own server without cloud hosting — that&#8217;s the beauty of a home server.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="940" height="627" src="https://prsm-studio.com/wp-content/uploads/2026/03/replaced-3585090.jpg" alt="Remote access on smartphone" class="wp-image-250" /><figcaption>Photo by cottonbro studio / Pexels</figcaption></figure>
<h2><span class="ez-toc-section" id="The_Non-Coders_Secret_I_Just_Said_%E2%80%9CDo_It%E2%80%9D"></span>The Non-Coder&#8217;s Secret: I Just Said &#8220;Do It&#8221;<span class="ez-toc-section-end"></span></h2>
<p>I keep emphasizing this throughout the article, but I <strong>didn&#8217;t type a single line of code</strong> during any of this.</p>
<p>Installing Tailscale? Claude Code told me to &#8220;download and install this,&#8221; and I just clicked with my mouse. Setting up Funnel? Claude Code ran the commands itself. Verifying WSL2 compatibility? Claude Code said &#8220;it just works,&#8221; and it did.</p>
<p>I did exactly two things:</p>
<ol>
<li><strong>Told Claude Code &#8220;do this for me&#8221;</strong></li>
<li><strong>Clicked &#8220;Next&#8221; on the installation screens</strong></li>
</ol>
<p>This is how a non-coder runs a home server. Not by learning technology, but by <strong>delegating to an AI that knows technology</strong>. &#8220;Install Tailscale,&#8221; &#8220;Make it accessible remotely,&#8221; &#8220;Expose my blog to the public&#8221; — say it in plain language, and the AI handles the rest.</p>
<p>You might think, &#8220;But shouldn&#8217;t I at least understand the basics?&#8221; Honestly — <strong>no, you don&#8217;t have to</strong>. I still don&#8217;t know the difference between TCP and UDP. I&#8217;m not entirely sure what port forwarding actually does. But my home server is accessible from my smartphone anywhere in the world, and my blog is live on the internet.</p>
<p>What matters isn&#8217;t technical knowledge. It&#8217;s the <strong>will to make it happen</strong>. And in 2026, if you have that will, AI takes care of everything else.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="433" height="650" src="https://prsm-studio.com/wp-content/uploads/2026/03/replaced-19238352.jpg" alt="Home office desk setup" class="wp-image-251" /><figcaption>Photo by Mateusz Haberny / Pexels</figcaption></figure>
<h2><span class="ez-toc-section" id="What_My_Home_Server_Can_Do_Now"></span>What My Home Server Can Do Now<span class="ez-toc-section-end"></span></h2>
<p>With hardware and Docker from Part 1, and Tailscale remote access from Part 2, here&#8217;s what my mini PC home server currently handles:</p>
<ul>
<li><strong>Access from anywhere</strong> — office, café, subway, anywhere via smartphone</li>
<li><strong>Blog hosting</strong> — WordPress exposed to the internet via Funnel</li>
<li><strong>Photo/video backup</strong> — Immich as a self-hosted Google Photos replacement</li>
<li><strong>AI assistant</strong> — commanding an AI agent via Telegram</li>
<li><strong>Local AI</strong> — running LLMs directly on my server with Ollama</li>
</ul>
<p>All of this runs on a single mini PC, and thanks to Tailscale, it&#8217;s always within reach. And everything was set up not by me, but by <strong>Claude Code</strong>. I just pointed the direction.</p>
<h2><span class="ez-toc-section" id="Coming_Up_Next"></span>Coming Up Next<span class="ez-toc-section-end"></span></h2>
<p>In Part 3, I&#8217;ll cover <strong>installing WordPress with Docker and building a blog</strong>. Setting up a bilingual (Korean + English) blog, and building a system where AI writes and publishes posts automatically — the non-coder&#8217;s home server journey continues.</p>
<p><em>All technical work in this series was performed by Claude Code (AI). The author (a non-coder) said &#8220;do it&#8221; and reviewed the results.</em></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-2-tailscale-remote-access-en%2F&amp;linkname=%5BComputer%20Play%5D%20Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%282%29%20%E2%80%94%20Access%20Your%20Server%20From%20Anywhere%20with%20Tailscale" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-2-tailscale-remote-access-en%2F&amp;linkname=%5BComputer%20Play%5D%20Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%282%29%20%E2%80%94%20Access%20Your%20Server%20From%20Anywhere%20with%20Tailscale" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-2-tailscale-remote-access-en%2F&amp;linkname=%5BComputer%20Play%5D%20Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%282%29%20%E2%80%94%20Access%20Your%20Server%20From%20Anywhere%20with%20Tailscale" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-2-tailscale-remote-access-en%2F&#038;title=%5BComputer%20Play%5D%20Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%282%29%20%E2%80%94%20Access%20Your%20Server%20From%20Anywhere%20with%20Tailscale" data-a2a-url="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/" data-a2a-title="[Computer Play] Even a Code-Illiterate Built It! Home Server Journey (2) — Access Your Server From Anywhere with Tailscale"></a></p><p>The post <a href="https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/">[Computer Play] Even a Code-Illiterate Built It! Home Server Journey (2) — Access Your Server From Anywhere with Tailscale</a> appeared first on <a href="https://prsm-studio.com/en">Prsm Studio</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://prsm-studio.com/en/code-illiterate-home-server-build-2-tailscale-remote-access-en/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
