diff --git a/README.md b/README.md
index 836fc02bb8c4345ad41f0191f77fe3dcd5aeb78c..c37f53901626cb16926bc17ecb54c9836e7e1c1b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,19 @@
+
+# URL shorter
+### made by jonasled
+
+#### About
 This is a URL shorter written in Python with Flask als Webhandler. The Webserver I used is Waitress and for the Database I used sqlite, because it's compact and works in this enviorement also with big databases (>2million entries) very quick. I started develloping this URL schorter, because google stopped their own and I can't find a very good one. Every shorter at the time on the market was boring or needed an account. For the first Version I used PHP, but the problem was, I packed everything in one very big file which was very hard to understand. At the time I wanted to use more than one domain I realized it is very hard to implement this, so I started searching for a better solution. The i found Flask, ehich is perfect, because you can split the Website code and the backend into multiple Files. So have fun to use this and contribute to it.
+
+#### Why is this one better than other
+* no ADs
+* free to use
+* custom urls
+* easy user management
+* small and modern UI
+* posibility to use multiple domains
+* open source --> posibility to expand
+
 [![pipeline status](http://gitlab.jonasled.de/jonasled/url_shorter_docker/badges/master/pipeline.svg)](http://gitlab.jonasled.de/jonasled/url_shorter_docker/commits/master)
 
 ![screenshot of url shorter](https://gitlab.jonasled.de/jonasled/url_shorter_docker/raw/master/Screenshot.png)
\ No newline at end of file
diff --git a/docker-compose-build.yml b/docker-compose-build.yml
index e2933f9e55254b8935e8baf84813caac3ba5eb61..bccf272929f576c6218d3209c0bbe455190a7dde 100644
--- a/docker-compose-build.yml
+++ b/docker-compose-build.yml
@@ -16,7 +16,8 @@ services:
       - recaptcha_private= #Please enter here your private Key for google recaptcha
       - recaptcha_public= #Please enter here your public Key for google recaptcha
       - host=0.0.0.0 #With this variable you can set the access ip range. 127.0.0.1 means you can only access it from the local network and 0.0.0.0 means everyone can access it.
-      - GITHUB_CLIENT_ID= #You have to set these four variables, if not the shorter will not run. To get the github keys visit https://github.com/settings/developers and register a new oauth application. The callback path is /user/github-callback
+      - login=1 #set this to 0 if you want to disable the oauth login. If you do so, you also don't have to fill in the oauth credentials below. 
+      - GITHUB_CLIENT_ID= #To get the github keys visit https://github.com/settings/developers and register a new oauth application. The callback path is /user/github-callback
       - GITHUB_CLIENT_SECRET= 
       - GOOGLE_CLIENT_ID=
       - GOOGLE_CLIENT_SECRET=
diff --git a/docker-compose.yml b/docker-compose.yml
index 402bc667799b44fec636cc23e015b86df55ccc91..e0c0b2b0194f64084235ac7b10646730449da5d2 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -16,7 +16,8 @@ services:
       - recaptcha_private= #Please enter here your private Key for google recaptcha
       - recaptcha_public= #Please enter here your public Key for google recaptcha
       - host=0.0.0.0 #With this variable you can set the access ip range. 127.0.0.1 means you can only access it from the local network and 0.0.0.0 means everyone can access it.
-      - GITHUB_CLIENT_ID= #You have to set these four variables, if not the shorter will not run. To get the github keys visit https://github.com/settings/developers and register a new oauth application. The callback path is /user/github-callback
+      - login=1 #set this to 0 if you want to disable the oauth login. If you do so, you also don't have to fill in the oauth credentials below. 
+      - GITHUB_CLIENT_ID= #To get the github keys visit https://github.com/settings/developers and register a new oauth application. The callback path is /user/github-callback
       - GITHUB_CLIENT_SECRET= 
       - GOOGLE_CLIENT_ID=
       - GOOGLE_CLIENT_SECRET=
diff --git a/home.py b/home.py
index 411b5b4195510fef64b39702155dfd593d59930f..3749ec1f6874c90ba9c0206257c62fb7be3af079 100644
--- a/home.py
+++ b/home.py
@@ -1,11 +1,11 @@
 from flask import render_template, abort
-def home(request, builddate, version, domain_prepared, recaptchaPublicKey, showDomainSelect, cookieNotice, domain_to_index, s):
+def home(request, builddate, version, domain_prepared, recaptchaPublicKey, showDomainSelect, cookieNotice, domain_to_index, s, loginEnabled):
     try:
         loginbar = "Hello " + s.loads(request.cookies.get('username')) + ' (<a href="/user/links" style="color:white">your links</a>, <a href="/user/logout" style="color:white">logout</a>)'
     except:
         loginbar = '<a href="#" onClick="showLogin()" style="color:white">login</a>'
 
     try:
-        return render_template('home.html', builddate=builddate, version=version, domain=domain_prepared, recaptchaPublicKey=recaptchaPublicKey, showDomainSelect=showDomainSelect, loginbar=loginbar, cookieNotice=cookieNotice ,domain_prefilled=domain_to_index[request.headers["host"]]) #return the default site to create a new shorten link
+        return render_template('home.html', builddate=builddate, version=version, domain=domain_prepared, recaptchaPublicKey=recaptchaPublicKey, showDomainSelect=showDomainSelect, loginbar=loginbar, cookieNotice=cookieNotice ,domain_prefilled=domain_to_index[request.headers["host"]], loginEnabled=loginEnabled) #return the default site to create a new shorten link
     except:
         abort(500)
\ No newline at end of file
diff --git a/main.py b/main.py
index eb6a6d828024c45737d926aeb03ca62df85d1582..80a84e6e184346b1cdcc1d080ccd888d5ae51178 100644
--- a/main.py
+++ b/main.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #Import os Libraries
 from waitress import serve #Used as webserver (Production)
-from flask import Flask, request, redirect, make_response #Used to prepare the dynamic pages
+from flask import Flask, request, redirect, make_response, abort #Used to prepare the dynamic pages
 from os import environ #Used for getting the enviorement variables
 from itsdangerous import URLSafeSerializer #used for signing the cookies
 from random import choice#used for signing the cookies
@@ -77,14 +77,21 @@ try:
 except:
     host="127.0.0.1"
 
-try: #Try to get the oauth keys, if it fails, abort and print a message to console
-    GITHUB_CLIENT_ID = environ['GITHUB_CLIENT_ID']
-    GITHUB_CLIENT_SECRET = environ['GITHUB_CLIENT_SECRET']
-    GOOGLE_CLIENT_ID = environ['GOOGLE_CLIENT_ID']
-    GOOGLE_CLIENT_SECRET = environ['GOOGLE_CLIENT_SECRET']
+try:
+    if(environ["login"] == "1"): loginEnabled = True
+    else: loginEnabled = False
 except:
-    print("please set the oauth keys and run again.")
-    exit()
+    loginEnabled = False
+
+if(loginEnabled):
+    try: #Try to get the oauth keys, if it fails, abort and print a message to console
+        GITHUB_CLIENT_ID = environ['GITHUB_CLIENT_ID']
+        GITHUB_CLIENT_SECRET = environ['GITHUB_CLIENT_SECRET']
+        GOOGLE_CLIENT_ID = environ['GOOGLE_CLIENT_ID']
+        GOOGLE_CLIENT_SECRET = environ['GOOGLE_CLIENT_SECRET']
+    except:
+        print("please set the oauth keys and run again.")
+        exit()
 
 try: #check, if admin wants to show a cookie notice to the user. 
     if(environ["cookieNotice"] == 1):
@@ -122,7 +129,7 @@ else:
 
 @app.route('/', methods=['GET'])
 def home_get():
-    return home(request, builddate, version, domain_prepared, recaptchaPublicKey, showDomainSelect, cookieNotice, domain_to_index, s)
+    return home(request, builddate, version, domain_prepared, recaptchaPublicKey, showDomainSelect, cookieNotice, domain_to_index, s, loginEnabled)
 
 @app.route('/', methods=['POST']) #This function is used to create a new url
 def home_post():
@@ -139,16 +146,18 @@ def redirect_short_url(short_url):
 
 @app.route('/user/login')
 def loginPage():
-    return login(request, GITHUB_CLIENT_ID, cookieNotice, GOOGLE_CLIENT_ID, url_scheme, domain)
+    if(loginEnabled): return login(request, GITHUB_CLIENT_ID, cookieNotice, GOOGLE_CLIENT_ID, url_scheme, domain)
+    else: abort(404)
 
 @app.route("/user/google-callback")
 def authorizeGoogle():
-    return googleCallback(request, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, url_scheme, domain, s)
-
+    if(loginEnabled): return googleCallback(request, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, url_scheme, domain, s)
+    else: abort(404)
 
 @app.route('/user/github-callback') #Github redirects to this link after the user authenticated. Then we use the Token we get from github and request via the github api the username and the userid
 def authorizeGithub():
-    return githubCallback(request, GITHUB_CLIENT_SECRET, GITHUB_CLIENT_ID, s)
+    if(loginEnabled): return githubCallback(request, GITHUB_CLIENT_SECRET, GITHUB_CLIENT_ID, s)
+    else: abort(404)
     
 @app.route('/user/logout')
 def logout():
@@ -163,11 +172,13 @@ def redirectOwnLinks():
 
 @app.route('/user/links<pageNumber>')#This function gives the user the posibility to see and delete his links
 def ownLinks(pageNumber):
-    return userProfile(request, cookieNotice, s, pageNumber, url_scheme)
+    if(loginEnabled): return userProfile(request, cookieNotice, s, pageNumber, url_scheme)
+    else: abort(404)
 
 @app.route('/user/delete') #This function is called if a user deletes an entrie
 def delete():
-    return deleteLink(request, s)
+    if(loginEnabled): return deleteLink(request, s)
+    else: abort(404)
 
 @app.route('/user/makeqr', methods=['POST'])
 def makeQrCode():
@@ -184,9 +195,11 @@ def apiDocs():
     return apiGet(request, url_scheme, s, sAPI)
 
     
-if __name__ == '__main__':
+def startup():
     table_check()# This code checks whether database table is created or not
     if production: #Check if production variable is set to true use the waitress webserver, else use the buildin flask webserver, with more debug output
         serve(app, host=host, port= 5000, url_scheme=url_scheme) #Start the Webserver for all users on port 5000
     else:
-        app.run(host=host, port=5000, debug=True) #Start the Webserver in Debug mode. This means, if the script runs in an error, it will show the error message in Browser.
\ No newline at end of file
+        app.run(host=host, port=5000, debug=True) #Start the Webserver in Debug mode. This means, if the script runs in an error, it will show the error message in Browser.
+
+if (__name__ == "__main__"): startup()
\ No newline at end of file
diff --git a/templates/home.html b/templates/home.html
index 8ac0776a0c1dd3e9601dcb490646bf8e424b1d1b..fa49ca7041c8ee0fc6d8c71580714aff4bf4677d 100644
--- a/templates/home.html
+++ b/templates/home.html
@@ -19,7 +19,9 @@
       </head>
 
    <body>
+      {% if loginEnabled %}
          <div id="loginbar">{{loginbar | safe}}</div>
+      {% endif %}
       <div class="login-page">
          <div class="form">
             {% if not short_url %}