diff --git a/src/freedombone-addremove b/src/freedombone-addremove
index d42c3796..277da7fe 100755
--- a/src/freedombone-addremove
+++ b/src/freedombone-addremove
@@ -80,6 +80,20 @@ function mark_unselected_apps_as_removed {
     done
 }
 
+function app_not_on_onion_only {
+    app_name="$1"
+
+    read_config_param ONION_ONLY
+
+    if [[ "$ONION_ONLY" != 'no' ]]; then
+        if ! grep -q "NOT_ON_ONION=1" "/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}"; then
+            echo "0"
+            return
+        fi
+    fi
+    echo "1"
+}
+
 function app_expected_to_be_installed {
     # is the given application expected to be installed by default?
     select_all_apps="$1"
@@ -108,16 +122,18 @@ function show_apps {
     # shellcheck disable=SC2068
     for a in ${APPS_AVAILABLE[@]}
     do
-        if [[ ${APPS_INSTALLED[$app_index]} == "0" &&  "$select_all_apps" != "add-all" ]]; then
-            applist="$applist $n $a off"
-        else
-            if [[ $(app_expected_to_be_installed "$select_all_apps" "$a") == "0" ]]; then
+        if [[ $(app_not_on_onion_only "$a") != "0" ]]; then
+            if [[ ${APPS_INSTALLED[$app_index]} == "0" &&  "$select_all_apps" != "add-all" ]]; then
                 applist="$applist $n $a off"
             else
-                applist="$applist $n $a on"
+                if [[ $(app_expected_to_be_installed "$select_all_apps" "$a") == "0" ]]; then
+                    applist="$applist $n $a off"
+                else
+                    applist="$applist $n $a on"
+                fi
             fi
+            n=$((n+1))
         fi
-        n=$((n+1))
         app_index=$((app_index+1))
     done
 
diff --git a/src/freedombone-app-gnusocial b/src/freedombone-app-gnusocial
index 93c57f10..640e5343 100755
--- a/src/freedombone-app-gnusocial
+++ b/src/freedombone-app-gnusocial
@@ -30,6 +30,7 @@ VARIANTS='full full-vim social'
 
 IN_DEFAULT_INSTALL=0
 SHOW_ON_ABOUT=1
+NOT_ON_ONION=1
 
 GNUSOCIAL_DOMAIN_NAME=
 GNUSOCIAL_CODE=
diff --git a/src/freedombone-app-hubzilla b/src/freedombone-app-hubzilla
index dade690e..27d86461 100755
--- a/src/freedombone-app-hubzilla
+++ b/src/freedombone-app-hubzilla
@@ -30,6 +30,7 @@ VARIANTS='full full-vim social'
 
 IN_DEFAULT_INSTALL=0
 SHOW_ON_ABOUT=1
+NOT_ON_ONION=1
 
 HUBZILLA_DOMAIN_NAME=
 HUBZILLA_CODE=
diff --git a/src/freedombone-app-jitsi b/src/freedombone-app-jitsi
index 80290874..5250ec5c 100755
--- a/src/freedombone-app-jitsi
+++ b/src/freedombone-app-jitsi
@@ -32,6 +32,7 @@ VARIANTS=""
 
 IN_DEFAULT_INSTALL=0
 SHOW_ON_ABOUT=0
+NOT_ON_ONION=1
 
 VIDEOBRIDGE_PORT=5347
 JITSI_ONION_PORT=8102
diff --git a/src/freedombone-app-matrix b/src/freedombone-app-matrix
index 55e8c641..524914d4 100755
--- a/src/freedombone-app-matrix
+++ b/src/freedombone-app-matrix
@@ -36,6 +36,7 @@ VARIANTS='full full-vim chat'
 
 IN_DEFAULT_INSTALL=0
 SHOW_ON_ABOUT=1
+NOT_ON_ONION=1
 
 MATRIX_DOMAIN_NAME=
 MATRIX_CODE=
diff --git a/src/freedombone-app-postactiv b/src/freedombone-app-postactiv
index ae7e7b25..1af2c2af 100755
--- a/src/freedombone-app-postactiv
+++ b/src/freedombone-app-postactiv
@@ -30,6 +30,7 @@ VARIANTS='full full-vim media'
 
 IN_DEFAULT_INSTALL=0
 SHOW_ON_ABOUT=1
+NOT_ON_ONION=1
 
 POSTACTIV_DOMAIN_NAME=
 POSTACTIV_CODE=
diff --git a/src/freedombone-app-riot b/src/freedombone-app-riot
index a1111a4c..4337430d 100755
--- a/src/freedombone-app-riot
+++ b/src/freedombone-app-riot
@@ -30,6 +30,7 @@ VARIANTS='full full-vim chat'
 
 IN_DEFAULT_INSTALL=0
 SHOW_ON_ABOUT=1
+NOT_ON_ONION=1
 
 RIOT_VERSION='0.13.3'
 RIOT_FILENAME="riot-v${RIOT_VERSION}"