diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c641753f43ba228458d59d963fdb678519e57835
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,25 @@
+image: kroniak/ssh-client
+
+stages:
+  - deploy
+
+home:
+  stage: deploy
+  before_script:
+    - eval $(ssh-agent -s)
+    - echo "$SSH" | tr -d '\r' | ssh-add -
+    - mkdir -p ~/.ssh/socket
+    - chmod 700 ~/.ssh
+    - cp .magic_ssh_config ~/.ssh/config
+  script:
+    # AFS magic incoming
+    - ssh rlacko@centaur.sch.bme.hu cp /afs/sch.bme.hu/home/rlacko/.system/rlacko.keytab /tmp/rlacko.keytab
+    - ssh rlacko@centaur.sch.bme.hu kinit -k -t /tmp/rlacko.keytab rlacko
+    - ssh rlacko@centaur.sch.bme.hu rm /tmp/rlacko.keytab
+    - ssh rlacko@centaur.sch.bme.hu aklog sch.bme.hu -k SCH.BME.HU
+    - ssh rlacko@centaur.sch.bme.hu mkdir -p /home/rlacko/public_html/python3
+    # actual work
+    - scp -r $PWD/* rlacko@centaur.sch.bme.hu:/home/rlacko/public_html/python3/
+  only:
+    refs:
+      - master
diff --git a/.magic_ssh_config b/.magic_ssh_config
new file mode 100644
index 0000000000000000000000000000000000000000..5d4ec61076a673108202bb98ff1f7d210719bed7
--- /dev/null
+++ b/.magic_ssh_config
@@ -0,0 +1,5 @@
+Host centaur.sch.bme.hu
+    StrictHostKeyChecking no
+    ControlMaster auto
+    ControlPersist yes
+    ControlPath ~/.ssh/socket/%r@%h:%p
diff --git a/README.md b/README.md
index 1d6479fa369f001713eb575613260ab05cb929ca..098e38250bfd78f9770c6496bc5f124d550c0427 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,7 @@
 2021-es Python dokumentáció KSZK előadáshoz
 
 [Bevezető](guide/01_introduction)
+
+<script>
+  window.location.href += "guide/01_introduction";
+</script>
diff --git a/index.html b/index.html
index b16275868fffe26563966e1354abbc26cab99af3..6854b3899e25569cb9d333503ba93814de315a8f 100644
--- a/index.html
+++ b/index.html
@@ -6,13 +6,39 @@
       name="viewport"
       content="width=device-width, initial-scale=1, shrink-to-fit=no"
     />
+    <meta
+      http-equiv="Cache-Control"
+      content="no-cache, no-store, must-revalidate"
+    />
+    <meta http-equiv="Pragma" content="no-cache" />
+    <meta http-equiv="Expires" content="0" />
     <title>My Docs</title>
     <link rel="icon" type="image/x-icon" href="favicon.ico" />
     <link rel="stylesheet" href="https://unpkg.com/docute@4/dist/docute.css" />
     <link rel="stylesheet" href="style.css" />
   </head>
+
   <body>
     <div id="docute"></div>
+    <script>
+      caches
+        .keys()
+        .then((a) =>
+          a.forEach((cacheName) =>
+            caches
+              .open(cacheName)
+              .then((cache) =>
+                cache
+                  .keys()
+                  .then((keys) =>
+                    keys.forEach((request, index, array) =>
+                      cache.delete(request)
+                    )
+                  )
+              )
+          )
+        );
+    </script>
     <script src="https://unpkg.com/docute@4/dist/docute.js"></script>
     <script>
       new Docute({
@@ -20,6 +46,7 @@
         title: 'Python3',
         layout: 'wide',
         darkThemeToggler: true,
+
         detectSystemDarkTheme: true,
         highlight: ['python', 'c', 'cpp'],
         nav: [