Add post: A Read-Only NocoDB Dashboard for a Database on Another Machine
Deploy / build (push) Successful in 28s

EN + ZH twins. The recipe for pointing NocoDB at a MySQL/MariaDB database on
another machine: the Docker SNAT source-IP trap (the DB sees the host IP, not
the container IP), a SELECT-only grant restricted to that one host, the async
source-creation API with no job-status route, the auto-sync that makes a manual
table step unnecessary (and the create-table route that makes junk tables), and
what a read-only source costs (no metadata edits, UTC-labelled DATETIMEs).

Also adds the og-gen TERMINALS and banner-gen BANNERS entries for the slug
(keeping the sibling session's entries untouched) and the generated PNGs.
This commit is contained in:
2026-09-29 00:57:57 +08:00
parent d634385318
commit d1c040d648
6 changed files with 471 additions and 0 deletions
+17
View File
@@ -197,6 +197,23 @@ TERMINALS['why-i-still-bought-a-local-gpu'] = `
<div class="line"><span class="prompt">&nbsp;</span><span class="fix">local: 50 calls · $0.00 · runs on my card</span></div>
`;
TERMINALS['read-only-nocodb-dashboard-for-a-remote-database'] = `
<div class="line"><span class="prompt">$</span><span class="cmd">docker exec mysql-server mysql -h192.168.1.124 -e "SELECT CURRENT_USER();"</span></div>
<div class="line"><span class="prompt">&nbsp;</span><span class="err">[email protected] — the host IP, not the container IP</span></div>
<div class="line"><span class="prompt">$</span><span class="cmd">GRANT SELECT ON appdb.* · source auto-sync</span><span class="fix">→ live ✓</span></div>`;
TERMINALS['migrating-codeigniter-iis-to-openlitespeed'] = `
<div class="line"><span class="prompt">$</span><span class="cmd">curl -sI http://new-host/lifecode</span><span class="err">→ 500</span></div>
<div class="line"><span class="prompt">&nbsp;</span><span class="err">Fatal error: Call to undefined function env() · Constants.php</span></div>
<div class="line"><span class="prompt">&nbsp;</span><span class="err">Fatal error: Cannot call constructor · Welcome.php</span></div>
<div class="line"><span class="prompt">$</span><span class="cmd">pure constants · override initController()</span><span class="fix">→ report renders ✓</span></div>`;
TERMINALS['upgrading-codeigniter-46-to-47'] = `
<div class="line"><span class="prompt">$</span><span class="cmd">composer update codeigniter4/framework</span><span class="fix">4.6.3 → 4.7.4</span></div>
<div class="line"><span class="prompt">INFO</span><span class="cmd">upgrade guide read · 8 breaking changes · none apply</span></div>
<div class="line"><span class="prompt">&nbsp;</span><span class="err">Undefined property Config\\App::$permittedURIChars → 500</span></div>
<div class="line"><span class="prompt">$</span><span class="cmd">merge project-space configs by hand</span><span class="fix">→ report renders ✓</span></div>`;
// ---------- read frontmatter ----------
const postPath = join(ROOT, 'src', 'content', 'posts', `${slug}.md`);
if (!existsSync(postPath)) {