diff --git a/mdserver.py b/mdserver.py
index bac944ed85d8e47f284b9d823aa96e59a6f9e7cd..86af27fde3d107647d0e1cd5c90165fdb230fb1f 100755
--- a/mdserver.py
+++ b/mdserver.py
@@ -8,6 +8,7 @@ from flask import Flask
 from urllib.parse import unquote
 from dateutil import parser, tz
 from datetime import datetime
+from isoduration import parse_duration
 
 import traceback
 from utils import hasher, signer, Entity
@@ -73,6 +74,7 @@ def read_metadata(signum, frm):
         validUntil = root.get('validUntil')
         cacheDuration = root.get('cacheDuration')
         valid_until = parser.isoparse(validUntil)
+        cache_duration = parse_duration(cacheDuration)
         if valid_until > datetime.now(tz.tzutc()):
             for entity_descriptor in root.findall('md:EntityDescriptor', ns):
                 entityID = entity_descriptor.attrib.get('entityID', 'none')
@@ -83,6 +85,7 @@ def read_metadata(signum, frm):
                 entity = Entity()
                 entity.md = entity_descriptor
                 entity.valid_until = valid_until
+                entity.cache_duration = cache_duration
                 idps[sha1] = entity
                 old_idps.pop(sha1, None)
                 # signed.pop(sha1, None)
@@ -96,6 +99,9 @@ def read_metadata(signum, frm):
     print(f"Removed: {removed} entities")
     print(f"validUntil: {validUntil}")
 
+
 signal.signal(signal.SIGHUP, read_metadata)
 
-app.run(host='0.0.0.0', port=5001)
+read_metadata(None, None)
+
+app.run(host='127.0.0.1', port=5001)
diff --git a/mdserver.service b/mdserver.service
new file mode 100644
index 0000000000000000000000000000000000000000..b44fc7eb84172b20dd29986348f0459aa29c5a28
--- /dev/null
+++ b/mdserver.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=MDServer
+After=syslog.target network.target
+
+[Service]
+Type=simple
+WorkingDirectory=/opt/alternate-mdx
+ExecStart=/opt/alternate-mdx/bin/python -u mdserver.py md.xml
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-failure
+RestartSec=10
+SyslogIdentifier=mdserver
+
+[Install]
+WantedBy=multi-user.target
diff --git a/requirements.txt b/requirements.txt
index f3c10b9d7d25b1162bbc62934e2020e9cd392358..1a986fb8bb3ca71b3b65d1e67de8a80eb525c89d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,3 +3,4 @@ signxml
 flask
 requests
 python-dateutil
+isoduration
diff --git a/utils.py b/utils.py
index 23bf931e78ddea080ed2623ca9adfcccd1eec585..d74d9187f369a3c090f6c077d380dc08ca35fd53 100644
--- a/utils.py
+++ b/utils.py
@@ -5,6 +5,7 @@ from signxml import XMLSigner
 class Entity(object):
     md = None
     valid_until = 0
+    cache_duration = 0
 
 
 def hasher(entity_id):