.env を暗号化し、Git 管理可能とする dotenvx を使ってみた
1. .env とは
.env は アプリケーションが参照する環境変数を定義するためのファイルです。
Node.js や Python、Ruby、Go、PHP など多くの言語で共通して利用でき、アプリケーション内で参照されます。
DATABASE_URL=postgres://user:password@localhost:5432/db
API_KEY=xxxxxx
PORT=3000
これらはコード内にベタ書きせず、外部ファイルに切り出すことで以下を実現します。
- 機密情報をソースコードに埋め込まない
- 開発・テスト・本番など環境ごとに設定値を切り替えやすい
- 環境変数の管理が容易になる
2. .env が必要な理由
.env を使う理由は主に以下です。
1. 機密情報の分離
API キーやパスワードはコードに書くべきではありません。
.env に分離することでセキュリティと管理性を両立できます。
2. 環境ごとの設定切り替え
開発環境、本番環境で利用する接続先やキーは当然異なります。
.env にまとめておくことで、切り替えが容易になります。
3. デプロイ時にも便利
CI/CD、Docker、Vercel、Azure Web Apps など、ほとんどのプラットフォームが環境変数を扱う前提で設計されています。
.env を利用することで、アプリの移植性も向上します。
3. .env の課題
便利な .env ですが、大きな問題があります。
課題1: Git で管理できない
.env は秘匿情報を含むため、通常 .gitignore します。
しかし Git 管理しないと、以下の問題が生じます。
- チームメンバー間で
.envを安全に共有できない - バージョン管理されないため、変更履歴が追えない
- 環境ごとにファイルを配布する手間が発生する
課題2: 手作業で配布する必要がある
Slack やメールで共有するのはセキュリティ的に危険です。
秘密情報を zip にしたりパスワードをかけたり…と面倒さもあります。
課題3: DevOps が進むほど扱いが煩雑に
複数の環境があるほど .env の管理が煩雑になります。
GitHub Actions やデプロイ環境が増えると、管理コストは指数的に増加します。
4. dotenvx について
dotenvx は、これらの .env の課題を 暗号化 によって解決するプロダクトです。
dotenvx の特徴
.envを AES256 で暗号化し、.env.encryptedとして保存可能- 暗号化されたファイルを Git にコミットできる
- 複数の
.env.*を統合して扱える - 特定環境のみ復号できるキーを発行できる
- CLI が軽量・高速で導入が簡単
最も重要なのは、
暗号化された .env を GitHub / GitLab に安全に置けるようになる点です。
これにより、チームメンバーや CI/CD で .env を共有する負担が激減します。
5. dotenvx の使い方について
Step1: インストール
プロジェクトローカルにインストールする場合:
npm install dotenvx --save-dev
グローバル利用:
npm install -g dotenvx
Step2: .env を用意する
DATABASE_URL=postgres://user:pass@localhost:5432/app
API_KEY=abcd12345
Step3: 暗号化する
npx dotenvx encrypt
実行すると以下が生成されます。
-
.env.encrypted(AES256で暗号化されたファイル) -
.env.keys(復号用キー)
.env.encrypted は Git 管理可能
.env.keys は 絶対に Git に上げない(.gitignore推奨)
Step4: 復号して実行する
npx dotenvx run -- node app.js
dotenvx が .env.encrypted を自動復号し、アプリを実行します。
Step5: デプロイ環境での利用
デプロイ先では 復号キーを環境変数 DOTENV_KEY に設定しておくだけです。
例(Vercel / Azure / GitHub Actions など)
DOTENV_KEY=xxxxx
あとは同じく dotenvx run で実行すれば OK。
CI/CD の例
- name: Run App
run: npx dotenvx run -- node app.js
env:
DOTENV_KEY: ${{ secrets.DOTENV_KEY }}
まとめ
.env はアプリケーションには欠かせませんが、Git 管理ができないことが最大の課題でした。
dotenvx は
「.env を暗号化 → Git 管理可能 → 必要な環境だけ復号」
というスマートなワークフローを実現します。
-
.envの安全な共有 - 履歴管理のしやすさ
- CI/CD への統合
- 複数環境の統一管理
これらを簡単に実現できるため、個人開発からチーム開発まで幅広く活用できます。
実際に数分で導入できるため、.env 管理で悩んでいる方はぜひ試してみてください。