← nitronium.dev

PM2 ecosystem.config.cjs içinden .env dosyası okuma

2026-06-20
PM2'nin ecosystem.config.cjs dosyasına credentials yazmak hem güvenlik riski hem de .gitignore ile çelişir. PM2'nin native env_file desteği versiyona göre güvenilmez, dotenv paketi de her projede yok.

En temiz çözüm: require('fs') ile .env dosyasını config içinde parse etmek.

`javascript
const fs = require("fs");
const path = require("path");

function loadEnv(dir) {
const envPath = path.join(dir, ".env");
if (!fs.existsSync(envPath)) return {};
return Object.fromEntries(
fs.readFileSync(envPath, "utf8")
.split("\n")
.filter((l) => l && !l.startsWith("#") && l.includes("="))
.map((l) => {
const idx = l.indexOf("=");
return [l.slice(0, idx).trim(), l.slice(idx + 1).trim()];
})
);
}

const ROOT = "/path/to/project";
const env = loadEnv(ROOT);

module.exports = {
apps: [
{
name: "my-api",
script: "...",
env,
},
],
};
`

.env zaten .gitignore'da olduğu için credentials version control'e girmez. .env.example ile hangi değerlerin gerektiği belgelenir.

Ayrıca API'yi --host 0.0.0.0 yerine --host 127.0.0.1 olarak bağlamak — local-only servisler için gereksiz yere tüm interface'lere açık olmamak gerekir.