<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>Joseph Price</title>
      <link>https://pricey.uk</link>
      <description>FOSS advocate in a Windows world...</description>
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://pricey.uk/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Mon, 10 Feb 2025 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Updating OCI images in Incus with Tofu&#x2F;Terraform</title>
          <pubDate>Mon, 10 Feb 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/updating-incus-oci-images/</link>
          <guid>https://pricey.uk/blog/updating-incus-oci-images/</guid>
          <description xml:base="https://pricey.uk/blog/updating-incus-oci-images/">&lt;p&gt;&lt;strong&gt;TL;DR&lt;&#x2F;strong&gt;: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;PriceChild&#x2F;terraform-incus-oci-image-updating&quot;&gt;github.com&#x2F;PriceChild&#x2F;terraform-incus-oci-image-updating&lt;&#x2F;a&gt; will update docker&#x2F;oci images when applying.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;I deploy to &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;linuxcontainers.org&#x2F;incus&#x2F;&quot;&gt;Incus&lt;&#x2F;a&gt; containers and take advantage of it&#x27;s support for &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;linuxcontainers.org&#x2F;incus&#x2F;docs&#x2F;main&#x2F;reference&#x2F;image_servers&#x2F;#image-server-types&quot;&gt;OCI (Docker) images&lt;&#x2F;a&gt; to avoid running Docker as well. I deploy using tofu&#x2F;terraform and the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;registry.terraform.io&#x2F;providers&#x2F;lxc&#x2F;incus&#x2F;latest&#x2F;docs&quot;&gt;incus provider&lt;&#x2F;a&gt; which seems to have a small drawback around keeping images updated.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Restic backups to B2 without delete - 2023</title>
          <pubDate>Tue, 28 Mar 2023 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/restic-backups-without-delete-in-2023/</link>
          <guid>https://pricey.uk/blog/restic-backups-without-delete-in-2023/</guid>
          <description xml:base="https://pricey.uk/blog/restic-backups-without-delete-in-2023/">&lt;p&gt;Restic &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;restic&#x2F;restic&#x2F;releases&#x2F;tag&#x2F;v0.15.0&quot;&gt;0.15.0&lt;&#x2F;a&gt; quietly merged &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;restic&#x2F;restic&#x2F;pull&#x2F;2398&quot;&gt;#2398&lt;&#x2F;a&gt; which finally allows native support of keys without delete permissions.&lt;&#x2F;p&gt;
&lt;p&gt;After updating the binary on relevant systems, reversing the two changes from &lt;a href=&quot;https:&#x2F;&#x2F;pricey.uk&#x2F;blog&#x2F;restic-backups-without-delete&#x2F;&quot;&gt;my earlier post&lt;&#x2F;a&gt; (i.e. swapping &lt;code&gt;rclone:b2:bucketname&#x2F;foldername&lt;&#x2F;code&gt; back to &lt;code&gt;b2:bucketname:foldername&lt;&#x2F;code&gt; &amp;amp; removing the extra rclone args) leaves a simple restic solution working with defaults. Awesome!&lt;&#x2F;p&gt;
&lt;p&gt;I had updated directly from 0.9.6 and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;restic.readthedocs.io&#x2F;en&#x2F;latest&#x2F;030_preparing_a_new_repo.html#backblaze-b2&quot;&gt;checking the docs&lt;&#x2F;a&gt; includes quite a significant warning:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Due to issues with error handling in the current B2 library that restic uses, the recommended way to utilize Backblaze B2 is by using its S3-compatible API.&lt;&#x2F;p&gt;
&lt;p&gt;Follow the documentation to &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;help.backblaze.com&#x2F;hc&#x2F;en-us&#x2F;articles&#x2F;360047425453-Getting-Started-with-the-S3-Compatible-API&quot;&gt;generate S3-compatible access keys&lt;&#x2F;a&gt; and then setup restic as described at &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;restic.readthedocs.io&#x2F;en&#x2F;latest&#x2F;030_preparing_a_new_repo.html#amazon-s3&quot;&gt;Amazon S3&lt;&#x2F;a&gt;. This is expected to work better than using the Backblaze B2 backend directly.&lt;&#x2F;p&gt;
&lt;p&gt;Different from the B2 backend, restic’s S3 backend will only hide no longer necessary files. Thus, make sure to setup lifecycle rules to eventually delete hidden files.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.backblaze.com&#x2F;blog&#x2F;whats-the-diff-backblaze-s3-compatible-api-vs-b2-native-api&#x2F;&quot;&gt;Backblaze have also publicised the S3 api as a good default&lt;&#x2F;a&gt;:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;So, which API should you use? In a nutshell, if your app is already written to work with S3, if you’re using tools that are written to S3, or if you’re just unsure, the S3 Compatible API is a good choice. If you’re looking for more control over access and key management, the B2 Native API is the way to go.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;It looks like &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;restic&#x2F;restic&#x2F;pull&#x2F;3886#issuecomment-1242917855&quot;&gt;this github comment&lt;&#x2F;a&gt; is the source of that warning showing that the b2 library used has been a maintenance burden for the project.&lt;&#x2F;p&gt;
&lt;p&gt;Amusingly, and as per the warning above, the S3 api uses hide file rather than delete in the first place! I guess I&#x27;ll be following that recommendation...&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>ARM Templates: list*() &amp; reference() functions in variables workaround</title>
          <pubDate>Mon, 28 Jun 2021 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/arm-template-list-variables/</link>
          <guid>https://pricey.uk/blog/arm-template-list-variables/</guid>
          <description xml:base="https://pricey.uk/blog/arm-template-list-variables/">&lt;p&gt;Use ARM templates enough and eventually you&#x27;ll wish to use one of the &lt;code&gt;list*()&lt;&#x2F;code&gt; functions or &lt;code&gt;reference()&lt;&#x2F;code&gt; in your variables.&lt;&#x2F;p&gt;
