{"id":14708,"date":"2024-02-10T13:39:29","date_gmt":"2024-02-10T10:09:29","guid":{"rendered":"https:\/\/www.itpiran.net\/blog\/?p=14708"},"modified":"2024-02-10T13:39:29","modified_gmt":"2024-02-10T10:09:29","slug":"%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean","status":"publish","type":"post","link":"https:\/\/www.itpiran.net\/blog\/en\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/","title":{"rendered":"Getting Started with Headless Hashnode on DigitalOcean"},"content":{"rendered":"<h2 id=\"%d9%85%d9%82%d8%af%d9%85%d9%87\">Introduction<\/h2>\n<p>Hashnode is a free-to-use content publishing platform and developer community designed to keep tech enthusiasts engaged. It provides a space for users to create and share blog posts and build a community around various areas of technology. HashNode aims to simplify the creation and maintenance of a developer-friendly and SEO-optimized technical blog, offering features like custom domains, a built-in editor, and seamless integration with popular version control systems like GitHub. Their newest offering, Headless Hashnode, lets you build a blog from scratch using Hashnode\u2019s innovative GraphQL APIs. You can build a blog from scratch or use their Next.js starter kit.<\/p>\n<p>In this tutorial, we will set up Hashnode headless on DigitalOcean Droplets.<\/p>\n<h2 id=\"%d9%85%d9%82%d8%af%d9%85%d9%87-%d8%a7%db%8c-%d8%a8%d8%b1-headless-hashnode\">Introduction to HeadLess HashNode<\/h2>\n<p>A Headless Content Management System, or CMS, is an architecture that separates the content management and presentation layers. With a traditional CMS, content is authored, stored, and displayed in one system, but with a headless architecture, content storage and presentation can be handled separately, which creates space for designers and developers to experiment with how the blog looks to its consumers.<\/p>\n<p>Headless Hashnode is a purpose-built CMS that helps users build personal or corporate blogs so they can play around with their domain using Hashnode&#039;s WYSIWYG editor, AI, and SEO optimization tools without worrying about content and analytics tracking while hosting.<\/p>\n<h2 id=\"%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%b1%d8%af%d9%86\">Start<\/h2>\n<h5 id=\"%d9%be%db%8c%d8%b4-%d9%86%db%8c%d8%a7%d8%b2-%d9%87%d8%a7\">Prerequisites:<\/h5>\n<ol>\n<li>An account on DigitalOcean<\/li>\n<li>An account on Hashnode.<\/li>\n<\/ol>\n<h2 id=\"%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-digitalocean-droplets\">\u00a0Using DigitalOcean Droplets<\/h2>\n<p>DigitalOcean Droplets are simple, scalable, and reliable virtual machines that can be easily deployed in less than a minute.<\/p>\n<p>To get started, go to your DigitalOcean control panel and click the green \u00abCreate\u00bb button in the top right of the page. From the drop-down menu, select \u00abDroplets,\u00bb which will also be the first option.<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1600\"  height=\"312\"  class=\"aligncenter wp-image-14709 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1600px) 100vw, 1600px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM.png 1600w, https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM-300x59.png 300w, https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM-1024x200.png 1024w, https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM-768x150.png 768w, https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM-1536x300.png 1536w, https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM-110x21.png 110w, https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM-200x39.png 200w, https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM-380x74.png 380w, https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM-255x50.png 255w, https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM-550x107.png 550w, https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM-800x156.png 800w, https:\/\/cdn.itpiran.net\/2024\/02\/10123204\/Screenshot-2024-02-06-at-8.11.50-PM-1160x226.png 1160w\" ><br \/>\nIn the next window, you will need to specify your preferences for region, image and size, and other details. It is strongly recommended to choose the region closest to your potential readers, even if the data center is already selected for you.<\/p>\n<p>In the next option that reads \u00abImages,\u00bb go to the Marketplace tab and search for NodeJS on Ubuntu. DigitalOcean\u2019s Marketplace features a collection of ready-to-deploy tools and resources called 1-Click Apps. Instead of manually downloading all the dependencies, you can go to the Marketplace and run a 1-Click App that comes with pre-configured images and settings and all the packages and dependencies you need for your project. Your screen should look like this:<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1600\"  height=\"430\"  class=\"aligncenter wp-image-14710 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1600px) 100vw, 1600px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222.png 1600w, https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222-300x81.png 300w, https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222-1024x275.png 1024w, https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222-768x206.png 768w, https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222-1536x413.png 1536w, https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222-110x30.png 110w, https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222-200x54.png 200w, https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222-380x102.png 380w, https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222-255x69.png 255w, https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222-550x148.png 550w, https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222-800x215.png 800w, https:\/\/cdn.itpiran.net\/2024\/02\/10123354\/Screenshot-2024-02-06-at-8.18.43-PM222-1160x312.png 1160w\" ><br \/>\nIn the next window, you can choose the size of the droplet. Choose the best one for you or your company, considering the number of blogs you plan to post in the future. Ideally, if you want to run this implementation at a production level, we recommend using at least a 25 GB SSD hard drive. We recommend choosing a premium droplet for faster performance, which supports Intel, AMD processors, and NVMe SSDs. You can choose a premium droplet based on your needs, just like a standard droplet.<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1600\"  height=\"836\"  class=\"aligncenter wp-image-14711 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1600px) 100vw, 1600px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333.png 1600w, https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333-300x157.png 300w, https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333-1024x535.png 1024w, https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333-768x401.png 768w, https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333-1536x803.png 1536w, https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333-110x57.png 110w, https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333-200x105.png 200w, https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333-380x199.png 380w, https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333-255x133.png 255w, https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333-550x287.png 550w, https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333-800x418.png 800w, https:\/\/cdn.itpiran.net\/2024\/02\/10123532\/Screenshot-2024-02-07-at-10.46.17-AM333-1160x606.png 1160w\" ><br \/>\nOnce done, you need to choose an authentication method. You can log in to your Droplet via SSH key or password. For this tutorial, we\u2019ll go with a password, so add whatever string you choose and make a note of it. For the next section, you can add enhanced metrics monitoring and alerting at no cost by checking the box next to the option, and you\u2019re all set. Make sure you add a simpler Hostname for your Droplet and look at all the details before clicking \u201cCreate Droplet.\u201d.<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1600\"  height=\"615\"  class=\"aligncenter wp-image-14712 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1600px) 100vw, 1600px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444.png 1600w, https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444-300x115.png 300w, https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444-1024x394.png 1024w, https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444-768x295.png 768w, https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444-1536x590.png 1536w, https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444-110x42.png 110w, https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444-200x77.png 200w, https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444-380x146.png 380w, https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444-255x98.png 255w, https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444-550x211.png 550w, https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444-800x308.png 800w, https:\/\/cdn.itpiran.net\/2024\/02\/10123733\/Screenshot-2024-02-07-at-10.49.23-AM444-1160x446.png 1160w\" ><br \/>\nIt takes about a minute to provision a Droplet. Once you&#039;re done, click the &quot;Get Started&quot; link to get an overview of the Marketplace app and see what&#039;s included.<\/p>\n<h2 id=\"%d8%b1%d8%a7%d9%87-%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-droplet\">Droplet setup<\/h2>\n<p>To launch your Droplet, accept incoming connections and redirect them to the application in your local terminal:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>ssh root@YOUR-DROPLET-IP<\/code><\/pre>\n<\/div>\n<p>\u00abReplace &quot;YOUR-DROPLET-IP&quot; with the IP address of your Droplet in the control panel. Enter the password when prompted.<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1160\"  height=\"1600\"  class=\"aligncenter wp-image-14713 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1160px) 100vw, 1160px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555.png 1160w, https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555-218x300.png 218w, https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555-742x1024.png 742w, https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555-768x1059.png 768w, https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555-1114x1536.png 1114w, https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555-110x152.png 110w, https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555-200x276.png 200w, https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555-380x524.png 380w, https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555-255x352.png 255w, https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555-300x414.png 300w, https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555-550x759.png 550w, https:\/\/cdn.itpiran.net\/2024\/02\/10124052\/Screenshot-2024-02-07-at-11.31.30-AM555-800x1103.png 800w\" ><br \/>\nThe next step is to update and upgrade the packages in the Droplet, and for that, run the following commands:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>sudo apt update &amp;&amp; sudo apt upgrade -y\r\ncurl -fsSL https:\/\/get.pnpm.io\/install.sh | sh - to install pnpm.<\/code><\/pre>\n<\/div>\n<p>To remove the default page shown in the Droplet and occupying port 3000, use the following commands.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cd \/var\/www\r\nrm -r html\r\ncd ~\r\ncd \/etc\/nginx\/sites-enabled\/\r\nrm -r default<\/code><\/pre>\n<\/div>\n<p>If the changes don&#039;t reflect within 5 minutes, you may need to power down your Droplet and power it back up. If this happens, you&#039;ll need to SSH into your Droplet again in your local terminal. For the next steps, we&#039;ll use Node.js, npm, and Nginx, which are already installed on the Droplet. Nginx is the tool that handles all the routing to our Next.js application.<\/p>\n<h2 id=\"%d9%be%db%8c%da%a9%d8%b1%d8%a8%d9%86%d8%af%db%8c-nginx\">Nginx configuration<\/h2>\n<p>Create a new Nginx configuration file using the following command:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\">sudo nano \/etc\/nginx\/sites-available\/hashnode<\/pre>\n<\/div>\n<p>Paste the following configuration, replacing server_name with your Droplet IP address:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>server {\r\nlisten 80;\r\nserver_name YOUR_IP_ADDRESS;\r\nlocation \/ {\r\nproxy_pass http:\/\/localhost:3000;\r\nproxy_http_version 1.1;\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection 'upgrade';\r\nproxy_set_header Host $host;\r\nproxy_cache_bypass $http_upgrade;\r\n}\r\n}<\/code><\/pre>\n<\/div>\n<p>Once done, save and close the file. Now we need to create a symbolic link to enable the settings using the following:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>sudo ln -s \/etc\/nginx\/sites-available\/hashnode \/etc\/nginx\/sites-enabled\/<\/code><\/pre>\n<\/div>\n<p>To test your Nginx configuration for syntax errors, you can run the following:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>sudo nginx -t<\/code><\/pre>\n<\/div>\n<p>The ideal output should be like this:<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1468\"  height=\"198\"  class=\"aligncenter wp-image-14714 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1468px) 100vw, 1468px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666.png 1468w, https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666-300x40.png 300w, https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666-1024x138.png 1024w, https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666-768x104.png 768w, https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666-110x15.png 110w, https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666-200x27.png 200w, https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666-380x51.png 380w, https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666-255x34.png 255w, https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666-550x74.png 550w, https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666-800x108.png 800w, https:\/\/cdn.itpiran.net\/2024\/02\/10125044\/Screenshot-2024-02-07-at-11.35.29-AM666-1160x156.png 1160w\" ><br \/>\nNow we are ready to restart Nginx and we can do so using the command:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>sudo service nginx restart<\/code><\/pre>\n<\/div>\n<h2 id=\"%d9%86%d8%b5%d8%a8-headless-hashnode\">Headless Hashnode Installation<\/h2>\n<p>Go to the directory on the right:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cd \/var\/www<\/code><\/pre>\n<\/div>\n<p>Clone the Headless Hashnode Github repository:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>git clone https:\/\/github.com\/hashnode\/starter-kit<\/code><\/pre>\n<\/div>\n<p>Choose a template and navigate to its directory. In this tutorial, we will use the Personal theme:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cd starter-kit\/packages\/blog-starter-kit\/themes\/personal<\/code><\/pre>\n<\/div>\n<p>Copy the environment variables file:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cp .env.example .env.local<\/code><\/pre>\n<\/div>\n<p>Then edit the environment variables file:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>nano .env.local<\/code><\/pre>\n<\/div>\n<p>You need to change the environment variables to point to your Hashnode account. Change NEXT_PUBLIC_HASHNODE_PUBLICATION_HOST to your endpoint and NEXT_PUBLIC_MODE to production. The file will look like this:<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"914\"  height=\"170\"  class=\"wp-image-14715 size-full aligncenter pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 914px) 100vw, 914px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/02\/10125751\/Screenshot-2024-02-07-at-1.05.06-PM777.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/02\/10125751\/Screenshot-2024-02-07-at-1.05.06-PM777.png 914w, https:\/\/cdn.itpiran.net\/2024\/02\/10125751\/Screenshot-2024-02-07-at-1.05.06-PM777-300x56.png 300w, https:\/\/cdn.itpiran.net\/2024\/02\/10125751\/Screenshot-2024-02-07-at-1.05.06-PM777-768x143.png 768w, https:\/\/cdn.itpiran.net\/2024\/02\/10125751\/Screenshot-2024-02-07-at-1.05.06-PM777-110x20.png 110w, https:\/\/cdn.itpiran.net\/2024\/02\/10125751\/Screenshot-2024-02-07-at-1.05.06-PM777-200x37.png 200w, https:\/\/cdn.itpiran.net\/2024\/02\/10125751\/Screenshot-2024-02-07-at-1.05.06-PM777-380x71.png 380w, https:\/\/cdn.itpiran.net\/2024\/02\/10125751\/Screenshot-2024-02-07-at-1.05.06-PM777-255x47.png 255w, https:\/\/cdn.itpiran.net\/2024\/02\/10125751\/Screenshot-2024-02-07-at-1.05.06-PM777-550x102.png 550w, https:\/\/cdn.itpiran.net\/2024\/02\/10125751\/Screenshot-2024-02-07-at-1.05.06-PM777-800x149.png 800w\" ><br \/>\nTo install the dependencies, run the following:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>pnpm install<\/code><\/pre>\n<\/div>\n<p>Your screen should look like the following:<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1600\"  height=\"1140\"  class=\"aligncenter wp-image-14716 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1600px) 100vw, 1600px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888.png 1600w, https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888-300x214.png 300w, https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888-1024x730.png 1024w, https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888-768x547.png 768w, https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888-1536x1094.png 1536w, https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888-110x78.png 110w, https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888-200x143.png 200w, https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888-380x271.png 380w, https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888-255x182.png 255w, https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888-550x392.png 550w, https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888-800x570.png 800w, https:\/\/cdn.itpiran.net\/2024\/02\/10131026\/Screenshot-2024-02-07-at-12.27.45-PM888-1160x827.png 1160w\" ><br \/>\nWith everything in place, you can now run the following command to deploy Headless Hashnode to your Droplet. Note that the compilation will take a minute. Your terminal should look something like this:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>pnpm dev<\/code><\/pre>\n<\/div>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1582\"  height=\"1240\"  class=\"aligncenter wp-image-14717 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1582px) 100vw, 1582px\"  data-pk-src=\"https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999.png\"  data-pk-srcset=\"https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999.png 1582w, https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999-300x235.png 300w, https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999-1024x803.png 1024w, https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999-768x602.png 768w, https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999-1536x1204.png 1536w, https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999-110x86.png 110w, https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999-200x157.png 200w, https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999-380x298.png 380w, https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999-255x200.png 255w, https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999-550x431.png 550w, https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999-800x627.png 800w, https:\/\/www.itpiran.net\/blog\/wp-content\/uploads\/2024\/02\/Screenshot-2024-02-07-at-1.01.03-PM999-1160x909.png 1160w\" ><br \/>\nOnce compiled, you can visit your Droplet IP address to see your Headless Hashnode site up and running!<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1600\"  height=\"879\"  class=\"aligncenter wp-image-14718 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1600px) 100vw, 1600px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10.png 1600w, https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10-300x165.png 300w, https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10-1024x563.png 1024w, https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10-768x422.png 768w, https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10-1536x844.png 1536w, https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10-110x60.png 110w, https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10-200x110.png 200w, https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10-380x209.png 380w, https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10-255x140.png 255w, https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10-550x302.png 550w, https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10-800x440.png 800w, https:\/\/cdn.itpiran.net\/2024\/02\/10131304\/Screenshot-2024-02-07-at-1.13.18-PM10-1160x637.png 1160w\" ><br \/>\nWith this, we have deployed Hashnode headless on a DigitalOcean Droplet using a reverse proxy provided by Nginx!<\/p>\n<h2 id=\"%d8%b1%d8%a7%d9%87-%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%db%8c%da%a9-%d9%85%d8%af%db%8c%d8%b1-%d9%81%d8%b1%d8%a2%db%8c%d9%86%d8%af-pm2\">Setting up a PM2 process manager<\/h2>\n<p>Sometimes, the run command we are running may stop because the server has been restarted or needs to install an update. We will use the PM2 tool to ensure that our application is always running. PM2 will restart even if the application crashes.<\/p>\n<p>With the Node.js Marketplace Image, PM2 is pre-installed. To ensure that your application always runs using PM2:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cd \/var\/www\/starter-kit\r\npm2 start npm --name \"hashnode\" --start<\/code><\/pre>\n<\/div>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1600\"  height=\"251\"  class=\"aligncenter wp-image-14719 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1600px) 100vw, 1600px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11.png 1600w, https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11-300x47.png 300w, https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11-1024x161.png 1024w, https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11-768x120.png 768w, https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11-1536x241.png 1536w, https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11-110x17.png 110w, https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11-200x31.png 200w, https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11-380x60.png 380w, https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11-255x40.png 255w, https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11-550x86.png 550w, https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11-800x126.png 800w, https:\/\/cdn.itpiran.net\/2024\/02\/10131506\/Screenshot-2024-02-07-at-1.19.21-PM11-1160x182.png 1160w\" ><br \/>\nTo ensure PM2 starts at boot, run the following commands. This will create a script that you can copy and paste into your terminal to start PM2 at boot and save those settings.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>pm2 startup \r\npm2 save<\/code><\/pre>\n<\/div>\n<h2 id=\"%d9%86%d8%aa%db%8c%d8%ac%d9%87\">Result<\/h2>\n<p>Headless CMS tools are great for customizing user interfaces, and Hashnode facilitates a highly scalable and flexible tool. To improve the security and SEO of your blog, consider setting up SSL certificates using Let&#039;s Encrypt and implementing HTTPS connections. If you want to add your own domain name, remember to configure your DNS settings. Point your domain&#039;s A record to your Droplet IP address so you can access the application using your domain name. Sign up for an account today. We can&#039;t wait to see your blogs with DigitalOcean!<\/p>","protected":false},"excerpt":{"rendered":"Introduction Hashnode is a free-to-use content publishing platform and community for developers that\u2026","protected":false},"author":1,"featured_media":14720,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_focuskw":"\u06a9\u0627\u0631 \u0628\u0627 Headless Hashnode \u062f\u0631 DigitalOcean","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","_yoast_wpseo_canonical":"","_yoast_wpseo_opengraph-description":"","_yoast_wpseo_opengraph-image":"","_yoast_wpseo_twitter-description":"","_yoast_wpseo_twitter-image":"","_yoast_wpseo_focuskeywords":"","_yoast_wpseo_primary_category":"193","footnotes":""},"categories":[193,349],"tags":[],"class_list":{"0":"post-14708","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tutorials","8":"category-database"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Headless Hashnode \u062f\u0631 DigitalOcean - \u0628\u0644\u0627\u06af ITPiran<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.itpiran.net\/blog\/en\/tutorials\/\u0634\u0631\u0648\u0639-\u06a9\u0627\u0631-\u0628\u0627-headless-hashnode-\u062f\u0631-digitalocean\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Headless Hashnode \u062f\u0631 DigitalOcean - \u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"og:description\" content=\"\u0645\u0642\u062f\u0645\u0647 Hashnode \u06cc\u06a9 \u067e\u0644\u062a\u0641\u0631\u0645 \u0627\u0646\u062a\u0634\u0627\u0631 \u0645\u062d\u062a\u0648\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0648 \u062c\u0627\u0645\u0639\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.itpiran.net\/blog\/en\/tutorials\/\u0634\u0631\u0648\u0639-\u06a9\u0627\u0631-\u0628\u0627-headless-hashnode-\u062f\u0631-digitalocean\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-10T10:09:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.itpiran.net\/2024\/02\/10133651\/Hashnode.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1793\" \/>\n\t<meta property=\"og:image:height\" content=\"1110\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\"},\"headline\":\"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Headless Hashnode \u062f\u0631 DigitalOcean\",\"datePublished\":\"2024-02-10T10:09:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/\"},\"wordCount\":129,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/02\\\/10133651\\\/Hashnode.jpg\",\"articleSection\":[\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/\",\"name\":\"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Headless Hashnode \u062f\u0631 DigitalOcean - \u0628\u0644\u0627\u06af ITPiran\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/02\\\/10133651\\\/Hashnode.jpg\",\"datePublished\":\"2024-02-10T10:09:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/02\\\/10133651\\\/Hashnode.jpg\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/02\\\/10133651\\\/Hashnode.jpg\",\"width\":1793,\"height\":1110},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/category\\\/tutorials\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Headless Hashnode \u062f\u0631 DigitalOcean\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"name\":\"\u0628\u0644\u0627\u06af ITPiran\",\"description\":\"\u0627\u062e\u0628\u0627\u0631 \u0648 \u0645\u0642\u0627\u0644\u0627\u062a \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\",\"name\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"alternateName\":\"ITPIran Blog\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"width\":512,\"height\":512,\"caption\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\",\"name\":\"admin\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/en\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Getting Started with Headless Hashnode on DigitalOcean - ITPiran Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.itpiran.net\/blog\/en\/tutorials\/\u0634\u0631\u0648\u0639-\u06a9\u0627\u0631-\u0628\u0627-headless-hashnode-\u062f\u0631-digitalocean\/","og_locale":"en_US","og_type":"article","og_title":"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Headless Hashnode \u062f\u0631 DigitalOcean - \u0628\u0644\u0627\u06af ITPiran","og_description":"\u0645\u0642\u062f\u0645\u0647 Hashnode \u06cc\u06a9 \u067e\u0644\u062a\u0641\u0631\u0645 \u0627\u0646\u062a\u0634\u0627\u0631 \u0645\u062d\u062a\u0648\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0648 \u062c\u0627\u0645\u0639\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc&hellip;","og_url":"https:\/\/www.itpiran.net\/blog\/en\/tutorials\/\u0634\u0631\u0648\u0639-\u06a9\u0627\u0631-\u0628\u0627-headless-hashnode-\u062f\u0631-digitalocean\/","og_site_name":"\u0628\u0644\u0627\u06af ITPiran","article_published_time":"2024-02-10T10:09:29+00:00","og_image":[{"width":1793,"height":1110,"url":"https:\/\/cdn.itpiran.net\/2024\/02\/10133651\/Hashnode.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/#article","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/"},"author":{"name":"admin","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81"},"headline":"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Headless Hashnode \u062f\u0631 DigitalOcean","datePublished":"2024-02-10T10:09:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/"},"wordCount":129,"commentCount":0,"publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/02\/10133651\/Hashnode.jpg","articleSection":["\u0622\u0645\u0648\u0632\u0634\u06cc","\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/","url":"https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/","name":"Getting Started with Headless Hashnode on DigitalOcean - ITPiran Blog","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/#primaryimage"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/02\/10133651\/Hashnode.jpg","datePublished":"2024-02-10T10:09:29+00:00","breadcrumb":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/#primaryimage","url":"https:\/\/cdn.itpiran.net\/2024\/02\/10133651\/Hashnode.jpg","contentUrl":"https:\/\/cdn.itpiran.net\/2024\/02\/10133651\/Hashnode.jpg","width":1793,"height":1110},{"@type":"BreadcrumbList","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-headless-hashnode-%d8%af%d8%b1-digitalocean\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.itpiran.net\/blog\/"},{"@type":"ListItem","position":2,"name":"\u0622\u0645\u0648\u0632\u0634\u06cc","item":"https:\/\/www.itpiran.net\/blog\/category\/tutorials\/"},{"@type":"ListItem","position":3,"name":"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Headless Hashnode \u062f\u0631 DigitalOcean"}]},{"@type":"WebSite","@id":"https:\/\/www.itpiran.net\/blog\/#website","url":"https:\/\/www.itpiran.net\/blog\/","name":"ITPiran Blog","description":"Iranian Sustainable Trade News and Articles","publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.itpiran.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.itpiran.net\/blog\/#organization","name":"Sustainable Iranian Business Blog","alternateName":"ITPIran Blog","url":"https:\/\/www.itpiran.net\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","contentUrl":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","width":512,"height":512,"caption":"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81","name":"admin","url":"https:\/\/www.itpiran.net\/blog\/en\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/posts\/14708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/comments?post=14708"}],"version-history":[{"count":1,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/posts\/14708\/revisions"}],"predecessor-version":[{"id":14721,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/posts\/14708\/revisions\/14721"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/media\/14720"}],"wp:attachment":[{"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/media?parent=14708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/categories?post=14708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/tags?post=14708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}