{"id":5,"date":"2026-09-02T19:19:28","date_gmt":"2026-09-02T19:19:28","guid":{"rendered":"http:\/\/ocisingle.cloudbsd.org\/?page_id=5"},"modified":"2026-09-02T21:06:08","modified_gmt":"2026-09-02T21:06:08","slug":"the-machine-room","status":"publish","type":"page","link":"https:\/\/ocicluster.cloudbsd.org\/","title":{"rendered":"The Machine Room"},"content":{"rendered":"\n<div class=\"oci-machine-room\">\n<style>\n.oci-machine-room {\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n  max-width: 1100px;\n  margin: 0 auto;\n  padding: 1.5rem 0.5rem;\n  color: #1e293b;\n}\n.oci-machine-room * { box-sizing: border-box; }\n\n.oci-hero {\n  background: linear-gradient(135deg, #1a1a20 0%, #2b1113 45%, #c1272d 100%);\n  color: #ffffff;\n  padding: 2.25rem 2.25rem;\n  border-radius: 16px;\n  margin-bottom: 1.5rem;\n  box-shadow: 0 10px 30px -10px rgba(193, 39, 45, 0.35), 0 4px 12px rgba(0,0,0,0.15);\n  position: relative;\n  overflow: hidden;\n}\n.oci-hero-badge {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  background: rgba(255, 255, 255, 0.15);\n  backdrop-filter: blur(8px);\n  padding: 4px 12px;\n  border-radius: 20px;\n  font-size: 0.75rem;\n  font-weight: 700;\n  letter-spacing: 0.08em;\n  text-transform: uppercase;\n  margin-bottom: 1rem;\n  border: 1px solid rgba(255, 255, 255, 0.25);\n}\n.oci-hero-title {\n  margin: 0 0 0.75rem 0 !important;\n  color: #ffffff !important;\n  font-size: 2.2rem !important;\n  font-weight: 800 !important;\n  letter-spacing: -0.02em;\n  line-height: 1.2;\n}\n.oci-hero-desc {\n  margin: 0 !important;\n  color: rgba(255, 255, 255, 0.92) !important;\n  font-size: 1.02rem;\n  line-height: 1.6;\n  max-width: 900px;\n}\n.oci-hero-desc strong {\n  color: #ffffff;\n  font-weight: 700;\n}\n\n.oci-status-bar {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  background: #ffffff;\n  border: 1px solid #e2e8f0;\n  border-radius: 12px;\n  padding: 0.85rem 1.25rem;\n  margin-bottom: 1.5rem;\n  box-shadow: 0 2px 6px rgba(0,0,0,0.03);\n  flex-wrap: wrap;\n  gap: 12px;\n}\n.oci-status-live {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  font-weight: 600;\n  font-size: 0.9rem;\n  color: #334155;\n}\n.oci-pulse-dot {\n  width: 10px;\n  height: 10px;\n  background-color: #10b981;\n  border-radius: 50%;\n  display: inline-block;\n  box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7);\n  animation: ociPulse 2s infinite;\n}\n.oci-pulse-dot.updating {\n  background-color: #3b82f6;\n  box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.7);\n}\n.oci-pulse-dot.error {\n  background-color: #ef4444;\n  animation: none;\n}\n@keyframes ociPulse {\n  0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); }\n  70% { transform: scale(1); box-shadow: 0 0 0 8px rgba(16, 185, 129, 0); }\n  100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }\n}\n.oci-status-meta {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  font-size: 0.85rem;\n  color: #64748b;\n  flex-wrap: wrap;\n}\n.oci-meta-pill {\n  background: #f1f5f9;\n  padding: 4px 10px;\n  border-radius: 6px;\n  font-weight: 600;\n  color: #475569;\n}\n.oci-refresh-btn {\n  background: #ffffff;\n  border: 1px solid #cbd5e1;\n  color: #334155;\n  padding: 6px 14px;\n  border-radius: 8px;\n  font-size: 0.85rem;\n  font-weight: 600;\n  cursor: pointer;\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  transition: all 0.15s ease;\n}\n.oci-refresh-btn:hover {\n  background: #f8fafc;\n  border-color: #94a3b8;\n  color: #0f172a;\n}\n.oci-refresh-btn.spinning svg {\n  animation: ociSpin 0.8s linear infinite;\n}\n@keyframes ociSpin { 100% { transform: rotate(360deg); } }\n\n.oci-error-banner {\n  background: #fef2f2;\n  border: 1px solid #fecaca;\n  border-radius: 12px;\n  padding: 1rem 1.25rem;\n  margin-bottom: 1.5rem;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  color: #991b1b;\n}\n.oci-error-content {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  font-size: 0.9rem;\n  font-weight: 500;\n}\n.oci-retry-btn {\n  background: #ef4444;\n  color: #ffffff;\n  border: none;\n  padding: 6px 14px;\n  border-radius: 6px;\n  font-size: 0.85rem;\n  font-weight: 600;\n  cursor: pointer;\n}\n.oci-retry-btn:hover { background: #dc2626; }\n\n.oci-cards-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n  gap: 1.25rem;\n  margin-bottom: 1.75rem;\n}\n.oci-card {\n  background: #ffffff;\n  border: 1px solid #e2e8f0;\n  border-radius: 14px;\n  padding: 1.25rem;\n  box-shadow: 0 2px 8px rgba(0,0,0,0.03);\n  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;\n  position: relative;\n  overflow: hidden;\n}\n.oci-card:hover {\n  transform: translateY(-2px);\n  box-shadow: 0 8px 20px rgba(0,0,0,0.06);\n  border-color: #cbd5e1;\n}\n.oci-card-accent {\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  height: 3px;\n  background: #c1272d;\n}\n.oci-card-icon {\n  font-size: 1.4rem;\n  margin-bottom: 0.4rem;\n  display: block;\n}\n.oci-card-val {\n  font-size: 1.9rem;\n  font-weight: 800;\n  color: #0f172a;\n  line-height: 1.1;\n  margin-bottom: 0.35rem;\n  letter-spacing: -0.02em;\n}\n.oci-card-val.highlight {\n  color: #c1272d;\n}\n.oci-card-lbl {\n  color: #64748b;\n  font-size: 0.78rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.05em;\n}\n\n.oci-skeleton {\n  background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n  background-size: 200% 100%;\n  animation: ociShimmer 1.5s infinite;\n  border-radius: 6px;\n  display: inline-block;\n}\n@keyframes ociShimmer {\n  0% { background-position: 200% 0; }\n  100% { background-position: -200% 0; }\n}\n\n.oci-table-card {\n  background: #ffffff;\n  border: 1px solid #e2e8f0;\n  border-radius: 16px;\n  overflow: hidden;\n  box-shadow: 0 4px 16px rgba(0,0,0,0.04);\n  margin-bottom: 1.5rem;\n}\n.oci-table-header {\n  padding: 1.1rem 1.5rem;\n  background: #f8fafc;\n  border-bottom: 1px solid #e2e8f0;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n}\n.oci-table-title {\n  margin: 0 !important;\n  font-size: 1.1rem !important;\n  font-weight: 700 !important;\n  color: #0f172a !important;\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n.oci-table-count {\n  background: #e2e8f0;\n  color: #334155;\n  padding: 4px 10px;\n  border-radius: 12px;\n  font-size: 0.8rem;\n  font-weight: 700;\n}\n.oci-table-responsive {\n  width: 100%;\n  overflow-x: auto;\n}\ntable.oci-table {\n  width: 100%;\n  border-collapse: collapse;\n  text-align: left;\n  margin: 0 !important;\n}\ntable.oci-table th {\n  background: #0f172a;\n  color: #f8fafc;\n  font-size: 0.75rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.06em;\n  padding: 0.85rem 1.25rem;\n  border: none;\n}\ntable.oci-table td {\n  padding: 0.95rem 1.25rem;\n  border-top: 1px solid #f1f5f9;\n  font-size: 0.9rem;\n  color: #334155;\n  vertical-align: middle;\n  font-variant-numeric: tabular-nums;\n}\ntable.oci-table tbody tr {\n  transition: background 0.15s ease;\n}\ntable.oci-table tbody tr:hover {\n  background: #f8fafc;\n}\n\n.oci-cname {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  font-weight: 700;\n  color: #0f172a;\n}\n.oci-cicon { font-size: 1.1rem; }\n.oci-cid-badge {\n  font-family: monospace;\n  font-size: 0.72rem;\n  background: #f1f5f9;\n  color: #64748b;\n  padding: 2px 6px;\n  border-radius: 4px;\n  font-weight: 500;\n}\n.oci-status-pill {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  background: #ecfdf5;\n  color: #047857;\n  border: 1px solid #a7f3d0;\n  padding: 4px 10px;\n  border-radius: 20px;\n  font-size: 0.78rem;\n  font-weight: 700;\n  text-transform: lowercase;\n}\n.oci-status-dot {\n  width: 6px;\n  height: 6px;\n  background-color: #10b981;\n  border-radius: 50%;\n}\n.oci-badge-num {\n  display: inline-block;\n  background: #f1f5f9;\n  color: #334155;\n  font-weight: 700;\n  padding: 2px 8px;\n  border-radius: 6px;\n  font-size: 0.82rem;\n}\n\n.oci-footer {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  color: #64748b;\n  font-size: 0.82rem;\n  padding-top: 0.75rem;\n  border-top: 1px solid #e2e8f0;\n  flex-wrap: wrap;\n  gap: 10px;\n}\n\n@media (max-width: 640px) {\n  .oci-hero { padding: 1.5rem; }\n  .oci-hero-title { font-size: 1.6rem !important; }\n  .oci-status-bar { flex-direction: column; align-items: flex-start; }\n  .oci-footer { flex-direction: column; align-items: flex-start; }\n}\n<\/style>\n\n<div class=\"oci-hero\">\n  <div class=\"oci-hero-badge\">\n    <span class=\"oci-pulse-dot\" style=\"width:8px;height:8px;margin-right:2px;\"><\/span>\n    FREEBSD OCI CLUSTER &bull; 3 NODES\n  <\/div>\n  <h1 class=\"oci-hero-title\">The Machine Room<\/h1>\n  <p class=\"oci-hero-desc\">\n    Every component of this site &mdash; the <strong>Nginx<\/strong> web server, the <strong>PHP-FPM<\/strong> worker process, the <strong>MariaDB<\/strong> database, and the <strong>Redis<\/strong> cache &mdash; executes inside native <strong>OCI containers on FreeBSD<\/strong>, managed by <strong>ocifbsd<\/strong>. No Linux emulation, no Docker daemon: isolated FreeBSD jails, VNET virtual networks, and RACCT resource management.\n  <\/p>\n<\/div>\n\n<div class=\"oci-status-bar\">\n  <div class=\"oci-status-live\">\n    <span class=\"oci-pulse-dot\" id=\"oci-sync-dot\"><\/span>\n    <span id=\"oci-sync-text\">Live System Feed<\/span>\n  <\/div>\n  <div class=\"oci-status-meta\" id=\"oci-host-meta\">\n    <span class=\"oci-meta-pill\">FreeBSD 16.0<\/span>\n    <span class=\"oci-meta-pill\" id=\"oci-meta-node\">Node: &#8212;<\/span>\n  <\/div>\n  <button class=\"oci-refresh-btn\" id=\"oci-refresh-btn\" onclick=\"window.ociRefreshStats()\">\n    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21.5 2v6h-6M2.13 15.57a10 10 0 1 0 3.77-8.83l-5.67 5.26\"\/><\/svg>\n    Refresh Stats\n  <\/button>\n<\/div>\n\n<div class=\"oci-error-banner\" id=\"oci-error-banner\" style=\"display:none;\">\n  <div class=\"oci-error-content\">\n    <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg>\n    <span id=\"oci-error-msg\">Unable to connect to live stats publisher. Retrying in background&#8230;<\/span>\n  <\/div>\n  <button class=\"oci-retry-btn\" onclick=\"window.ociRefreshStats()\">Retry Now<\/button>\n<\/div>\n\n<div class=\"oci-cards-grid\" id=\"oci-cards\">\n  <div class=\"oci-card\"><div class=\"oci-card-accent\"><\/div><div class=\"oci-skeleton oci-skel-title\"><\/div><div class=\"oci-skeleton oci-skel-text\"><\/div><\/div>\n  <div class=\"oci-card\"><div class=\"oci-card-accent\"><\/div><div class=\"oci-skeleton oci-skel-title\"><\/div><div class=\"oci-skeleton oci-skel-text\"><\/div><\/div>\n  <div class=\"oci-card\"><div class=\"oci-card-accent\"><\/div><div class=\"oci-skeleton oci-skel-title\"><\/div><div class=\"oci-skeleton oci-skel-text\"><\/div><\/div>\n  <div class=\"oci-card\"><div class=\"oci-card-accent\"><\/div><div class=\"oci-skeleton oci-skel-title\"><\/div><div class=\"oci-skeleton oci-skel-text\"><\/div><\/div>\n<\/div>\n\n<div class=\"oci-table-card\">\n  <div class=\"oci-table-header\">\n    <h3 class=\"oci-table-title\">\n      <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"\/><line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"\/><line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"\/><\/svg>\n      Container Jails\n    <\/h3>\n    <span class=\"oci-table-count\" id=\"oci-container-count\">Loading&#8230;<\/span>\n  <\/div>\n  <div class=\"oci-table-responsive\">\n    <table class=\"oci-table\">\n      <thead>\n        <tr>\n          <th>Container<\/th>\n          <th>Status<\/th>\n          <th>Memory (RSS)<\/th>\n          <th>Procs<\/th>\n          <th>Threads<\/th>\n          <th>CPU Time<\/th>\n          <th>Uptime<\/th>\n        <\/tr>\n      <\/thead>\n      <tbody id=\"oci-rows\">\n        <tr><td colspan=\"7\"><div class=\"oci-skeleton oci-skel-cell\" style=\"width:100%;height:20px;margin:8px 0;\"><\/div><\/td><\/tr>\n        <tr><td colspan=\"7\"><div class=\"oci-skeleton oci-skel-cell\" style=\"width:100%;height:20px;margin:8px 0;\"><\/div><\/td><\/tr>\n        <tr><td colspan=\"7\"><div class=\"oci-skeleton oci-skel-cell\" style=\"width:100%;height:20px;margin:8px 0;\"><\/div><\/td><\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n<\/div>\n\n<div class=\"oci-footer\">\n  <div>Platform: <strong>FreeBSD 16.0-CURRENT<\/strong> &bull; Engine: <strong>ocifbsd OCI<\/strong><\/div>\n  <div id=\"oci-foot-sync\">Refreshed: &#8211;:&#8211;:&#8211;<\/div>\n<\/div>\n<\/div>\n\n<script>\n(function(){\n  function mb(b){\n    if(!b || b <= 0) return '0 MB';\n    var m = b \/ 1048576;\n    if(m >= 1024) return (m \/ 1024).toFixed(2) + ' GB';\n    return m.toFixed(1) + ' MB';\n  }\n  function dur(s){\n    if(!s || s <= 0) return '0s';\n    var d = Math.floor(s \/ 86400);\n    var h = Math.floor((s % 86400) \/ 3600);\n    var m = Math.floor((s % 3600) \/ 60);\n    var sec = s % 60;\n    if(d > 0) return d + 'd ' + h + 'h';\n    if(h > 0) return h + 'h ' + m + 'm';\n    if(m > 0) return m + 'm ' + sec + 's';\n    return sec + 's';\n  }\n  function icon(n){\n    var name = (n || '').toLowerCase();\n    if(name.indexOf('wordpress') !== -1) return '\u26a1';\n    if(name.indexOf('nginx') !== -1) return '\ud83c\udf10';\n    if(name.indexOf('mariadb') !== -1) return '\ud83d\udc2c';\n    if(name.indexOf('redis') !== -1) return '\ud83e\udde0';\n    return '\ud83d\udce6';\n  }\n  function card(val, lbl, iconStr, isHighlight, subStr){\n    var hClass = isHighlight ? ' oci-card-val highlight' : ' oci-card-val';\n    var subHtml = subStr ? '<div class=\"oci-card-sub\">' + subStr + '<\/div>' : '';\n    return '<div class=\"oci-card\"><div class=\"oci-card-accent\"><\/div><span class=\"oci-card-icon\">' + iconStr + '<\/span><div class=\"' + hClass + '\">' + val + '<\/div><div class=\"oci-card-lbl\">' + lbl + '<\/div>' + subHtml + '<\/div>';\n  }\n\n  var isFetching = false;\n  function loadStats(){\n    if(isFetching) return;\n    isFetching = true;\n    var btn = document.getElementById('oci-refresh-btn');\n    var dot = document.getElementById('oci-sync-dot');\n    var errBanner = document.getElementById('oci-error-banner');\n    if(btn) btn.classList.add('spinning');\n    if(dot) dot.className = 'oci-pulse-dot updating';\n\n    fetch('\/oci-stats.json?t=' + Date.now())\n      .then(function(res){\n        if(!res.ok) throw new Error('HTTP ' + res.status);\n        return res.json();\n      })\n      .then(function(d){\n        isFetching = false;\n        if(btn) btn.classList.remove('spinning');\n        if(dot) dot.className = 'oci-pulse-dot';\n        if(errBanner) errBanner.style.display = 'none';\n\n        var host = d.host || {};\n        var statsObj = d.stats || {};\n        var cs = statsObj.containers || [];\n        var totMem = 0, totProc = 0, totTh = 0, runningCount = 0;\n\n        for(var i = 0; i < cs.length; i++){\n          totMem += (cs[i].memory_bytes || 0);\n          totProc += (cs[i].processes || 0);\n          totTh += (cs[i].threads || 0);\n          if(cs[i].state === 'running') runningCount++;\n        }\n\n        var nodeName = d.node || host.node || 'host-node';\n        var metaNode = document.getElementById('oci-meta-node');\n        if(metaNode) metaNode.textContent = 'Node: ' + nodeName;\n\n        var cardsElem = document.getElementById('oci-cards');\n        if(cardsElem){\n          cardsElem.innerHTML = \n            card(runningCount + ' \/ ' + cs.length, 'Containers Running', '\ud83d\udda5\ufe0f', true, 'Jails Active') +\n            card(mb(totMem), 'Total Memory (RSS)', '\ud83d\udcca', false, 'RAM Allocated') +\n            card(totProc, 'Processes', '\u2699\ufe0f', false, totTh + ' Threads') +\n            card((host.cpus || 1) + ' Cores', 'Host vCPUs', '\ud83d\ude80', false, 'Load: ' + (host.loadavg || '0.00').trim());\n        }\n\n        var countElem = document.getElementById('oci-container-count');\n        if(countElem) countElem.textContent = cs.length + ' Active Jails';\n\n        var rowsElem = document.getElementById('oci-rows');\n        if(rowsElem){\n          if(cs.length === 0){\n            rowsElem.innerHTML = '<tr><td colspan=\"7\" style=\"text-align:center;padding:1.5rem;color:#64748b;\">No active containers detected<\/td><\/tr>';\n          } else {\n            var html = '';\n            for(var j = 0; j < cs.length; j++){\n              var c = cs[j];\n              var shortId = (c.id || '').substring(0, 8);\n              html += '<tr>' +\n                '<td><div class=\"oci-cname\"><span class=\"oci-cicon\">' + icon(c.name) + '<\/span><span>' + (c.name || 'jail') + '<\/span><span class=\"oci-cid-badge\">' + shortId + '<\/span><\/div><\/td>' +\n                '<td><span class=\"oci-status-pill\"><span class=\"oci-status-dot\"><\/span>' + (c.state || 'running') + '<\/span><\/td>' +\n                '<td><div class=\"oci-mem-val\">' + mb(c.memory_bytes) + '<\/div><\/td>' +\n                '<td><span class=\"oci-badge-num\">' + (c.processes || 0) + '<\/span><\/td>' +\n                '<td><span class=\"oci-badge-num\">' + (c.threads || 0) + '<\/span><\/td>' +\n                '<td>' + (c.cputime_sec || 0) + 's<\/td>' +\n                '<td>' + dur(c.wallclock_sec) + '<\/td>' +\n                '<\/tr>';\n            }\n            rowsElem.innerHTML = html;\n          }\n        }\n\n        var syncElem = document.getElementById('oci-foot-sync');\n        if(syncElem) syncElem.textContent = 'Refreshed: ' + new Date().toLocaleTimeString();\n      })\n      .catch(function(err){\n        isFetching = false;\n        if(btn) btn.classList.remove('spinning');\n        if(dot) dot.className = 'oci-pulse-dot error';\n        if(errBanner){\n          errBanner.style.display = 'flex';\n          var msg = document.getElementById('oci-error-msg');\n          if(msg) msg.textContent = 'Stats feed unavailable (' + (err.message || 'connection error') + ').';\n        }\n      });\n  }\n\n  window.ociRefreshStats = loadStats;\n  loadStats();\n  setInterval(loadStats, 5000);\n})();\n<\/script>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>FREEBSD OCI CLUSTER &bull; 3 NODES The Machine Room Every component of this site &mdash; the Nginx web server, the PHP-FPM worker process, the MariaDB database, and the Redis cache &mdash; executes inside native OCI containers on FreeBSD, managed by ocifbsd. No Linux emulation, no Docker daemon: isolated FreeBSD jails, VNET virtual networks, and RACCT [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ocicluster.cloudbsd.org\/wp-json\/wp\/v2\/pages\/5","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ocicluster.cloudbsd.org\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ocicluster.cloudbsd.org\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/ocicluster.cloudbsd.org\/wp-json\/wp\/v2\/comments?post=5"}],"version-history":[{"count":3,"href":"https:\/\/ocicluster.cloudbsd.org\/wp-json\/wp\/v2\/pages\/5\/revisions"}],"predecessor-version":[{"id":20,"href":"https:\/\/ocicluster.cloudbsd.org\/wp-json\/wp\/v2\/pages\/5\/revisions\/20"}],"wp:attachment":[{"href":"https:\/\/ocicluster.cloudbsd.org\/wp-json\/wp\/v2\/media?parent=5"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}