diff --git a/README.md b/README.md
index 26d77ecfaa5f8444e26d2ca97625d4b30086bd9b..ae95f3328e44300993d66615fa70b6e4a4f3ec32 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,7 @@ Freifunk Stuttgart specific Gluon configuration
 Doku: https://gluon.readthedocs.org/en/latest/user/site.html
 
 Gluon versions used for specific Stuttgart Freifunk Firmware builds:
+* ffs-1.4: v2017.1.4 (LEDE)
 * ffs-1.3: v2016.2.7 + 1340 mtu
 * ffs-1.2: v2016.2.6 + ffs-set-segment dns fix + 1312 mtu
 * ffs-1.1: v2016.2.6 + ffs-set-segment dns fix
diff --git a/i18n/de.po b/i18n/de.po
index 230cdf054d51eadb76acb2c82befbe3a4aa88b4b..5df4bed07e3b847355442eeb3977d4953202811d 100644
--- a/i18n/de.po
+++ b/i18n/de.po
@@ -26,7 +26,7 @@ msgstr ""
 "Wenn sich dein Knoten NICHT mit den Mesh-VPNs in Stuttgart verbinden kann, "
 "dann findest Du <a href=\"https://wiki.freifunk-stuttgart.net/kontakt:mailingliste\">hier</a> Kontaktmöglichkeiten"
 "<div class=\"the-key\">"
-" Name: <%=escape(hostname)%>"
+" Name: <%=pcdata(hostname)%>"
 " <br/>"
 " Key: <%= pubkey %>"
 " <br/>"
diff --git a/i18n/en.po b/i18n/en.po
index f31ad56c6b01a83ec73896327a85568c5a045ed3..d05a668dfef29545a49328aff5189f1697c65a49 100644
--- a/i18n/en.po
+++ b/i18n/en.po
@@ -25,7 +25,7 @@ msgstr ""
 "a while till all the gateways accept your key. "
 "If the node won't be able to connect to the mesh VPN, you can find contact information <a href=\"https://wiki.freifunk-stuttgart.net/kontakt:mailingliste\">here</a> "
 "<div class=\"the-key\">"
-" Name: <%=escape(hostname)%>"
+" Name: <%=pcdata(hostname)%>"
 " <br/>"
 " Key: <%= pubkey %>"
 " <br/>"
diff --git a/modules b/modules
index b5df610839a8afe59aadc934542945abc20db636..27d1072ba2786711683a135023f4475e5ba5f7c3 100644
--- a/modules
+++ b/modules
@@ -1,4 +1,4 @@
 GLUON_SITE_FEEDS='ffs'
 
 PACKAGES_FFS_REPO=https://github.com/freifunk-stuttgart/Gluon-Packages
-PACKAGES_FFS_COMMIT=c22cea54014470b0b6593ef7dc3170529582e316
+PACKAGES_FFS_COMMIT=7ca1e3c219b1dadf2ff4646dd0bc3d48ab28f694
diff --git a/site.conf b/site.conf
index 51aee9c97ea6f1962433ad60eab2f0f975dea1eb..1b8570659850ae401b7987087ee4645a28349443 100644
--- a/site.conf
+++ b/site.conf
@@ -2,19 +2,20 @@
     hostname_prefix = 'ffs-',
     site_name = 'Freifunk Stuttgart',
     site_code = 'ffs',
-    
+    site_seed = '0711ff0711ff0711ff0711ff0711ff0711ff0711ff0711ff0711ff0711ff0711',
+
     prefix4 = '172.21.0.0/18',
     prefix6 = 'fd21:711::/64',
-        
+
     timezone = 'CET-1CEST,M3.5.0,M10.5.0/3', -- Europe/Berlin
-        
+
     ntp_servers = {
         'fd21:b4dc:4b00::a38:1', -- gw01
 	'fd21:b4dc:4b00::123:1',
 	'fd21:b4dc:4b00::123:2',
 	'fd21:b4dc:4b00::123:3',
     },
-        
+
     regdom = 'DE',
 
     wifi24 = {
@@ -29,11 +30,6 @@
             id = 'ffsmesh_batman',
             mcast_rate = 12000,
         },
-        ibss = {
-            ssid = '02:04:08:16:32:64',
-            bssid = '02:04:08:16:32:64',
-            mcast_rate = 12000,
-        },
     },
 
     wifi5 = {
@@ -45,11 +41,6 @@
             id = 'ffsmesh_batman',
             mcast_rate = 12000,
         },
-        ibss = {
-            ssid = '02:04:08:16:32:64',
-            bssid = '02:04:08:16:32:64',
-            mcast_rate = 12000,
-        },
     },
 
 
@@ -59,84 +50,87 @@
         mac = '02:00:0a:25:00:01',
     },
 
