diff --git a/scripts/start-gitea.sh b/scripts/start-gitea.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b5a4ce00f189a71c7f94287edb64798ef8900158
--- /dev/null
+++ b/scripts/start-gitea.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+set -euo pipefail
+
+docker stop gitea || true
+docker rm gitea || true
+
+git checkout ./test/gitea/gitea.db
+
+docker run -d --name gitea -p 3000:3000 \
+  -e USER_UID=1000 -e USER_GID=1000 \
+  -v $(pwd)/test/gitea/conf/:/data/gitea/conf/ \
+  -v $(pwd)/test/gitea/gitea.db:/data/gitea/gitea.db \
+  gitea/gitea
+
+sleep 5
+
+echo "creating test repo..."
+curl -u 'test:test' -XPOST -H 'Content-Type: application/json' -d '{"name":"test"}' http://localhost:3000/api/v1/user/repos
diff --git a/test/gitea/conf/app.ini b/test/gitea/conf/app.ini
new file mode 100644
index 0000000000000000000000000000000000000000..420a3c2b508f52bd46606f89cb5b6e7900a12ce6
--- /dev/null
+++ b/test/gitea/conf/app.ini
@@ -0,0 +1,90 @@
+APP_NAME = Gitea: Git with a cup of tea
+RUN_MODE = dev
+RUN_USER = git
+
+[repository]
+ROOT = /data/git/repositories
+
+[repository.local]
+LOCAL_COPY_PATH = /data/gitea/tmp/local-repo
+
+[repository.upload]
+TEMP_PATH = /data/gitea/uploads
+
+[server]
+APP_DATA_PATH    = /data/gitea
+DOMAIN           = localhost
+SSH_DOMAIN       = localhost
+HTTP_PORT        = 3000
+ROOT_URL         = http://localhost:3000/
+DISABLE_SSH      = false
+SSH_PORT         = 22
+SSH_LISTEN_PORT  = 22
+LFS_START_SERVER = true
+LFS_CONTENT_PATH = /data/git/lfs
+LFS_JWT_SECRET   = RYK1FNoLVtHSpsOZNDiLxUHhSFAVGfRz91zzCb4_aQk
+OFFLINE_MODE     = false
+
+[database]
+PATH     = /data/gitea/gitea.db
+DB_TYPE  = sqlite3
+HOST     = localhost:3306
+NAME     = gitea
+USER     = root
+PASSWD   =
+LOG_SQL  = false
+SCHEMA   =
+SSL_MODE = disable
+CHARSET  = utf8
+
+[indexer]
+ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve
+
+[session]
+PROVIDER_CONFIG = /data/gitea/sessions
+PROVIDER        = file
+
+[picture]
+AVATAR_UPLOAD_PATH            = /data/gitea/avatars
+REPOSITORY_AVATAR_UPLOAD_PATH = /data/gitea/repo-avatars
+DISABLE_GRAVATAR              = false
+ENABLE_FEDERATED_AVATAR       = true
+
+[attachment]
+PATH = /data/gitea/attachments
+
+[log]
+MODE                 = console
+LEVEL                = info
+REDIRECT_MACARON_LOG = true
+MACARON              = console
+ROUTER               = console
+ROOT_PATH            = /data/gitea/log
+
+[security]
+INSTALL_LOCK   = true
+SECRET_KEY     = XOtNgquA4e8Cu5QLDQkgnAXvt1loitGNPo4LZUF7TnOTCc9p5jbacSXYrV9MwNEr
+INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2MDQzMjM3MTB9.WCvwenj0ZqxBwhv-hmYx9tjRWl8Edev1J459MQ09e0E
+
+[service]
+DISABLE_REGISTRATION              = false
+REQUIRE_SIGNIN_VIEW               = false
+REGISTER_EMAIL_CONFIRM            = false
+ENABLE_NOTIFY_MAIL                = false
+ALLOW_ONLY_EXTERNAL_REGISTRATION  = false
+ENABLE_CAPTCHA                    = false
+DEFAULT_KEEP_EMAIL_PRIVATE        = false
+DEFAULT_ALLOW_CREATE_ORGANIZATION = false
+DEFAULT_ENABLE_TIMETRACKING       = false
+NO_REPLY_ADDRESS                  =
+
+[oauth2]
+JWT_SECRET = rzfhS-uGuLCGG9bYfZ0gIHA7XlktDGvf4F9UAzibqLE
+
+[mailer]
+ENABLED = false
+
+[openid]
+ENABLE_OPENID_SIGNIN = false
+ENABLE_OPENID_SIGNUP = false
+
diff --git a/test/gitea/gitea.db b/test/gitea/gitea.db
new file mode 100644
index 0000000000000000000000000000000000000000..8d64b0bfaf4c8abdff24e96735ddd259677ac6a0
Binary files /dev/null and b/test/gitea/gitea.db differ