diff --git a/hedgedoc/defaults/main.yml b/hedgedoc/defaults/main.yml
index 160642c750ae45b9d192846cbe2196262ec0b6f1..05607dbae9ce0c08505b2f9c3c83a43f3113d2bf 100644
--- a/hedgedoc/defaults/main.yml
+++ b/hedgedoc/defaults/main.yml
@@ -3,14 +3,19 @@
 hedgedoc_data_root: /var/lib/hedgedoc
 hedgedoc_install_root: /opt/hedgedoc
 hedgedoc_version: "1.8.2"
+
+# https://docs.hedgedoc.org/configuration
 hedgedoc_db:
   dialect: sqlite
   storage: "{{ hedgedoc_data_root }}/db.sqlite"
+hedgedoc_domain: hedgedoc.example.org
+hedgedoc_urlPath: null
+hedgedoc_allowGravatar: false
+# hedgedoc_csp
+# hedgedoc_cookiePolicy
+# hedgedoc_extra_config
 
 # hedgedoc_db:
 #   dialect: postgres
 #   host: /run/postgresql
-#   username: ""
-#   password: ""
 #   database: hedgedoc
-#   port: "5432"
diff --git a/hedgedoc/tasks/main.yml b/hedgedoc/tasks/main.yml
index aafb0d4166f0e658a2377672b389ddb2f589a6f4..619c75f2e929e96703da8219913ae4cae2082d36 100644
--- a/hedgedoc/tasks/main.yml
+++ b/hedgedoc/tasks/main.yml
@@ -35,21 +35,18 @@
 
 - name: Install config
   template:
-    src: "{{ item }}.j2"
-    dest: "{{ hedgedoc_install_root }}/{{ item }}"
-  loop:
-    - config.json
-    - .sequelizerc
+    src: "config.json.j2"
+    dest: "{{ hedgedoc_install_root }}/config.json"
   when:
     - not installed_package_json.failed
-    - installed_package_json.content|b64decode|json_query('version')|trim ==
+    - installed_package_json.content|b64decode|from_json|json_query('version')|trim ==
       hedgedoc_version
   notify:
     - Restart hedgedoc
 
 - when: >-
     installed_package_json.failed or
-    installed_package_json.content|b64decode|json_query('version')|trim !=
+    installed_package_json.content|b64decode|from_json|json_query('version')|trim !=
     hedgedoc_version
   block:
     - name: Stop service for upgrade
@@ -79,15 +76,12 @@
 
     - name: Install config
       template:
-        src: "{{ item }}.j2"
-        dest: "{{ hedgedoc_install_root }}-{{ hedgedoc_version }}/{{ item }}"
-      loop:
-        - config.json
-        - .sequelizerc
+        src: "config.json.j2"
+        dest: "{{ hedgedoc_install_root }}-{{ hedgedoc_version }}/config.json"
 
     - name: yarn install
       command:
-        cmd: yarn install --production=true --pure-lockfile
+        cmd: yarnpkg install --production=true --pure-lockfile
         chdir: "{{ hedgedoc_install_root }}-{{ hedgedoc_version }}"
 
     - name: Get old install target
diff --git a/hedgedoc/templates/config.json.j2 b/hedgedoc/templates/config.json.j2
new file mode 100644
index 0000000000000000000000000000000000000000..9266c33970bd2af041464f09a0c23fbd8fb6f356
--- /dev/null
+++ b/hedgedoc/templates/config.json.j2
@@ -0,0 +1,22 @@
+{
+    "production": {
+        "domain": "{{ hedgedoc_domain }}",
+        "urlPath": {{ hedgedoc_urlPath|to_json }},
+        "path": "/run/hedgedoc/hedgedoc.sock",
+        "loglevel": "info",
+        "uploadsPath": "{{ hedgedoc_data_root }}/uploads",
+        "allowGravatar": {{ hedgedoc_allowGravatar|to_json }},
+{% if hedgedoc_csp is defined %}
+        "csp": {{ hedgedoc_csp|to_json }},
+{% endif %}
+{% if hedgedoc_cookiePolicy is defined %}
+        "cookiePolicy": "{{ hedgedoc_cookiePolicy }}",
+{% endif %}
+        "db": {{ hedgedoc_db|to_json }}
+{% if hedgedoc_extra_config is defined -%}
+{% for k, v in hedgedoc_extra_config.items() %}
+        , "{{ k }}": {{ v|to_json }}
+{% endfor %}
+{%- endif %}
+    }
+}
diff --git a/hedgedoc/templates/hedgedoc.service.j2 b/hedgedoc/templates/hedgedoc.service.j2
new file mode 100644
index 0000000000000000000000000000000000000000..53d676bc46ccf8d7124d68a93049cb3cdecc8c20
--- /dev/null
+++ b/hedgedoc/templates/hedgedoc.service.j2
@@ -0,0 +1,48 @@
+[Unit]
+Description=HedgeDoc - The best platform to write and share markdown.
+Documentation=https://docs.hedgedoc.org/
+After=network.target
+{% if hedgedoc_db.dialect == "postgres" %}
+After=postgresql.service
+{% elif hedgedoc_db.dialect == "mariadb" %}
+After=mariadb.service
+{% endif %}
+
+[Service]
+Type=exec
+Environment=NODE_ENV=production
+Restart=always
+RestartSec=2s
+ExecStart=/usr/bin/yarnpkg start --production
+CapabilityBoundingSet=
+NoNewPrivileges=true
+PrivateDevices=true
+RemoveIPC=true
+LockPersonality=true
+ProtectControlGroups=true
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectKernelLogs=true
+ProtectClock=true
+ProtectHostname=true
+ProtectProc=noaccess
+RestrictRealtime=true
+RestrictSUIDSGID=true
+RestrictNamespaces=true
+RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
+ProtectSystem=strict
+ProtectHome=true
+PrivateTmp=true
+SystemCallArchitectures=native
+SystemCallFilter=@system-service
+RuntimeDirectory=hedgedoc
+
+# You may have to adjust these settings
+User=hedgedoc
+Group=hedgedoc
+WorkingDirectory={{ hedgedoc_install_root }}
+
+ReadWritePaths={{ hedgedoc_data_root }}
+
+[Install]
+WantedBy=multi-user.target