Compare commits

...
Author SHA1 Message Date
claude-botandClaude Opus 5 faf79549ac fix(wordpress): remove add_filter from wp-config, route xmlrpc through the gate
ci/woodpecker/pr/ci-manifests-test Pipeline was successful
ci/woodpecker/pr/ci-scripts-test Pipeline was successful
ci/woodpecker/pr/pr-review Pipeline was successful
The first deploy returned 500 on every request:

  PHP Fatal error: Uncaught Error: Call to undefined function add_filter()
  in /var/www/html/wp-config.php(128) : eval()'d code

WORDPRESS_CONFIG_EXTRA is eval'd inside wp-config.php, which runs long before
wp-settings.php loads the plugin API. add_filter() does not exist yet at that
point, so the call was fatal on every request.

Removing it exposed the second, worse half: the comment justified the filter by
claiming xmlrpc.php was 'blocked at the ingress'. It was not. The public router
matches '/' as a prefix, so xmlrpc.php was served like any other path — the
claim was written without being checked.

An Ingress has no deny verb, so xmlrpc.php now routes to the Authentik gate
alongside /wp-admin and /wp-login.php: anonymous callers meet Authentik instead
of the XML-RPC endpoint. Nothing on this site uses it — no Jetpack, no mobile
app, no pingbacks worth keeping.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014giKN9N6e5J2DF8QZmVh98
2026-08-16 22:11:25 +02:00
k.renner 5336d9b849 Merge pull request 'feat(wordpress): migrate renner.uno off the Hetzner VM into the cluster' (#492) from wordpress-renner-uno into master
ci/woodpecker/push/deploy-infrastructure Pipeline was successful
Reviewed-on: k.renner/homelab#492
2026-08-16 20:07:03 +00:00
2 changed files with 20 additions and 4 deletions
+6 -4
View File
@@ -64,10 +64,12 @@ spec:
would only fail against a read-only docroot. Plugin and
theme installs are unaffected. */
define('WP_AUTO_UPDATE_CORE', false);
/* xmlrpc.php is blocked at the ingress; this closes the same
door from the inside. Nothing here uses it: no Jetpack,
no mobile app, no pingbacks worth keeping. */
add_filter('xmlrpc_enabled', '__return_false');
/* No add_filter() here. WORDPRESS_CONFIG_EXTRA is eval'd inside
wp-config.php, long before wp-settings.php loads the plugin
API, so any add_filter call is a fatal error on every request
— which is exactly what happened on first deploy. xmlrpc is
handled at the ingress instead, by routing /xmlrpc.php
through the Authentik gate. */
envFrom:
# The eight WordPress salts. Rotating them in OpenBao invalidates
# every session — which is the intended lever, not a side effect.
+14
View File
@@ -76,3 +76,17 @@ spec:
name: ak-outpost-wordpress-gate
port:
number: 9000
# xmlrpc.php would otherwise be served by the public `/` prefix
# router — an earlier version of this file claimed it was "blocked
# at the ingress" while nothing blocked it at all. There is no deny
# verb in an Ingress, so it goes through the gate instead: anonymous
# callers get Authentik, not the XML-RPC endpoint. Nothing on this
# site uses it (no Jetpack, no mobile app, no pingbacks worth
# keeping), so no legitimate caller is affected.
- path: /xmlrpc.php
pathType: Exact
backend:
service:
name: ak-outpost-wordpress-gate
port:
number: 9000