{"id":203,"date":"2017-01-25T20:10:55","date_gmt":"2017-01-25T19:10:55","guid":{"rendered":"http:\/\/pagepro.co\/blog\/?p=203"},"modified":"2024-09-16T13:31:40","modified_gmt":"2024-09-16T11:31:40","slug":"setting-up-node-js-application-on-digitalocean-droplet","status":"publish","type":"post","link":"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/","title":{"rendered":"Setting up Node.js Application on DigitalOcean Droplet"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"install-node\">Install node<\/h2>\n\n\n\n<p>Many new <a href=\"https:\/\/pagepro.co\/nodejs-development.html\" target=\"_blank\" rel=\"noreferrer noopener\">Node.js developers<\/a> install Node.js with apt-get on Ubuntu &#8211; and you should avoid that! If you already installed Node.js with the built in package manager, please remove that:<\/p>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">sudo apt-get purge nodejs &amp;&amp; sudo apt-get autoremove &amp;&amp; sudo apt-get autoclean<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"install-nvm\">Install nvm<\/h2>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">curl -o- https:\/\/raw.githubusercontent.com\/creationix\/nvm\/v0.33.0\/install.sh | bash<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">$ nvm list\n$ nvm ls-remote\n$ nvm install 5.7.0\n$ nvm use 5.7.0\n$ nvm alias default 5.7.0\n$ node -v\n<\/code><\/pre>\n\n\n\n<p>node -v should return: v5.7.0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"install-npm-globally\">Install npm globally:<\/h2>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">$ npm install -g npm\n$ npm -v\n<\/code><\/pre>\n\n\n\n<p>Check the npm version using npm -v to verify if it&#8217;s installed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"install-pm2\">Install pm2<\/h2>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">npm install -g pm2<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"run-example-script-to-check-if-server-is-working\">Run example script to check if server is working<\/h2>\n\n\n\n<p>Create file for example server:<\/p>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">vim hello.js<\/code><\/pre>\n\n\n\n<p>Paste the code:<\/p>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"javascript\">var http = require('http');\nhttp.createServer(function (req, res) {\n  res.writeHead(200, {'Content-Type': 'text\/plain'});\n  res.end('Hello World\\n');\n}).listen(3000, 'localhost');\nconsole.log('Server running at http:\/\/localhost:3000\/');\n<\/code><\/pre>\n\n\n\n<p>Run the script with pm2:<\/p>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">pm2 start hello.js<\/code><\/pre>\n\n\n\n<p>Check if application is working:<\/p>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">curl http:\/\/localhost:3000<\/code><\/pre>\n\n\n\n<p>It should print: Hello World.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"set-up-nginx-as-a-reverse-proxy-server\">Set Up Nginx as a Reverse Proxy Server<\/h2>\n\n\n\n<p>Now that your application is running, and listening on localhost, you need to set up a way for your users to access it. We will set up an Nginx web server as a reverse proxy for this purpose. This tutorial will set up an Nginx server from scratch. If you already have an Nginx server setup, you can just copy the location block into the server block of your choice (make sure the location does not conflict with any of your web server&#8217;s existing content).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"first-install-nginx-using-apt-get\"><span class=\"underline-accent\">First, install Nginx using apt-get:<\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">apt-get install nginx<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"now-open-the-default-server-block-configuration-file-for-editing\"><span class=\"underline-accent\">Now open the default server block configuration file for editing:<\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">vim \/etc\/nginx\/sites-available\/default<\/code><\/pre>\n\n\n\n<p>Delete everything in the file and insert the following configuration. Be sure to substitute your own domain name or IP address for the server_name directive. Additionally, change the port (3000) if your application is set to listen on a different port:<\/p>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"javascript\">server {\n    listen 80;\n\n    server_name 138.68.128.12;\n\n    location \/ {\n        proxy_pass http:\/\/localhost:3000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Make sure you didn&#8217;t introduce any syntax errors by typing:<\/p>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">nginx -t<\/code><\/pre>\n\n\n\n<p>Next, restart Nginx:<\/p>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">systemctl restart nginx<\/code><\/pre>\n\n\n\n<p>Next, permit traffic to Nginx through the firewall, if you have it enabled:<\/p>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"shell\">ufw allow 'Nginx Full'<\/code><\/pre>\n\n\n\n<p>Now the server should be running and be accessible in the browser.<\/p>\n\n\n\n<p><\/p>\n\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"read-more\">Read more: <\/h2>\n\n\n\n<p><a href=\"https:\/\/pagepro.co\/blog\/what-is-node-js-used-for\/\">What is Node.js used for?<\/a> <\/p>\n\n\n\n<p><a href=\"https:\/\/pagepro.co\/blog\/next-js-vs-node-js-with-decision-making-framework\/\">Next.js vs Node.js<\/a> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Install node Many new Node.js developers install Node.js with apt-get on Ubuntu &#8211; and you should avoid that! If you already installed Node.js with the built in package manager, please remove that: Install nvm node -v should return: v5.7.0 Install npm globally: Check the npm version using npm -v to verify if it&#8217;s installed. Install [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":205,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[318],"tags":[39,40,38,13],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Setting up Node.js Application on DigitalOcean Droplet - Pagepro<\/title>\n<meta name=\"description\" content=\"Learn how to set up Node.js Application for Production on DigitalOcean Droplet. Questions? You won&#039;t have them after reading this.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Setting up Node.js Application on DigitalOcean Droplet - Pagepro\" \/>\n<meta property=\"og:description\" content=\"Learn how to set up Node.js Application for Production on DigitalOcean Droplet. Questions? You won&#039;t have them after reading this.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/\" \/>\n<meta property=\"og:site_name\" content=\"Pagepro\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/thisispagepro\" \/>\n<meta property=\"article:author\" content=\"https:\/\/web.facebook.com\/krzysztof.lojniewski\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-25T19:10:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-16T11:31:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2017\/01\/4i6-daddc6a-brianna-fairhurst-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Chris Lojniewski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/klojniewski\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chris Lojniewski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/\"},\"author\":{\"name\":\"Chris Lojniewski\",\"@id\":\"https:\/\/pagepro.co\/blog\/#\/schema\/person\/295d188fde572d9bcc952656b10993c5\"},\"headline\":\"Setting up Node.js Application on DigitalOcean Droplet\",\"datePublished\":\"2017-01-25T19:10:55+00:00\",\"dateModified\":\"2024-09-16T11:31:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/\"},\"wordCount\":299,\"publisher\":{\"@id\":\"https:\/\/pagepro.co\/blog\/#organization\"},\"keywords\":[\"digitalocean\",\"nginx\",\"node.js\",\"npm\"],\"articleSection\":[\"Web Development\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/\",\"url\":\"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/\",\"name\":\"Setting up Node.js Application on DigitalOcean Droplet - Pagepro\",\"isPartOf\":{\"@id\":\"https:\/\/pagepro.co\/blog\/#website\"},\"datePublished\":\"2017-01-25T19:10:55+00:00\",\"dateModified\":\"2024-09-16T11:31:40+00:00\",\"description\":\"Learn how to set up Node.js Application for Production on DigitalOcean Droplet. Questions? You won't have them after reading this.\",\"breadcrumb\":{\"@id\":\"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/pagepro.co\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\/\/pagepro.co\/blog\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Setting up Node.js Application on DigitalOcean Droplet\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/pagepro.co\/blog\/#website\",\"url\":\"https:\/\/pagepro.co\/blog\/\",\"name\":\"Pagepro\",\"description\":\"Frictionless Next.js, Expo &amp; Sanity Development Blog\",\"publisher\":{\"@id\":\"https:\/\/pagepro.co\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/pagepro.co\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/pagepro.co\/blog\/#organization\",\"name\":\"Pagepro\",\"url\":\"https:\/\/pagepro.co\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/pagepro.co\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2020\/08\/logo_pagepro-b66d228a1e-1.png\",\"contentUrl\":\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2020\/08\/logo_pagepro-b66d228a1e-1.png\",\"width\":440,\"height\":200,\"caption\":\"Pagepro\"},\"image\":{\"@id\":\"https:\/\/pagepro.co\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/thisispagepro\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/pagepro.co\/blog\/#\/schema\/person\/295d188fde572d9bcc952656b10993c5\",\"name\":\"Chris Lojniewski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/pagepro.co\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/34df5f79eac991e9cb24c44871e03741?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/34df5f79eac991e9cb24c44871e03741?s=96&d=mm&r=g\",\"caption\":\"Chris Lojniewski\"},\"description\":\"Chris is the CEO of Pagepro, a software house focused on building scalable, high-performance web applications using Next.js and modern headless architectures. Pagepro helps companies move beyond monolithic systems by implementing composable, API-driven platforms that improve performance, flexibility, and long-term maintainability. Chris is a v0 ambassador (https:\/\/v0.app\/@klojniewski ) and actively explores how AI-assisted development and modern tooling can reduce development friction. His focus is not just on technology choices, but on optimizing delivery processes, architecture decisions, and product scalability.\",\"sameAs\":[\"https:\/\/pagepro.co\",\"https:\/\/web.facebook.com\/krzysztof.lojniewski\",\"https:\/\/instagram.com\/klojniewski\",\"https:\/\/www.linkedin.com\/in\/chris-lojniewski\/\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/klojniewski\"],\"url\":\"https:\/\/pagepro.co\/blog\/author\/chris-lojniewski\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Setting up Node.js Application on DigitalOcean Droplet - Pagepro","description":"Learn how to set up Node.js Application for Production on DigitalOcean Droplet. Questions? You won't have them after reading this.","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:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/","og_locale":"en_US","og_type":"article","og_title":"Setting up Node.js Application on DigitalOcean Droplet - Pagepro","og_description":"Learn how to set up Node.js Application for Production on DigitalOcean Droplet. Questions? You won't have them after reading this.","og_url":"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/","og_site_name":"Pagepro","article_publisher":"https:\/\/www.facebook.com\/thisispagepro","article_author":"https:\/\/web.facebook.com\/krzysztof.lojniewski","article_published_time":"2017-01-25T19:10:55+00:00","article_modified_time":"2024-09-16T11:31:40+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2017\/01\/4i6-daddc6a-brianna-fairhurst-scaled.jpg","type":"image\/jpeg"}],"author":"Chris Lojniewski","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/klojniewski","twitter_misc":{"Written by":"Chris Lojniewski","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/#article","isPartOf":{"@id":"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/"},"author":{"name":"Chris Lojniewski","@id":"https:\/\/pagepro.co\/blog\/#\/schema\/person\/295d188fde572d9bcc952656b10993c5"},"headline":"Setting up Node.js Application on DigitalOcean Droplet","datePublished":"2017-01-25T19:10:55+00:00","dateModified":"2024-09-16T11:31:40+00:00","mainEntityOfPage":{"@id":"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/"},"wordCount":299,"publisher":{"@id":"https:\/\/pagepro.co\/blog\/#organization"},"keywords":["digitalocean","nginx","node.js","npm"],"articleSection":["Web Development"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/","url":"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/","name":"Setting up Node.js Application on DigitalOcean Droplet - Pagepro","isPartOf":{"@id":"https:\/\/pagepro.co\/blog\/#website"},"datePublished":"2017-01-25T19:10:55+00:00","dateModified":"2024-09-16T11:31:40+00:00","description":"Learn how to set up Node.js Application for Production on DigitalOcean Droplet. Questions? You won't have them after reading this.","breadcrumb":{"@id":"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/pagepro.co\/blog\/setting-up-node-js-application-on-digitalocean-droplet\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/pagepro.co\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/pagepro.co\/blog\/"},{"@type":"ListItem","position":3,"name":"Setting up Node.js Application on DigitalOcean Droplet"}]},{"@type":"WebSite","@id":"https:\/\/pagepro.co\/blog\/#website","url":"https:\/\/pagepro.co\/blog\/","name":"Pagepro","description":"Frictionless Next.js, Expo &amp; Sanity Development Blog","publisher":{"@id":"https:\/\/pagepro.co\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pagepro.co\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/pagepro.co\/blog\/#organization","name":"Pagepro","url":"https:\/\/pagepro.co\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/pagepro.co\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2020\/08\/logo_pagepro-b66d228a1e-1.png","contentUrl":"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2020\/08\/logo_pagepro-b66d228a1e-1.png","width":440,"height":200,"caption":"Pagepro"},"image":{"@id":"https:\/\/pagepro.co\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/thisispagepro"]},{"@type":"Person","@id":"https:\/\/pagepro.co\/blog\/#\/schema\/person\/295d188fde572d9bcc952656b10993c5","name":"Chris Lojniewski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/pagepro.co\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/34df5f79eac991e9cb24c44871e03741?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/34df5f79eac991e9cb24c44871e03741?s=96&d=mm&r=g","caption":"Chris Lojniewski"},"description":"Chris is the CEO of Pagepro, a software house focused on building scalable, high-performance web applications using Next.js and modern headless architectures. Pagepro helps companies move beyond monolithic systems by implementing composable, API-driven platforms that improve performance, flexibility, and long-term maintainability. Chris is a v0 ambassador (https:\/\/v0.app\/@klojniewski ) and actively explores how AI-assisted development and modern tooling can reduce development friction. His focus is not just on technology choices, but on optimizing delivery processes, architecture decisions, and product scalability.","sameAs":["https:\/\/pagepro.co","https:\/\/web.facebook.com\/krzysztof.lojniewski","https:\/\/instagram.com\/klojniewski","https:\/\/www.linkedin.com\/in\/chris-lojniewski\/","https:\/\/twitter.com\/https:\/\/twitter.com\/klojniewski"],"url":"https:\/\/pagepro.co\/blog\/author\/chris-lojniewski\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/posts\/203"}],"collection":[{"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/comments?post=203"}],"version-history":[{"count":9,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/posts\/203\/revisions"}],"predecessor-version":[{"id":17808,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/posts\/203\/revisions\/17808"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/media\/205"}],"wp:attachment":[{"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/media?parent=203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/categories?post=203"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/tags?post=203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}