diff --git a/src/guacd/Makefile.am b/src/guacd/Makefile.am
index 8edcd25..fb8e8eb 100644
--- a/src/guacd/Makefile.am
+++ b/src/guacd/Makefile.am
@@ -26,6 +26,7 @@
     man/guacd.conf.5
 
 noinst_HEADERS =  \
+    conf.h        \
     conf-args.h   \
     conf-file.h   \
     conf-parse.h  \
diff --git a/src/guacd/conf-args.c b/src/guacd/conf-args.c
index 448f84d..239eb3a 100644
--- a/src/guacd/conf-args.c
+++ b/src/guacd/conf-args.c
@@ -19,8 +19,8 @@
 
 #include "config.h"
 
+#include "conf.h"
 #include "conf-args.h"
-#include "conf-file.h"
 #include "conf-parse.h"
 
 #include <getopt.h>
@@ -32,7 +32,7 @@
 
     /* Parse arguments */
     int opt;
-    while ((opt = getopt(argc, argv, "l:b:p:L:C:K:f")) != -1) {
+    while ((opt = getopt(argc, argv, "l:b:p:L:C:K:fv")) != -1) {
 
         /* -l: Bind port */
         if (opt == 'l') {
@@ -51,6 +51,11 @@
             config->foreground = 1;
         }
 
+        /* -v: Print version and exit */
+        else if (opt == 'v') {
+            config->print_version = 1;
+        }
+
         /* -p: PID file */
         else if (opt == 'p') {
             free(config->pidfile);
@@ -105,7 +110,8 @@
                     " [-C CERTIFICATE_FILE]"
                     " [-K PEM_FILE]"
 #endif
-                    " [-f]\n", argv[0]);
+                    " [-f]"
+                    " [-v]\n", argv[0]);
 
             return 1;
         }
diff --git a/src/guacd/conf-args.h b/src/guacd/conf-args.h
index 8fa2c3b..2fb86b4 100644
--- a/src/guacd/conf-args.h
+++ b/src/guacd/conf-args.h
@@ -22,7 +22,7 @@
 
 #include "config.h"
 
-#include "conf-file.h"
+#include "conf.h"
 
 /**
  * Parses the given arguments into the given configuration. Zero is returned on
diff --git a/src/guacd/conf-file.c b/src/guacd/conf-file.c
index 21044b6..460ec95 100644
--- a/src/guacd/conf-file.c
+++ b/src/guacd/conf-file.c
@@ -19,6 +19,7 @@
 
 #include "config.h"
 
+#include "conf.h"
 #include "conf-file.h"
 #include "conf-parse.h"
 
@@ -179,6 +180,7 @@
     conf->bind_port = strdup("4822");
     conf->pidfile = NULL;
     conf->foreground = 0;
+    conf->print_version = 0;
     conf->max_log_level = GUAC_LOG_INFO;
 
 #ifdef ENABLE_SSL
diff --git a/src/guacd/conf-file.h b/src/guacd/conf-file.h
index 9042cc8..c38d859 100644
--- a/src/guacd/conf-file.h
+++ b/src/guacd/conf-file.h
@@ -22,51 +22,7 @@
 
 #include "config.h"
 
-#include <guacamole/client.h>
-
-/**
- * The contents of a guacd configuration file.
- */
-typedef struct guacd_config {
-
-    /**
-     * The host to bind on.
-     */
-    char* bind_host;
-
-    /**
-     * The port to bind on.
-     */
-    char* bind_port;
-
-    /**
-     * The file to write the PID in, if any.
-     */
-    char* pidfile;
-
-    /**
-     * Whether guacd should run in the foreground.
-     */
-    int foreground;
-
-#ifdef ENABLE_SSL
-    /**
-     * SSL certificate file.
-     */
-    char* cert_file;
-
-    /**
-     * SSL private key file.
-     */
-    char* key_file;
-#endif
-
-    /**
-     * The maximum log level to be logged by guacd.
-     */
-    guac_client_log_level max_log_level;
-
-} guacd_config;
+#include "conf.h"
 
 /**
  * Reads the given file descriptor, parsing its contents into the guacd_config.
diff --git a/src/guacd/conf-parse.c b/src/guacd/conf-parse.c
index e5a034f..8381aba 100644
--- a/src/guacd/conf-parse.c
+++ b/src/guacd/conf-parse.c
@@ -19,6 +19,7 @@
 
 #include "config.h"
 
+#include "conf.h"
 #include "conf-parse.h"
 
 #include <guacamole/client.h>
diff --git a/src/guacd/conf.h b/src/guacd/conf.h
new file mode 100644
index 0000000..f444cee
--- /dev/null
+++ b/src/guacd/conf.h
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef GUACD_CONF_H
+#define GUACD_CONF_H
+
+#include "config.h"
+
+#include <guacamole/client.h>
+
+/**
+ * The contents of a guacd configuration file.
+ */
+typedef struct guacd_config {
+
+    /**
+     * The host to bind on.
+     */
+    char* bind_host;
+
+    /**
+     * The port to bind on.
+     */
+    char* bind_port;
+
+    /**
+     * The file to write the PID in, if any.
+     */
+    char* pidfile;
+
+    /**
+     * Whether guacd should run in the foreground.
+     */
+    int foreground;
+
+    /**
+     * Whether guacd should simply print its version information and exit.
+     */
+    int print_version;
+
+#ifdef ENABLE_SSL
+    /**
+     * SSL certificate file.
+     */
+    char* cert_file;
+
+    /**
+     * SSL private key file.
+     */
+    char* key_file;
+#endif
+
+    /**
+     * The maximum log level to be logged by guacd.
+     */
+    guac_client_log_level max_log_level;
+
+} guacd_config;
+
+#endif
+
diff --git a/src/guacd/daemon.c b/src/guacd/daemon.c
index 2e80ef3..054821a 100644
--- a/src/guacd/daemon.c
+++ b/src/guacd/daemon.c
@@ -19,9 +19,10 @@
 
 #include "config.h"
 
-#include "connection.h"
+#include "conf.h"
 #include "conf-args.h"
 #include "conf-file.h"
+#include "connection.h"
 #include "log.h"
 #include "proc-map.h"
 
@@ -279,6 +280,13 @@
     if (config == NULL || guacd_conf_parse_args(config, argc, argv))
        exit(EXIT_FAILURE);
 
+    /* If requested, simply print version and exit, without initializing the
+     * logging system, etc. */
+    if (config->print_version) {
+        printf("Guacamole proxy daemon (guacd) version " VERSION "\n");
+        exit(EXIT_SUCCESS);
+    }
+
     /* Init logging as early as possible */
     guacd_log_level = config->max_log_level;
     openlog(GUACD_LOG_NAME, LOG_PID, LOG_DAEMON);
diff --git a/src/guacd/man/guacd.8.in b/src/guacd/man/guacd.8.in
index c5ed918..65fc9d5 100644
--- a/src/guacd/man/guacd.8.in
+++ b/src/guacd/man/guacd.8.in
@@ -30,6 +30,7 @@
 [\fB-C\fR \fICERTIFICATE FILE\fR]
 [\fB-K\fR \fIKEY FILE\fR]
 [\fB-f\fR]
+[\fB-v\fR]
 .
 .SH DESCRIPTION
 .B guacd
@@ -80,6 +81,11 @@
 .B guacd
 to run in the foreground, rather than automatically forking into the
 background.
+.TP
+\fB\-v\fR
+Causes
+.B guacd
+to simply print its version information and exit.
 .
 .SH SSL/TLS OPTIONS
 If libssl was present at the time
