diff --git a/CHANGELOG b/CHANGELOG
index 826e7600dbb5a881a5ecc37571263ef7853e31c7..6ac764932ce4d7899869db833c1d62ce9938f2c0 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,8 @@
 
 - Download the bakabase with obfuscation or not
 - Add json-c to the download dependency script (add cmake as a requirement for that)
+- Choose between static or shared library for liblektor
+- Download the bakabase with obfuscation or not
 
 # v2.1 (df74b85f)
 
diff --git a/inc/lektor/database.h b/inc/lektor/database.h
index 442dbf3752e73023fb7b0dc29331ea4b16bb2c8d..cef0a11c416826fe65ab6f7c66d946177f1df9ad 100644
--- a/inc/lektor/database.h
+++ b/inc/lektor/database.h
@@ -158,6 +158,11 @@ bool database_config_queue_default(volatile sqlite3 *db);
  * for debug purpose. */
 bool database_config_dump(volatile sqlite3 *db, FILE *f);
 
+/* Check obfuscation status. If no one is set, set it and return `true`. If
+ * there was already an obfuscation status, return `true` if the two are the
+ * same, `false` otherwise. */
+bool database_config_obfuscation_check(volatile sqlite3 *db, int obfuscation);
+
 /* Playlists */
 struct lkt_playlist_metadata {
     const char *name;
diff --git a/src/database/config.c b/src/database/config.c
index cfb2e9d3fc369597fd8ae920abc2cbcc2a2903f0..ae05e5b1af91afced6bd50b0cf44de81cfd60010 100644
--- a/src/database/config.c
+++ b/src/database/config.c
@@ -216,3 +216,33 @@ error:
     sqlite3_finalize(stmt);
     return false;
 }
+
+bool
+database_config_obfuscation_check(volatile sqlite3 *db, int obfuscation)
+{
+    static const char *GET_SQL = "SELECT obfuscation FROM misc WHERE id = 42;";
+    static const char *SET_SQL = "UPDATE misc SET obfuscation = ? WHERE id = 42;";
+    sqlite3_stmt *stmt = 0;
+
+    SQLITE_PREPARE(db, stmt, GET_SQL, error);
+
+    if (SQLITE_ROW == sqlite3_step(stmt)) {
+        /* Obfuscation mode set */
+        sqlite3_finalize(stmt);
+        return obfuscation == sqlite3_column_int(stmt, 0);
+    }
+
+    else {
+        /* No obfuscation mode set */
+        sqlite3_finalize(stmt);
+        SQLITE_PREPARE(db, stmt, SET_SQL, error);
+        SQLITE_BIND_INT(db, stmt, 1, obfuscation, error);
+        SQLITE_STEP_DONE(db, stmt, error);
+        sqlite3_finalize(stmt);
+        return true;
+    }
+
+error:
+    sqlite3_finalize(stmt);
+    return false;
+}
diff --git a/src/database/disk.sql b/src/database/disk.sql
index d1e356f6bb2ac14244e3931dcbd3e0510d65aed9..24dcac5c777a56c51970bd35a055a52df425b156 100644
--- a/src/database/disk.sql
+++ b/src/database/disk.sql
@@ -144,6 +144,7 @@ CREATE TABLE IF NOT EXISTS misc
   , last_end_update INTEGER
   , update_job      INTEGER NOT NULL CHECK(update_job >= 0)
   , opened          INTEGER NOT NULL CHECK(opened = 0 OR opened = 1)
+  , obfuscation     INTEGER CHECK(obfuscation = 0 OR obfuscation = 1)
   );
 
 INSERT OR REPLACE INTO misc (id, update_job, opened) VALUES (42, 0, 0);
diff --git a/src/module/module_repo.c b/src/module/module_repo.c
index 6f3b68c79e5720ebc8cdc4bf285c9384f3eb1c49..e4bf6d6a31584b4ed01af2dcd2acd1c47d4c88f5 100644
--- a/src/module/module_repo.c
+++ b/src/module/module_repo.c
@@ -489,7 +489,13 @@ module_repo_new(struct module_repo_internal *repo_, struct queue *queue, volatil
     }
 
     obfuscate = obfuscate ? 1 : 0; /* Safe values */
-    LOG_WARN("REPO", "Downloading base in %s mode, mode is number: %d", obfuscate ? "obfuscation" : "clear", obfuscate);
+    LOG_WARN("REPO", "Downloading base in %s mode, mode is number: %d",
+             obfuscate ? "obfuscation" : "clear", obfuscate);
+
+    if (!database_config_obfuscation_check(db, obfuscate)) {
+        LOG_ERROR("REPO", "Database obfuscation mismatch. Because I'm a coward I will exit");
+        exit(EXIT_FAILURE);
+    }
 
     struct module_repo_internal repo = {
         .version        = 1,