diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..aef1d1f
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,20 @@
+before_script:
+ - apk add --no-cache openssh tzdata
+ - cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
+ - eval $(ssh-agent -s)
+ - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
+ - mkdir ~/.ssh
+ - chmod 700 ~/.ssh
+ - echo "$SSH_KNOWN_HOSTS" | tr -d '\r' >> ~/.ssh/known_hosts
+ - chmod 644 ~/.ssh/known_hosts
+
+build:
+ image: silex/emacs:27.2-alpine-ci
+ stage: build
+ script:
+ - emacs -Q --script publish/publish.el
+ - apk add --no-cache rsync
+ - rsync --archive --verbose --chown=gitlab-ci:www-data --delete --progress -e"ssh -p "$SSH_PORT"" public/ "$SSH_USER"@mmk2410.org:/var/www/config.mmk2410.org/
+ artifacts:
+ paths:
+ - public
diff --git a/publish/publish.el b/publish/publish.el
index 55c54f5..8a1da95 100644
--- a/publish/publish.el
+++ b/publish/publish.el
@@ -1,10 +1,10 @@
-(setq mmk2410/dot-emacs-publish-publishing-dir "/tmp/dot-emacs-publish/")
+(setq mmk2410/dot-emacs-publish-publishing-dir "./public/")
(setq mmk2410/dot-emacs-publish-html-head-extra
(concat "\n"
"\n"
"\n"
- ""
+ ""
""))
(setq mmk2410/dot-emacs-publish-html-preamble