<?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>Fediverse » MszPro・株式会社Smartソフト</title>
	<atom:link href="https://mszpro.com/category/fediverse/feed" rel="self" type="application/rss+xml" />
	<link>https://mszpro.com</link>
	<description>iOS VisionOS SwiftUI Programming Blog. Dream it, Chase it, Code it.</description>
	<lastBuildDate>Mon, 16 Dec 2024 12:56:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>

<image>
	<url>https://static-assets.mszpro.com/2024/12/cropped-Unknown-32x32.webp</url>
	<title>Fediverse » MszPro・株式会社Smartソフト</title>
	<link>https://mszpro.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Modify Increase post max characters count limit for self-hosted Mastodon server</title>
		<link>https://mszpro.com/mastodon-character-count</link>
		
		<dc:creator><![CDATA[msz]]></dc:creator>
		<pubDate>Mon, 16 Dec 2024 07:53:07 +0000</pubDate>
				<category><![CDATA[Fediverse]]></category>
		<category><![CDATA[Self Hosting]]></category>
		<category><![CDATA[Server]]></category>
		<guid isPermaLink="false">https://mszpro.com/?p=393</guid>

					<description><![CDATA[<p>In the newest Mastodon V4.3.0, you only need to modify one file in order for the maximum character count to be changed. If you search for the max_characters keyword in the Mastodon Github repository, you will see that it all points to the value within the StatusLengthValidator and a variable called MAX_CHARS To modify it, [&#8230;]</p>
<p>The post <a href="https://mszpro.com/mastodon-character-count">Modify Increase post max characters count limit for self-hosted Mastodon server</a> first appeared on <a href="https://mszpro.com">MszPro・株式会社Smartソフト</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>In the newest Mastodon V4.3.0, you only need to modify one file in order for the maximum character count to be changed.</p>



<p>If you search for the <code>max_characters</code> keyword in the Mastodon Github repository, you will see that it all points to the value within the <code>StatusLengthValidator</code> and a variable called <code>MAX_CHARS</code></p>



<p>To modify it, first, ssh into your Mastodon server, and switch to the root shell:</p>



<pre class="wp-block-code"><code>sudo -s</code></pre>



<p>Then, switch to the Mastodon user</p>



<pre class="wp-block-code"><code>su - mastodon</code></pre>



<p>Now, modify the validator file:</p>



<pre class="wp-block-code"><code>nano -w live/app/validators/status_length_validator.rb</code></pre>



<p>At the very top of the file, you will see the <code>MAX_CHARS</code> variable, which was by default 500, you can modify it to another integer, for example 3000 to allow a maximum of 3000 characters within each post.</p>



<pre class="wp-block-code"><code># frozen_string_literal: true

class StatusLengthValidator &lt; ActiveModel::Validator
  MAX_CHARS = 3000
  URL_PLACEHOLDER_CHARS = 23
  URL_PLACEHOLDER = 'x' * 23</code></pre>



<p>That&#8217;s how you do it! Now, exit to root shell and restart the Mastodon processes, or simply reboot.</p>



<pre class="wp-block-code"><code>mastodon@Mastodon:~$ exit
logout
root@Mastodon:/home/ubuntu# systemctl restart mastodon*
root@Mastodon:/home/ubuntu# </code></pre>



<h2 class="wp-block-heading">Bonus: Reading maximum character count</h2>



<p>You can read the custom character count from the <code>/api/v1/instance</code> endpoint, and find the character count in the Root/configuration/statuses/max_chatacters as an integer.</p>



<p></p><p>The post <a href="https://mszpro.com/mastodon-character-count">Modify Increase post max characters count limit for self-hosted Mastodon server</a> first appeared on <a href="https://mszpro.com">MszPro・株式会社Smartソフト</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Self-host federated Bluesky instance (PDS) with CloudFlare Tunnel</title>
		<link>https://mszpro.com/bluesky-self-hosted</link>
		
		<dc:creator><![CDATA[msz]]></dc:creator>
		<pubDate>Mon, 16 Dec 2024 07:36:45 +0000</pubDate>
				<category><![CDATA[Fediverse]]></category>
		<category><![CDATA[Self Hosting]]></category>
		<category><![CDATA[Server]]></category>
		<guid isPermaLink="false">https://mszpro.com/?p=326</guid>

					<description><![CDATA[<p>This article talks about setting up your own Bluesky personal data server, so you will hold your follow data, post data, and medias on your own server. With proper setup, you will be able to follow people on other At Proto instances (like bsky.social); and people on bsky.social can follow you. Using CloudFlare tunnel We [&#8230;]</p>
<p>The post <a href="https://mszpro.com/bluesky-self-hosted">Self-host federated Bluesky instance (PDS) with CloudFlare Tunnel</a> first appeared on <a href="https://mszpro.com">MszPro・株式会社Smartソフト</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>This article talks about setting up your own Bluesky personal data server, so you will hold your follow data, post data, and medias on your own server.</p>



<p>With proper setup, you will be able to follow people on other At Proto instances (like bsky.social); and people on bsky.social can follow you.</p>



<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="1400" height="909" src="https://static-assets.mszpro.com/2024/12/1ggXz_ajp4Qis3-ehTljfjw.png" alt="" class="wp-image-340" srcset="https://static-assets.mszpro.com/2024/12/1ggXz_ajp4Qis3-ehTljfjw-300x195.png 300w, https://static-assets.mszpro.com/2024/12/1ggXz_ajp4Qis3-ehTljfjw-1024x665.png 1024w, https://static-assets.mszpro.com/2024/12/1ggXz_ajp4Qis3-ehTljfjw-768x499.png 768w, https://static-assets.mszpro.com/2024/12/1ggXz_ajp4Qis3-ehTljfjw.png 1400w" sizes="(max-width: 1400px) 100vw, 1400px" /></figure>



<figure class="wp-block-image"><img decoding="async" width="1400" height="1150" src="https://static-assets.mszpro.com/2024/12/13d05HDtNeHZnsehfMSImFQ.png" alt="" class="wp-image-330" srcset="https://static-assets.mszpro.com/2024/12/13d05HDtNeHZnsehfMSImFQ-300x246.png 300w, https://static-assets.mszpro.com/2024/12/13d05HDtNeHZnsehfMSImFQ-1024x841.png 1024w, https://static-assets.mszpro.com/2024/12/13d05HDtNeHZnsehfMSImFQ-768x631.png 768w, https://static-assets.mszpro.com/2024/12/13d05HDtNeHZnsehfMSImFQ.png 1400w" sizes="(max-width: 1400px) 100vw, 1400px" /></figure>



<h1 class="wp-block-heading">Using CloudFlare tunnel</h1>



<p>We will use CloudFlare tunnel to prevent your server IP address from getting exposed. This will also avoid the need for a public IPv4 address for your server (so you can easily set up a PDS server on your Raspberry Pie)</p>



<p>To use the tunnel feature, you can register a free CloudFlare account. Using CloudFlare also helps you to prevent some attacks.</p>



<h1 class="wp-block-heading">Step 1. Set up your server</h1>



<p>Make sure your server meets the requirement:</p>



<p>Server Requirements</p>



<ul class="wp-block-list">
<li>Public IPv4 address</li>



<li>Public DNS name</li>



<li>Public inbound internet access permitted on port 80/tcp and 443/tcp</li>
</ul>



<h2 class="wp-block-heading">Server Recommendations</h2>



<p>Operating System: Ubuntu 22.04</p>



<p>Memory (RAM): 2+ GB</p>



<p>CPU Cores: 2+</p>



<p>Storage: 40+ GB SSD</p>



<p>Architectures: amd64, arm64</p>



<p>I recommend you to use an ARM server (like t4g.small).</p>



<p>Then, ssh into your server and run the following commands to update your packages</p>



<p>apt-get update<br>apt-get upgrade &#8211;with-new-pkgs -y</p>



<h1 class="wp-block-heading">Step 2. Set up the CloudFlare tunnel</h1>



<p>Before starting this step, you need to add your domain to CloudFlare. You need to point your NS record to CloudFlare.</p>



<p>First, access&nbsp;<code>one.dash.cloudflare.com</code>&nbsp;and log into your CloudFlare account. Tap into your CloudFlare zero trust account:</p>



<figure class="wp-block-image"><img decoding="async" width="1400" height="1096" src="https://static-assets.mszpro.com/2024/12/1-8GI8j34JyXyGOSuRNz_WQ.png" alt="" class="wp-image-329" srcset="https://static-assets.mszpro.com/2024/12/1-8GI8j34JyXyGOSuRNz_WQ-300x235.png 300w, https://static-assets.mszpro.com/2024/12/1-8GI8j34JyXyGOSuRNz_WQ-1024x802.png 1024w, https://static-assets.mszpro.com/2024/12/1-8GI8j34JyXyGOSuRNz_WQ-768x601.png 768w, https://static-assets.mszpro.com/2024/12/1-8GI8j34JyXyGOSuRNz_WQ.png 1400w" sizes="(max-width: 1400px) 100vw, 1400px" /></figure>



<p>Then, open the “Tunnels” page in the “Networks” tab, and click on “Create a tunnel”</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1400" height="1096" src="https://static-assets.mszpro.com/2024/12/1DkXocU8IMdXI4LdizNCWUQ.png" alt="" class="wp-image-335" srcset="https://static-assets.mszpro.com/2024/12/1DkXocU8IMdXI4LdizNCWUQ-300x235.png 300w, https://static-assets.mszpro.com/2024/12/1DkXocU8IMdXI4LdizNCWUQ-1024x802.png 1024w, https://static-assets.mszpro.com/2024/12/1DkXocU8IMdXI4LdizNCWUQ-768x601.png 768w, https://static-assets.mszpro.com/2024/12/1DkXocU8IMdXI4LdizNCWUQ.png 1400w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></figure>



<p>Click to use&nbsp;<code>Cloudflared</code></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1400" height="1139" src="https://static-assets.mszpro.com/2024/12/1lUd9PSQZP0zidze-IK7T0w.png" alt="" class="wp-image-339" srcset="https://static-assets.mszpro.com/2024/12/1lUd9PSQZP0zidze-IK7T0w-300x244.png 300w, https://static-assets.mszpro.com/2024/12/1lUd9PSQZP0zidze-IK7T0w-1024x833.png 1024w, https://static-assets.mszpro.com/2024/12/1lUd9PSQZP0zidze-IK7T0w-768x625.png 768w, https://static-assets.mszpro.com/2024/12/1lUd9PSQZP0zidze-IK7T0w.png 1400w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></figure>



<p>Now, you should tap on “Debian” (since we are using Ubuntu on our server), and tap your CPU type (if you use ARM, tap on&nbsp;<code>arm64-bit</code>&nbsp;)</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1400" height="1139" src="https://static-assets.mszpro.com/2024/12/1NBfcfgPyKYhlOpmUwUnx0g.png" alt="" class="wp-image-331" srcset="https://static-assets.mszpro.com/2024/12/1NBfcfgPyKYhlOpmUwUnx0g-300x244.png 300w, https://static-assets.mszpro.com/2024/12/1NBfcfgPyKYhlOpmUwUnx0g-1024x833.png 1024w, https://static-assets.mszpro.com/2024/12/1NBfcfgPyKYhlOpmUwUnx0g-768x625.png 768w, https://static-assets.mszpro.com/2024/12/1NBfcfgPyKYhlOpmUwUnx0g.png 1400w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></figure>



<p>Copy the command with the curl, dpkg, and&nbsp;<code>cloudflard</code>&nbsp;commands into your terminal, this will connect your server automatically to the CloudFlare network.</p>



<p>Next, you will add your domain and map it to&nbsp;<a href="http://http//127.0.0.1:3000." target="_blank" rel="noreferrer noopener">HTTP://127.0.0.1:3000.</a>&nbsp;By default, the Bluesky PDS uses port 3000 on your local machine with HTTP.</p>



<p>Do not worry about HTTPS, CloudFlare will automatically issue the certificate.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1400" height="982" src="https://static-assets.mszpro.com/2024/12/138vaowDDQdhUbFFXZIu-w.png" alt="" class="wp-image-332" srcset="https://static-assets.mszpro.com/2024/12/138vaowDDQdhUbFFXZIu-w-300x210.png 300w, https://static-assets.mszpro.com/2024/12/138vaowDDQdhUbFFXZIu-w-1024x718.png 1024w, https://static-assets.mszpro.com/2024/12/138vaowDDQdhUbFFXZIu-w-768x539.png 768w, https://static-assets.mszpro.com/2024/12/138vaowDDQdhUbFFXZIu-w.png 1400w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></figure>



<p>Now, click to open the tunnel entry (in my case, it is called&nbsp;<code>bluesky-server</code>&nbsp;) Go to the Public Hostname tab, and add a new entry for the wildcard subdomain (since in Bluesky, handles are in the format of domain names, and need to resolve to your server).</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1400" height="990" src="https://static-assets.mszpro.com/2024/12/1lyL9jtePsfP7sH4sD5vhZQ.png" alt="" class="wp-image-338" srcset="https://static-assets.mszpro.com/2024/12/1lyL9jtePsfP7sH4sD5vhZQ-300x212.png 300w, https://static-assets.mszpro.com/2024/12/1lyL9jtePsfP7sH4sD5vhZQ-1024x724.png 1024w, https://static-assets.mszpro.com/2024/12/1lyL9jtePsfP7sH4sD5vhZQ-768x543.png 768w, https://static-assets.mszpro.com/2024/12/1lyL9jtePsfP7sH4sD5vhZQ.png 1400w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></figure>



<p>Since CloudFlare does not create DNS record for wildcard tunnel entries, you need to go to CloudFlare dashboard, go to the DNS tab, and add the wildcard CNAME entry (with the key as * mark, and the value the same as the one for the root domain record)</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1400" height="1128" src="https://static-assets.mszpro.com/2024/12/1XTbtyCLFdPz0r0ffhxkmgQ.png" alt="" class="wp-image-336" srcset="https://static-assets.mszpro.com/2024/12/1XTbtyCLFdPz0r0ffhxkmgQ-300x242.png 300w, https://static-assets.mszpro.com/2024/12/1XTbtyCLFdPz0r0ffhxkmgQ-1024x825.png 1024w, https://static-assets.mszpro.com/2024/12/1XTbtyCLFdPz0r0ffhxkmgQ-768x619.png 768w, https://static-assets.mszpro.com/2024/12/1XTbtyCLFdPz0r0ffhxkmgQ.png 1400w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></figure>



<p>Now, CloudFlare tunnel is setup. Once we set up Bluesky PDS server, you should be able to access your instance via your domain.</p>



<p>You can also visit the tunnel list on CloudFlare dashboard to check your server status. It should say&nbsp;<code>Healthy</code></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1400" height="1176" src="https://static-assets.mszpro.com/2024/12/1HTa0qGqZRYfHQWs8_4ZXPw.png" alt="" class="wp-image-333" srcset="https://static-assets.mszpro.com/2024/12/1HTa0qGqZRYfHQWs8_4ZXPw-300x252.png 300w, https://static-assets.mszpro.com/2024/12/1HTa0qGqZRYfHQWs8_4ZXPw-1024x860.png 1024w, https://static-assets.mszpro.com/2024/12/1HTa0qGqZRYfHQWs8_4ZXPw-768x645.png 768w, https://static-assets.mszpro.com/2024/12/1HTa0qGqZRYfHQWs8_4ZXPw.png 1400w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></figure>



<h1 class="wp-block-heading">Install PDS server</h1>



<p>First, download the installation script:</p>



<pre class="wp-block-code"><code>wget https://raw.githubusercontent.com/bluesky-social/pds/main/installer.sh</code></pre>



<p>Then, make it executable and run it.</p>



<pre class="wp-block-code"><code>chmod +x installer.sh<br>sudo ./installer.sh</code></pre>



<p>That’s it. The above script will install the server and run it using docker.</p>



<h1 class="wp-block-heading">Add a new account</h1>



<p>You can create a new account using the bash command:</p>



<pre class="wp-block-code"><code>sudo pdsadmin account create</code></pre>



<p>You can also create an invite code:</p>



<pre class="wp-block-code"><code>sudo pdsadmin create-invite-code</code></pre>



<p>Do notice that you can only have up to 10 accounts if you want to federate with the main Bluesky instance. As stated on Bluesky PDS discord:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>The Bluesky Relay will rate limit PDSs in the network. Each PDS will be able to have up to 10 accounts, and produce up to 1500 events/hr and 10,000 events/day. This phase of federation is intended for developers and self-hosters, and we do not yet support larger service providers.</p>
</blockquote>



<p>So be careful not to create many accounts.</p>



<p>After adding your account, you might find that your profile cannot be accessed. For me, it works after I rebooted my server.</p>



<h1 class="wp-block-heading"><s>Registering your PDS</s></h1>



<p><s>Currently, you need to register your PDS with Bluesky team.<br><br>Initially to join the network you’ll need to join the<em> </em><a href="https://discord.gg/UWS6FFdhMe" target="_blank" rel="noreferrer noopener">AT Protocol PDS Admins Discord</a><em> </em>and register the hostname of your PDS. We recommend doing so before bringing your PDS online. In the future, this registration check will not be required.<br><br>The application is easy. You join the Discord group, submit a form, and the Bluesky team should add your instance within about a day.</s></p>



<h1 class="wp-block-heading">Using your instance</h1>



<p>You can log into your instance by using bsky.app, and entering your server hostname manually.</p>



<p>First tap on the pencil icon in the sign into section:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1400" height="1027" src="https://static-assets.mszpro.com/2024/12/1yQTjaA-HH5vHqCCBTFzcdA.png" alt="" class="wp-image-337" srcset="https://static-assets.mszpro.com/2024/12/1yQTjaA-HH5vHqCCBTFzcdA-300x220.png 300w, https://static-assets.mszpro.com/2024/12/1yQTjaA-HH5vHqCCBTFzcdA-1024x751.png 1024w, https://static-assets.mszpro.com/2024/12/1yQTjaA-HH5vHqCCBTFzcdA-768x563.png 768w, https://static-assets.mszpro.com/2024/12/1yQTjaA-HH5vHqCCBTFzcdA.png 1400w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></figure>



<p>And you can enter your hostname, like&nbsp;<code>mszpro.dev</code>&nbsp;in my example.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1400" height="1027" src="https://static-assets.mszpro.com/2024/12/1SQ9qqG7Wk_mzCujEf5nygg.png" alt="" class="wp-image-334" srcset="https://static-assets.mszpro.com/2024/12/1SQ9qqG7Wk_mzCujEf5nygg-300x220.png 300w, https://static-assets.mszpro.com/2024/12/1SQ9qqG7Wk_mzCujEf5nygg-1024x751.png 1024w, https://static-assets.mszpro.com/2024/12/1SQ9qqG7Wk_mzCujEf5nygg-768x563.png 768w, https://static-assets.mszpro.com/2024/12/1SQ9qqG7Wk_mzCujEf5nygg.png 1400w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></figure>



<p>Before your request is accepted, you will not be able to follow others on the main Bluesky network; and your account cannot be found from Bluesky social.</p>



<h1 class="wp-block-heading">Approved!</h1>



<p>After about 6 hours. My request was approved. And I can access my profile on my own self hosted server from bsky.social; and I can follow people on bsky.social from my own self hosted server:</p>



<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="1400" height="909" src="https://static-assets.mszpro.com/2024/12/1ggXz_ajp4Qis3-ehTljfjw.png" alt="" class="wp-image-340" srcset="https://static-assets.mszpro.com/2024/12/1ggXz_ajp4Qis3-ehTljfjw-300x195.png 300w, https://static-assets.mszpro.com/2024/12/1ggXz_ajp4Qis3-ehTljfjw-1024x665.png 1024w, https://static-assets.mszpro.com/2024/12/1ggXz_ajp4Qis3-ehTljfjw-768x499.png 768w, https://static-assets.mszpro.com/2024/12/1ggXz_ajp4Qis3-ehTljfjw.png 1400w" sizes="(max-width: 1400px) 100vw, 1400px" /></figure>



<figure class="wp-block-image"><img decoding="async" width="1400" height="1150" src="https://static-assets.mszpro.com/2024/12/13d05HDtNeHZnsehfMSImFQ.png" alt="" class="wp-image-330" srcset="https://static-assets.mszpro.com/2024/12/13d05HDtNeHZnsehfMSImFQ-300x246.png 300w, https://static-assets.mszpro.com/2024/12/13d05HDtNeHZnsehfMSImFQ-1024x841.png 1024w, https://static-assets.mszpro.com/2024/12/13d05HDtNeHZnsehfMSImFQ-768x631.png 768w, https://static-assets.mszpro.com/2024/12/13d05HDtNeHZnsehfMSImFQ.png 1400w" sizes="(max-width: 1400px) 100vw, 1400px" /></figure>



<p>Here are some useful commands:</p>



<p>Check service status : sudo systemctl status pds</p>



<p>Watch service logs : sudo docker logs -f pds</p>



<p>Backup service data : /pds</p>



<p>PDS Admin command : pdsadmin</p>



<h1 class="wp-block-heading">Thanks for reading!</h1>



<p>I have indie developed a Fediverse app for Mastodon, Misskey, Bluesky all in one. Featured in a TechCrunch article too!</p>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://apps.apple.com/app/sora-for-mastodon-bluesky/id6450969760
</div></figure>



<ul class="wp-block-list">
<li>Has bookmark and bookmark folder feature</li>



<li>Local algorithm to mix your custom feeds into your home feed, so you don’t have to switch between them</li>



<li>works on iOS, WatchOS, VisionOS (native), MacOS</li>
</ul>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1200" height="743" src="https://static-assets.mszpro.com/2024/12/1J_QtnIoXBe0qcidjxQNiDA.jpg" alt="" class="wp-image-328" srcset="https://static-assets.mszpro.com/2024/12/1J_QtnIoXBe0qcidjxQNiDA-300x186.jpg 300w, https://static-assets.mszpro.com/2024/12/1J_QtnIoXBe0qcidjxQNiDA-1024x634.jpg 1024w, https://static-assets.mszpro.com/2024/12/1J_QtnIoXBe0qcidjxQNiDA-768x476.jpg 768w, https://static-assets.mszpro.com/2024/12/1J_QtnIoXBe0qcidjxQNiDA.jpg 1200w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></figure>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1400" height="1049" src="https://static-assets.mszpro.com/2024/12/1d1Ns-xyZ2o1eYBWpnAEoPw.png" alt="" class="wp-image-327" srcset="https://static-assets.mszpro.com/2024/12/1d1Ns-xyZ2o1eYBWpnAEoPw-300x225.png 300w, https://static-assets.mszpro.com/2024/12/1d1Ns-xyZ2o1eYBWpnAEoPw-1024x767.png 1024w, https://static-assets.mszpro.com/2024/12/1d1Ns-xyZ2o1eYBWpnAEoPw-768x575.png 768w, https://static-assets.mszpro.com/2024/12/1d1Ns-xyZ2o1eYBWpnAEoPw.png 1400w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></figure><p>The post <a href="https://mszpro.com/bluesky-self-hosted">Self-host federated Bluesky instance (PDS) with CloudFlare Tunnel</a> first appeared on <a href="https://mszpro.com">MszPro・株式会社Smartソフト</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/

Page Caching using Disk: Enhanced 
Lazy Loading (feed)
Database Caching 13/74 queries in 0.021 seconds using Disk

Served from: mszpro.com @ 2025-07-08 09:11:48 by W3 Total Cache
-->