Index: src/views/pages/admin-updates.ejs
===================================================================
--- src/views/pages/admin-updates.ejs	(revision fe6aac98b367d4205ad391eb328f83aeaea2483f)
+++ src/views/pages/admin-updates.ejs	(revision 7a235bc791bc3b8ba691a00e044c077b2f6caded)
@@ -38,5 +38,5 @@
     </div>
 
-    <% if (canCheck) { %>
+    <% if (canCheck && canSelfUpdate) { %>
     <form method="post" action="/admin/updates/run" class="set-form"
           onsubmit="return confirm('<%= t('aupd.run_confirm') %>');">
@@ -45,4 +45,7 @@
       </button>
     </form>
+    <% } else if (typeof manualCommand !== 'undefined' && manualCommand && !upToDate) { %>
+    <p class="set-help" style="margin:.2rem 0 .45rem"><%= t('aupd.manual_hint') %></p>
+    <pre class="upd-cmd"><code><%= manualCommand %></code></pre>
     <% } %>
 
@@ -76,4 +79,6 @@
 .upd-desc { color: var(--ink-muted); }
 .upd-status { margin: 1.1rem 0; }
+.upd-cmd { background: var(--paper); border: 1px solid var(--rule); border-radius: 6px; padding: .6rem .8rem; margin: 0; overflow-x: auto; }
+.upd-cmd code { font-size: .9em; }
 .upd-badge { font-size: .8rem; font-weight: 700; padding: .25rem .7rem; border-radius: 20px; }
 .upd-badge.ok { background: #d1fae5; color: #065f46; }
