{"id":112248,"date":"2024-06-28T07:20:18","date_gmt":"2024-06-28T07:20:18","guid":{"rendered":"\/tutorials\/?p=112248"},"modified":"2026-03-10T09:27:32","modified_gmt":"2026-03-10T09:27:32","slug":"how-to-host-a-bluesky-pds","status":"publish","type":"post","link":"\/ca\/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=\"\/ca\/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=\"domain-checker\">\n        <h3 class=\"domain-checker__heading\">Domain Name Checker<\/h3>\n        <p class=\"domain-checker__description\">Instantly check domain name availability.<\/p>\n        <form id=\"domain-checker-form\" class=\"domain-checker__form\" action=\"\/domain-checker\">\n           <div class=\"domain-checker__icon\">\n               <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                   <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.3224 16.7375C13.9306 17.8263 12.1782 18.4752 10.2742 18.4752C5.74548 18.4752 2.07422 14.8039 2.07422 10.2752C2.07422 5.74646 5.74548 2.0752 10.2742 2.0752C14.803 2.0752 18.4742 5.74646 18.4742 10.2752C18.4742 12.1792 17.8253 13.9316 16.7366 15.3233L21.631 20.2179C22.0216 20.6084 22.0216 21.2416 21.631 21.6321C21.2405 22.0226 20.6073 22.0226 20.2168 21.6321L15.3224 16.7375ZM16.4742 10.2752C16.4742 13.6994 13.6984 16.4752 10.2742 16.4752C6.85005 16.4752 4.07422 13.6994 4.07422 10.2752C4.07422 6.85103 6.85005 4.0752 10.2742 4.0752C13.6984 4.0752 16.4742 6.85103 16.4742 10.2752Z\" fill=\"#1D1E20\"\/>\n               <\/svg>\n           <\/div>\n            <input\n                    class=\"domain-checker__input\"\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\"\/>\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=\"\/ca\/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><figure class=\"wp-block-image size-large\"><a class=\"hgr-tutorials-cta hgr-tutorials-cta-vps-hosting\" href=\"\/ca\/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\/w=1024,h=1024,fit=scale-down\" alt=\"\" class=\"wp-image-77934\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><p>After purchasing your desired plan, here&rsquo;s how to <a href=\"\/ca\/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\":\"6a6000df49809\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df49809\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-onboarding-server-location.png\/w=1024,h=1024,fit=scale-down\" alt=\"The Select Location window on Hostinger VPS' onboarding flow\" class=\"wp-image-112251\"  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--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\":\"6a6000df4ab40\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df4ab40\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-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\"  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--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\":\"6a6000df4bb9e\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df4bb9e\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-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\"  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--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\":\"6a6000df4cd64\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df4cd64\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/hpanel-vps-firewall-firewall-rule-highlighted.png\/w=1024,h=1024,fit=scale-down\" alt=\"Custom firewall rules on VPS' Firewall of hPanel\" class=\"wp-image-112255\"  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--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\":\"6a6000df4dff8\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df4dff8\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-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\"  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--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=\"\/ca\/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            <div class=\"protip__heading\">\n                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M1.49234 23.5024C1.23229 23.5024 0.972242 23.4024 0.782206 23.2123C0.562165 22.9923 0.452144 22.6822 0.502153 22.3722C0.562165 21.9221 1.14227 17.9113 3.00262 16.351C3.63274 15.8209 4.43289 15.5509 5.26305 15.5609C6.09321 15.5909 6.87335 15.9109 7.47347 16.4911C8.6937 17.6913 8.76371 19.6717 7.6435 20.9919C6.0832 22.8523 2.08245 23.4324 1.63237 23.4924C1.59236 23.4924 1.54235 23.4924 1.50234 23.4924L1.49234 23.5024ZM5.16303 17.5613C4.84297 17.5613 4.53291 17.6713 4.29287 17.8813C3.60274 18.4614 3.07264 19.9317 2.75258 21.242C4.06282 20.9219 5.5331 20.3918 6.11321 19.7017C6.55329 19.1716 6.54329 18.3814 6.0832 17.9213C5.85316 17.7013 5.5431 17.5713 5.20304 17.5613C5.19304 17.5613 5.17303 17.5613 5.16303 17.5613ZM11.7243 21.8821C11.4942 21.8821 11.2642 21.8021 11.0841 21.652C10.8541 21.462 10.7241 21.1819 10.7241 20.8819V15.9109L8.08358 13.2705H3.11264C2.81259 13.2705 2.53254 13.1404 2.3425 12.9104C2.15246 12.6803 2.07245 12.3803 2.12246 12.0902C2.19247 11.7102 2.84259 8.36953 4.70294 7.12929C6.33325 6.04909 8.96375 6.49918 10.244 6.80923C11.5442 4.96889 13.2546 3.4286 15.2349 2.33839C17.4553 1.11816 19.9858 0.518051 22.4963 0.498047C23.0464 0.498047 23.4865 0.948132 23.4865 1.49824C23.4865 5.0389 22.3763 9.97983 17.1753 13.7605C17.4853 15.0408 17.9354 17.6613 16.8552 19.2816C15.615 21.1419 12.2744 21.7921 11.8943 21.8621C11.8343 21.8721 11.7743 21.8821 11.7143 21.8821H11.7243ZM12.7245 16.181V19.6016C13.7146 19.2916 14.7948 18.7915 15.2049 18.1814C15.675 17.4812 15.605 16.091 15.385 14.9008C14.5248 15.3808 13.6346 15.8109 12.7245 16.181ZM9.66388 12.0302L11.9643 14.3307C13.1845 13.8306 14.3648 13.2204 15.485 12.5103C19.9358 9.51974 21.2361 5.60901 21.4561 2.53843C19.6157 2.67846 17.8254 3.20856 16.2051 4.09872C14.2847 5.14892 12.6544 6.68921 11.4942 8.54956C10.7841 9.65977 10.174 10.82 9.66388 12.0302ZM4.39289 11.2701H7.81353C8.1936 10.3599 8.63368 9.46974 9.11377 8.60957C7.92355 8.38953 6.51329 8.31952 5.81315 8.78961C5.19304 9.19968 4.70294 10.3099 4.39289 11.2701Z\" fill=\"#673DE6\"\/>\n                <\/svg>\n                <p class=\"protip__title\">\n                    Manage Hostinger VPS with AI                <\/p>\n            <\/div>\n            <p class=\"protip__content\">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\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\":\"6a6000df4f274\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df4f274\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-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\"  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--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=\"\/ca\/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=\"\/ca\/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\":\"6a6000df50570\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df50570\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-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\"  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--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=\"\/ca\/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\":\"6a6000df5195e\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df5195e\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-pds-installation-successful-output.png\/w=1024,h=1024,fit=scale-down\" alt=\"The successful PDS installation output on Terminal\" class=\"wp-image-112259\"  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--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\":\"6a6000df52d9a\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df52d9a\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/terminal-websockets-output.png\/w=1024,h=1024,fit=scale-down\" alt=\"The Websockets output on Terminal\" class=\"wp-image-112260\"  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--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\":\"6a6000df53ed6\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df53ed6\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/chrome-bluesky-pds-output.png\/w=1024,h=1024,fit=scale-down\" alt=\"The Bluesky server output on the browser\" class=\"wp-image-112261\"  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--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\" target=\"_blank\" rel=\"noopener\">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\":\"6a6000df55323\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df55323\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-in.png\/w=1024,h=1024,fit=scale-down\" alt=\"Bluesky's Sign in page\" class=\"wp-image-112262\"  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--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\":\"6a6000df565a6\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df565a6\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-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\/w=1024,h=1024,fit=scale-down\" alt=\"The Custom Server field on Bluesky\" class=\"wp-image-112263\"  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--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\":\"6a6000df57764\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df57764\" 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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-homepage.png\/w=1024,h=1024,fit=scale-down\" alt=\"Bluesky's homepage\" class=\"wp-image-112264\"  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--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><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"6a6000df58851\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6000df58851\" class=\"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--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2024\/06\/bluesky-sign-up.png\/w=1024,h=1024,fit=scale-down\" alt=\"Bluesky's Create Account page\n\" class=\"wp-image-112265\"  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--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-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=\"\/ca\/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=\"\/ca\/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":[22699],"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":1},{"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-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/how-to-host-a-bluesky-pds\/","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/how-to-host-a-bluesky-pds\/","default":0},{"locale":"en-GB","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-host-a-bluesky-pds\/","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},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/como-hospedar-um-pds-bluesky\/","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/posts\/112248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/users\/411"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/comments?post=112248"}],"version-history":[{"count":12,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/posts\/112248\/revisions"}],"predecessor-version":[{"id":140977,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/posts\/112248\/revisions\/140977"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/media?parent=112248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/categories?post=112248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/ca\/tutorials\/wp-json\/wp\/v2\/tags?post=112248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}