{"id":16644890,"url":"https://github.com/toyama0919/envault","last_synced_at":"2025-10-30T12:31:18.974Z","repository":{"id":62558127,"uuid":"67026796","full_name":"toyama0919/envault","owner":"toyama0919","description":null,"archived":false,"fork":false,"pushed_at":"2017-12-21T02:21:23.000Z","size":21,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-26T00:42:15.293Z","etag":null,"topics":["dotenv","ruby","vault","yaml"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/toyama0919.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-31T10:11:41.000Z","updated_at":"2017-08-20T00:11:04.000Z","dependencies_parsed_at":"2022-11-03T06:45:42.353Z","dependency_job_id":null,"html_url":"https://github.com/toyama0919/envault","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toyama0919%2Fenvault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toyama0919%2Fenvault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toyama0919%2Fenvault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toyama0919%2Fenvault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toyama0919","download_url":"https://codeload.github.com/toyama0919/envault/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238968197,"owners_count":19560585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotenv","ruby","vault","yaml"],"created_at":"2024-10-12T08:12:37.710Z","updated_at":"2025-10-30T12:31:13.645Z","avatar_url":"https://github.com/toyama0919.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# envault\n[![Build Status](https://secure.travis-ci.org/toyama0919/envault.png?branch=master)](http://travis-ci.org/toyama0919/envault)\n[![Gem Version](https://badge.fury.io/rb/envault.svg)](http://badge.fury.io/rb/envault)\n\nEncrypt secret information environment variables by yaml.\n\n## Settings(Environment Variables)\n```\nexport ENVAULT_PASSPHRASE=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nexport ENVAULT_SIGN_PASSPHRASE=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nexport ENVAULT_SALT=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n```\n\n## Settings(yaml file)\n```\ndevelopment:\n  passphrase: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n  sign_passphrase: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n  salt: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n  prefix: ENVAULT_\n\nstaging:\n  passphrase: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n  sign_passphrase: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n  salt: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n  prefix: ENVAULT_\n\nproduction:\n  provider: kms\n  key_id: XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n  prefix: ENVAULT_\n```\n\n* AWS KMS support. \n\n## Encrypt and Decrypt\n```bash\n$ cat .env\nUSERNAME_A: hogehoge\nUSERNAME_B: fugafuga\nUSERNAME_C: mogomogo\nPASSWORD_A: hogehoge\nPASSWORD_B: fugafuga\nPASSWORD_C: mogomogo\nAPI_KEY_A: hogehoge\nAPI_KEY_B: fugafuga\nAPI_KEY_C: mogomogo\n\n## encrypt file\n$ envault -e -s .env -c envault.yml --profile staging -k '^PASSWORD_.*' '^API_KEY_.*' \u003e .env.encrypt\n$ cat .env.encrypt\nUSERNAME_A: \"hogehoge\"\nUSERNAME_B: \"fugafuga\"\nUSERNAME_C: \"mogomogo\"\nENVAULT_PASSWORD_A: \"VmI4TkcwYXFRdnp3cTNINFo5NHZNWWtUakd4WE9iWDhJdFIzVnQydXlMaz0tLU5CS2JONW1FalorMGxsOGxUYmpXUFE9PQ==--3e301c251f5a7cf0e6280daa3bc14cc04c2cbff492758028c9e5fd6ddc72660e\"\nENVAULT_PASSWORD_B: \"QzI1eFZnampSZkk3QWxEYkZjemNlMVpmWWVEVFluZjhJV01zS3JKNUlvST0tLUNvWDdNWVFGMUMwVGEvaTNFMkJVU2c9PQ==--d58c39f5e71b382f2d2778e8c02c58339ed330e0dc31067ed6544fcb94397700\"\nENVAULT_PASSWORD_C: \"eGo0S3pLRWV0OFRrdVRzTmwvZlR3VkN6a2xjeHpvcHV0ZlZMenNOUm1Wbz0tLS80WjFuRzQrQ29uSU5SbDBSOGUyRlE9PQ==--7c2342c9533b70af50be5cf1dd12aa66f595263ea4c8aa347b185a7a8e57fb3c\"\nENVAULT_API_KEY_A: \"QThLSGF4VXNST3ZXL0VTVURzMlQ3aUE2aXppTlc5aUxUWk9Xa0hXS25NYz0tLTAxWlI0OU0zdnZXUG1MdmtYY2FZK0E9PQ==--fff50bafac593d6c50da369f1e040e0f6db8623299078ccda029bbeed12a93c7\"\nENVAULT_API_KEY_B: \"cWdFS21HdnArNlBzcFhremhFNTJzdzhtYkNwWUIrb2dzekFsbzZxQjRsQT0tLWZUZTdpYW1Bc2xqRXcvMjB4eDRNc1E9PQ==--edb6d0bace9f1cd4c9eeef0a9289d43fd6724625e601aa46e9ebb12f6405efb6\"\nENVAULT_API_KEY_C: \"YllDcDhYUTJGZWhTRjBaQTU4L3RlZitzYVN3OTV6OXhSbkZHbFBWaWF3cz0tLVo1MGFZVkNWQ3g2UXdwRlBFaW43MWc9PQ==--fd0642530754f235856f9ebba252bb34156666498433e05c2ce29573aad6ec69\"\n\n## decrypt file\n$ envault -d -s .env.encrypt -c envault.yml --profile staging\nUSERNAME_A: \"hogehoge\"\nUSERNAME_B: \"fugafuga\"\nUSERNAME_C: \"mogomogo\"\nPASSWORD_A: \"hogehoge\"\nPASSWORD_B: \"fugafuga\"\nPASSWORD_C: \"mogomogo\"\nAPI_KEY_A: \"hogehoge\"\nAPI_KEY_B: \"fugafuga\"\nAPI_KEY_C: \"mogomogo\"\n\n## if use other profile, Error\n$ envault -d -s .env.encrypt -c envault.yml --profile production                                                                                            1 ↵\n/Users/toyama-h/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-4.2.5/lib/active_support/message_verifier.rb:49:in `verify': ActiveSupport::MessageVerifier::InvalidSignature (ActiveSupport::MessageVerifier::InvalidSignature)\n        from /Users/toyama-h/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-4.2.5/lib/active_support/message_encryptor.rb:64:in `decrypt_and_verify'\n        from /Users/toyama-h/Dropbox/github/envault/lib/envault/core.rb:51:in `block in decrypt_process'\n        from /Users/toyama-h/Dropbox/github/envault/lib/envault/core.rb:49:in `each'\n        from /Users/toyama-h/Dropbox/github/envault/lib/envault/core.rb:49:in `map'\n        from /Users/toyama-h/Dropbox/github/envault/lib/envault/core.rb:49:in `decrypt_process'\n        from /Users/toyama-h/Dropbox/github/envault/lib/envault/core.rb:44:in `decrypt_yaml'\n        from /Users/toyama-h/Dropbox/github/envault/lib/envault/cli.rb:74:in `block in decrypt_file'\n        from /Users/toyama-h/Dropbox/github/envault/lib/envault/cli.rb:73:in `each'\n        from /Users/toyama-h/Dropbox/github/envault/lib/envault/cli.rb:73:in `decrypt_file'\n        from /Users/toyama-h/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'\n        from /Users/toyama-h/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'\n        from /Users/toyama-h/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'\n        from /Users/toyama-h/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'\n        from /Users/toyama-h/Dropbox/github/envault/bin/envault:6:in `\u003ctop (required)\u003e'\n        from /Users/toyama-h/bin/envault:17:in `load'\n        from /Users/toyama-h/bin/envault:17:in `\u003cmain\u003e'\n```\n\n## reencrypt(config)\n```bash\n$ cat .envault.test\nold_staging:\n  passphrase: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n  sign_passphrase: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n  salt: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n  prefix: OLD_ENVAULT_\n\nstaging:\n  passphrase: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n  sign_passphrase: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n  salt: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n  prefix: ENVAULT_\n\n$ cat .env.encrypt\nOLD_ENVAULT_A: \"aaaaaaaaaaaaaa\"\nOLD_ENVAULT_B: \"bbbbbbbbbbbbbbb\"\nC: \"hoge\"\n\n$ envault reencrypt_file -s .env.encrypt -c ~/.envault --from_profile old_staging --to_profile staging --overwrite\n\n$ cat .env.encrypt\nENVAULT_A: \"ccccccccccccccc\"\nENVAULT_B: \"ddddddddddddddd\"\nC: \"hoge\"\n\n```\n\n## Load AND command(Environment Variables)\n```bash\n$ envault load -s .env.encrypt --command 'echo $PASSWORD_A'\nhogehoge\n```\n\n## Load Application(Environment Variables)\n```bash\nrequire 'envault'\nEnvault.load('.env.encrypt')\np ENV['PASSWORD_A']\n#=\u003e hogehoge\n```\n\n## Load Application(Profile)\n```bash\nrequire 'envault'\nEnvault.load_with_profile('.env.encrypt', config: '.envault', profile: 'staging')\np ENV['PASSWORD_B']\n#=\u003e fugafuga\n```\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n    gem 'envault'\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install envault\n\n## Synopsis\n\n    $ envault\n\n## Contributing\n\n1. Fork it\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create new [Pull Request](../../pull/new/master)\n\n## Information\n\n* [Homepage](https://github.com/toyama0919/envault)\n* [Issues](https://github.com/toyama0919/envault/issues)\n* [Documentation](http://rubydoc.info/gems/envault/frames)\n* [Email](mailto:toyama0919@gmail.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoyama0919%2Fenvault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoyama0919%2Fenvault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoyama0919%2Fenvault/lists"}