&lt;p&gt;For example, you have multiple app services which require near identical appsettings. You&#x27;d like to define this object&#x2F;array once, then reuse multiple times elsewhere in the template. Who likes repeating themselves? Unfortunately one of those settings includes e.g. a storage account access key or a &lt;code&gt;reference()&lt;&#x2F;code&gt; to grab an application insights key...&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Azure&#x2F;azure-quickstart-templates&#x2F;issues&#x2F;1503&quot;&gt;Unfortunately, it&#x27;s well documented that this is not supported:&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The template function &#x27;listKeys&#x27; is not expected at this location&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;</description>
      </item>
      <item>
          <title>CVE-2020-15228 redux: Azure DevOps Pipelines RCE</title>
          <pubDate>Mon, 22 Mar 2021 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/ado-pipelines-remote-code-execution/</link>
          <guid>https://pricey.uk/blog/ado-pipelines-remote-code-execution/</guid>
          <description xml:base="https://pricey.uk/blog/ado-pipelines-remote-code-execution/">&lt;p&gt;Reading hackernews, I came across &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bugs.chromium.org&#x2F;p&#x2F;project-zero&#x2F;issues&#x2F;detail?id=2070&amp;amp;can=2&amp;amp;q=&amp;amp;colspec=ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary&amp;amp;cells=ids&quot;&gt;Issue 2070: Github: Widespread injection vulnerabilities in Actions&lt;&#x2F;a&gt;. While I&#x27;ve yet to use github actions seriously, I recognised the feature described as near idential to Azure DevOps&#x27; &quot;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.microsoft.com&#x2F;en-us&#x2F;azure&#x2F;devops&#x2F;pipelines&#x2F;scripts&#x2F;logging-commands?view=azure-devops&amp;amp;tabs=bash&quot;&gt;Logging Commands&lt;&#x2F;a&gt;&quot; and decided to look at whether they were vulnerable to the same issue. They are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Azure DevOps suffers from the same vulnerability.&lt;&#x2F;li&gt;
&lt;li&gt;The problem was reported through the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.microsoft.com&#x2F;en-us&#x2F;msrc&#x2F;bounty-azure-devops?rtc=1&quot;&gt;Microsoft Azure DevOps Bounty Program&lt;&#x2F;a&gt; and confirmed by Microsoft.&lt;&#x2F;li&gt;
&lt;li&gt;An opt-in mitigation was released this year which I describe below.&lt;&#x2F;li&gt;
&lt;li&gt;Azure DevOps users remain vulnerable by default, unless they take (in my opinion) unreasonably cumbersome precautions.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;</description>
      </item>
      <item>
          <title>Restic backups to B2 without delete</title>
          <pubDate>Fri, 30 Oct 2020 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/restic-backups-without-delete/</link>
          <guid>https://pricey.uk/blog/restic-backups-without-delete/</guid>
          <description xml:base="https://pricey.uk/blog/restic-backups-without-delete/">&lt;p&gt;&lt;strong&gt;Update 2023-03-28:&lt;&#x2F;strong&gt; Restic now supports limited keys by default, and also recommends the B2 S3 api instead. See &lt;a href=&quot;https:&#x2F;&#x2F;pricey.uk&#x2F;blog&#x2F;restic-backups-without-delete-in-2023&#x2F;&quot;&gt;here&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;original-post&quot;&gt;Original Post:&lt;&#x2F;h1&gt;
