{"id":647,"date":"2021-11-05T21:05:27","date_gmt":"2021-11-06T04:05:27","guid":{"rendered":"https:\/\/saccade.com\/blog\/?p=647"},"modified":"2025-10-07T13:55:04","modified_gmt":"2025-10-07T20:55:04","slug":"the-return-of-attic","status":"publish","type":"post","link":"https:\/\/saccade.com\/blog\/2021\/11\/the-return-of-attic\/","title":{"rendered":"The Return of Attic"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/saccade.com\/blog\/wp-content\/uploads\/2021\/11\/AtticServer-1024x559.jpg\" alt=\"2011 Mac Mini\" class=\"wp-image-690\" srcset=\"https:\/\/saccade.com\/blog\/wp-content\/uploads\/2021\/11\/AtticServer-1024x559.jpg 1024w, https:\/\/saccade.com\/blog\/wp-content\/uploads\/2021\/11\/AtticServer-300x164.jpg 300w, https:\/\/saccade.com\/blog\/wp-content\/uploads\/2021\/11\/AtticServer-768x419.jpg 768w, https:\/\/saccade.com\/blog\/wp-content\/uploads\/2021\/11\/AtticServer-1536x838.jpg 1536w, https:\/\/saccade.com\/blog\/wp-content\/uploads\/2021\/11\/AtticServer-2048x1118.jpg 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Many years ago, I <a href=\"https:\/\/saccade.com\/writing\/projects\/MyDebianInstall.html\">repurposed an ageing Dell tower PC into a household server<\/a> named &#8220;Attic.&#8221; After <a href=\"https:\/\/saccade.com\/blog\/category\/fire\/\">the fire<\/a>, we had to move out of the house for a while, and it no longer made sense to keep it. So I kept the hard drives, and junked the aging PC hardware. The original machine ran Linux (Debian), simply because I find it a slightly more useful way to configure as a remotely accessed device than a Mac or PC. But to quote <a href=\"https:\/\/www.jwz.org\/\">@jwz<\/a>: &#8220;<em>Linux is free only if your time is worth nothing<\/em>&#8220;. Nearly two decades later, that&#8217;s still true.<\/p>\n\n\n\n<p>I still missed having the server though. I found another leftover computer, this time a <a href=\"https:\/\/everymac.com\/systems\/apple\/mac_mini\/specs\/mac-mini-core-i5-2.5-mid-2011-specs.html\">2011 Mac Mini<\/a> my son used in middle school, and set it up again as a household sever.<\/p>\n\n\n\n<p>The installation is the easy part, everything else is messy. It&#8217;s Linux: meaning it&#8217;s nobody&#8217;s job to make sure everything works. Or rather, it&#8217;s everybody&#8217;s job to make sure anything works.  The good news is all the nerds use Linux and post about it, so help is usually just a few searches away. Click &#8220;read more&#8221; for a running brain dump of what I&#8217;ve discovered so far while getting it on the air.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Initial installation<\/h2>\n\n\n\n<p>Setup is way easier now:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Download the Ubuntu distro to thumb drive. I used <a href=\"https:\/\/rufus.ie\/en\/\">rufus<\/a> to create a bootable version of <a href=\"https:\/\/ubuntu.com\/download\/server\">Ubuntu Server 20.04<\/a> ISO image.<\/li>\n\n\n\n<li>Plug the Mac Mini&#8217;s HDMI output into a screen, and plug in a USB keyboard.<\/li>\n\n\n\n<li>Boot the Mac mini with the option key down and let it boot off the thumb drive.<\/li>\n\n\n\n<li>Let it take over the disk and install.<\/li>\n\n\n\n<li>Log in, and create additional accounts for everybody using it with <kbd>sudo adduser <em>username<\/em><\/kbd>.<\/li>\n<\/ul>\n\n\n\n<p>After this, it&#8217;s possible to log into the server using the hostname you chose during installation over the network via <kbd>ssh<\/kbd> on another Unix machine or a shell window on a Mac. On a PC, <a href=\"https:\/\/www.putty.org\/\">install putty<\/a> to access it.<\/p>\n\n\n\n<p>Note this approach <em><strong>overwrites all contents on the Mac<\/strong><\/em>. So if you had anything you wanted on that computer, save it first! <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Wifi<\/h2>\n\n\n\n<p>I had an idea it might be nice to get the Mac Mini&#8217;s wifi to work. The default Ubuntu install doesn&#8217;t support it. I downloaded the driver:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt update\n$ sudo apt install firmware-b43-installer\n$ sudo reboot now<\/code><\/pre>\n\n\n\n<p>Then, to see what&#8217;s going on, I added:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt install network-manager      <em># Get the nmcli command<\/em>\n$ ls \/sys\/class\/net                     <em># Shows the installed net devices<\/em>\n$ sudo nmcli dev wifi connect <em>SSID<\/em> password '<em>YourPassword<\/em>'<\/code><\/pre>\n\n\n\n<p>The last command, where <em>SSID<\/em> is your Wifi name, <a href=\"https:\/\/kifarunix.com\/connect-to-wifi-in-linux-using-nmcli-command\/\">gets you on the air<\/a>. This doesn&#8217;t happen automatically though, so I put this command in <kbd>\/etc\/init.d\/wifi_login<\/kbd> and used<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo chown a+x \/etc\/init.d\/wifi_login\n$ sudo ln -s \/etc\/init.d\/wifi_login \/etc\/rc3.d\/S05wifi_login<\/code><\/pre>\n\n\n\n<p>To <a href=\"https:\/\/askubuntu.com\/questions\/290099\/how-to-run-a-script-during-boot-as-root\">make it part of the boot process<\/a>. This seemed to work. On the air with Wifi. Great!<\/p>\n\n\n\n<p>&#8230;until I installed something else. Was it Apache? Was it Samba? Who knows, but something I did down the line killed the wifi. I installed (<kbd>sudo apt install<\/kbd>) <kbd>wpasupplicant<\/kbd>, and <kbd>wireless-tools<\/kbd>.<\/p>\n\n\n\n<p>If the Wifi is dead, I found<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo wpa_cli\n&gt; reassociate<\/code><\/pre>\n\n\n\n<p>Works to revive it, <em>but<\/em> you must wait about 10-15 seconds before exiting <kbd>wpa_cli<\/kbd> for it to take effect.<\/p>\n\n\n\n<p>I fiddled (for <em>hours<\/em>) with the Wifi, thinking it would make placing Attic much more flexible. I found I could not make it consistently come up without the <kbd>reassociate<\/kbd> procedure above. However, the Mac Mini is small enough, quiet enough, and attractive enough that placing it near an Ethernet cable isn&#8217;t much of a burden. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Disks<\/h2>\n\n\n\n<p><strong><em>WARNING: The following procedure<\/em><\/strong><em><strong>s<\/strong><\/em><em><strong> can immediately destroy the contents of entire disk drives. Use at your own risk!<\/strong><\/em><\/p>\n\n\n\n<p>After installing Linux, I was annoyed to discover <kbd>df<\/kbd> reporting less than half of the drive&#8217;s rated capacity. Googling around, I found something new since I last did any serious Linux configuration is &#8220;Volume Groups&#8221; and &#8220;Logical Volumes&#8221;. It turns out, the default install created a &#8220;logical volume&#8221; with half the space of the disk drive. To <a href=\"https:\/\/linuxhint.com\/list_disks_ubuntu\/\">find out what&#8217;s actually plugged into your computer<\/a>, use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo lsblk -e7 -f -m -p<\/code><\/pre>\n\n\n\n<p>This displays the sizes of the physical devices and their associated partitions. To get the space back, use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo vgdisplay      <em># Reports \"volume groups\", displays Alloc vs. free space<\/em>\n$ sudo lvdisplay      <em># Reports \"logical volume (LV Path)<\/em>\n\n$ sudo lvextend -l +100%FREE <em>&lt;LV Path&gt;<\/em>\n$ sudo resize2fs <em>&lt;LV path&gt;<\/em><\/code><\/pre>\n\n\n\n<p>In the last two commands, <em><kbd>&lt;LV path&gt;<\/kbd><\/em> is the LV Path reported by <kbd>lvdisplay<\/kbd>. In my case it was <kbd>\/dev\/ubuntu-vg\/ubuntu-lv<\/kbd>, YMMV. <a href=\"https:\/\/www.linuxtechi.com\/extend-lvm-partitions\/\">Some<\/a> <a href=\"https:\/\/access.redhat.com\/solutions\/44089\">background<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Upgrading the disk<\/h3>\n\n\n\n<p>Even with the space recovered, 500GB wasn&#8217;t going to be enough space, so I upgraded the SSD in the Mac Mini to 2TB. The first step is copying the original drive to the new (larger) one. I used <a href=\"https:\/\/www.google.com\/search?q=sata3+usb+adapter\">a USB adapter<\/a> to plug the new drive in externally. The boot drive device is usually <kbd>\/dev\/sda<\/kbd> and if you plug the new drive into a USB adapter, it&#8217;ll be something like <kbd>\/dev\/sdb<\/kbd>. Use <kbd>lsblk<\/kbd> as above to verify which is which. To duplicate the drive:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo dd if=\/dev\/sda of=\/dev\/sdb status=progress<\/code><\/pre>\n\n\n\n<p><em><strong>BE EXTREMELY CAREFUL WITH THIS COMMAND.<\/strong><\/em> It is a low-level, block by block copy, and if you get the &#8220;input file&#8221; (<kbd>if<\/kbd>) and\/or &#8220;output file&#8221; (<kbd>of<\/kbd>) mixed up, you will immediately obliterate the wrong disk. Copying 500GB with a USB adapter on the Mini is slow. Like, 7MB\/sec. If you do the math, that&#8217;s 20 <em>hours<\/em>.<\/p>\n\n\n\n<p>After you copy the disk, the partition table on the new drive still thinks it&#8217;s the original size (remember, block by block duplicate). Here&#8217;s how to use the <a href=\"https:\/\/www.gnu.org\/software\/parted\/manual\/parted.html\"><kbd>parted<\/kbd> disk partitioning utility<\/a> to expand partition #3 to use the rest of the space. Note we&#8217;re changing <kbd>\/dev\/sdb<\/kbd>, be sure to use the drive ID appropriate for your setup. Like everything else in this section, <em>go slow and read up<\/em>. Utilities like parted can do <em>lots of damage<\/em> in single command.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ <strong>sudo parted \/dev\/sdb<\/strong>                <em># user input in <\/em><strong>bold<\/strong>\nGNU Parted 3.3\nUsing \/dev\/sdb\nWelcome to GNU Parted! Type 'help' to view a list of commands.\n\n(parted) <strong>print<\/strong>                        <em># Display the current partitions<\/em>\nModel: ATA CT2000BX500SSD1 (scsi)\nDisk \/dev\/sdb: 2000GB\nSector size (logical\/physical): 512B\/512B\nPartition Table: gpt\nDisk Flags:\n\nNumber  Start   End     Size    File system  Name  Flags\n 1      1049kB  538MB   537MB   fat32              boot, esp\n 2      538MB   1612MB  1074MB  ext4\n 3      1612MB  500GB   499GB\n        500GB   2000GB  1.4TB   Free Space\n\n(parted) <strong>resizepart 3 100%<\/strong>            <em># Expand partition 3 to use all the free space<\/em><\/code><\/pre>\n\n\n\n<p>iFixit provides <a href=\"https:\/\/www.ifixit.com\/Guide\/Mac+mini+Mid+2011+Hard+Drive+Replacement\/6422\">nice directions<\/a> on how to swap the new drive into the Mac Mini. After swapping the new 2TB drive into the Mac Mini, it booted up just fine. However, <kbd>df<\/kbd> still reported only 500G of space. Well, remember the virtual\/logical volume stuff? Yeah, that was still set for the old 500GB drive as well. Here&#8217;s <a href=\"https:\/\/unix.stackexchange.com\/questions\/98339\/how-do-i-extend-a-partition-with-a-lvm-and-the-contained-physical-volume-and-log\">the incantation<\/a> to fix it, assuming the root partition is on <kbd>\/dev\/sda3<\/kbd>: (Note the new drive is <kbd>\/dev\/sda<\/kbd> now that it&#8217;s mounted internally).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo pvresize \/dev\/sda3\n$ sudo lvextend -r -l +100%FREE \/dev\/mapper\/ubuntu-vg\/ubuntu-lv<\/code><\/pre>\n\n\n\n<p>That last parameter to <kbd>lvextend<\/kbd> is the logical volume reported by <kbd>lvdisplay<\/kbd>. YMMV. In the process of upgrading the disk drive, I discovered, iFixit <a href=\"https:\/\/www.ifixit.com\/Store\/Mac\/Mac-mini-Dual-Drive-Kit\/IF171-005?o=3\">sells a kit allowing a second drive to be mounted in the case<\/a>. So the 500GB drive may yet come back inside the Mac Mini. <em>Update Nov-2021: I acquired the 2nd drive kit, and tedious installation aside, it works.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Restoring the old Attic drives<\/h3>\n\n\n\n<p>I&#8217;d saved the old spinning 3.5&#8243; hard drives from Attic. With an inexpensive <a href=\"https:\/\/www.google.com\/search?q=3.5+sata+drive+enclosure\">external case<\/a>, it&#8217;s easy to hook them up to a USB port. However, to actually see the contents, you need to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo mkdir \/media\/hd            # Create a directory to mount the drive on\n$ sudo lsblk -e7 -f -m -p         <em># To see the filesystems<\/em>\n$ sudo mount \/dev\/sdb1 \/media\/hd  <em># Mount the drive<\/em> <em>(look at the previous output to see the \/dev\/XXX to use)<\/em><\/code><\/pre>\n\n\n\n<p>Now you can copy the contents from the old drive partition on <kbd>\/media\/hd<\/kbd> to the internal drive. Remember some things (particularly in home directories) may be hiding in invisible files or folders beginning with a &#8220;.&#8221;. Files copied from another Unix system may have owners and groups that don&#8217;t match the new one, so you&#8217;ll need to fix it with commands like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo chown -R <em>user<\/em>:<em>group<\/em> \/dir\/to\/change    <em># Fix ownership<\/em>\n$ sudo chmod -R u=rwx,go=r \/dir\/to\/change    <em># Fix permissions<\/em><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">File Sharing with Samba<\/h2>\n\n\n\n<p>Samba works well for sharing files; both PCs and Macs know how to talk to it. Useful setup tutorials: <a href=\"https:\/\/ubuntu.com\/tutorials\/install-and-configure-samba\">one<\/a>, <a href=\"https:\/\/help.ubuntu.com\/community\/Samba\/SambaServerGuide\">two<\/a>. The basic gist is to install it:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt update\n$ sudo apt install samba\n$ sudo ufw allow samba    <em># Update firewall rules to allow Samba traffic<\/em><\/code><\/pre>\n\n\n\n<p>To configure it, edit <kbd>\/etc\/samba\/smb.conf<\/kbd> (you&#8217;ll need to do this as root). Below are the relevant sections I used; there are helpful comments in the default file, and lots of <a href=\"https:\/\/wiki.samba.org\/index.php\/Setting_up_Samba_as_a_Standalone_Server\">documentation<\/a> and <a href=\"https:\/\/www.samba.org\/samba\/docs\/current\/man-html\/smb.conf.5.html\">reference<\/a> online.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em># This sets up access to a \"share\" folder in everybody's home directory<\/em>\n#<em> that'll appear when they access the server.<\/em>\n&#91;homes]\n   comment = Home Directories\n   browseable = no\n   path = \/home\/%u\/share\n\n<em># This disables guest access<\/em>\n&#91;global]\n  security = user\n  encrypt passwords = true\n  map to guest = bad user\n  guest account = nobody\n\n<em># This allows access to a global sharing folder on<\/em> \/share\n&#91;share]\n   comment = Main share folder\n   valid users = @share\n   path = \/share\n   read only = no\n   browsable = yes\n   create mask = 0775\n   directory mask = 0775<\/code><\/pre>\n\n\n\n<p>Use <kbd>sudo smbpasswd -a <em>username<\/em><\/kbd> to add users to Samba. It does <em>not<\/em> automatically allow access from the existing system logins &#8211; you need to do this extra step. You also still need to create the <kbd>~user\/share<\/kbd> folders and <kbd>\/share<\/kbd>, and set the permissions on them; the <kbd>\/etc\/samba\/smb.conf<\/kbd> entries just makes them accessible. After changing the configuration files, you&#8217;ll need to<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo service smbd restart<\/code><\/pre>\n\n\n\n<p>To get any configuration changes to take affect.<\/p>\n\n\n\n<p>Once Samba is up and running, use <kbd>\\\\attic<\/kbd> to access it on a PC. On the Mac, use &#8220;Go &gt; Connect to server&#8230;&#8221; in the Finder, and enter <kbd>smb:\/\/attic<\/kbd> (where &#8220;attic&#8221; is the hostname you configured).<\/p>\n\n\n\n<p id=\"UpdateAug22\"><strong><em>Update 29-Aug-2022<\/em><\/strong><\/p>\n\n\n\n<p>I tried to <code>do-release-upgrade<\/code> to update Attic to Ubuntu 22.04.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">COMPLETE FIASCO<\/h3>\n\n\n\n<p>Apparently it got confused about the boot volume, likely related to the issue of both drives (new large one &amp; old small one) having the exact same ID&#8217;s, because of using <code>dd<\/code> to do a bit-by-bit copy of the old to the new drive.<\/p>\n\n\n\n<p>The symptom was the boot would fail with various file system errors. It could be booted manually by attaching a keyboard &amp; screen, and selecting &#8220;recovery&#8221; mode from the console, but the ultimate result was <code>\/boot<\/code> on one drive, and the rest of Linux on another, with a kernel\/release mismatch. Ick.<\/p>\n\n\n\n<p>In retrospect, it would have been wise to completely reformat the old drive as soon as I installed it, possibly avoiding this particular mess.<\/p>\n\n\n\n<p><em>Anyhow\u2026<\/em><\/p>\n\n\n\n<p>It was time to re-install Linux from scratch. I don&#8217;t have the expertise or patience to attempt the component-level repair of a broken Linux system. This time, I adopted the philosophy of putting only the OS\/boot on the smaller drive, and all of my actual data on the larger drive. That way, if the OS needs to get nuked again, most my files are outside of the blast radius.<\/p>\n\n\n\n<p>The first step was do a fresh re-install of` Ubuntu 22.04 onto the smaller drive. You must be <em>very careful<\/em> when doing the install to make sure you don&#8217;t blow away the larger drive.<\/p>\n\n\n\n<p>The 22.04 installer also has an option to <em>not<\/em> create a logical volume, leaving you with an old-fashioned flat partition. This is much easier to deal with than all of the logical volume stuff I&#8217;ve described above. I wish I had this when I installed the original system, doing so simplifies the procedures above considerably. Unfortunately, there&#8217;s no way to &#8220;flatten&#8221; an LV drive back to a regular filesystem without reformatting it first.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Q &amp; A<\/h2>\n\n\n\n<p><strong>So old! So slow!<\/strong>  Not really. Relative to what you&#8217;d get out of, say, a Raspberry Pi, the speed (2.5Ghz x2 cores, 4G RAM) and bandwidth is plenty for this server. The Apple hardware, even ten years old, is still nice and solid (and quiet and sleek). This is also very cheap; other than $180 for the new 2TB SSD, everything else is recycled.<\/p>\n\n\n\n<p><strong>Why not leave it as a Mac?<\/strong> The overhead for Mac OS is considerably more than Linux, and the Mac is not as convenient to manage in a &#8220;headless&#8221; configuration. Once the initial setup is done, everything is done remotely.<\/p>\n\n\n\n<p><strong>You know you can buy off the shelf solutions for this, right?<\/strong> Yes, but understanding Linux (and Unix in general) is a useful skill to have. I first learned the Unix shell commands over four decades ago, and they&#8217;re still remarkably the same. When it comes to computer operating systems, Unix is, more or less, the survivor. Android, iOS, MacOS and Linux are all decedents of Unix. The latest versions of Windows even offer Unix based subsystems.<\/p>\n\n\n\n<p>When I started with computers, most every hardware manufacturer had their own unique operating system, and larger companies offered several. Now, we&#8217;re down to just two in widespread use; Unix and Windows. Your phone, your TV, your radio, your home security system, your cloud services, your Wifi toaster, are all likely running some ancestor of Unix. As Unix co-founder Dennis Ritchie said in <em><a href=\"https:\/\/archive.org\/details\/TheUnixHatersHandbook\/page\/n36\">The Unix-Haters Handbook<\/a><\/em>: &#8220;The [competing] systems you remember so fondly &#8230; are not just out to pasture, they are fertilizing it from below&#8221;.<\/p>\n\n\n\n<p>For all of Unix&#8217;s cryptic inscrutability, it&#8217;s not going away. Best learn to live with it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Many years ago, I repurposed an ageing Dell tower PC into a household server named &#8220;Attic.&#8221; After the fire, we had to move out of the house for a while, and it no longer made sense to keep it. So I kept the hard drives, and junked the aging PC hardware. The original machine ran <a href=\"https:\/\/saccade.com\/blog\/2021\/11\/the-return-of-attic\/\"> read more <span class=\"meta-nav\">&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-647","post","type-post","status-publish","format-standard","hentry","category-misc","author-jp"],"_links":{"self":[{"href":"https:\/\/saccade.com\/blog\/wp-json\/wp\/v2\/posts\/647"}],"collection":[{"href":"https:\/\/saccade.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/saccade.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/saccade.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/saccade.com\/blog\/wp-json\/wp\/v2\/comments?post=647"}],"version-history":[{"count":75,"href":"https:\/\/saccade.com\/blog\/wp-json\/wp\/v2\/posts\/647\/revisions"}],"predecessor-version":[{"id":1059,"href":"https:\/\/saccade.com\/blog\/wp-json\/wp\/v2\/posts\/647\/revisions\/1059"}],"wp:attachment":[{"href":"https:\/\/saccade.com\/blog\/wp-json\/wp\/v2\/media?parent=647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saccade.com\/blog\/wp-json\/wp\/v2\/categories?post=647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saccade.com\/blog\/wp-json\/wp\/v2\/tags?post=647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}