{"id":112248,"date":"2024-06-28T07:20:18","date_gmt":"2024-06-28T07:20:18","guid":{"rendered":"\/tutorials\/?p=112248"},"modified":"2026-03-09T19:17:19","modified_gmt":"2026-03-09T19:17:19","slug":"how-to-host-a-bluesky-pds","status":"publish","type":"post","link":"\/ng\/tutorials\/how-to-host-a-bluesky-pds","title":{"rendered":"How to Host a Bluesky Personal Data Server to Build Your Own Decentralized Social Network"},"content":{"rendered":"<?xml encoding=\"utf-8\" ?><p>Bluesky is a decentralized social media platform built on AT Protocol. It aims to provide a federated social environment. A key component of this ecosystem is the Bluesky Personal Data Server (PDS), allowing users to manage their data independently and securely.<\/p><p>Hosting your own Bluesky PDS offers several advantages, including enhanced control over personal data, rich customization options, and valuable learning opportunities in server management and decentralized technologies.<\/p><p>In this article, you&rsquo;ll learn how to host a Bluesky PDS on a virtual private server (VPS). By following our guide, you can set up a powerful and secure federated service, ensuring your data remains private and under your control.<\/p><p>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-prerequisites-for-hosting-a-bluesky-pds\">Prerequisites for Hosting a Bluesky PDS<\/h2><p>Before you start hosting a Bluesky PDS, make sure your setup meets the following server requirements:<\/p><ul class=\"wp-block-list\">\n<li><strong>Operating system<\/strong> &ndash; Ubuntu 20.04\/22.04 or Debian 11\/12.<\/li>\n\n\n\n<li><strong>CPU<\/strong> &ndash; at least a single CPU core.<\/li>\n\n\n\n<li><strong>RAM<\/strong> &ndash; minimum of 1 GB.<\/li>\n\n\n\n<li><strong>Storage<\/strong> &ndash; at least 20 GB of SSD space.<\/li>\n<\/ul><p>Additionally, you&rsquo;ll need a valid domain name to make your server accessible to users. If you don&rsquo;t own any, we recommend <a href=\"\/ng\/domain-name-search\">getting one from Hostinger<\/a>. This way, you can configure both your server and domain from one intuitive dashboard.<\/p><p>    <div class=\"mb-50 mt-50 domain-checker domain-checker__bg\">\n        <h3 class=\"m-0 text-center text-white pb-10\">Domain Name Checker<\/h3>\n        <p class=\"pb-40 text-center text-white\">Instantly check domain name availability.<\/p>\n        <form id=\"domain-checker-form\" class=\"d-flex w-100 position-relative flex-column flex-sm-row align-items-center\" action=\"\/domain-checker\">\n            <input\n                    class=\"domain-checker__input label text-light-black\"\n                    name=\"domain\" type=\"text\"\n                    placeholder=\"Enter your desired domain name\"\n                    value=\"\"\n            \/>\n            <input id=\"domain-submit\"\n                   type=\"submit\"\n                   value=\"Check\"\n                   class=\"domain-checker__button hb--danger new-h-button-primary button text-white float-right\"\/>\n        <\/form>\n    <\/div>\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-how-to-host-a-bluesky-pds\">How to Host a Bluesky PDS<\/h2><p>Here are the steps to set up your own self-hosted Bluesky PDS. For this tutorial, we use an <strong>Ubuntu 22.04<\/strong> distribution.<\/p><h3 class=\"wp-block-heading\" id=\"h-1-get-the-right-vps-hosting\">1. Get the Right VPS Hosting<\/h3><p>Choosing the right VPS provider is important for your Bluesky PDS&rsquo;s smooth operation. <a href=\"\/ng\/vps-hosting\">Hostinger&rsquo;s VPS<\/a> is an ideal solution due to its reliable performance, security measures, and scalability options.<\/p><p>Our KVM-based VPS plans are powered by <strong>up to eight cores of AMD CPU<\/strong>, <strong>32 GB of RAM<\/strong>, and <strong>400 GB of NVMe storage<\/strong> for your resource-demanding applications. Meanwhile, our firewall and DDoS protection prevent harmful traffic from reaching your server.<\/p><p>Based on hardware requirements from the previous section, we recommend choosing the <strong>KVM 1<\/strong> plan with a single-core CPU, 1 GB of RAM, and 50 GB of disk space. You can upgrade to higher plans anytime to accommodate growing needs.<\/p><?xml encoding=\"utf-8\" ?><figure class=\"wp-block-image size-large\"><a class=\"hgr-tutorials-cta hgr-tutorials-cta-vps-hosting\" href=\"\/ng\/vps-hosting\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2023\/02\/VPS-hosting-banner.png\/public\" alt=\"\" class=\"wp-image-77934\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2023\/02\/VPS-hosting-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2023\/02\/VPS-hosting-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2023\/02\/VPS-hosting-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2023\/02\/VPS-hosting-banner.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><p>After purchasing your desired plan, here&rsquo;s how to <a href=\"\/ng\/tutorials\/getting-started-with-vps-hosting\">get your VPS started<\/a>:<\/p><ol class=\"wp-block-list\">\n<li>Follow the onboarding flow to choose your server location, select the operating system, and create a root password.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9d1184\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1384\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-onboarding-server-location.png\/public\" alt=\"The Select Location window on Hostinger VPS' onboarding flow\" class=\"wp-image-112251\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-onboarding-server-location.png\/w=2880,fit=scale-down 2880w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-onboarding-server-location.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-onboarding-server-location.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-onboarding-server-location.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-onboarding-server-location.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-onboarding-server-location.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-onboarding-server-location.png\/w=2048,fit=scale-down 2048w\" sizes=\"auto, (max-width: 2880px) 100vw, 2880px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"2\" class=\"wp-block-list\">\n<li>Once done, access your <strong>VPS<\/strong> <strong>Overview <\/strong>page and go to <strong>sidebar &rarr; Security &rarr; Firewall<\/strong>. You&rsquo;ll open ports 80 and 443 to allow web traffic.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9d28d2\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"508\" height=\"1040\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/the-firewall-menu-on-hpanel-vps-configuration-menu-sidebar.png\/public\" alt=\"VPS Overview menu in Hostinger's hPanel dashboard, highlighting the Firewall submenu\" class=\"wp-image-125978\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/the-firewall-menu-on-hpanel-vps-configuration-menu-sidebar.png\/w=508,fit=scale-down 508w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/the-firewall-menu-on-hpanel-vps-configuration-menu-sidebar.png\/w=147,fit=scale-down 147w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/the-firewall-menu-on-hpanel-vps-configuration-menu-sidebar.png\/w=500,fit=scale-down 500w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/the-firewall-menu-on-hpanel-vps-configuration-menu-sidebar.png\/w=73,fit=scale-down 73w\" sizes=\"auto, (max-width: 508px) 100vw, 508px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"3\" class=\"wp-block-list\">\n<li>Click <strong>Create Firewall Configuration<\/strong> and give it a name.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9d4574\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1460\" height=\"507\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-create-configuration.png\/public\" alt=\"A new firewall configuration creation window in hPanel\" class=\"wp-image-125979\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-create-configuration.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-create-configuration.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-create-configuration.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-create-configuration.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-create-configuration.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1460px) 100vw, 1460px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"4\" class=\"wp-block-list\">\n<li>Hit the <strong>three-dot menu<\/strong> button and select <strong>Edit<\/strong>.<\/li>\n\n\n\n<li>In the <strong>Add Firewall Rule<\/strong> section, set <strong>Protocol<\/strong> to <strong>TCP<\/strong> and <strong>Port (or range)<\/strong> to <strong>80<\/strong>. Then, click <strong>Add Rule<\/strong>.<\/li>\n\n\n\n<li>Repeat the same process for the 443 (TCP) port.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9d5fd7\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2506\" height=\"992\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-firewall-rule-highlighted.png\/public\" alt=\"Custom firewall rules on VPS' Firewall of hPanel\" class=\"wp-image-112255\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-firewall-rule-highlighted.png\/w=2506,fit=scale-down 2506w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-firewall-rule-highlighted.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-firewall-rule-highlighted.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-firewall-rule-highlighted.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-firewall-rule-highlighted.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-firewall-rule-highlighted.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-firewall-rule-highlighted.png\/w=2048,fit=scale-down 2048w\" sizes=\"auto, (max-width: 2506px) 100vw, 2506px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"7\" class=\"wp-block-list\">\n<li>Hit the <strong>Back<\/strong> button and click the <strong>toggle <\/strong>to activate it.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9d77d0\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1460\" height=\"427\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/firewall-configuration-activation-toggle-on-hpanel-1.png\/public\" alt=\"The firewall configuration activation toggle on hPanel\" class=\"wp-image-125982\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/firewall-configuration-activation-toggle-on-hpanel-1.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/firewall-configuration-activation-toggle-on-hpanel-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/firewall-configuration-activation-toggle-on-hpanel-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/firewall-configuration-activation-toggle-on-hpanel-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/firewall-configuration-activation-toggle-on-hpanel-1.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1460px) 100vw, 1460px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"8\" class=\"wp-block-list\">\n<li>Make some DNS adjustments for your domain. If you bought one from Hostinger, check our guide on <a href=\"\/ng\/tutorials\/dns\/how-to-point-domain-to-vps\">how to point a domain name to VPS<\/a> to complete the process.<\/li>\n<\/ol><p><div class=\"protip\">\n                    <h4 class=\"title\">Manage Hostinger VPS with AI<\/h4>\n                    <p>Hostinger users can use <strong>Kodee<\/strong>, our AI assistant, to help manage their VPS. Aside from writing commands and guiding you thorugh system administration taks, it can directly manage various aspects of your server.<br>\nFor example, you can ask Kodee to update your VPS hostname, change its nameservers, set a new firewall rule, and more. Simply send Kodee a message through its chat interface and it will handle the rest.<\/p>\n                <\/div>\n\n\n\n<\/p><h3 class=\"wp-block-heading\" id=\"h-2-install-necessary-dependencies\">2. Install Necessary Dependencies<\/h3><p>To set up your Bluesky PDS, you need to install several dependencies on your server. Here&rsquo;s how to do so:<\/p><ol class=\"wp-block-list\">\n<li>Obtain your server&rsquo;s SSH details. Hostinger customers can find these under the <strong>VPS<\/strong> <strong>Overview <\/strong>menu&rsquo;s <strong>VPS details<\/strong> section.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9d7ee0\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1460\" height=\"1041\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2021\/10\/vps-ssh-username-and-ip-address-on-hpanel.png\/public\" alt=\"SSH access credentials on hPanel's VPS Overview page\" class=\"wp-image-125811\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2021\/10\/vps-ssh-username-and-ip-address-on-hpanel.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2021\/10\/vps-ssh-username-and-ip-address-on-hpanel.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2021\/10\/vps-ssh-username-and-ip-address-on-hpanel.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2021\/10\/vps-ssh-username-and-ip-address-on-hpanel.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2021\/10\/vps-ssh-username-and-ip-address-on-hpanel.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1460px) 100vw, 1460px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"2\" class=\"wp-block-list\">\n<li>Open an <a href=\"\/ng\/tutorials\/how-to-use-putty-ssh\">SSH client like PuTTY<\/a> or any terminal emulator to connect to your VPS with your credentials.<\/li>\n\n\n\n<li>Update and upgrade your server to get the latest security patches and software improvements:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo apt update<br><br>sudo apt upgrade -y<\/pre><ol start=\"4\" class=\"wp-block-list\">\n<li>Install the required packages and dependencies to run your Bluesky server. These include transport protocols, certificate authorities, and various utilities:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo apt install -y apt-transport-https ca-certificates curl python3-websocket software-properties-common wget<\/pre><h3 class=\"wp-block-heading\" id=\"h-3-clone-the-bluesky-pds-github-repository\">3. Clone the Bluesky PDS GitHub Repository<\/h3><p>Next, clone the Bluesky PDS source code from the official repository. Follow the instructions to download the latest version of the necessary files and related resources:<\/p><ol class=\"wp-block-list\">\n<li>Use <a href=\"\/ng\/tutorials\/how-to-install-git-on-ubuntu\">Git<\/a> to clone the Bluesky PDS repository from GitHub:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">git clone https:\/\/github.com\/bluesky-social\/pds.git<\/pre><ol start=\"2\" class=\"wp-block-list\">\n<li>You should see an output indicating the cloning process was successful:<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9d96d3\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1002\" height=\"202\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-clone-pds-output.png\/public\" alt=\"The successful cloning process output on Terminal\" class=\"wp-image-112258\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-clone-pds-output.png\/w=1002,fit=scale-down 1002w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-clone-pds-output.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-clone-pds-output.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-clone-pds-output.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1002px) 100vw, 1002px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"3\" class=\"wp-block-list\">\n<li>Run the following command to navigate to the cloned repository&rsquo;s directory:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">cd pds<\/pre><h3 class=\"wp-block-heading\" id=\"h-4-run-the-bluesky-pds-installer\">4. Run the Bluesky PDS Installer<\/h3><p>Bluesky provides an installer script to set up your personal data server. It eliminates the need for manual configuration and reduces the risk of unwanted errors. Follow these steps:<\/p><ol class=\"wp-block-list\">\n<li>Since you have cloned the Bluesky PDS files, run the installer directly with bash:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo bash installer.sh<\/pre><ol start=\"2\" class=\"wp-block-list\">\n<li>If you haven&rsquo;t downloaded the Bluesky source code, get the installer file using <a href=\"\/ng\/tutorials\/wget-command-examples\">wget<\/a> and then run it with the same <strong>bash<\/strong> command:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">wget https:\/\/raw.githubusercontent.com\/bluesky-social\/pds\/main\/installer.sh<br><br>sudo bash installer.sh<\/pre><ol start=\"3\" class=\"wp-block-list\">\n<li>During the installation process, you&rsquo;ll be prompted to enter the correct domain name and admin email address.<\/li>\n\n\n\n<li>Here&rsquo;s the expected output after the installation is complete:<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9dad02\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1036\" height=\"442\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-pds-installation-successful-output.png\/public\" alt=\"The successful PDS installation output on Terminal\" class=\"wp-image-112259\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-pds-installation-successful-output.png\/w=1036,fit=scale-down 1036w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-pds-installation-successful-output.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-pds-installation-successful-output.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-pds-installation-successful-output.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-pds-installation-successful-output.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1036px) 100vw, 1036px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"5\" class=\"wp-block-list\">\n<li>Create a new user account for your PDS:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo pdsadmin account create<\/pre><ol start=\"6\" class=\"wp-block-list\">\n<li>Fill in the user&rsquo;s email address and handle name when prompted.<\/li>\n\n\n\n<li>Bluesky PDS will generate a unique password for the account. Store it securely, as you&rsquo;ll need it later.<\/li>\n<\/ol><h3 class=\"wp-block-heading\" id=\"h-5-launch-your-bluesky-server\">5. Launch Your Bluesky Server<\/h3><p>After installing Bluesky PDS, it&rsquo;s time to launch your own server and ensure everything is working correctly:<\/p><ol class=\"wp-block-list\">\n<li>Verify that your server is running by requesting the health check endpoint. Replace <strong>domain.tld<\/strong> with your domain address:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">curl https:\/\/domain.tld\/xrpc\/_healthv<\/pre><ol start=\"2\" class=\"wp-block-list\">\n<li>You should receive a JSON response indicating the server version, similar to:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">{\"version\": \"0.4.32\"}<\/pre><ol start=\"3\" class=\"wp-block-list\">\n<li>Make sure WebSockets are also functioning correctly. This is crucial for real-time communication:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">wsdump \"wss:\/\/domain.tld\/xrpc\/com.atproto.sync.subscribeRepos?cursor=0\"<\/pre><ol start=\"4\" class=\"wp-block-list\">\n<li>Here is the output you should see:<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9dc768\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"202\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-websockets-output.png\/public\" alt=\"The Websockets output on Terminal\" class=\"wp-image-112260\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-websockets-output.png\/w=2880,fit=scale-down 2880w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-websockets-output.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-websockets-output.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-websockets-output.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-websockets-output.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-websockets-output.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-websockets-output.png\/w=2048,fit=scale-down 2048w\" sizes=\"auto, (max-width: 2880px) 100vw, 2880px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"5\" class=\"wp-block-list\">\n<li>If there are no issues with the above commands, open your Bluesky server via your domain name on your web browser:<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9ddd38\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1824\" height=\"272\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/chrome-bluesky-pds-output.png\/public\" alt=\"The Bluesky server output on the browser\" class=\"wp-image-112261\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/chrome-bluesky-pds-output.png\/w=1824,fit=scale-down 1824w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/chrome-bluesky-pds-output.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/chrome-bluesky-pds-output.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/chrome-bluesky-pds-output.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/chrome-bluesky-pds-output.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/chrome-bluesky-pds-output.png\/w=1536,fit=scale-down 1536w\" sizes=\"auto, (max-width: 1824px) 100vw, 1824px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><h3 class=\"wp-block-heading\" id=\"h-6-access-your-bluesky-pds\">6. Access Your Bluesky PDS<\/h3><p>Once you&rsquo;re done with the Bluesky PDS setup, you can allow users to join your server. Follow the instructions below:<\/p><ol class=\"wp-block-list\">\n<li>Open the Bluesky app on your preferred platform, whether web app, Android, or iPhone. Here, we demonstrate using the <a href=\"https:\/\/bsky.app\">web app<\/a>.<\/li>\n\n\n\n<li>Hit <strong>Sign In<\/strong> to log in using your previously created account.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9df68e\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2628\" height=\"820\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in.png\/public\" alt=\"Bluesky's Sign in page\" class=\"wp-image-112262\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in.png\/w=2628,fit=scale-down 2628w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in.png\/w=2048,fit=scale-down 2048w\" sizes=\"auto, (max-width: 2628px) 100vw, 2628px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"3\" class=\"wp-block-list\">\n<li>Under the <strong>Choose Service<\/strong> section, select <strong>Custom<\/strong>. Then, enter your domain name as the server address and hit <strong>Done<\/strong>.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9e0dad\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1464\" height=\"936\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in-choose-service-custom-selected.png\/public\" alt=\"The Custom Server field on Bluesky\" class=\"wp-image-112263\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in-choose-service-custom-selected.png\/w=1464,fit=scale-down 1464w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in-choose-service-custom-selected.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in-choose-service-custom-selected.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in-choose-service-custom-selected.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in-choose-service-custom-selected.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1464px) 100vw, 1464px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"4\" class=\"wp-block-list\">\n<li>Fill in your email address and password, and then click <strong>Next<\/strong>.<\/li>\n\n\n\n<li>You&rsquo;ll be directed to the homepage, showing posts from people you follow and trending content.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1c1b9e24ef\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1850\" height=\"1224\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-homepage.png\/public\" alt=\"Bluesky's homepage\" class=\"wp-image-112264\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-homepage.png\/w=1850,fit=scale-down 1850w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-homepage.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-homepage.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-homepage.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-homepage.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-homepage.png\/w=1536,fit=scale-down 1536w\" sizes=\"auto, (max-width: 1850px) 100vw, 1850px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"6\" class=\"wp-block-list\">\n<li>To invite your friends and colleagues, you need to generate a unique invite code. Type the following command for each invite:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo pdsadmin create-invite-code<\/pre><ol start=\"7\" class=\"wp-block-list\">\n<li>Share the individual invite codes with new users so they can join your custom PDS.<\/li>\n<\/ol><figure data-wp-context='{\"imageId\":\"69e1c1b9e3bea\"}' data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1854\" height=\"1360\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-up.png\/public\" alt=\"Bluesky's Create Account page\n\" class=\"wp-image-112265\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-up.png\/w=1854,fit=scale-down 1854w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-up.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-up.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-up.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-up.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-up.png\/w=1536,fit=scale-down 1536w\" sizes=\"auto, (max-width: 1854px) 100vw, 1854px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><h3 class=\"wp-block-heading\" id=\"h-7-manage-and-secure-your-server\">7. Manage and Secure Your Server<\/h3><p>Proper management and security of your Bluesky PDS is a crucial step to providing a safe environment for your community. Here&rsquo;s how to keep your server updated and secure:<\/p><p><strong>Updating the PDS<\/strong><\/p><p>Regular updates keep your Bluesky PDS running smoothly and securely. Sometimes, updates also include new features, enhancing users&rsquo; experiences.<\/p><p>To update your Bluesky PDS, execute the following command:<\/p><pre class=\"wp-block-preformatted\">sudo pdsadmin update<\/pre><p><strong>Configuring SSL\/TLS<\/strong><\/p><p>SSL\/TLS protects communication between your server and its users. Installing an SSL certificate encrypts data transferred to and from your server, protecting it from potential eavesdroppers.<\/p><p>You can use Let&rsquo;s Encrypt to obtain a free SSL certificate. Use the following commands and replace <strong>domain.tld<\/strong> with your domain name:<\/p><pre class=\"wp-block-preformatted\">sudo apt install certbot<br><br>sudo certbot certonly --standalone -d domain.tld<\/pre><h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2><p>In this article, you&rsquo;ve learned how to host a Bluesky server on a VPS. From selecting an ideal VPS service to generating invite codes for users and installing SSL certificates, you can now create a secure and efficient personal data server.<\/p><p>By self-hosting your PDS, you gain greater control over data sharing and can customize your setup to suit your needs. Encourage your friends and communities to join your server and enjoy the benefits of <a href=\"\/ng\/tutorials\/what-is-decentralized-social-media\">decentralized social media<\/a> networking.<\/p><h2 class=\"wp-block-heading\" id=\"h-how-to-host-a-bluesky-pds-faq\">How to Host a Bluesky PDS FAQ<\/h2><p>This section answers the most common questions about Bluesky Personal Data Server setup.<\/p><div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1719559074596\"><h3 class=\"schema-faq-question\">What Is Bluesky PDS?<\/h3> <p class=\"schema-faq-answer\">Bluesky PDS is a decentralized server that allows users to manage their social media data independently, ensuring better control and privacy. It supports federated networking and data distribution.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1719559079659\"><h3 class=\"schema-faq-question\">Can I Customize My Bluesky PDS Setup?<\/h3> <p class=\"schema-faq-answer\">Yes, you can customize your Bluesky PDS setup using the <strong>pdsadmin<\/strong> command. This tool allows you to configure various aspects of your server, such as creating user accounts, generating invite codes, and requesting crawls from a relay host.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1719559085942\"><h3 class=\"schema-faq-question\">Which VPS Provider Is Best for Hosting a Bluesky PDS?<\/h3> <p class=\"schema-faq-answer\">Hostinger&rsquo;s VPS is highly recommended for hosting a Bluesky PDS due to its powerful hardware specifications, comprehensive security features, and multiple data center locations, ensuring a smooth social networking experience with Bluesky.<\/p> <\/div> <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bluesky is a decentralized social media platform built on AT Protocol. It aims to provide a federated social environment. A key component of this ecosystem is the Bluesky Personal Data Server (PDS), allowing users to manage their data independently and securely. Hosting your own Bluesky PDS offers several advantages, including enhanced control over personal data, [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/ng\/tutorials\/how-to-host-a-bluesky-pds\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":411,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"How to Host a Bluesky PDS Using a Federated Instance","rank_math_description":"Learn how to set up your own self-hosted Bluesky instance: 1. Get a VPS 2. Install dependencies 3. Clone Bluesky GitHub repository + more.","rank_math_focus_keyword":"how to host a bluesky pds","footnotes":""},"categories":[22644],"tags":[],"class_list":["post-112248","post","type-post","status-publish","format-standard","hentry","category-vps"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/how-to-host-a-bluesky-pds","default":0},{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/como-hospedar-um-pds-bluesky","default":0},{"locale":"fr-FR","link":"https:\/\/www.hostinger.com\/fr\/tutoriels\/comment-heberger-un-pds-bluesky","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-host-a-bluesky-pds","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/how-to-host-dedicated-terraria-server-13","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/how-to-host-a-bluesky-pds","default":0},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/como-hospedar-um-pds-bluesky","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/how-to-host-a-bluesky-pds","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/how-to-host-a-bluesky-pds","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/how-to-host-a-bluesky-pds","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/how-to-host-a-bluesky-pds","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts\/112248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/users\/411"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/comments?post=112248"}],"version-history":[{"count":12,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts\/112248\/revisions"}],"predecessor-version":[{"id":143750,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts\/112248\/revisions\/143750"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/media?parent=112248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/categories?post=112248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/tags?post=112248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}