diff --git a/Cargo.lock b/Cargo.lock
index e020f1ce320b872d0662a9e4f69daef31ddb9fbd..b202936a3b599caaa14cf66f7573e9d7dd83dba4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1028,6 +1028,7 @@ dependencies = [
  "durs-module 0.3.0-dev",
  "durs-network 0.3.0-dev",
  "durs-network-documents 0.4.0",
+ "envy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "fern 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1111,6 +1112,7 @@ dependencies = [
  "dup-crypto 0.7.0",
  "durs-common-tools 0.2.0",
  "durs-network-documents 0.4.0",
+ "envy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/lib/core/core/Cargo.toml b/lib/core/core/Cargo.toml
index 5e8b4e7c7bdb54cefa612d8edcb3670268bd7ca4..8e85b938e54bd68862bee35fcc2e2255dfe9ff5c 100644
--- a/lib/core/core/Cargo.toml
+++ b/lib/core/core/Cargo.toml
@@ -24,6 +24,7 @@ durs-message =  { path = "../message" }
 durs-module = { path = "../module" }
 durs-network = { path = "../network" }
 durs-network-documents = { path = "../../dunp/network-documents" }
+envy = "0.4.1"
 failure = "0.1.5"
 fern = { version = "0.5.8", features = ["colored"] }
 log = "0.4.*"
diff --git a/lib/core/core/src/lib.rs b/lib/core/core/src/lib.rs
index edb2da353912e56011a09dee70550890752c20b8..cecf3fb6427c44eb4925c477bbd6306aeb5d1922 100644
--- a/lib/core/core/src/lib.rs
+++ b/lib/core/core/src/lib.rs
@@ -44,6 +44,7 @@ use crate::errors::DursCoreError;
 use dubp_currency_params::CurrencyName;
 use durs_bc::{dbex::DbExQuery, BlockchainModule};
 use durs_common_tools::fatal_error;
+use durs_common_tools::traits::merge::Merge;
 pub use durs_conf::{
     constants::KEYPAIRS_FILENAME, keypairs::cli::*, ChangeGlobalConf, DuRsConf, DuniterKeyPairs,
 };
@@ -574,19 +575,42 @@ pub fn get_module_conf_and_keys<M: DursModule<DuRsConf, DursMsg>>(
     ))
 }
 
+fn get_env_module_user_conf<ModuleUserConf: serde::de::DeserializeOwned>(
+    module_name: ModuleStaticName,
+) -> Result<ModuleUserConf, ModuleConfError> {
+    let prefix = format!(
+        "{}{}",
+        durs_conf::constants::DURS_ENV_PREFIX,
+        module_name.0.to_ascii_uppercase()
+    );
+
+    envy::prefixed(prefix)
+        .from_env::<ModuleUserConf>()
+        .map_err(ModuleConfError::EnvyErr)
+}
+
 /// get module conf
 pub fn get_module_conf<M: DursModule<DuRsConf, DursMsg>>(
     currency_name: Option<&CurrencyName>,
     global_conf: &<DuRsConf as DursConfTrait>::GlobalConf,
     module_conf_json: Option<serde_json::Value>,
 ) -> Result<(M::ModuleConf, Option<M::ModuleUserConf>), ModuleConfError> {
-    if let Some(module_conf_json) = module_conf_json {
-        let module_user_conf: Option<M::ModuleUserConf> =
+    let file_module_user_conf: M::ModuleUserConf = if let Some(module_conf_json) = module_conf_json
+    {
+        let file_module_user_conf_opt: Option<M::ModuleUserConf> =
             serde_json::from_str(module_conf_json.to_string().as_str())?;
-        M::generate_module_conf(currency_name, global_conf, module_user_conf)
+        file_module_user_conf_opt.unwrap_or_default()
     } else {
-        M::generate_module_conf(currency_name, global_conf, None)
-    }
+        M::ModuleUserConf::default()
+    };
+
+    let env_module_user_conf = get_env_module_user_conf::<M::ModuleUserConf>(M::name())?;
+
+    M::generate_module_conf(
+        currency_name,
+        global_conf,
+        Some(file_module_user_conf.merge(env_module_user_conf)),
+    )
 }
 
 /// Launch databases explorer
diff --git a/lib/core/module/Cargo.toml b/lib/core/module/Cargo.toml
index d7aa7cdbef02a27c5b2b4a59263445cf8d360eaa..f19db0733ff422cf5a3693198fe30315aeea8547 100644
--- a/lib/core/module/Cargo.toml
+++ b/lib/core/module/Cargo.toml
@@ -15,6 +15,7 @@ dubp-currency-params = { path = "../../dubp/currency-params" }
 dubp-user-docs = { path = "../../dubp/user-docs" }
 durs-common-tools = { path = "../../tools/common-tools" }
 durs-network-documents = { path = "../../dunp/network-documents" }
+envy = "0.4.1"
 failure = "0.1.5"
 log = "0.4.*"
 serde = "1.0.*"
diff --git a/lib/core/module/src/lib.rs b/lib/core/module/src/lib.rs
index 23360f7c441eb173e16a9626cef7b7c1a7f21182..df8a38fe3f09143c37656eb55ca121ef88f02678 100644
--- a/lib/core/module/src/lib.rs
+++ b/lib/core/module/src/lib.rs
@@ -362,6 +362,9 @@ pub enum ModuleConfError {
         /// Cause
         cause: String,
     },
+    /// Error when get conf from environment variables
+    #[fail(display = "Error when get conf from environment variables: {}", _0)]
+    EnvyErr(envy::Error),
     /// Invalid field
     #[fail(display = "Field '{}' is invalid: {}", field_name, cause)]
     InvalidField {