diff --git a/pi_mqtt_gpio/server.py b/pi_mqtt_gpio/server.py
index aa75f1a44566ffd2ad0a5affcf763e5b50de32ab..e8891153bf3dea3b04853a09f3b67ab384441688 100644
--- a/pi_mqtt_gpio/server.py
+++ b/pi_mqtt_gpio/server.py
@@ -59,7 +59,7 @@ if __name__ == "__main__":
         client.username_pw_set(user, password)
 
     def on_conn(client, userdata, flags, rc):
-        for output_config in config["digital_outputs"]:
+        for output_config in config.get("digital_outputs", []):
             topic = "%s/output/%s/set" % (topic_prefix, output_config["name"])
             client.subscribe(topic, qos=1)
             _LOG.info("Subscribed to topic: %r", topic)
@@ -68,7 +68,7 @@ if __name__ == "__main__":
         _LOG.info("Got message on topic %r: %r", msg.topic, msg.payload)
         output_name = msg.topic[len("%s/output/" % topic_prefix):-4]
         output_config = None
-        for output in config["digital_outputs"]:
+        for output in config.get("digital_outputs", []):
             if output["name"] == output_name:
                 output_config = output
         if output_config is None:
@@ -98,7 +98,7 @@ if __name__ == "__main__":
         install_missing_requirements(gpio_module)
         GPIOS[gpio_config["name"]] = gpio_module.GPIO(gpio_config)
 
-    for input_config in config["digital_inputs"]:
+    for input_config in config.get("digital_inputs", []):
         pud = None
         if input_config["pullup"]:
             pud = PinPullup.UP
@@ -110,7 +110,7 @@ if __name__ == "__main__":
             input_config["pin"], PinDirection.INPUT, pud, input_config)
         LAST_STATES[input_config["name"]] = None
 
-    for output_config in config["digital_outputs"]:
+    for output_config in config.get("digital_outputs", []):
         gpio = GPIOS[output_config["module"]]
         gpio.setup_pin(
             output_config["pin"], PinDirection.OUTPUT, None, output_config)
@@ -120,7 +120,7 @@ if __name__ == "__main__":
 
     try:
         while True:
-            for input_config in config["digital_inputs"]:
+            for input_config in config.get("digital_inputs", []):
                 gpio = GPIOS[input_config["module"]]
                 state = bool(gpio.get_pin(input_config["pin"]))
                 sleep(0.05)