Index: src/routes/posts.js
===================================================================
--- src/routes/posts.js	(revision 8ad17845c70fe0c28f24c02668b8d85500158d4c)
+++ src/routes/posts.js	(revision eb2fe0897cef9cbb78c919b3de1e4ba2d3056e5a)
@@ -899,4 +899,20 @@
 });
 
+// Owner likes/boosts a fediverse comment on their own post — directly as the
+// site, no "your server" detour (mirrors /fedi-reply).
+router.post('/posts/:slug/fedi-react', requireSiteManager, async (req, res) => {
+  const site = res.locals.site;
+  if (!site) return res.status(404).send('Site required');
+  const post = db.prepare('SELECT id, slug FROM posts WHERE site_id = ? AND slug = ?').get(site.id, req.params.slug);
+  if (!post) return res.status(404).send('Not found');
+  const parent = ActivityPubService.getInteractionById(req.body.interaction_id);
+  const kind = req.body.kind === 'boost' ? 'boost' : 'like';
+  if (parent && parent.post_id === post.id && parent.object_uri) {
+    ActivityPubService.sendInteraction(site, kind, parent.object_uri, parent.actor_uri)
+      .catch((e) => console.warn('[AP] reaction failed:', e.message));
+  }
+  res.redirect(`${res.locals.siteUrlBase || ''}/${post.slug}#fediverse`);
+});
+
 export default router;
 export { postNeighbors };
