Commit Graph

41 Commits

Author SHA1 Message Date
Sven
8e7527ff7f fix(start): webmention poller connects directly to Indiekit, not nginx
nginx port 80 returns 444 (no response) for requests with an unrecognised
Host header. The poller's curl sends Host: 10.100.0.10 (the IP) which
doesn't match any server_name, causing the 180s readiness timeout and
"empty reply from server" on every poll.

Since livefetch v6 builds synthetic HTML from stored properties and no
longer fetches live pages, the poller no longer needs to go through nginx.
It now connects directly to Indiekit on INDIEKIT_BIND_HOST:PORT.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 09:52:24 +01:00
Sven
e63734ee2a fix(start): kill node process on service stop to prevent orphaned port binding
Trap previously only killed the webmention poller, leaving the node process
orphaned on service stop. On restart, the new node instance would fail to bind
port 3000 (EADDRINUSE) causing 502s with clean logs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 12:12:56 +01:00
Sven
3b5d4f1243 fix(start): probe webmention-sender endpoint for readiness, not /status
The root /status responds before MongoDB collections and plugin routes
are fully initialised, causing 502 on the first poll. Now probes the
plugin's own /api/status which only responds once everything is ready.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 18:00:40 +01:00
Sven
8f8c632e87 fix(start): add 5s delay after readiness check before first poll
The /status endpoint becomes available before all plugin routes are
fully mounted, causing a 502 on the first webmention-sender POST.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 17:56:43 +01:00
Sven
8b35fc13fd fix(startup): route webmention poller through nginx via INTERNAL_FETCH_URL
Direct connections from the node jail to itself cause empty replies in
FreeBSD jails. Route through nginx (INTERNAL_FETCH_URL=http://10.100.0.10)
instead, which also provides correct Host and X-Forwarded-Proto headers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 16:45:12 +01:00
Sven
cc1edd81a8 fix(startup): use configurable bind host instead of hardcoded 127.0.0.1
FreeBSD jails often don't have loopback available. The webmention poller
and readiness check now use INDIEKIT_BIND_HOST (defaults to 127.0.0.1
for backward compat). Set INDIEKIT_BIND_HOST=10.100.0.20 in .env.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 16:09:57 +01:00
Sven
4955863bb8 fix(startup): add empty body and timeout to webmention poller curl
The bodyless POST (no Content-Type/Content-Length) caused curl error 52
(empty reply from server). Adding `-d ""` sends proper headers and
`--max-time 300` prevents hangs on long-running webmention processing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 12:18:20 +01:00
svemagie
6a2c38d798 fix: replace startup sleep with readiness check, clean up stale env/config
- start.example.sh: replace fixed sleep 30 with /status poll loop (up to 2min)
  so the webmention poller waits exactly until indiekit is ready, not longer
- indiekit.config.mjs: remove redundant webmentionIoMountPath variable and
  mountPath from webmention-io config (package default /webmentions is correct)
- .env.example: remove all stale proxy and unused WEBMENTION_SENDER_* vars
  (HOST, PORT, ENDPOINT, READY_TIMEOUT, STOP_TIMEOUT, AUTO_POLL) that were
  never read by start.example.sh; keep only WEBMENTION_SENDER_POLL_INTERVAL

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 20:30:55 +01:00
svemagie
c251650371 fix: add 30s startup delay before first webmention poll
The poller fired immediately after indiekit was backgrounded, before
the HTTP server finished initializing — causing curl error 52 (empty
reply). A 30s initial sleep gives indiekit time to become ready.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 20:12:11 +01:00
svemagie
9c90498cbc refactor: simplify start.sh to standard webmention-sender pattern
Remove complex PID tracking, readiness probe, graceful-shutdown and
daemon-parent machinery. Replace with the minimal polling loop from
the @rmdes/indiekit-endpoint-webmention-sender README: generate JWT,
POST to 127.0.0.1 (local), sleep 300s. Also drop the related tuning
vars from .env (WEBMENTION_SENDER_READY_TIMEOUT, STOP_TIMEOUT,
INDIEKIT_STOP_TIMEOUT, KILL_DAEMON_PARENT_ON_SHUTDOWN).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 19:47:46 +01:00
svemagie
fefd91dcf5 chore: commit all changes for deployment 2026-03-11 12:23:27 +01:00
svemagie
be67f61792 feat: update webmention sender endpoint path to /webmentions-sender 2026-03-11 11:55:47 +01:00
svemagie
9c771df5d0 fix: wait for HTTP 200 and increase poller startup timeout to 180s 2026-03-11 11:50:12 +01:00
svemagie
720e23b771 fix: avoid double https:// in webmention sender endpoint construction 2026-03-11 11:46:06 +01:00
svemagie
91c3778fdc fix: apply all patch scripts automatically on startup 2026-03-10 16:30:37 +01:00
svemagie
4eb7c07eb3 Fix homepage SITE_SOCIAL identity defaults parsing 2026-03-09 21:23:50 +01:00
svemagie
31129c48e1 Fix FreeBSD rc.d restart behavior and poller lifecycle 2026-03-09 21:08:56 +01:00
svemagie
529fa81cd0 Add webmention sender auto-poll for bare-metal 2026-03-09 20:10:16 +01:00
svemagie
1365f696f0 fix(activitypub): handle publication host private DNS lookups 2026-03-09 19:39:04 +01:00
svemagie
ad17b697c7 Allow clearing Mastodon migration alias 2026-03-09 18:15:46 +01:00
svemagie
66c77f604f fix(activitypub): suppress noisy fedify docloader 410 logs 2026-03-08 18:47:11 +01:00
svemagie
12de20913d fix(homepage): add de locale patch and robust contentDir for saves 2026-03-08 18:34:07 +01:00
svemagie
d918e4cd52 Ensure ActivityPub outbox requests are RSA-signed 2026-03-08 11:23:54 +01:00
svemagie
9919b1decc Normalize ActivityPub profile URLs to fix WebFinger invalid URL 2026-03-08 11:16:17 +01:00
svemagie
2e4827be9d Patch ActivityPub backend locale fallback for de 2026-03-08 10:58:24 +01:00
svemagie
470d5e0195 Harden listening endpoint runtime error handling 2026-03-08 10:36:10 +01:00
svemagie
269f0b243b Integrate Cloudron security patch patterns into runtime patch pipeline 2026-03-08 05:32:47 +01:00
svemagie
ef484c069d Remove legacy redirect patches and session auto-continue patch 2026-03-08 04:57:27 +01:00
svemagie
98eb54ac63 Auto-continue login flow to password screen 2026-03-08 04:30:54 +01:00
svemagie
8e759a5cb9 Add safe password setup recovery mode 2026-03-08 04:05:06 +01:00
svemagie
1558e8b40e Harden production auth startup and dev-mode access 2026-03-08 04:01:41 +01:00
svemagie
b72b23ed1c prod 2026-03-08 03:51:33 +01:00
svemagie
227e4e3f2a fix(runtime): make sharp optional on FreeBSD startup 2026-03-08 02:14:16 +01:00
svemagie
7a61f4da53 fix(backend): harden mongo startup and files upload locales 2026-03-08 01:51:18 +01:00
svemagie
14d7d16f73 fix(startup): add strict mongo preflight in production 2026-03-08 01:19:47 +01:00
svemagie
dd5a45da92 fix(mongo): require explicit username for auth 2026-03-08 01:14:22 +01:00
svemagie
65b26dec3d fix(runtime): guard conversations and serviceworker path 2026-03-08 01:03:23 +01:00
svemagie
17b730eb04 fix(startup): load .env with dotenv parser 2026-03-08 00:59:08 +01:00
svemagie
e212b164f2 fix(uploads): route browser file uploads via files endpoint 2026-03-08 00:57:07 +01:00
svemagie
e7d0a3d382 fix(uploads): patch endpoint-media scope handling 2026-03-08 00:52:50 +01:00
svemagie
b6d0340e7c fix(backend): harden endpoint and startup config 2026-03-08 00:42:02 +01:00