diff --git a/.gitignore b/.gitignore
index 286bb8620be53b204821826c16a34bc2de15934f..399c55bc42c2354ea0d736f7727adcf9bf555239 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,3 +50,4 @@ DEADJOE
 
 # Pelican output
 output/
+public/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..32ae5b9fa1459f5220e5ff41de2a051a0e9db829
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,16 @@
+image: python:3.8-buster
+
+variables:
+  GIT_SUBMODULE_STRATEGY: recursive
+
+pages:
+  stage: deploy
+  before_script:
+  - pip install Markdown gitpython pelican py_w3c beautifulsoup4
+  script:
+  - make publish
+  artifacts:
+    paths:
+    - public/
+  only:
+  - master
diff --git a/Makefile b/Makefile
index dbfd58fcf25c59b19374e87023d3a140a276a783..823d7ae0e6d7de9103af6f3fea17e86dbc06350c 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@ PELICANOPTS=
 
 BASEDIR=$(CURDIR)
 INPUTDIR=$(BASEDIR)/content
-OUTPUTDIR=$(BASEDIR)/output
+OUTPUTDIR=$(BASEDIR)/public
 CONFFILE=$(BASEDIR)/pelicanconf.py
 PUBLISHCONF=$(BASEDIR)/publishconf.py
 
diff --git a/publishconf.py b/publishconf.py
index e43bba5a07493e8b8277c5512d5d09713f637bb9..612c12e7887e59eab61100e38fe3f98bb142b653 100644
--- a/publishconf.py
+++ b/publishconf.py
@@ -22,4 +22,4 @@ DELETE_OUTPUT_DIRECTORY = True
 # Following items are often useful when publishing
 
 #DISQUS_SITENAME = ""
-#GOOGLE_ANALYTICS = ""
\ No newline at end of file
+#GOOGLE_ANALYTICS = ""