diff --git a/src/guacd-docker/bin/build-guacd.sh b/src/guacd-docker/bin/build-guacd.sh
index 4714743..9e263ae 100755
--- a/src/guacd-docker/bin/build-guacd.sh
+++ b/src/guacd-docker/bin/build-guacd.sh
@@ -43,7 +43,7 @@
 
 cd "$BUILD_DIR"
 autoreconf -fi
-./configure --prefix="$PREFIX_DIR" --disable-guaclog
+./configure --prefix="$PREFIX_DIR" --disable-guaclog --with-freerdp-plugin-dir="$PREFIX_DIR/lib/freerdp2"
 make
 make install
 ldconfig
diff --git a/src/protocols/rdp/client.c b/src/protocols/rdp/client.c
index c79e59d..db98d9b 100644
--- a/src/protocols/rdp/client.c
+++ b/src/protocols/rdp/client.c
@@ -38,11 +38,45 @@
 #include <guacamole/audio.h>
 #include <guacamole/client.h>
 
+#include <errno.h>
 #include <pthread.h>
+#include <pwd.h>
 #include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
 
 int guac_client_init(guac_client* client, int argc, char** argv) {
 
+    /* Automatically set HOME environment variable if unset (FreeRDP's
+     * initialization process will fail within freerdp_settings_new() if this
+     * is unset) */
+    const char* current_home = getenv("HOME");
+    if (current_home == NULL) {
+
+        /* Warn if the correct home directory cannot be determined */
+        struct passwd* passwd = getpwuid(getuid());
+        if (passwd == NULL)
+            guac_client_log(client, GUAC_LOG_WARNING, "FreeRDP initialization "
+                    "may fail: The \"HOME\" environment variable is unset and "
+                    "its correct value could not be automatically determined: "
+                    "%s", strerror(errno));
+
+        /* Warn if the correct home directory could be determined but can't be
+         * assigned */
+        else if (setenv("HOME", passwd->pw_dir, 1))
+            guac_client_log(client, GUAC_LOG_WARNING, "FreeRDP initialization "
+                    "may fail: The \"HOME\" environment variable is unset "
+                    "and its correct value (detected as \"%s\") could not be "
+                    "assigned: %s", passwd->pw_dir, strerror(errno));
+
+        /* HOME has been successfully set */
+        else
+            guac_client_log(client, GUAC_LOG_DEBUG, "\"HOME\" "
+                    "environment variable was unset and has been "
+                    "automatically set to \"%s\"", passwd->pw_dir);
+
+    }
+
     /* Set client args */
     client->args = GUAC_RDP_CLIENT_ARGS;
 
diff --git a/src/protocols/rdp/rdp.c b/src/protocols/rdp/rdp.c
index 256b2e4..8330c7e 100644
--- a/src/protocols/rdp/rdp.c
+++ b/src/protocols/rdp/rdp.c
@@ -368,7 +368,14 @@
     /* Allocate FreeRDP context */
     rdp_inst->ContextSize = sizeof(rdp_freerdp_context);
 
-    freerdp_context_new(rdp_inst);
+    if (!freerdp_context_new(rdp_inst)) {
+        guac_client_abort(client, GUAC_PROTOCOL_STATUS_SERVER_ERROR,
+                "FreeRDP initialization failed before connecting. Please "
+                "check for errors earlier in the logs and/or enable "
+                "debug-level logging for guacd.");
+        return 1;
+    }
+
     ((rdp_freerdp_context*) rdp_inst->context)->client = client;
 
     /* Load keymap into client */
