diff --git a/server.py b/server.py
index 8dfddf5f7b8308b228cce5f9b106f77057bfe104..9b08251012b1bc2d6116fa750298c510ef7f95d3 100644
--- a/server.py
+++ b/server.py
@@ -8,6 +8,7 @@ import sys
 import hashlib
 import random
 import sched
+import traceback
 
 app = Flask(__name__)
 
@@ -172,6 +173,12 @@ def handle_errors(endpoint, text, code, *errors, **epargs):
 def handle_not_found(e):
 	return render_endpoint('index', 'Diese Seite existiert nicht!'), 404
 
+@app.errorhandler(500)
+@app.errorhandler(Exception)
+def handle_internal_error(e):
+	traceback.print_exc()
+	return render_template('500.html')
+
 # debian ships jinja2 without this test...
 @app.template_test(name='equalto')
 def equalto(a,b):
diff --git a/templates/500.html b/templates/500.html
new file mode 100644
index 0000000000000000000000000000000000000000..f9d663de1875cbb46f4231d613d595c655ee52f5
--- /dev/null
+++ b/templates/500.html
@@ -0,0 +1,13 @@
+{% extends "base.html" %}
+{% block content %}
+<div class="panel panel-danger">
+	<div class="panel-heading">
+		<h1 class="panel-title">Interner Fehler (500)</h1>
+	</div>
+	<div class="row panel-body">
+		<div class="col-xs-12">
+			Es ist ein Fehler aufgetreten.
+		</div>
+	</div>
+</div>
+{% endblock %}