-    fastd_mesh_vpn = {
-        methods = {'salsa2012+umac'},
+    mesh_vpn = {
+	enabled = true,
         mtu = 1340,
-        enabled = true,
-        groups = {
-            backbone = {
-                limit = 1,
-                peers = {
-                    gw01 = {
-                        key = 'd7b89d42b629bd5d419139b4c395e7b47ed7417112d3fcd232ba38137daa58e6',
-                        remotes = {
-                            '"gw01.gw.freifunk-stuttgart.de" port 10299'
+        fastd = {
+            configurable = true,
+            methods = {'salsa2012+umac'},
+            groups = {
+                backbone = {
+                    limit = 1,
+                    peers = {
+                        gw01 = {
+                            key = 'd7b89d42b629bd5d419139b4c395e7b47ed7417112d3fcd232ba38137daa58e6',
+                            remotes = {
+                                '"gw01.gw.freifunk-stuttgart.de" port 10299'
+                            },
                         },
-                    },
-                    gw02 = {
-                        key = '31eaff2ce1c19d0c9af693c4500defc4e1b4979ad75133d779532f0572955875',
-                        remotes = {
-                            '"gw02.gw.freifunk-stuttgart.de" port 10299'
+                        gw02 = {
+                            key = '31eaff2ce1c19d0c9af693c4500defc4e1b4979ad75133d779532f0572955875',
+                            remotes = {
+                                '"gw02.gw.freifunk-stuttgart.de" port 10299'
+                            },
                         },
-                    },
-                    gw03 = {
-                        key = '1e944f5f2dca02e1c1d2e006186417e76759c26f75da5e7850f6c1e5cddcb1c2',
-                        remotes = {
-                            '"gw03.gw.freifunk-stuttgart.de" port 10299'
-			},
-                    },
-                    gw04 = {
-                        key = '5689b2fd14bd313de1e95406c17e783b78b9d6f8aa86f896df4f2d843ab642bf',
-                        remotes = {
-                            '"gw04.gw.freifunk-stuttgart.de" port 10299'
+                        gw03 = {
+                            key = '1e944f5f2dca02e1c1d2e006186417e76759c26f75da5e7850f6c1e5cddcb1c2',
+                            remotes = {
+                                '"gw03.gw.freifunk-stuttgart.de" port 10299'
+                            },
                         },
-                    },
-                    gw05 = {
-                        key = '26cd067057e4fcf58fb68da66c75a360de56aa4c36094f1846f706824682a789',
-                        remotes = {
-                            '"gw05.gw.freifunk-stuttgart.de" port 10299'
+                        gw04 = {
+                            key = '5689b2fd14bd313de1e95406c17e783b78b9d6f8aa86f896df4f2d843ab642bf',
+                            remotes = {
+                                '"gw04.gw.freifunk-stuttgart.de" port 10299'
+                            },
                         },
-                    },
-                    gw06 = {
-                        key = 'fdc1737906d7431763962f4daf6eb4d973c845aca7a96e40643d08a82159dff2',
-                        remotes = {
-                            '"gw06.gw.freifunk-stuttgart.de" port 10299'
+                        gw05 = {
+                            key = '26cd067057e4fcf58fb68da66c75a360de56aa4c36094f1846f706824682a789',
+                            remotes = {
+                                '"gw05.gw.freifunk-stuttgart.de" port 10299'
+                            },
                         },
-                    },
-                    gw07 = {
-                        key = '23f6d70be861effe9b1a7bc812fd8c9e2e575bf0ea63ca4ffdc0a3998afb59a1',
-                        remotes = {
-                            '"gw07.gw.freifunk-stuttgart.de" port 10299'
+                        gw06 = {
+                            key = 'fdc1737906d7431763962f4daf6eb4d973c845aca7a96e40643d08a82159dff2',
+                            remotes = {
+                                '"gw06.gw.freifunk-stuttgart.de" port 10299'
+                            },
                         },
-                    },
-                    gw08 = {
-                        key = '1af6a5d41d866823e5712e8d9af42080397ad52bdd8664a11ca94225629398a3',
-                        remotes = {
-                            '"gw08.gw.freifunk-stuttgart.de" port 10299'
+                        gw07 = {
+                            key = '23f6d70be861effe9b1a7bc812fd8c9e2e575bf0ea63ca4ffdc0a3998afb59a1',
+                            remotes = {
+                                '"gw07.gw.freifunk-stuttgart.de" port 10299'
+                            },
                         },
-                    },
-                    gw09 = {
-                        key = 'bf7c1a62dbf61b8fda25be7e5e600c0ae745e6b6e90a419aeafaf85b6497e8f2',
-                        remotes = {
-                            '"gw09.gw.freifunk-stuttgart.de" port 10299'
+                        gw08 = {
+                            key = '1af6a5d41d866823e5712e8d9af42080397ad52bdd8664a11ca94225629398a3',
+                            remotes = {
+                                '"gw08.gw.freifunk-stuttgart.de" port 10299'
+                            },
                         },
-                    },
-                    gw10 = {
-                        key = '4b89e1a8882b4d7cf50eabc0360ff28138d78ca0b63fd63ec9e4c8260121da00',
-                        remotes = {
-                            '"gw10.gw.freifunk-stuttgart.de" port 10299'
+                        gw09 = {
+                            key = 'bf7c1a62dbf61b8fda25be7e5e600c0ae745e6b6e90a419aeafaf85b6497e8f2',
+                            remotes = {
+                                '"gw09.gw.freifunk-stuttgart.de" port 10299'
+                            },
+                        },
+                        gw10 = {
+                            key = '4b89e1a8882b4d7cf50eabc0360ff28138d78ca0b63fd63ec9e4c8260121da00',
+                            remotes = {
+                                '"gw10.gw.freifunk-stuttgart.de" port 10299'
+                            },
                         },
                     },
                 },
             },
         },
-    },
-    
-    bandwidth_limit = {
-        -- Default upload limit (kbit/s).
-        egress = 500,
-        -- Default download limit (kbit/s).
-        ingress = 15000,
+
+        bandwidth_limit = {
+            -- Default upload limit (kbit/s).
+            egress = 500,
+            -- Default download limit (kbit/s).
+            ingress = 15000,
+        },
     },
 
     autoupdater = {
@@ -151,7 +145,7 @@
                 good_signatures = 2,
                 pubkeys = {
                     '4418436fe872b5746a6c86293afca7c6c9edba03eca3cac80fdfd82106092d7a', -- leonard
-                    '0b43680e4c389a55a02663a740be234defe017c1e05ba49de87baaa1f88c66c1', -- are    
+                    '0b43680e4c389a55a02663a740be234defe017c1e05ba49de87baaa1f88c66c1', -- are
                     'b7077095e9d3fc892db1c280b78b65d737700c9aea70a6998d6aad8b3146aaed', -- flip
                 },
             },
@@ -163,7 +157,7 @@
                 good_signatures = 1,
                 pubkeys = {
                     '4418436fe872b5746a6c86293afca7c6c9edba03eca3cac80fdfd82106092d7a', -- leonard
-                    '0b43680e4c389a55a02663a740be234defe017c1e05ba49de87baaa1f88c66c1', -- are    
+                    '0b43680e4c389a55a02663a740be234defe017c1e05ba49de87baaa1f88c66c1', -- are
                     'b7077095e9d3fc892db1c280b78b65d737700c9aea70a6998d6aad8b3146aaed', -- flip
                 },
             },
@@ -175,7 +169,7 @@
                 good_signatures = 1,
                 pubkeys = {
                     '4418436fe872b5746a6c86293afca7c6c9edba03eca3cac80fdfd82106092d7a', -- leonard
-                    '0b43680e4c389a55a02663a740be234defe017c1e05ba49de87baaa1f88c66c1', -- are    
+                    '0b43680e4c389a55a02663a740be234defe017c1e05ba49de87baaa1f88c66c1', -- are
                     'b7077095e9d3fc892db1c280b78b65d737700c9aea70a6998d6aad8b3146aaed', -- flip
                 },
             },
diff --git a/site.mk b/site.mk
index 9ca97be85919cf8515458bd73e2e22475fcf582a..80b6805046d00c216e833177afc5af83722ea009 100644
--- a/site.mk
+++ b/site.mk
@@ -1,24 +1,28 @@
+GLUON_FEATURES := \
+	autoupdater \
+	ebtables-filter-multicast \
+	ebtables-filter-ra-dhcp \
+	mesh-batman-adv-15 \
+	mesh-vpn-fastd \
+	radvd \
+	respondd \
+	alfred \
+	status-page \
+	web-advanced \
+	web-wizard
+
 GLUON_SITE_PACKAGES := \
-	gluon-mesh-batman-adv-15 \
 	gluon-alfred \
 	gluon-respondd \
 	gluon-autoupdater \
-	gluon-config-mode-autoupdater \
-	gluon-config-mode-contact-info \
+	gluon-mesh-batman-adv-15 \
+	gluon-mesh-vpn-fastd \
 	gluon-config-mode-core \
-	gluon-config-mode-geo-location \
-	gluon-config-mode-hostname \
-	gluon-config-mode-mesh-vpn \
 	gluon-config-mode-zip \
 	gluon-ebtables-filter-multicast \
 	gluon-ebtables-filter-ra-dhcp \
-	gluon-luci-admin \
-	gluon-luci-autoupdater \
-	gluon-luci-portconfig \
-	gluon-luci-private-wifi \
-	gluon-luci-wifi-config \
+	gluon-web-private-wifi \
 	gluon-neighbour-info \
-	gluon-mesh-vpn-fastd \
 	gluon-radvd \
 	gluon-setup-mode \
 	gluon-status-page \
@@ -46,7 +50,7 @@ GLUON_SITE_PACKAGES += \
 	kmod-igb
 endif
 
-DEFAULT_GLUON_RELEASE := 1.3+$(shell date '+%Y-%m-%d')-g.$(shell git -C $(GLUONDIR) log --pretty=format:'%h' -n 1)-s.$(shell git -C $(GLUONDIR)/site log --pretty=format:'%h' -n 1)
+DEFAULT_GLUON_RELEASE := 1.4+$(shell date '+%Y-%m-%d')-$(GLUON_RELEASE)-s.$(shell git -C $(GLUON_SITEDIR) log --pretty=format:'%h' -n 1)
 
 GLUON_LANGS := de en