&lt;p&gt;Since setting up restic to back up to b2 I had embarassingly missunderstood the following UI wording around lifecycle settings:

&lt;a href=&quot;Screenshot_2020-10-30 B2 Cloud Storage Buckets.png&quot;&gt;
    &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;pricey.uk&amp;#x2F;processed_images&amp;#x2F;Screenshot_2020-10-30 B2 Cloud Storage Buckets.d75d93b40fad08df.png&quot; &#x2F;&gt;
&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I had assumed that this meant that all versions of the file would be maintained, no matter what clients did. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.backblaze.com&#x2F;b2&#x2F;docs&#x2F;lifecycle_rules.html&quot;&gt;The B2 docs&lt;&#x2F;a&gt; are much clearer, explaining that these rules are really only automation on your existing files. They&#x27;re not blocks&#x2F;holds&#x2F;locks which can take any action before or affect api calls.&lt;&#x2F;p&gt;
&lt;p&gt;In short: Lifecycle Rules schedule cleaning up version history, they don&#x27;t prevent you deleting that version history.&lt;&#x2F;p&gt;
&lt;p&gt;One of the capabilities I want from my backup system is that the system backing data up should not also be able to destroy existing backups. (I&#x27;m not bothered about it reading previous backups) I had assumed lifecycle rules gave me this, I was wrong, time for a quick fix...&lt;&#x2F;p&gt;
&lt;p&gt;The obvious solution is to &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.backblaze.com&#x2F;b2&#x2F;docs&#x2F;b2_create_key.html&quot;&gt;restrict the capabilities of the b2 api key&lt;&#x2F;a&gt; during creation, specifically to omit &lt;code&gt;deleteFiles&lt;&#x2F;code&gt;. Unfortunately, restic doesn&#x27;t currently handle this well, for example during basic backups it requires the ability to delete files in the &lt;code&gt;locks&#x2F;&lt;&#x2F;code&gt; directory and will complain loudly. There are a few &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;restic&#x2F;restic&#x2F;issues&#x2F;2134&quot;&gt;open issues&lt;&#x2F;a&gt; and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;restic&#x2F;restic&#x2F;pull&#x2F;2887&quot;&gt;existing&lt;&#x2F;a&gt; [PR]https:&#x2F;&#x2F;github.com&#x2F;restic&#x2F;restic&#x2F;pull&#x2F;2398(https:&#x2F;&#x2F;github.com&#x2F;restic&#x2F;restic&#x2F;pull&#x2F;2398)&#x27;s but nothing yet merged.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;enter-rclone&quot;&gt;Enter rclone&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;restic.net&#x2F;blog&#x2F;2018-04-01&#x2F;rclone-backend&#x2F;&quot;&gt;A few years ago rclone gained support for serving storage to restic via it&#x27;s api&lt;&#x2F;a&gt; and since rclone &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rclone.org&#x2F;b2&#x2F;#b2-hard-delete&quot;&gt;supports using soft delete by default&lt;&#x2F;a&gt; swapping to this backend is pretty trivial.&lt;&#x2F;p&gt;
&lt;p&gt;One of the best bits is that you can continue to use your existing config, the repository format is unchanged.&lt;&#x2F;p&gt;
&lt;p&gt;The first thing to do is to generate a new key without &lt;code&gt;deleteFiles&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ b2 authorize-account
Using https:&#x2F;&#x2F;api.backblazeb2.com
Backblaze application key ID: &amp;lt;account key id&amp;gt;
Backblaze application key: 

$ b2 create-key --bucket bucketname keyname listBuckets,listFiles,readFiles,writeFiles
&amp;lt;app key id&amp;gt; &amp;lt;app key secret&amp;gt;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;...and then take that output to set up an rclone backend. You can either go through &lt;code&gt;rclone config&lt;&#x2F;code&gt; (See &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rclone.org&#x2F;b2&#x2F;#b2-hard-delete&quot;&gt;their docs&lt;&#x2F;a&gt; for an example) or just drop a file into place:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ cat ~&#x2F;.config&#x2F;rclone&#x2F;rclone.conf
[b2]
type = b2
account = &amp;lt;app key id&amp;gt;
key = &amp;lt;app key secret&amp;gt;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then all that&#x27;s left is to update your backup script:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;e.g. if previously it was&lt;pre&gt;&lt;code&gt;b2:bucketname:foldername
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
then now it&#x27;ll be&lt;pre&gt;&lt;code&gt;rclone:b2:bucketname&#x2F;foldername
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
(Note that the second part (&lt;code&gt;b2&lt;&#x2F;code&gt;) now refers to the name of the rclone backend, not the type. e.g. the bit within the square brackets of rclone.conf config)&lt;&#x2F;li&gt;
&lt;li&gt;Alter the options rclone is called with. Annoyingly, even though rclone uses soft delete in b2 by default, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;restic.readthedocs.io&#x2F;en&#x2F;stable&#x2F;030_preparing_a_new_repo.html#other-services-via-rclone&quot;&gt;restic sets --b2-hard-delete by default...&lt;&#x2F;a&gt; so add the following option whenever you run restic:&lt;pre&gt;&lt;code&gt;-o rclone.args=&amp;quot;serve restic --stdio&amp;quot;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;back-to-the-lifecycle&quot;&gt;Back to the lifecycle...&lt;&#x2F;h2&gt;
&lt;p&gt;Beyond &lt;code&gt;restic forget&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;prune&lt;&#x2F;code&gt; to manage old snapshots, we&#x27;ve now got to consider cleaning up soft deleted files. Given my backups are largely additive, &lt;code&gt;forget&lt;&#x2F;code&gt; rarely frees much space so it&#x27;s not my biggest priority.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rclone.org&#x2F;b2&#x2F;#versions&quot;&gt;rclone provides a handy &lt;code&gt;cleanup&lt;&#x2F;code&gt; command&lt;&#x2F;a&gt;, but it&#x27;s very tempting to go back to where I began and let Backblaze b2 lifecycles clean them up without any extra scheduling on your own infrastructure.&lt;&#x2F;p&gt;
&lt;p&gt;Obligatory https:&#x2F;&#x2F;restic.readthedocs.io&#x2F;en&#x2F;stable&#x2F;045_working_with_repos.html#checking-integrity-and-consistency reminder.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Multi-repos KISS</title>
          <pubDate>Sat, 26 Sep 2020 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/project-and-repos/</link>
          <guid>https://pricey.uk/blog/project-and-repos/</guid>
          <description xml:base="https://pricey.uk/blog/project-and-repos/">&lt;p&gt;I have never worked in a monorepo professionally.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>LXD performance observation</title>
          <pubDate>Tue, 26 May 2020 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/lxd-performance/</link>
          <guid>https://pricey.uk/blog/lxd-performance/</guid>
          <description xml:base="https://pricey.uk/blog/lxd-performance/">&lt;p&gt;You might want to consider enabling tmpfs...&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>AppArmor hat &amp; child profiles</title>
          <pubDate>Thu, 19 Mar 2020 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/apparmor-child-and-hat-profiles/</link>
          <guid>https://pricey.uk/blog/apparmor-child-and-hat-profiles/</guid>
          <description xml:base="https://pricey.uk/blog/apparmor-child-and-hat-profiles/">&lt;p&gt;My &lt;a href=&quot;https:&#x2F;&#x2F;pricey.uk&#x2F;blog&#x2F;not-using-onlyoffice&#x2F;&quot;&gt;last post&lt;&#x2F;a&gt; omitted the real reason I hadn&#x27;t swapped to OnlyOffice was that I was too lazy to look further into apparmor. Allowing dash to inherit the php permissions with &lt;code&gt;&#x2F;bin&#x2F;dash ix,&lt;&#x2F;code&gt; is one solution but for other reasons, I wanted to write a more contained profile to spawn dash within. Searching the internet &amp;amp; reading &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;apparmor&#x2F;apparmor&#x2F;-&#x2F;wikis&#x2F;QuickProfileLanguage&quot;&gt;my favourite apparmor docs&lt;&#x2F;a&gt; didn&#x27;t enlighten.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Why I&#x27;m not using ONLYOFFICE yet.</title>
          <pubDate>Wed, 26 Feb 2020 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/not-using-onlyoffice/</link>
          <guid>https://pricey.uk/blog/not-using-onlyoffice/</guid>
          <description xml:base="https://pricey.uk/blog/not-using-onlyoffice/">&lt;p&gt;I&#x27;m a huge fan of Nextcloud and version 18 brought &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nextcloud.com&#x2F;blog&#x2F;how-to-install-onlyoffice-in-nextcloud-hub-and-new-integration-feature&#x2F;&quot;&gt;great integration with ONLYOFFICE&lt;&#x2F;a&gt;. I&#x27;m not using it though because it ships with binaries that aren&#x27;t always straightforward to execute.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Connection reset...</title>
          <pubDate>Thu, 28 Nov 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/connection-reset/</link>
          <guid>https://pricey.uk/blog/connection-reset/</guid>
          <description xml:base="https://pricey.uk/blog/connection-reset/">&lt;p&gt;After switching energy supplier, I discovered I couldn&#x27;t connect to their website.&lt;&#x2F;p&gt;
&lt;p&gt;This is an explanation with notes of how I&#x27;ve attempted to diagnose the issue so far.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Nextcloud, CVE&#x27;s &amp; Apparmor</title>
          <pubDate>Sat, 26 Oct 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/nextcloud-apparmor/</link>
          <guid>https://pricey.uk/blog/nextcloud-apparmor/</guid>
          <description xml:base="https://pricey.uk/blog/nextcloud-apparmor/">&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nextcloud.com&#x2F;blog&#x2F;urgent-security-issue-in-nginx-php-fpm&#x2F;&quot;&gt;Nextcloud&lt;&#x2F;a&gt; and others recently reported on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvename.cgi?name=CVE-2019-11043&quot;&gt;CVE-2019-11043&lt;&#x2F;a&gt; which looks like a particularly nasty RCE affecting only nginx+php-fpm with certain configurations.&lt;&#x2F;p&gt;
&lt;p&gt;Unfortunately, the configuration the Nextcloud documentation recommended was one of those vulnerable configurations.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Switching backups to Restic - update</title>
          <pubDate>Fri, 18 Oct 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/changing-backup-update/</link>
          <guid>https://pricey.uk/blog/changing-backup-update/</guid>
          <description xml:base="https://pricey.uk/blog/changing-backup-update/">&lt;p&gt;In &lt;a href=&quot;https:&#x2F;&#x2F;pricey.uk&#x2F;blog&#x2F;changing-backup&#x2F;&quot;&gt;a previous post&lt;&#x2F;a&gt; I mentioned swapping my backups to &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;restic.net&#x2F;&quot;&gt;restic&lt;&#x2F;a&gt;. Since then, I&#x27;ve found my B2 storage costs increased substantially and wanted to figure out why.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Azure DevOps permissions primer</title>
          <pubDate>Fri, 11 Oct 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/azure-devops-permissions/</link>
          <guid>https://pricey.uk/blog/azure-devops-permissions/</guid>
          <description xml:base="https://pricey.uk/blog/azure-devops-permissions/">&lt;p&gt;I often join &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;azure.microsoft.com&#x2F;en-gb&#x2F;services&#x2F;devops&#x2F;&quot;&gt;Azure DevOps&lt;&#x2F;a&gt; projects some time after they were started and can almost guarantee I&#x27;ll find... questionable... permissions have been applied.&lt;&#x2F;p&gt;
&lt;p&gt;If you search for e.g. &quot;azure devops permissions&quot; you&#x27;ll get pages like &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.microsoft.com&#x2F;en-us&#x2F;azure&#x2F;devops&#x2F;organizations&#x2F;security&#x2F;about-permissions?view=azure-devops&quot;&gt;this&lt;&#x2F;a&gt; which only tell half the story, so here&#x27;s a quick primer...&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Switching backups to Restic</title>
          <pubDate>Sun, 01 Sep 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/changing-backup/</link>
          <guid>https://pricey.uk/blog/changing-backup/</guid>
          <description xml:base="https://pricey.uk/blog/changing-backup/">&lt;p&gt;I have used &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.duplicati.com&#x2F;&quot;&gt;Duplicati&lt;&#x2F;a&gt; uneasily for some time to back up my personal server which hosts Nextcloud and other bits.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>First thoughts on Zola</title>
          <pubDate>Mon, 19 Aug 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/first-thoughts-on-zola/</link>
          <guid>https://pricey.uk/blog/first-thoughts-on-zola/</guid>
          <description xml:base="https://pricey.uk/blog/first-thoughts-on-zola/">&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;Zola&lt;&#x2F;a&gt; is a static site generator in Rust.&lt;&#x2F;p&gt;
&lt;p&gt;Wanting to blog a bit more and having a passing interest in Rust, I figured I might as well rebuild my blog rather than actually write anything...&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Invoke-ASCmd Caches xmla?</title>
          <pubDate>Mon, 12 Aug 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/invoke-ascmd/</link>
          <guid>https://pricey.uk/blog/invoke-ascmd/</guid>
          <description xml:base="https://pricey.uk/blog/invoke-ascmd/">&lt;p&gt;tldr: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.microsoft.com&#x2F;en-us&#x2F;powershell&#x2F;module&#x2F;sqlserver&#x2F;invoke-ascmd?view=sqlserver-ps&quot;&gt;&lt;code&gt;Invoke-ASCmd&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; caches xmla files somewhere. Always provide the absolute path to &lt;code&gt;Invoke-ASCmd -InputFile&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>Should I hand over my account &amp; card details?</title>
          <pubDate>Mon, 03 Oct 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/should-i-hand-over-my-account-card/</link>
          <guid>https://pricey.uk/blog/should-i-hand-over-my-account-card/</guid>
          <description xml:base="https://pricey.uk/blog/should-i-hand-over-my-account-card/">&lt;p&gt;While logging in to online banking...&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>.uk domain transfers are scary</title>
          <pubDate>Fri, 03 Jun 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/uk-domain-transfers-are-scary/</link>
          <guid>https://pricey.uk/blog/uk-domain-transfers-are-scary/</guid>
          <description xml:base="https://pricey.uk/blog/uk-domain-transfers-are-scary/">&lt;p&gt;.uk transfers are a little different:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;You instruct your old registrar to change the &quot;IPS tag&quot; to point the domain to your new registrar.&lt;&#x2F;li&gt;
&lt;li&gt;You tell your new registrar that the domain just assigned to them is yours.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The new registrar then dutifully updates all of Nominet&#x27;s records. Even if the name... email... address... you provided them with bears no relation to the existing (private?) registration information. Who cares if you had 2 factor authentication enabled on the original Nominet account, your domain is gone.&lt;&#x2F;p&gt;
&lt;p&gt;Nominet says the onus is on the registrar to ensure they verify you&#x27;re the owner when going through this process. But they don&#x27;t?&lt;&#x2F;p&gt;
&lt;p&gt;What&#x27;s to stop someone scraping whois records (that IPS tag is public) and racing to claim the domains you&#x27;re transferring before you do?&lt;&#x2F;p&gt;
&lt;p&gt;Apparently nothing. A few weeks ago I ran a little test. I registered a new domain at one registrar and immediately asked they change the IPS tag to another. A coworker watched over my shoulder as I retrieved the whois details for my domain to see the tag change, but then I got distracted looking for cake&#x2F;looking over their shoulder. They set up a new account at the second registrar and claimed the domain, using no secret information and without either registrar or Nominet gaining my consent.&lt;&#x2F;p&gt;
&lt;p&gt;What am I missing? Do some registrars I haven&#x27;t tried put effort into verifying your ownership? Is it just a few bad actors?&lt;&#x2F;p&gt;
&lt;p&gt;UPDATE: One registrar I&#x27;ve contacted has now promised they&#x27;ve updated their systems to email the owner listed by Nominet for confirmation, before handing over the domain. Minor success...&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Chromecasts, Netflix &amp; UI-200</title>
          <pubDate>Mon, 23 Mar 2015 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/netflix-and-ui-200/</link>
          <guid>https://pricey.uk/blog/netflix-and-ui-200/</guid>
          <description xml:base="https://pricey.uk/blog/netflix-and-ui-200/">&lt;p&gt;My Chromecast has regularly been refusing to play Netflix streams recently with error ui-200.&lt;&#x2F;p&gt;</description>
      </item>
      <item>
          <title>identifying to the freenode testnet with certfp</title>
          <pubDate>Fri, 06 Apr 2012 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://pricey.uk/blog/foo-identifying-to-freenode-testnet-with-certfp/</link>
          <guid>https://pricey.uk/blog/foo-identifying-to-freenode-testnet-with-certfp/</guid>
          <description xml:base="https://pricey.uk/blog/foo-identifying-to-freenode-testnet-with-certfp/">&lt;p&gt;freenode will be upgrading their services very soon. One of the major new features that this upgrade will bring is the ability to identify using ssl certificates. Here&#x27;s a very quick guide on how to get started.&lt;&#x2F;p&gt;</description>
      </item>
    </channel>
</rss>
