diff --git a/src/components/login_form/login_form.js b/src/components/login_form/login_form.js
index 1a6f6015432eb6c5f372f4e9504b978d7aa83273..a117b76fd24f8acaa3a6a438a4c11c357bac8112 100644
--- a/src/components/login_form/login_form.js
+++ b/src/components/login_form/login_form.js
@@ -4,7 +4,8 @@ const LoginForm = {
     authError: false
   }),
   computed: {
-    loggingIn () { return this.$store.state.users.loggingIn }
+    loggingIn () { return this.$store.state.users.loggingIn },
+    registrationOpen () { return this.$store.state.config.registrationOpen }
   },
   methods: {
     submit () {
diff --git a/src/components/login_form/login_form.vue b/src/components/login_form/login_form.vue
index 585af6f64eebf308a2c21079ae55beccd165d894..d629114820527ef4b89fd0a2100225c638276605 100644
--- a/src/components/login_form/login_form.vue
+++ b/src/components/login_form/login_form.vue
@@ -16,7 +16,7 @@
         </div>
         <div class='form-group'>
           <div class='login-bottom'>
-            <div><router-link :to="{name: 'registration'}" class='register'>Register</router-link></div>
+            <div><router-link :to="{name: 'registration'}" v-if='registrationOpen' class='register'>Register</router-link></div>
             <button :disabled="loggingIn" type='submit' class='btn btn-default base05 base01-background'>Log in</button>
           </div>
         </div>
diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js
index 9e99197c29a3c8c628f0149b4e67e6f71b62545a..771b3b27502b563a1c5571cb171ad79c9afc36b8 100644
--- a/src/components/registration/registration.js
+++ b/src/components/registration/registration.js
@@ -4,6 +4,11 @@ const registration = {
     error: false,
     registering: false
   }),
+  created () {
+    if (!this.$store.state.config.registrationOpen || !!this.$store.state.users.currentUser) {
+      this.$router.push('/main/all')
+    }
+  },
   computed: {
     termsofservice () { return this.$store.state.config.tos }
   },
diff --git a/src/main.js b/src/main.js
index 52b820c28b22faf015f0a518cbae4d1f31339833..4b7891ed0616aaafafa30b37283b23b56be1ed31 100644
--- a/src/main.js
+++ b/src/main.js
@@ -86,11 +86,12 @@ new Vue({
 
 window.fetch('/static/config.json')
   .then((res) => res.json())
-  .then(({name, theme, background, logo, tos}) => {
+  .then(({name, theme, background, logo, registrationOpen}) => {
     store.dispatch('setOption', { name: 'name', value: name })
     store.dispatch('setOption', { name: 'theme', value: theme })
     store.dispatch('setOption', { name: 'background', value: background })
     store.dispatch('setOption', { name: 'logo', value: logo })
+    store.dispatch('setOption', { name: 'registrationOpen', value: registrationOpen })
   })
 
 window.fetch('/static/terms-of-service.html')
diff --git a/static/config.json b/static/config.json
index 3b6d56c44abeb83cee9a0a6b375bbb9319a16ab5..195ee0469062d1a4cd658870cf8445da2a327191 100644
--- a/static/config.json
+++ b/static/config.json
@@ -2,5 +2,6 @@
   "name": "Pleroma FE",
   "theme": "base16-pleroma-dark.css",
   "background": "/static/bg.jpg",
-  "logo": "/static/logo.png"
+  "logo": "/static/logo.png",
+  "registrationOpen": false
 }