commit 9c62e8333df8ca577b6210df79addaebef4e4a4a
parent dc62a8b75f84b7c9580a34b54745f724b1b0d82b
Author: Daniel Barlow <dan@telent.net>
Date: Sun, 26 Apr 2026 11:57:06 +0100
think
Diffstat:
| M | THOUGHTS.txt | | | 99 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 99 insertions(+), 0 deletions(-)
diff --git a/THOUGHTS.txt b/THOUGHTS.txt
@@ -8649,3 +8649,102 @@ situation that doesn't involve going out to the shed
Also, the log streaming client probably wants to hardcode an ip address
for loghost.telent.net
+
+Sat Apr 4 20:24:25 BST 2026
+
+ht8232 rsz #206
+
+TODO
+
+- add levitate to outsdie
+ - could we add levitate to the tftpboot image
+ and use it to write the final image
+ - levitate chroots to a subdir of /run so won't interfere
+ with phram shenanigans
+
+- single source of truth for wifi secrets
+
+- flash outsdie onto gl-ar750
+- unplug it from the serial port
+- upgrade kernel and audit firewall on lenscap
+- upgrade kernel on old outsdie
+- find omnia, plug in, upgrade kernel and install rotuer config
+
+
+## agenix
+
+agenix stores secrets as age-encrypted files in the nix store, using
+ssh hostkeys as the keys. this might not be ideal if our hosts are
+generating their keys at first boot because it means they won't get
+secrets until after they've booted and the pubkey sucked out and
+the secrets re-encrypted and pushed to the device a second time.
+a device with a wired ethernet doesn't need wireless keys for to be
+ssh-accessible but this does sound potentially chicken-eggy
+
+we'd need to create a keypair for the device at provisioning time, and
+bake the private key into the image, but not put it in the nix
+store. Perhaps we could append it to the image when we write it?
+
+I think agenix is tied also to the nixos-rebuild lifecycle, so each
+device would have to be rebuilt to notice when a secret is rotated
+
+## sops
+
+seems to be tailored to the EC2 use case where a hypervisor is
+available to say that the new instance is actually the new instance and not
+an interloper
+
+
+## certifix w/sops
+
+we could use a certifix cert to identify the device to the secrets
+service, using the pre-shared secret
+
+* the master secrets list should be encrypted at rest, but this means
+we don't have to encrypt it for each device, just for the humans and
+for the https server process
+
+* or we could put an age shared private key into the image, then the
+server process wouldn't need to contain all the decrypted secrets
+
+
+Tue Apr 14 13:16:01 BST 2026
+
+we already have a client key that's used for logs. if we ignore the
+maybe-questionable mechanism for ensuring it belongs to the client
+(which is maybe solvable depending on the client hardware/flashing
+mechanism/filesystem etc) we can use it for authenticating access to
+secrets. we can keep our secrets using SOPS, encrypted using
+~whatever~ (age?) , and have an https server that checks the client
+cert. the https server can have a private key which the sops yaml file
+is encrypted for
+
+> aside: we cold improve the ca signing policy if
+>
+> * we had a way of making a temporary unique-per-client shared key that
+> the CA could check, and embedding it into the client image (preferably
+> without putting it in the nix store). For example, appending it to
+> the image and then having the client scan /dev/mtd3 starting from the
+> end of its filesystem to find it. Finding the end of the filesystem
+> would be fs-dependent (squashfs vs jffs2 vs ubifs vs ...)
+>
+> * or we could rely on functioning uboot with a writable env
+>
+> * or we could embed some other existing unique info into the csr. MAC
+> address?
+
+on the server side we need
+
+- https and client cert checking
+- store the decrption key securely (e.g. with mlock())
+- decrypt the secrets file and serve it on request
+
+could we use some kind of fancy loopback mounts/private filesystem
+namespace thing to good effect here? I don't think we have a problem
+that they'd solve
+
+we can't just decrypt at startup unless we're going to restart every
+time the file changes, which doesn't seem less complicated as it adds
+some kind of inotify to the thigs that can go wrong.
+
+fennel or rust?