41554 blogs · [ { "id": "01a0d74c-457c-73e1-b3c7-14c614496de2", "title": "A No-Database Link Shortener on Cloudflare Workers", "url": "https://blog.thms.uk/2026/09/link-shortener-cloudflare-workers/", "published_at": "2026-09-23T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe67b99100", "title": "Reducing Docker deploy downtime for Laravel and FrankenPHP", "url": "https://blog.thms.uk/2026/08/docker-deploy-downtime-laravel-frankenphp/", "published_at": "2026-08-15T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe680bda0c", "title": "When restart: always isn't enough: making Compose stacks recover at boot", "url": "https://blog.thms.uk/2026/08/docker-compose-autostart-boot/", "published_at": "2026-08-10T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe68ecee1a", "title": "Exempting an IP from Mastodon's rate limits", "url": "https://blog.thms.uk/2026/08/exempting-ip-from-mastodon-rate-limit/", "published_at": "2026-08-06T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe690deed9", "title": "Setting up OIDC for Mastodon with Pocket ID", "url": "https://blog.thms.uk/2026/07/mastodon-oidc-setup/", "published_at": "2026-07-19T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe69291e68", "title": "TIL: MySQL view security context after a migration", "url": "https://blog.thms.uk/2026/07/mysql-view-definer-migration/", "published_at": "2026-07-16T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe69aa2579", "title": "Everything I self-host (and a few things I don't)", "url": "https://blog.thms.uk/2026/07/self-hosted-services/", "published_at": "2026-07-10T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe69e02d04", "title": "Self-hosting a static site using Forgejo, Headscale, and Caddy", "url": "https://blog.thms.uk/2026/06/self-hosted-blog-forgejo/", "published_at": "2026-06-30T06:00:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe6a931413", "title": "Using a Tailscale exit node on a Docker host", "url": "https://blog.thms.uk/2026/06/docker-tailscale-exit-node/", "published_at": "2026-06-18T06:00:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe6b0fafc4", "title": "Moving Mastodon to Docker Compose", "url": "https://blog.thms.uk/2026/06/moving-mastodon-to-docker/", "published_at": "2026-06-15T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe6bf8b060", "title": "A multi-stage Dockerfile for Laravel and FrankenPHP", "url": "https://blog.thms.uk/2026/06/laravel-frankenphp-dockerfile/", "published_at": "2026-06-11T06:30:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe6cbae070", "title": "Setting up a free Oracle VPS as a reverse proxy", "url": "https://blog.thms.uk/2026/06/oracle-caddy-tailscale-proxy/", "published_at": "2026-06-01T06:00:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe6ce53619", "title": "Auto-Deploying a static site from Forgejo to CloudFlare Pages", "url": "https://blog.thms.uk/2026/05/forgejo-cloudflare-pages/", "published_at": "2026-05-20T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe6d9a7d65", "title": "Re-verifying failed backups with Proxmox Backup Server", "url": "https://blog.thms.uk/2026/05/pbs-reverify/", "published_at": "2026-05-05T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe6e994f42", "title": "FreshRSS mobile improvements", "url": "https://blog.thms.uk/2026/03/freshrss-mobile/", "published_at": "2026-03-23T01:00:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe6ee9fcef", "title": "Self-Hosting Mastodon Behind Cloudflare Tunnel", "url": "https://blog.thms.uk/2026/03/mastodon-cloudflare-tunnel/", "published_at": "2026-03-18T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe6fd0e069", "title": "Setting Up BIMI for Your Email", "url": "https://blog.thms.uk/2026/03/setting-up-bimi/", "published_at": "2026-03-17T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe701a78ac", "title": "On Serving Markdown to AI Agents", "url": "https://blog.thms.uk/2026/02/serving-markdown-to-ai-agents/", "published_at": "2026-02-27T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe70d3d3b0", "title": "Adding Plausible to Uptime Kuma Status Page", "url": "https://blog.thms.uk/2026/02/adding-plausible-to-uptime-kuma-status-page/", "published_at": "2026-02-16T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe718623f0", "title": "Investigating the performance of Laravel's `whereIn` vs `whereIntegerInRaw`", "url": "https://blog.thms.uk/2026/01/laravel-wherein/", "published_at": "2026-01-08T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe71aa0a4c", "title": "Adding Plausible to Mastodon Using nginx `sub_filter`", "url": "https://blog.thms.uk/2026/01/adding-plausible-to-mastodon/", "published_at": "2026-01-05T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe727bac98", "title": "Using Pi-hole as a DNS Server for my Tailnet", "url": "https://blog.thms.uk/2025/12/pihole-for-tailnet/", "published_at": "2025-12-16T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe73499164", "title": "Configuring a Custom Block Page for Pi-hole", "url": "https://blog.thms.uk/2025/11/pi-hole-custom-block-page/", "published_at": "2025-11-17T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe742f5c43", "title": "Seeing the Full Conversation: Fetching Replies on Mastodon", "url": "https://blog.thms.uk/2025/07/fetching-replies-mastodon/", "published_at": "2025-07-21T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe74dc31fc", "title": "Upgrading Mastodon from PostgreSQL 15 to PostgreSQL 17", "url": "https://blog.thms.uk/2025/06/upgrade-postgres-15-17-mastodon/", "published_at": "2025-06-06T06:15:00+00:00" }, { "id": "01a08755-18bd-72dc-9d70-dbbe74e6ab85", "title": "OpenAI's crawler is overriding your Sentry sampling rate", "url": "https://blog.thms.uk/2025/05/openai-traceparent-sentry-sampling/", "published_at": "2025-05-06T06:15:00+00:00" } ] posts Claim your blog
Back to blog.thms.uk
Blog · corpus.blog/blogs/blog.thms.uk/posts

blog.thms.uk

blog.thms.uk

2026

2025