{"id":1714,"date":"2022-12-28T21:45:06","date_gmt":"2022-12-28T20:45:06","guid":{"rendered":"https:\/\/hobbykeller.spdns.de\/?p=1714"},"modified":"2022-12-28T23:15:11","modified_gmt":"2022-12-28T22:15:11","slug":"luks-encrypted-ubuntu-with-lvm-and-ssd-cached-hdd-drive","status":"publish","type":"post","link":"https:\/\/hobbykeller.spdns.de\/?p=1714","title":{"rendered":"LUKS encrypted Ubuntu with LVM and SSD cached HDD drive"},"content":{"rendered":"\n<p>This post is an adapted clone of Arne Rantzen&#8217;s instructions (<a rel=\"noreferrer noopener\" href=\"https:\/\/web.archive.org\/web\/20211207233000\/https:\/\/rantzen.net\/2017\/12\/tutorial--how-to-install-a-fully-encrypted-linux-system-on-an-ssd-and-hdd-device-with-additional-cache\/\" target=\"_blank\">archived version<\/a>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Preliminary steps<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We start with a completely wiped HDD and a completely wiped SSD<\/li>\n\n\n\n<li>We boot the system we would like to install from a USB media. Make sure that we boot in UEFI mode and not in legacy BIOS mode.<\/li>\n\n\n\n<li>Do not proceed unless you are convinced that you booted your Ubuntu installation \/ testing USB system in UEFI mode (you should see an explicit entry in your startup F8 boot menu mentioning UEFI or EFI or similar).<\/li>\n\n\n\n<li>Once booted into Ubuntu from USB, choose &#8220;Try Ubuntu&#8221; (not &#8220;Install&#8221; for the moment)<\/li>\n\n\n\n<li>Open a terminal, make yourself root by issuing <code>sudo -i<\/code> and put the \/dev path of the SSD and the HDD into some variables:<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"float-enable:true lang:default decode:true \">export SSD_POINT=\/dev\/sda\nexport HDD_POINT=\/dev\/sdb<\/pre><\/div>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-primary\" role=\"alert\">Keep the terminal window open at any point during the installation. Do not close the window unless you are explicitly told to (which only happens at the very end of these notes). Closing the terminal window will make your export variables vanish.<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">\u00d7<\/span><\/button><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">1.1 Partitioning<\/h3>\n\n\n\n<p>Launch gparted from the testing system, format both drives as GPT devices (<strong>not<\/strong> MBR).<\/p>\n\n\n\n<p>My general setup is as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>I have a 128 GB SSD. 60 GB are held back for a later Win 11 installation, 38 GB are used to hold the core Linux system (without \/var, \/opt and \/home), 21 GB are used for caching the most frequently accessed blocks on the HDD device and the rest is for small administrative partitions (\/boot, \/boot\/efi, Microsoft hidden partitions etc.)<\/li>\n\n\n\n<li>A 2 TB HDD is completely used as a backing device for the cache, i.e. all data going to \/home, \/var\/ and \/opt essentially written to that bcache partition.<\/li>\n<\/ul>\n\n\n\n<p>Therefore we create the following partitions using gparted:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Partition<\/th><th>Name<\/th><th>File System<\/th><th>Size<\/th><th>Remarks<\/th><\/tr><\/thead><tbody><tr><td>sda1<\/td><td>EFI System partition<\/td><td>FAT32<\/td><td>512 MB<\/td><td>tick esp and boot flags; will later be mounted as \/boot\/efi<\/td><\/tr><tr><td>sda2<\/td><td>boot<\/td><td>EXT4<\/td><td>1024 MB<\/td><td>will later be mounted as \/boot<\/td><\/tr><tr><td>sda3<\/td><td>cache<\/td><td>cleared (will later be LUKS-formatted)<\/td><td>21 GB<\/td><td>this will be our bcache device that holds most active blocks for fast access<\/td><\/tr><tr><td>sda4<\/td><td>system<\/td><td>EXT4 (but doesn&#8217;t matter)<\/td><td>38 GB<\/td><td>will be managed both PV and VG, hold core system<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Initial partitioning<\/figcaption><\/figure>\n\n\n\n<p>For our HDD we don&#8217;t have to do anything except writing the gpt partition table. The complete 2 TB will be taken as a backend for bcache. No need to create any partitions or format anything.<\/p>\n\n\n\n<p>Next we set some variables in our terminal window:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">export SSD_BOOT=\/dev\/sda2\nexport SSD_CACHE=\/dev\/sda3\nexport SSD_SYSTEM=\/dev\/sda4<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">1.2 Setting up caching with bcache<\/h3>\n\n\n\n<p>Still in our terminal as root, issue the following commands to install bcache-tools and wipe the file systems relating that later make up our virtual hybrid drive:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">apt-get update\napt-get install bcache-tools\nwipefs -a $SSD_CACHE\nwipefs -a $HDD_POINT<\/pre><\/div>\n\n\n\n<p>Then set up the cache partition (-C) of the SSD and the backing device (-B), the HDD partition and tweak bcache to use the writeback caching mode. Finally, add the resulting mapped partition of the cache on the SSD and the data partition on the HDD to a new variable.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">make-bcache -C $SSD_CACHE -B $HDD_POINT\necho writeback &gt; \/sys\/block\/bcache0\/bcache\/cache_mode\nexport BCACHE=\/dev\/bcache0<\/pre><\/div>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-primary\" role=\"alert\">Keep in mind that the writeback mode increases the speed of your hybrid disk, but comes at the price that losing the SDD (e.g. due to wear) means <a href=\"https:\/\/lucaswerkmeister.de\/posts\/2022\/07\/03\/lvmcache\/\" target=\"_blank\" rel=\"noreferrer noopener\">losing data<\/a> which have not yet been written to the HDD. Some authors point out that in extreme cases, data can be lingering for weeks in the SSD cache part before it is written to HDD.<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">\u00d7<\/span><\/button><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">1.3 Setting up LUKS encryption<\/h3>\n\n\n\n<p>Our whole file system of the HDD together with the cache on the SSD is now mapped to <code>$BCACHE<\/code> (<code>\/dev\/bcache0<\/code>) and the system partition still at <code>$SSD_SYSTEM<\/code>. Now we have to encrypt it. To setup LUKS we first have to create and format our encrypted devices. You will be asked for a password and confirm each time. Choose identical passwords as we want to have a master password to unlock the complete system at the startup.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">cryptsetup luksFormat $SSD_SYSTEM\ncryptsetup luksFormat $BCACHE<\/pre><\/div>\n\n\n\n<p>Next we have to open and unlock the container in order to proceed with further installations. You will be asked for the master encrytpion password that you in the previous step (again twice as you unlock two LUKS containers).<\/p>\n\n\n\n<p>When opening a container, you can assign them a name, which will be <code>cRoot<\/code> and <code>cCache<\/code> respectively. These will be the names under which the containers can be accessed in the device mapper under <code>\/dev\/mapper\/<\/code>.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">cryptsetup luksOpen $SSD_SYSTEM cRoot\ncryptsetup luksOpen $BCACHE cCache<\/pre><\/div>\n\n\n\n<p>Next we export the device mapper paths of our opened containers:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">export CROOT=\/dev\/mapper\/cRoot\nexport CCACHE=\/dev\/mapper\/cCache<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">1.4 Setting up Logical Volume Management<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Initialization of physical volumes<\/h4>\n\n\n\n<p>We will now set up the logical volume manager. What do we want LVM to manage? First of all, we have a system partition on the <code>sda4<\/code> on the SSD which LUKS has already mapped to <code>\/dev\/mapper\/cRoot<\/code> (or <code>$CROOT<\/code>) and which will hold the core system files (basically everything that is &#8216;non-data&#8217;). <\/p>\n\n\n\n<p>Secondly, we have our hybrid drive which we combined from the <code>sda3<\/code> SSD partition and the complete <code>sdb<\/code> HDD into a virtual hybrid drive (<code>$BCACHE<\/code> or <code>\/dev\/bcache0)<\/code>. This was encrypted by LUKS and is now accessible as (<code>$CCACHE<\/code> or <code>\/dev\/mapper\/cCache<\/code>)<\/p>\n\n\n\n<p>So we first tell LVM what physical volumes we have. Note that &#8216;physical&#8217; in the language of LVM does not require a volume to be a separate tangible unit such as a hard drive. It might be a complete drive, but it can be a single partition or &#8211; as in our case &#8211; a mapped device.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">pvcreate $CROOT\npvcreate $CCACHE<\/pre><\/div>\n\n\n\n<p>This initializes the hybrid drive and the SSD system partition for logical volume management. Our next step is to <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Creation of volume groups<\/h4>\n\n\n\n<p>The next level up from the physical volume (PV) is a volume group (VG). Each PV can (but not necessarily needs to) be a member of exactly one VG and a VG can hold an arbitrary amount of PVs.<\/p>\n\n\n\n<p>We create two logical volume groups: One <code>data<\/code> group that will later hold everything that goes into <code>\/home<\/code>, <code>\/var<\/code> and <code>\/opt<\/code>. And one <code>system<\/code> group that holds everything except these three. The vgcreate command allows us to create a group and at the same time determine what PVs should got into the group:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">vgcreate system $CROOT\nvgcreate data $CCACHE<\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Creation of logical volumes<\/h4>\n\n\n\n<p>In our final step, we have to create logical volumes which we will use to put mount points on later in the system installation.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">lvcreate -n root -l 100%PVS system\nlvcreate -n home -L 650G data\nlvcreate -n var -L 30G data\nlvcreate -n opt -L 20G data<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">2. Installation of Ubuntu<\/h2>\n\n\n\n<p>We now have everything in place to install Ubuntu. Still do not close the terminal window. With the the terminal window remaining open, launch Install Ubuntu from the desktop of your USB instance.<\/p>\n\n\n\n<p>Fill in the usual chit-chat about language, keyboard etc. until you are asked about what <strong>Installation Type<\/strong> you desire. Pick <strong>Something else<\/strong>.<\/p>\n\n\n\n<p>After this you will be shown a dialog similar to the gparted window you saw before. Don&#8217;t let yourself be confused by the fact that the same installation destination might be listed multiple times. Assign the destination devices for installation as in the following table:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Device path<\/th><th>Use as<\/th><th>Format<\/th><th>Mount Point<\/th><\/tr><\/thead><tbody><tr><td>\/dev\/sda1<\/td><td>FAT32 ?<\/td><td>not sure<\/td><td>\/boot\/efi<\/td><\/tr><tr><td>\/dev\/sda2<\/td><td>ext4<\/td><td>True<\/td><td>\/boot<\/td><\/tr><tr><td>\/dev\/mapper\/system-root<\/td><td>ext4<\/td><td>True<\/td><td>\/<\/td><\/tr><tr><td>\/dev\/mapper\/data-home<\/td><td>ext4<\/td><td>True<\/td><td>\/home<\/td><\/tr><tr><td>\/dev\/mapper\/data-var<\/td><td>ext4<\/td><td>True<\/td><td>\/var<\/td><\/tr><tr><td>\/dev\/mapper\/data-opt<\/td><td>ext4<\/td><td>True<\/td><td>\/opt<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Mount Points in Ubuntu&#8217;s graphical Ubiquity installation manager<\/figcaption><\/figure>\n\n\n\n<p>Finally choose <code>\/dev\/sda<\/code> as the device for the <strong>boot loader installation<\/strong> and click <strong>Install Now<\/strong>. Complete any remaining chit-chat about the user name, the machine name and so on.<\/p>\n\n\n\n<p>When the graphical installer tells you that the installation has been completed, and offers you to reboot your machine into the installed system <strong>do not choose to reboot<\/strong>! Choose <strong>Continue Testing<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Post Install Steps<\/h2>\n\n\n\n<p>Now that the installation is over, we have to make sure that our system is able to use the cache and understand the encryption. Remember that so far only our testing system is really aware that<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>we have combined an SSD partition and a HDD into a hybrid drive using bcache<\/li>\n\n\n\n<li>we have encrypted that hybrid drive and a system partition using LUKS<\/li>\n\n\n\n<li>we have created physical volumes, volume groups and logical volumes inside the LUKS<\/li>\n<\/ul>\n\n\n\n<p>All this information will be gone once we shut down the testing installation. Therefore we have to mount the freshly installed system to install the caching kernel and set up encryption.<\/p>\n\n\n\n<p>Go back to the terminal window and mount the system we just installed inside the testing system:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">mount \/dev\/mapper\/system-root \/mnt\nmount $SSD_BOOT \/mnt\/boot\nmount -o bind \/sys \/mnt\/sys\nmount -o bind \/run \/mnt\/run\nmount -o bind \/proc \/mnt\/proc\nmount -o bind \/dev \/mnt\/dev<\/pre><\/div>\n\n\n\n<p>Now we change to be root in the installed system we just mounted:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">chroot \/mnt<\/pre><\/div>\n\n\n\n<p>So far the installed system has not even <code>bcache-tools<\/code> installed (only our USB live system has). But as we just have become root in the installed system that we have mounted under <code>\/mnt<\/code> inside our live system, we can now install <code>bcache-tools<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">apt update\napt install bcache-tools<\/pre><\/div>\n\n\n\n<p>To tell the installed system about our LUKS encrypted partitions, we have to set up \/etc\/crypttab:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">echo \"cRoot UUID=`blkid -o value $SSD_SYSTEM | head -1` none luks\" &gt; \/etc\/crypttab\necho \"cCache UUID=`blkid -o value $BCACHE | head -1` none luks\" &gt;&gt; \/etc\/crypttab\nupdate-initramfs -uk all<\/pre><\/div>\n\n\n\n<p>I am told the last command is super important, as without updating initramfs, the system will ignore the settings we just put into the crypttab file.<\/p>\n\n\n\n<p>We almost there. What remains are some final cleanups: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>exit chroot, <\/li>\n\n\n\n<li>sync the system state (not sure what this is good for, but it can&#8217;t do harm either), <\/li>\n\n\n\n<li>unmount the installed system partitions<\/li>\n\n\n\n<li>deactivate the volume groups<\/li>\n\n\n\n<li>close the LUKS partition<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true \">exit\nsync\n#unmount the system\numount \/mnt\/sys\numount \/mnt\/run\numount \/mnt\/proc\numount \/mnt\/dev\numount \/mnt\/boot\numount \/mnt\n#deactivate volume groups\nvgchange -an \/dev\/mapper\/system\nvgchange -an \/dev\/mapper\/data\n# close LUKS containers\ncryptsetup luksClose cCache\ncryptsetup luksClose cRoot\nsync\nreboot<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">4. Installing Windows<\/h2>\n\n\n\n<p>Once we have established that our Ubuntu installation works as intended, we can care about the Windows installation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.1 Preparing the installation media<\/h3>\n\n\n\n<p>To prepare the USB key that holds the installation media I recommend the <a href=\"https:\/\/rufus.ie\/en\/\" target=\"_blank\" rel=\"noreferrer noopener\">Rufus USB<\/a> creation tool. This is particularly useful as it allows you to alter the installation image such that:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>you can bypass the dismal Win 11 &#8216;compatibility&#8217; check which will even reject machines with an advanced i7 processor if it is not the latest generation<\/li>\n\n\n\n<li>you can thwart Microsoft&#8217;s desire to know more about you by\n<ul class=\"wp-block-list\">\n<li>bypassing the need to create an online account<\/li>\n\n\n\n<li>directly suppress data collection<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Download the desired Windows 10 or 11 installation <a rel=\"noreferrer noopener\" href=\"https:\/\/www.microsoft.com\/software-download\/windows11\" target=\"_blank\">ISO from Microsoft. <\/a>In my case it&#8217;s the Win 11 64bit English US version.<\/p>\n\n\n\n<p>Let Rufus put a customize installation image onto your USB stick.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.2 Installing Windows<\/h3>\n\n\n\n<p>In my case I need a native Windows installation for a one and only one single purpose: running Autodesk Fusion 360. There is no Linux version of this software available and it draws so heavily on machine ressources that it is not a good idea to run it inside a Windows virtual machine under Ubuntu.<\/p>\n\n\n\n<p>Therefore I will install Win 11 on the remaining 60-something GB of SSD space, which is just enough to hold Windows and install Fusion 360 which will then have the undivided attention of my Core i7 processor, 24 Gigs of RAM and a fast SSD device. (Still Autodesk recommends replacing my 10-year-old AMD Radeon Dualhead graphics adapter, which was top of the shop when I bought it but now seems to be incredibly outdated&#8230;)<\/p>\n\n\n\n<p>Now power down your machine, pop in the USB stick, power it up again, hit F8 to open the boot menu and choose the UEFI USB installation media that should show up.<\/p>\n\n\n\n<p>There is no rocket science in the installation itself. I have used the installation <a href=\"https:\/\/itsfoss.com\/install-windows-after-ubuntu-dual-boot\/\" target=\"_blank\" rel=\"noreferrer noopener\">notes at itsfoss.com<\/a> as a rough guideline. It worked for me without the Ventoy thing and as we already have left 60 GB plus\/minus small change on the SSD when installing Linux, there is no need to resize partitions either.<\/p>\n\n\n\n<p>The only important moment is when the installer asks you <strong>Which type of installation do you want?<\/strong> As before the only correct answer is <strong>Custom Install<\/strong>. <\/p>\n\n\n\n<p>When next asked <strong>Where do you want to install Windows?<\/strong> make sure to choose <strong>Drive 0 Unallocated Space<\/strong> (approx. 60 GB) at the end of the list. This will be the niche we left for Windows on the SSD. Click Next and the installation should start.<\/p>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-info\" role=\"alert\">I am not sure if I remember correctly, but when trying to install Windows into the unallocated space, the installer might have asked me to first create a new partition (which is possible with the New button) and\/or to have it formatted. <br>If that should happen to you, simply create or format the partition as advised by the Windows installer. Just make sure you don&#8217;t do any damage to your existing (Ubtuntu) partitions.<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">\u00d7<\/span><\/button><\/div>\n\n\n\n<p>The installer will restart your machine several times along the installation. After everything is ready, you will find out that your machine will boot straight into Windows. Don&#8217;t panic. Your Ubuntu installation is not gone. You just have to rearrange the boot order in your BIOS again so that it boots into Ubuntu (UEFI) by default.<\/p>\n\n\n\n<p>Itsfoss recommends to run <code>sudo update-grub<\/code> to have windows listed as a boot option. In my case however, I really rarely use Windows (see above). So I prefer that the default behavior of my workstation is to boot into Ubuntu unless explicitly told otherwise. For the few moments when I want to boot Windows, I hit F8 after powering up my machine an hit F8 to get the complete list of UEFI boot options and choose Windows from there.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post is an adapted clone of Arne Rantzen&#8217;s instructions (archived version). 1. Preliminary steps 1.1 Partitioning Launch gparted from the testing system, format both drives as GPT devices (not<span class=\"more-button\"><a href=\"https:\/\/hobbykeller.spdns.de\/?p=1714\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\">LUKS encrypted Ubuntu with LVM and SSD cached HDD drive<\/span><\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[64],"tags":[354,352,351,335],"class_list":["post-1714","post","type-post","status-publish","format-standard","hentry","category-linux","tag-bcache","tag-luks","tag-lvm","tag-ubuntu-22-04"],"_links":{"self":[{"href":"https:\/\/hobbykeller.spdns.de\/index.php?rest_route=\/wp\/v2\/posts\/1714","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hobbykeller.spdns.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hobbykeller.spdns.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hobbykeller.spdns.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hobbykeller.spdns.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1714"}],"version-history":[{"count":16,"href":"https:\/\/hobbykeller.spdns.de\/index.php?rest_route=\/wp\/v2\/posts\/1714\/revisions"}],"predecessor-version":[{"id":1745,"href":"https:\/\/hobbykeller.spdns.de\/index.php?rest_route=\/wp\/v2\/posts\/1714\/revisions\/1745"}],"wp:attachment":[{"href":"https:\/\/hobbykeller.spdns.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hobbykeller.spdns.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hobbykeller.spdns.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}