diff --git a/parsoid/Dockerfile b/parsoid/Dockerfile
new file mode 100644
index 0000000..4efa7b4
--- /dev/null
+++ b/parsoid/Dockerfile
@@ -0,0 +1,28 @@
+FROM alpine:3.6
+
+ENV NODE_ENV=production \
+    GID=991 UID=991 \
+    INTERFACE=0.0.0.0 \
+    PORT=8000 \
+    ADDRESS=http://localhost/w/ \
+    DOMAIN=localhost
+
+RUN apk -U --no-cache add \
+    ca-certificates \
+    libressl \
+    nodejs-current \
+    nodejs-current-npm \
+    s6 \
+    git \
+    su-exec \
+ && git clone https://gerrit.wikimedia.org/r/p/mediawiki/services/parsoid --depth=1 \
+ && cd parsoid && npm install
+
+COPY rootfs /
+
+RUN chmod +x /usr/local/bin/* /etc/s6.d/*/* /etc/s6.d/.s6-svscan/*
+
+EXPOSE 8000
+
+ENTRYPOINT ["run.sh"]
+CMD ["/bin/s6-svscan", "/etc/s6.d"]
diff --git a/parsoid/rootfs/etc/s6.d/.s6-svscan/finish b/parsoid/rootfs/etc/s6.d/.s6-svscan/finish
new file mode 100644
index 0000000..039e4d0
--- /dev/null
+++ b/parsoid/rootfs/etc/s6.d/.s6-svscan/finish
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
diff --git a/parsoid/rootfs/etc/s6.d/ghost/run b/parsoid/rootfs/etc/s6.d/ghost/run
new file mode 100644
index 0000000..edf729d
--- /dev/null
+++ b/parsoid/rootfs/etc/s6.d/ghost/run
@@ -0,0 +1,3 @@
+#!/bin/sh
+cd /parsoid
+exec node bin/server.js
diff --git a/parsoid/rootfs/usr/local/bin/run.sh b/parsoid/rootfs/usr/local/bin/run.sh
new file mode 100644
index 0000000..8806971
--- /dev/null
+++ b/parsoid/rootfs/usr/local/bin/run.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+echo
+echo ">>> wonderfall/parsoid container <<<"
+echo
+
+cd /parsoid
+cp config.example.yaml config.yaml
+sed -i "s|http://localhost/w/|$ADDRESS|g" config.yaml
+sed -i "s|domain: 'localhost'|domain: '$DOMAIN'|g" config.yaml
+
+echo "> Updating permissions..."
+chown -R ${UID}:${GID} /parsoid /etc/s6.d
+
+echo "> Executing process..."
+if [ '$@' == '' ]; then
+    exec su-exec ${UID}:${GID} /bin/s6-svscan /etc/s6.d
+else
+    exec su-exec ${UID}:${GID} "$@"
+fi
diff --git a/parsoid/rootfs/usr/local/etc/disqus.conf b/parsoid/rootfs/usr/local/etc/disqus.conf
new file mode 100644
index 0000000..9b20532
--- /dev/null
+++ b/parsoid/rootfs/usr/local/etc/disqus.conf
@@ -0,0 +1,16 @@
+
+<div id="disqus_thread"></div>
+<script type="text/javascript">
+    var disqus_shortname = '<SHORTNAME>';
+    var disqus_identifier = '{{post.id}}';
+ 
+    /* * * DON'T EDIT BELOW THIS LINE * * */
+    (function() {
+        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+</script>
+<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
+<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
+
diff --git a/parsoid/rootfs/usr/local/etc/ghost.example.conf b/parsoid/rootfs/usr/local/etc/ghost.example.conf
new file mode 100644
index 0000000..2b01024
--- /dev/null
+++ b/parsoid/rootfs/usr/local/etc/ghost.example.conf
@@ -0,0 +1,21 @@
+{
+  "url": "https://my-ghost-blog.com",
+
+  "server": {
+    "host": "0.0.0.0",
+    "port": "2368"
+  },
+
+  "database": {
+    "client": "sqlite3",
+    "connection": {
+      "filename": "content/data/ghost-dev.db"
+    },
+    "useNullAsDefault": true,
+    "debug": false
+  },
+
+  "mail": {
+    "transport": "Direct"
+  }
+}
diff --git a/parsoid/rootfs/usr/local/etc/isso.conf b/parsoid/rootfs/usr/local/etc/isso.conf
new file mode 100644
index 0000000..4287ebc
--- /dev/null
+++ b/parsoid/rootfs/usr/local/etc/isso.conf
@@ -0,0 +1,7 @@
+</footer>
+<script data-isso="//<HOST>/"
+        data-isso-avatar="<AVATAR>"
+        data-isso-vote="<VOTE>"
+        src="//<HOST>/js/embed.min.js"></script>
+
+<section id="isso-thread"></section>