Description
I'm a non-developer web designer/site owner (WordPress background, ~8 years on shared hosting) evaluating EmDash as a potential WordPress alternative for small client sites. I tested a real deployment on ordinary cPanel shared hosting (AltusHost), which I think represents a meaningful chunk of your target audience if EmDash aims to be a WordPress successor. Many small agencies and site owners are on exactly this kind of hosting, not a VPS.
I hit three distinct issues in sequence trying to get a scaffolded EmDash project (Blog template, Node.js deployment target, SQLite/better-sqlite3) running in production on shared hosting, detailed below.
Expected: the app runs, or documentation clearly flags upfront that this environment won't work.
Actual: three separate blockers surfaced only through trial and error (see steps to reproduce).
Steps to reproduce
- Scaffold a new EmDash project (npm create emdash@latest), choosing Node.js as the deployment target and the default SQLite (better-sqlite3) database
- Deploy to ordinary cPanel/Passenger shared hosting (requires the host to support Node.js 22+ via the Node.js Selector. Many don't by default)
- Run
npm run build directly on the shared hosting account > fails with a JavaScript heap out-of-memory error (V8 FATAL ERROR), due to the shared account's memory ceiling (4GB shared across the whole cPanel account, not dedicated to the build process)
- Workaround: build locally instead, upload the resulting dist/ folder, set it as the Passenger startup file
- Restart the app > runtime failure:
Error: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by .../better-sqlite3/build/Release/better_sqlite3.node)
- This is a hard blocker: the native binary compiled successfully against Node 22, but the server OS's glibc is older than the binary needs at runtime, not fixable without a full OS upgrade on the host's side
Environment
- emdash version: 0.27.0
- Node.js version: 22.22.3
- Runtime: Node (cPanel/Passenger, shared hosting)
- OS: Linux (AlmaLinux/CloudLinux, exact version unknown, managed shared hosting via AltusHost)
- Host: AltusHost, shared hosting plan, cPanel with CloudLinux Node.js Selector
Logs / error output
1. npm install succeeded cleanly on the server, including native compilation of better-sqlite3 with no errors.
2. Running the build directly on shared hosting failed with:
FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory
Out of memory error may be caused by hitting LVE limits
or "Max data size", "Max address space" or "Max resident set" process limits
(Building locally and uploading the dist/ output worked around this.)
3. After deploying the locally-built dist/ output, the app failed at runtime with:
Setup probe failed (non-fatal): Error: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by .../nodevenv/.../better-sqlite3/build/Release/better_sqlite3.node)
at Module._extensions..node (node:internal/modules/cjs/loader:1939:18)
...
at new Database (.../better-sqlite3/lib/database.js:48:64)
at createDialect$1 (.../dist/server/chunks/dialect_C8942KHB.mjs:15:39)
at getDb (.../dist/server/chunks/loader-4K37qA-y_CRg9ZZEp.mjs:536:13) {
code: 'ERR_DLOPEN_FAILED'
}
This confirms the native binary compiled successfully against the server's toolchain, but the server's runtime glibc is older than what the compiled binary requires (2.29+).
Description
I'm a non-developer web designer/site owner (WordPress background, ~8 years on shared hosting) evaluating EmDash as a potential WordPress alternative for small client sites. I tested a real deployment on ordinary cPanel shared hosting (AltusHost), which I think represents a meaningful chunk of your target audience if EmDash aims to be a WordPress successor. Many small agencies and site owners are on exactly this kind of hosting, not a VPS.
I hit three distinct issues in sequence trying to get a scaffolded EmDash project (Blog template, Node.js deployment target, SQLite/better-sqlite3) running in production on shared hosting, detailed below.
Expected: the app runs, or documentation clearly flags upfront that this environment won't work.
Actual: three separate blockers surfaced only through trial and error (see steps to reproduce).
Steps to reproduce
npm run builddirectly on the shared hosting account > fails with a JavaScript heap out-of-memory error (V8 FATAL ERROR), due to the shared account's memory ceiling (4GB shared across the whole cPanel account, not dedicated to the build process)Error: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by .../better-sqlite3/build/Release/better_sqlite3.node)
Environment
Logs / error output