diff --git a/.forgejo/workflows/renovate.yml b/.forgejo/workflows/renovate.yml
new file mode 100644
index 0000000..64af1f6
--- /dev/null
+++ b/.forgejo/workflows/renovate.yml
@@ -0,0 +1,24 @@
+name: Renovate
+
+on:
+  schedule:
+    - cron: '0 */8 * * *'
+
+jobs:
+  renovate:
+    runs-on: docker
+    container: renovate/renovate@sha256:328686ec82a09ea7fc4326ac03a35dff926a7e85206d7f1b376d6002e04ef526
+    env:
+      RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
+      GITHUB_COM_TOKEN: ${{ secrets.GH_NOPRIV_TOKEN }}
+      RENOVATE_GIT_PRIVATE_KEY: ${{ secrets.JOHNNY5_GPG_PRIVKEY }}
+      RENOVATE_PLATFORM: gitea
+      RENOVATE_ENDPOINT: ${{ github.server_url }}
+      RENOVATE_GIT_AUTHOR: 'Johnny5 <bot@snaile.de>'
+      LOG_LEVEL: debug
+
+    steps:
+      - uses: https://code.forgejo.org/actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
+
+      - name: Renovate
+        run: renovate ${{ github.repository }}
diff --git a/.renovaterc.json b/.renovaterc.json
new file mode 100644
index 0000000..011b5da
--- /dev/null
+++ b/.renovaterc.json
@@ -0,0 +1,5 @@
+{
+  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+  "extends": ["config:best-practices"],
+  "enabledManagers": ["github-actions"]
+}