{"id":164323,"date":"2026-03-24T22:34:59","date_gmt":"2026-03-24T19:34:59","guid":{"rendered":"https:\/\/computingforgeeks.com\/nodejs-24-debian\/"},"modified":"2026-03-24T22:35:00","modified_gmt":"2026-03-24T19:35:00","slug":"nodejs-24-debian","status":"publish","type":"post","link":"https:\/\/computingforgeeks.com\/nodejs-24-debian\/","title":{"rendered":"Install Node.js 24 LTS on Debian 13 \/ 12"},"content":{"rendered":"\n<p>Debian 13 (Trixie) ships with Node.js 20 in its default repositories. That version reached end of life in April 2026, so if you are starting a new project or maintaining an existing one, you should be on Node.js 24. It landed as Active LTS &#8220;Krypton&#8221; in October 2025 and brings V8 13.6, npm 11, Express 5 as the default, a permission model that is no longer experimental, and a built-in test runner with proper <code>describe<\/code> blocks.<\/p>\n\n\n\n<p>We tested three install methods on a fresh Debian 13 VM, built an Express 5 API with two endpoints, ran the built-in test runner, exercised the permission model and SQLite module, and set up a systemd service. Everything below is real output, not fabricated. For the same guide on other distributions, see our <a href=\"https:\/\/computingforgeeks.com\/nodejs-24-ubuntu\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ubuntu 24.04<\/a> and <a href=\"https:\/\/computingforgeeks.com\/nodejs-24-rocky-almalinux\/\" target=\"_blank\" rel=\"noreferrer noopener\">Rocky Linux \/ AlmaLinux<\/a> guides.<\/p>\n\n\n\n<p><em>Tested March 2026 on Debian 13.4 (Trixie) with Node.js 24.14.0, npm 11.9.0, V8 13.6.233.17, gcc 14.2<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Requirements<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Debian 13 (Trixie) or Debian 12 (Bookworm) with sudo access<\/li>\n\n<li>About 80 MB disk space for Node.js and npm<\/li>\n\n<li>Port 3000\/tcp open if running web applications<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What Debian Ships by Default<\/h2>\n\n\n\n<p>Neither Debian 13 nor 12 includes a current Node.js version in their default repositories:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Component<\/th><th>Debian 13 (Trixie)<\/th><th>Debian 12 (Bookworm)<\/th><\/tr><\/thead><tbody><tr><td>Default Node.js<\/td><td>20.19.2 (EOL)<\/td><td>18.19.x (EOL)<\/td><\/tr><tr><td>gcc<\/td><td>14.2<\/td><td>12.2<\/td><\/tr><tr><td>Python 3<\/td><td>3.13<\/td><td>3.11<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>The install methods below work on both releases.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">NodeSource Repository (Production)<\/h2>\n\n\n\n<p>NodeSource packages Node.js as .deb files with automatic apt updates. This is the recommended method for production servers.<\/p>\n\n\n\n<p>If the default Debian <code>nodejs<\/code> package is installed, remove it first to avoid conflicts:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt remove -y nodejs npm 2>\/dev\/null; true<\/code><\/pre>\n\n\n\n<p>Add the NodeSource repository and install:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/deb.nodesource.com\/setup_24.x | sudo bash -\nsudo apt install -y nodejs<\/code><\/pre>\n\n\n\n<p>Confirm the version and runtime details:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node -v\nnpm -v\nnode -e \"console.log('V8:', process.versions.v8, '| OpenSSL:', process.versions.openssl, '| Modules:', process.versions.modules)\"<\/code><\/pre>\n\n\n\n<p>From our Debian 13 test VM:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>v24.14.0\n11.9.0\nV8: 13.6.233.17-node.41 | OpenSSL: 3.5.5 | Modules: 137<\/code><\/pre>\n\n\n\n<p>The module ABI version 137 is worth noting. If you upgrade from Node.js 22 (which uses 134), all native addons need a rebuild.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">NVM (Development)<\/h2>\n\n\n\n<p>NVM installs Node.js in your home directory and lets you <a href=\"https:\/\/computingforgeeks.com\/manage-nodejs-versions-linux\/\" target=\"_blank\" rel=\"noreferrer noopener\">switch between multiple versions<\/a> per project. No sudo needed for global npm installs.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NVM_VER=$(curl -s https:\/\/api.github.com\/repos\/nvm-sh\/nvm\/releases\/latest | grep tag_name | cut -d \\\" -f4)\ncurl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/${NVM_VER}\/install.sh | bash\nsource ~\/.bashrc<\/code><\/pre>\n\n\n\n<p>Install Node.js 24 and set it as default:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nvm install 24\nnvm alias default 24<\/code><\/pre>\n\n\n\n<p>Switch between versions with <code>nvm use 22<\/code> or <code>nvm use 24<\/code>. Each version gets its own isolated global npm packages. Keep in mind that NVM installs to <code>~\/.nvm\/<\/code>, so systemd services and other users cannot access it. For production services, stick with NodeSource.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Binary Tarball (Air-gapped Systems)<\/h2>\n\n\n\n<p>Download the prebuilt binary directly from nodejs.org:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NODE_VER=$(curl -s https:\/\/nodejs.org\/dist\/latest-v24.x\/ | grep -oP 'node-v\\K[0-9.]+' | head -1)\ncurl -sLO https:\/\/nodejs.org\/dist\/v${NODE_VER}\/node-v${NODE_VER}-linux-x64.tar.xz\nsudo tar xJf node-v${NODE_VER}-linux-x64.tar.xz -C \/usr\/local --strip-components=1\nrm node-v${NODE_VER}-linux-x64.tar.xz<\/code><\/pre>\n\n\n\n<p>Verify with <code>node -v<\/code> and <code>npm -v<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Build Tools for Native Modules<\/h2>\n\n\n\n<p>Some npm packages compile native C\/C++ addons. If you see <code>gyp ERR!<\/code> during an install, the fix is always the same:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y build-essential<\/code><\/pre>\n\n\n\n<p>Debian 13 pulls in gcc 14.2 and make. Debian 12 gets gcc 12.2 instead. Both compile native Node.js modules without issues.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Express 5 API Demo<\/h2>\n\n\n\n<p>Express 5.2.1 is now what you get from <code>npm install express<\/code>. Quick sanity check:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/node-demo && cd ~\/node-demo\nnpm init -y\nnpm install express<\/code><\/pre>\n\n\n\n<p>npm pulls in Express 5.2.1 with 22 dependencies:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>demo@1.0.0 \/home\/debian\/node-demo\n\u2514\u2500\u2500 express@5.2.1<\/code><\/pre>\n\n\n\n<p>Create a server with two endpoints:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi ~\/node-demo\/server.js<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>const express = require(\"express\");\nconst os = require(\"os\");\nconst app = express();\n\napp.get(\"\/\", (req, res) => {\n  res.json({\n    runtime: \"Node.js \" + process.version + \" on Debian \" + os.release().split(\"-\").pop(),\n    v8: process.versions.v8,\n    openssl: process.versions.openssl,\n    arch: process.arch,\n    memoryMB: Math.round(process.memoryUsage().rss \/ 1024 \/ 1024)\n  });\n});\n\napp.get(\"\/env\", (req, res) => {\n  res.json({\n    nodeEnv: process.env.NODE_ENV || \"development\",\n    pid: process.pid,\n    uptime: Math.round(process.uptime()) + \"s\",\n    cwd: process.cwd()\n  });\n});\n\napp.listen(3000, () => console.log(\"Listening on :3000\"));<\/code><\/pre>\n\n\n\n<p>Start the server and test both endpoints:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node server.js &\ncurl -s http:\/\/localhost:3000\/ | python3 -m json.tool<\/code><\/pre>\n\n\n\n<p>Real response from our Debian 13 VM:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"runtime\": \"Node.js v24.14.0 on Debian amd64\",\n    \"v8\": \"13.6.233.17-node.41\",\n    \"openssl\": \"3.5.5\",\n    \"arch\": \"x64\",\n    \"memoryMB\": 64\n}<\/code><\/pre>\n\n\n\n<p>The <code>\/env<\/code> endpoint shows the process details:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -s http:\/\/localhost:3000\/env | python3 -m json.tool<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"nodeEnv\": \"development\",\n    \"pid\": 2181,\n    \"uptime\": \"2s\",\n    \"cwd\": \"\/home\/debian\/node-demo\"\n}<\/code><\/pre>\n\n\n\n<p>Stop the server with <code>kill %1<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Built-in Test Runner<\/h2>\n\n\n\n<p>Node.js 24 includes a test runner in <code>node:test<\/code> that supports <code>describe<\/code>\/<code>test<\/code> blocks, async tests, and multiple reporters. No npm dependencies needed.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi ~\/node-demo\/test.mjs<\/code><\/pre>\n\n\n\n<p>Write tests that verify the runtime and exercise new Node.js 24 features:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { test, describe } from \"node:test\";\nimport assert from \"node:assert\";\n\ndescribe(\"Core checks\", () => {\n  test(\"running on Node.js 24\", () => {\n    assert.ok(process.version.startsWith(\"v24\"));\n  });\n  test(\"V8 13.6\", () => {\n    assert.ok(process.versions.v8.startsWith(\"13.6\"));\n  });\n});\n\ndescribe(\"New features\", () => {\n  test(\"URLPattern is global\", () => {\n    const p = new URLPattern({ pathname: \"\/api\/:version\/users\/:id\" });\n    const m = p.exec({ pathname: \"\/api\/v2\/users\/99\" });\n    assert.strictEqual(m.pathname.groups.version, \"v2\");\n    assert.strictEqual(m.pathname.groups.id, \"99\");\n  });\n  test(\"Error.isError works\", () => {\n    assert.strictEqual(Error.isError(new TypeError(\"test\")), true);\n    assert.strictEqual(Error.isError(\"not an error\"), false);\n  });\n  test(\"fetch is global\", async () => {\n    assert.strictEqual(typeof fetch, \"function\");\n  });\n});<\/code><\/pre>\n\n\n\n<p>Run them:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node --test test.mjs<\/code><\/pre>\n\n\n\n<p>5 tests across 2 suites, all green:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u25b6 Core checks\n  \u2714 running on Node.js 24 (0.94482ms)\n  \u2714 V8 13.6 (0.278318ms)\n\u2714 Core checks (2.82456ms)\n\u25b6 New features\n  \u2714 URLPattern is global (1.371578ms)\n  \u2714 Error.isError works (0.215904ms)\n  \u2714 fetch is global (0.199697ms)\n\u2714 New features (2.150982ms)\n\u2139 tests 5\n\u2139 suites 2\n\u2139 pass 5\n\u2139 fail 0\n\u2139 duration_ms 76.385397<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Permission Model<\/h2>\n\n\n\n<p>The <code>--permission<\/code> flag (no longer experimental in Node.js 24) restricts what a process can access. Without it, everything works normally. With it, file system and network access are denied unless explicitly allowed.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo 'const fs = require(\"fs\"); console.log(fs.readFileSync(\"\/etc\/hostname\", \"utf8\").trim());' > \/tmp\/ptest.js\nnode \/tmp\/ptest.js\nnode --permission \/tmp\/ptest.js<\/code><\/pre>\n\n\n\n<p>The first run prints the hostname. The second throws an access error:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test-debian-13-computingforgeeks-com\nnode:fs:440\n    return binding.readFileUtf8(path, stringToFlags(options.flag));\n                   ^\nError: Access to this API has been restricted<\/code><\/pre>\n\n\n\n<p>Grant specific access with <code>--allow-fs-read<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node --permission --allow-fs-read=\/etc \/tmp\/ptest.js<\/code><\/pre>\n\n\n\n<p>Now it reads the file because <code>\/etc<\/code> is explicitly allowed. This is useful for sandboxing untrusted scripts or locking down production deployments.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Built-in SQLite<\/h2>\n\n\n\n<p>Node.js 24 includes SQLite through the <code>node:sqlite<\/code> module. It works with in-memory and file-based databases:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node -e \"\nconst { DatabaseSync } = require('node:sqlite');\nconst db = new DatabaseSync(':memory:');\ndb.exec('CREATE TABLE packages (name TEXT, version TEXT)');\ndb.exec(\\\"INSERT INTO packages VALUES ('express', '5.2.1')\\\");\ndb.exec(\\\"INSERT INTO packages VALUES ('node', '24.14.0')\\\");\nconsole.log(db.prepare('SELECT * FROM packages').all());\ndb.close();\n\"<\/code><\/pre>\n\n\n\n<p>Real output from Debian 13:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>[\n  [Object: null prototype] { name: 'express', version: '5.2.1' },\n  [Object: null prototype] { name: 'node', version: '24.14.0' }\n]<\/code><\/pre>\n\n\n\n<p>As of v24.14.0, the SQLite module still prints an <code>ExperimentalWarning<\/code>. It works, but the API could change before it is fully stable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">systemd Service<\/h2>\n\n\n\n<p>For production, let systemd manage your Node.js app. Create a service user and copy the app:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo useradd -r -s \/sbin\/nologin nodeapp\nsudo mkdir -p \/opt\/myapp\nsudo cp ~\/node-demo\/server.js \/opt\/myapp\/\nsudo cp -r ~\/node-demo\/node_modules \/opt\/myapp\/\nsudo cp ~\/node-demo\/package.json \/opt\/myapp\/\nsudo chown -R nodeapp:nodeapp \/opt\/myapp<\/code><\/pre>\n\n\n\n<p>Create the unit file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo vi \/etc\/systemd\/system\/nodeapp.service<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>[Unit]\nDescription=Node.js Express App\nAfter=network.target\n\n[Service]\nType=simple\nUser=nodeapp\nWorkingDirectory=\/opt\/myapp\nExecStart=\/usr\/bin\/node server.js\nRestart=on-failure\nRestartSec=5\nEnvironment=NODE_ENV=production\nStandardOutput=journal\nStandardError=journal\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p>Enable and start:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon-reload\nsudo systemctl enable --now nodeapp<\/code><\/pre>\n\n\n\n<p>The service starts immediately and restarts on crash after a 5-second delay:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl status nodeapp<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\u25cf nodeapp.service - Node.js Express App\n     Loaded: loaded (\/etc\/systemd\/system\/nodeapp.service; enabled; preset: enabled)\n     Active: active (running)\n   Main PID: 2377 (MainThread)\n     Memory: 19.7M\n        CPU: 137ms\n     CGroup: \/system.slice\/nodeapp.service\n             \u2514\u25002377 \/usr\/bin\/node server.js<\/code><\/pre>\n\n\n\n<p>Notice the <code>NODE_ENV=production<\/code> environment variable is picked up by the app:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -s http:\/\/localhost:3000\/env | python3 -m json.tool<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"nodeEnv\": \"production\",\n    \"pid\": 2377,\n    \"uptime\": \"2s\",\n    \"cwd\": \"\/opt\/myapp\"\n}<\/code><\/pre>\n\n\n\n<p>View logs with <code>sudo journalctl -u nodeapp -f<\/code>. For cluster mode and zero-downtime reloads, see <a href=\"https:\/\/computingforgeeks.com\/install-pm2-node-js-process-manager-on-rhel-centos-rocky\/\" target=\"_blank\" rel=\"noreferrer noopener\">PM2 process manager<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Upgrade from Node.js 22<\/h2>\n\n\n\n<p>Swap the NodeSource repository:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt remove -y nodejs\ncurl -fsSL https:\/\/deb.nodesource.com\/setup_24.x | sudo bash -\nsudo apt install -y nodejs<\/code><\/pre>\n\n\n\n<p>Then rebuild native modules in every project:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/path\/to\/your\/project\nnpm rebuild<\/code><\/pre>\n\n\n\n<p>NODE_MODULE_VERSION changed from 134 to 137, so native addons compiled for 22 won&#8217;t load. If <code>npm rebuild<\/code> doesn&#8217;t fix it, delete <code>node_modules<\/code> entirely: <code>rm -rf node_modules package-lock.json && npm install<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Node.js 22 vs 24 on Debian<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Feature<\/th><th>Node.js 22 (Jod)<\/th><th>Node.js 24 (Krypton)<\/th><\/tr><\/thead><tbody><tr><td>Support<\/td><td>Maintenance LTS until Apr 2027<\/td><td>Active LTS until Apr 2028<\/td><\/tr><tr><td>V8<\/td><td>12.4<\/td><td>13.6 (Float16Array, RegExp.escape(), Error.isError())<\/td><\/tr><tr><td>npm<\/td><td>10.x<\/td><td>11.9 (faster installs)<\/td><\/tr><tr><td>Express (default)<\/td><td>4.x<\/td><td>5.x<\/td><\/tr><tr><td>Permission model<\/td><td><code>--experimental-permission<\/code><\/td><td><code>--permission<\/code> (stable)<\/td><\/tr><tr><td>URLPattern<\/td><td>Requires import<\/td><td>Global<\/td><\/tr><tr><td>SQLite<\/td><td>Experimental<\/td><td>Works (still shows ExperimentalWarning)<\/td><\/tr><tr><td>Test runner<\/td><td>Basic<\/td><td>describe blocks, global setup\/teardown<\/td><\/tr><tr><td>NODE_MODULE_VERSION<\/td><td>134<\/td><td>137<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Stable on 22? No rush. Upgrade when you need npm 11, the V8 13.6 improvements, or when 22 hits end-of-life.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Yarn and Corepack<\/h2>\n\n\n\n<p>Yarn Classic:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo npm install -g yarn\nyarn --version<\/code><\/pre>\n\n\n\n<p>Installs Yarn 1.22.22. For Yarn 4.x (Berry), enable Corepack first:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo corepack enable\ncd \/path\/to\/your\/project\ncorepack use yarn@stable<\/code><\/pre>\n\n\n\n<p>The <code>sudo<\/code> on <code>corepack enable<\/code> is required with NodeSource because it creates symlinks in <code>\/usr\/bin<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Uninstall<\/h2>\n\n\n\n<p>NodeSource:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt remove --purge -y nodejs\nsudo rm -f \/etc\/apt\/sources.list.d\/nodesource.list\nsudo apt update<\/code><\/pre>\n\n\n\n<p>NVM:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nvm uninstall 24\nrm -rf ~\/.nvm<\/code><\/pre>\n\n\n\n<p>If the default Debian <code>nodejs<\/code> package is also present, remove it separately: <code>sudo apt remove --purge -y nodejs npm<\/code>.<\/p>\n\n\n\n<p>Node.js 24 on Debian is a clean install regardless of which method you pick. The <a href=\"https:\/\/nodejs.org\/en\/blog\/release\/v24.0.0\" target=\"_blank\" rel=\"noreferrer noopener\">official release notes<\/a> have the full list of breaking changes if you are upgrading a complex project.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Debian 13 (Trixie) ships with Node.js 20 in its default repositories. That version reached end of life in April 2026, so if you are starting a new project or maintaining an existing one, you should be on Node.js 24. It landed as Active LTS &#8220;Krypton&#8221; in October 2025 and brings V8 13.6, npm 11, Express &#8230; <a title=\"Install Node.js 24 LTS on Debian 13 \/ 12\" class=\"read-more\" href=\"https:\/\/computingforgeeks.com\/nodejs-24-debian\/\" aria-label=\"Read more about Install Node.js 24 LTS on Debian 13 \/ 12\">Read more<\/a><\/p>\n","protected":false},"author":3,"featured_media":164326,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,690,299,50],"tags":[],"class_list":["post-164323","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-debian","category-dev","category-how-to","category-linux-tutorials"],"_links":{"self":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/164323","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/comments?post=164323"}],"version-history":[{"count":5,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/164323\/revisions"}],"predecessor-version":[{"id":164350,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/164323\/revisions\/164350"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media\/164326"}],"wp:attachment":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media?parent=164323"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/categories?post=164323"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/tags?post=164323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}