diff --git a/include/checkversion.php b/include/checkversion.php
new file mode 100644
index 0000000000..8993a1cff5
--- /dev/null
+++ b/include/checkversion.php
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * @file include/checkversion.php
+ *
+ * @brief save Friendica upstream version to the DB
+ **/
+
+use Friendica\Core\Config;
+
+/**
+ * @brief check the git repository VERSION file and save the version to the DB
+ *
+ * Checking the upstream version is optional (opt-in) and can be done to either
+ * the master or the develop branch in the repository.
+ */
+function checkversion_run () {
+	global $a;
+
+	logger('checkversion: start');
+
+	$checkurl = Config::get('system', 'check_new_version_url', 'none');
+
+	// check for new versions at all?
+	if ( $checkurl == 'none' ) {
+		return;
+	}
+	$gitversion = dbesc(trim(fetch_url($checkurl)));
+	Config::set('system', 'git_friendica_version');
+
+	logger('checkversion: end');
+
+	return;
+}
diff --git a/include/cron.php b/include/cron.php
index 8b0fab77ab..f65e5851b2 100644
--- a/include/cron.php
+++ b/include/cron.php
@@ -79,6 +79,9 @@ function cron_run(&$argv, &$argc){
 
 		// Delete all done workerqueue entries
 		dba::delete('workerqueue', array('`done` AND `executed` < UTC_TIMESTAMP() - INTERVAL 12 HOUR'));
+
+		// check upstream version?
+		proc_run(PRIORITY_LOW, 'include/checkversion.php');
 	}
 
 	// Poll contacts