fix(startup): load .env with dotenv parser

This commit is contained in:
svemagie
2026-03-08 00:59:08 +01:00
parent e212b164f2
commit 17b730eb04
2 changed files with 12 additions and 4 deletions
+1
View File
@@ -62,6 +62,7 @@
- `start.sh` is intentionally ignored by Git (`.gitignore`) so server secrets are not committed.
- Use `start.example.sh` as the tracked template and keep real credentials in environment variables (or `.env` on the server).
- Startup scripts parse `.env` with the `dotenv` parser (not shell `source`), so values containing spaces are handled safely.
- Startup scripts run patch helpers before boot (`scripts/patch-lightningcss.mjs`, `scripts/patch-endpoint-media-scope.mjs`, `scripts/patch-endpoint-files-upload-route.mjs`).
- The media scope patch fixes a known upstream issue where file uploads can fail if the token scope is `create update delete` without explicit `media`.
- The files upload route patch fixes browser multi-upload by posting to `/files/upload` (session-authenticated) instead of direct `/media` calls without bearer token.
+11 -4
View File
@@ -3,11 +3,18 @@ set -eu
cd /usr/local/indiekit
# Optional: load environment from local .env file.
# Optional: load environment from local .env file
# (dotenv syntax, supports spaces in values).
if [ -f .env ]; then
set -a
. ./.env
set +a
eval "$(${NODE_BIN:-/usr/local/bin/node} -e '
const fs = require("node:fs");
const dotenv = require("dotenv");
const parsed = dotenv.parse(fs.readFileSync(".env"));
for (const [key, value] of Object.entries(parsed)) {
const safe = String(value).split("\x27").join("\x27\"\x27\"\x27");
process.stdout.write(`export ${key}=\x27${safe}\x27\\n`);
}
')"
fi
: "${SECRET:?SECRET is required}"