diff --git a/build.gradle b/build.gradle
index df3fcae..59d7907 100644
--- a/build.gradle
+++ b/build.gradle
@@ -61,7 +61,7 @@
     compile libraries.dropwizard
     compile libraries.dropwizard_views
     compile libraries.dropwizard_views_freemarker
-    compile libraries.dropwizard_assets
+    compile libraries.dropwizard_configurable_assets
     compile libraries.dropwizard_bundles_redirect
     compile libraries.freemarker
     compile libraries.commonLangs
diff --git a/dependencies.gradle b/dependencies.gradle
index d957ff8..635c92c 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -27,6 +27,7 @@
         dropwizard_views: "io.dropwizard:dropwizard-views:$dropwizard_version",
         dropwizard_views_freemarker: "io.dropwizard:dropwizard-views-freemarker:$dropwizard_version",
         dropwizard_assets: "io.dropwizard:dropwizard-assets:$dropwizard_version",
+        dropwizard_configurable_assets: "io.dropwizard-bundles:dropwizard-configurable-assets-bundle:1.0.5",
         dropwizard_bundles_redirect: "io.dropwizard-bundles:dropwizard-redirect-bundle:1.2.2",
 
         // App. specific:
diff --git a/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTester.java b/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTester.java
index 40dab6e..563720a 100644
--- a/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTester.java
+++ b/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTester.java
@@ -26,12 +26,15 @@
 import org.apache.freemarker.onlinetester.resources.WebPageResource;
 import org.apache.freemarker.onlinetester.services.FreeMarkerService;
 
+import com.google.common.collect.ImmutableMap;
+
 import io.dropwizard.Application;
-import io.dropwizard.assets.AssetsBundle;
+import io.dropwizard.bundles.assets.ConfiguredAssetsBundle;
 import io.dropwizard.bundles.redirect.RedirectBundle;
 import io.dropwizard.bundles.redirect.UriRedirect;
 import io.dropwizard.setup.Bootstrap;
 import io.dropwizard.setup.Environment;
+import io.dropwizard.sslreload.SslReloadBundle;
 import io.dropwizard.views.ViewBundle;
 
 public class FreeMarkerOnlineTester extends Application<FreeMarkerOnlineTesterConfiguration> {
@@ -61,11 +64,19 @@
                 return config.getViewRendererConfiguration();
             }        	
         });
-        bootstrap.addBundle(new AssetsBundle());
+        bootstrap.addBundle(new SslReloadBundle());
+        bootstrap.addBundle(new ConfiguredAssetsBundle(
+        		ImmutableMap.of(
+        				"/assets/", "/assets/", // css, js, images...
+        				"/letsencrypt-verify", "/letsencrypt-verify" // Map to a file outside the jar in the yml!
+        				)));
         bootstrap.addBundle(new RedirectBundle(
                 new UriRedirect(
                         "http://freemarker-online.kenshoo.com([:/].*)$",
-                        "http://try.freemarker.org$1")
+                        "http://try.freemarker.org$1"),
+                new UriRedirect(
+                        "http://try.freemarker.apache.org([:/].*)$",
+                        "https://try.freemarker.apache.org$1")
         ));
     }
 }
diff --git a/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTesterConfiguration.java b/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTesterConfiguration.java
index b29622c..f0b9122 100644
--- a/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTesterConfiguration.java
+++ b/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTesterConfiguration.java
@@ -24,10 +24,13 @@
 import com.fasterxml.jackson.annotation.JsonProperty;
 
 import io.dropwizard.Configuration;
+import io.dropwizard.bundles.assets.AssetsBundleConfiguration;
+import io.dropwizard.bundles.assets.AssetsConfiguration;
 
-public class FreeMarkerOnlineTesterConfiguration extends Configuration {
+public class FreeMarkerOnlineTesterConfiguration extends Configuration implements AssetsBundleConfiguration {
 
     private Map<String, Map<String, String>> viewRendererConfiguration;
+	private AssetsConfiguration assetsConfiguration;
 
 	@JsonProperty("viewRendererConfiguration")
     public Map<String, Map<String, String>> getViewRendererConfiguration() {
@@ -39,4 +42,15 @@
         this.viewRendererConfiguration = viewRendererConfiguration;
     }
     
+    @JsonProperty("assets")
+    @Override
+    public AssetsConfiguration getAssetsConfiguration() {
+      return assetsConfiguration;
+    }
+
+    @JsonProperty("assets")
+	public void setAssetsConfiguration(AssetsConfiguration assetsConfiguration) {
+		this.assetsConfiguration = assetsConfiguration;
+	}
+    
 }
diff --git a/src/main/resources/freemarker-online.yml b/src/main/resources/freemarker-online.yml
index c1268b2..1ffb937 100644
--- a/src/main/resources/freemarker-online.yml
+++ b/src/main/resources/freemarker-online.yml
@@ -22,7 +22,7 @@
     - type: console
       threshold: ALL
       target: stdout
-#    # For production:
+#    # FOR PRODUCTION:
 #    - type: file
 #      currentLogFilename: /opt/fmonlinetester/var/log/main.log
 #      threshold: ALL
@@ -34,10 +34,29 @@
 server:
   requestLog:
     appenders: []
+  applicationConnectors:    
+      - type: http
+        port: 8080
+#      # FOR PRODUCTION:
+#      - type: https
+#        port: 8443
+#        keyStorePath: /etc/letsencrypt/live/example.p12
+#        keyStoreType: PKCS12
+#        keyStorePassword: secret
+#        validateCerts: false
+  adminConnectors:
+      # HTTP POST to /tasks/reload-ssl to reload SSL certificates without stopping.
+      - type: http
+        port: 8081            
 viewRendererConfiguration:
   freemarker:  # was `.ftl:` before Dropwizard 1.3.0
     incompatibleImprovements: 2.3.28
     locale: en_US
     timeZone: UTC
     outputEncoding: UTF-8
-    templateExceptionHandler: rethrow
\ No newline at end of file
+    templateExceptionHandler: rethrow
+assets:
+  overrides:
+    # Let's Encrypt certbot writes its domain ownership vertification file here. It will visit
+    # it from outside when we ask for a new certificate: 
+    /letsencrypt-verify: /opt/fmonlinetester/var/letsencrypt-verify
\ No newline at end of file
