Using systemd timers Requirements Two parts working together: systemd timer systemd service Example: borgmatic.service (i.e. /usr/lib/systemd/system/borgmatic.service) borgmatic.timer (i.e. /usr/lib/systemd/system/borgmatic.timer) Adjusting the timer Default Timer Listing /usr/lib/systemd/system/borgmatic.timer [Unit] Description=Run borgmatic backup [Timer] OnCalendar=daily Persistent=true RandomizedDelaySec=3h [Install] WantedBy=timers.target ✎ - From the Docs -▸ Persistent=true If true, the time when the service unit was last triggered is stored on disk. When the timer is activated, the service unit is triggered immediately if it would have been triggered at least once during the time when the timer was inactive. ...
Traefik: Enable Http3
Enable Http3 with Traefik using Docker Compose Change Docker Compose File Because http/3 uses UDP we need to also take care of the firewall that usually blocks UDP traffic on HTTPS Port 443. To enable http3 in Traefik V3, add the following to your docker-compose.yml file: services: traefik: image: traefik:v3 container_name: "traefik" restart: unless-stopped command: - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entryPoints.websecure.address=:443" # Add the following lines - "--entrypoints.websecure.http3=true" - "--entrypoints.websecure.http3.advertisedport=443" ports: # Docker only exposes TCP by default, so we need to expose UDP as well - "443:443/tcp" - "443:443/udp" Test if http3 is enabled ╭─traefik@www.vaduzz.de in repo: garden on main [!?] took 0s ╰─λ curl -Iv --http3 https://www.vaduzz.de * Host www.vaduzz.de:443 was resolved. [...] * using HTTP/3 * [HTTP/3] [0] OPENED stream for https://www.vaduzz.de/ * [HTTP/3] [0] [:method: HEAD] * [HTTP/3] [0] [:scheme: https] * [HTTP/3] [0] [:authority: www.vaduzz.de] * [HTTP/3] [0] [:path: /] * [HTTP/3] [0] [user-agent: curl/8.15.0] * [HTTP/3] [0] [accept: */*] > HEAD / HTTP/3 > Host: www.vaduzz.de [...]
Sensirion Sps30 Experiments
Sensirion SPS30 Experiments For some days an air purifier is doing its work here, leading to significant improvements but only if running in manual mode, the automatic mode seems lacking, at least according to my nose. Because this is not very scientific, I decided to connect another sensor to my pc and see if the values somewhere else in the room differ from what the purifier measures. A possible reason: to measure airquality, you need to transport enough air to the sensor, but what happens if the automatic mode drops fan speeds so low that it’s not enough to produce accurate reads? ...
Integrate Solix in Homeassistant
Integrate Solix in Homeassistant This describes how I added a system with solar panels and smart meter into Homeassistant. Goals achieve an accurate overview of the energy generated, stored and consumed use existing hardware as much as possible Possible Result Should look like this: Possibilities These are possibilities in my environment without buying new stuff. ...
Garden Versioning
Sometimes you should read the changelog Tags were not working properly, which ended up like this: Hugo was complaining in the terminal like this: hugo server --buildDrafts --disableFastRender WARN found no layout file for "html" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination. I went down some rabbit holes and stumpled accross an information from the Hugo Docs ...
Updating Kubernetes on Talos
Upgrading Kubernetes on Talos Introduction I pulled the short straw and the builtin talosctl upgrade-k8s did not work for me and after spending some time investigating and failing to find the solution I just decided to go the long way and update things manually. For Reference: Official Docs v1.10 Upgrade steps Set environment to the correct cluster set -gx KUBECONFIG ~/.config/kubeconfig_hcloud set -gx TALOSCONFIG ~/.config/talosconfig Ensure everything is running fine. In case someone wonders about the command, I’m using oc as kubectl replacement because my brain is hardwired through years of working with this thing. ...
Building Shades
Building Shades Goals pages written in Markdown, deployed as a static site pages pushed to git, rendered automatically without user interaction low-cost, reasonable performance solution Infrastructure kubernetes cluster object storage domain git linux workstation Steps From Zero to First Post install hugo binary create a git repository and, if not public, create an application token for read access create a bucket where your static files for the webpage are stored install kubernetes manifests for cronjob renders static site using hugo pushes to s3 nginx handles serving the static website from s3 to http ingress handles tls termination at the edge configure hugo create a post test locally served page Technical Details Hugo Stuff install hugo binary: https://gohugo.io/installation/ i.e. pacman -S hugo hugo version #does this work? create git repository create application token permissions: repository read git clone <repo> create a bucket Hetzner Cloud public access no versioning hugo new site garden --force edit hugo.toml, look for a nice theme here: https://themes.gohugo.io/ set theme in hugo.toml like theme = 'example' create a post with hugo new content content/posts/something-new.md serve locally hugo server --buildDrafts remember to change draft=true to draft=false in the header of the markdown file commit to repository Kubernetes Stuff Example for Hetzner Cloud NBG1 bucket ...
New Shade
Somewhere in the corner of my mind something kept nagging me to build a space for those not-so-shiny ideas, thoughts and experiments I come across while tinkering. Lately the garbage collection of my human brain tends to be more thorough with collecting information so i think it might be interesting to see where those bits and pieces are leading to. And finally, this is the place… Shades in the Garden Linux Virtualization Containers and Pods Networks Automation Monitoring Below the surface Hugo Object Storage Kubernetes Cronjob Forgejo