Hi.
We have a self-hosted instance of gitea, which we are using to migrate from github. Small repo’s are migrating fine, but very large repo’s are timing out. This happens after 1hr 20 minutes of progress.
Error
Dec 19 14:03:49 gitea gitea[39671]: 2025/12/19 14:03:49 HTTPRequest [I] router: completed GET /CompanyName/UnrealEngine/-/migrate/status for 10.41.6.211:50363, 200 OK in 21.1ms @ repo/migrate.go:294(repo.MigrateStatus)
Dec 19 14:03:52 gitea gitea[39671]: 2025/12/19 14:03:52 HTTPRequest [I] router: completed GET /CompanyName/UnrealEngine/-/migrate/status for 10.41.6.211:50363, 200 OK in 23.2ms @ repo/migrate.go:294(repo.MigrateStatus)
Dec 19 14:03:55 gitea gitea[39671]: 2025/12/19 14:03:55 HTTPRequest [I] router: completed GET /CompanyName/UnrealEngine/-/migrate/status for 10.41.6.211:50363, 200 OK in 20.6ms @ repo/migrate.go:294(repo.MigrateStatus)
Dec 19 14:03:58 gitea gitea[39671]: 2025/12/19 14:03:58 …/git/pipeline/catfile.go:52:CatFileBatchCheckAllObjects() [E] git cat-file --batch-check --batch-all-object [/mnt/truenas-gitearepo/CompanyName/unrealengine.git]: context deadline exceeded -
Dec 19 14:03:58 gitea gitea[39671]: 2025/12/19 14:03:58 modules/repository/repo.go:155:StoreMissingLfsObjectsInRepository() [E] Repo[<Repository 43:CompanyName/UnrealEngine>]: Error enumerating LFS objects for repository: git cat-file --batch-check --batch-all-object [/mnt/truenas-gitearepo/CompanyName/unrealengine.git]: context deadline exceeded -
Dec 19 14:03:58 gitea gitea[39671]: 2025/12/19 14:03:58 …/repository/migrate.go:166:MigrateRepositoryGitData() [E] Failed to store missing LFS objects for repository: git cat-file --batch-check --batch-all-object [/mnt/truenas-gitearepo/CompanyName/unrealengine.git]: context deadline exceeded -
Dec 19 14:03:58 gitea gitea[39671]: 2025/12/19 14:03:58 services/task/migrate.go:60:runMigrateTask.1() [E] runMigrateTask[37] by DoerID[3] to RepoID[43] for OwnerID[2] failed: StoreMissingLfsObjectsInRepository: git cat-file --batch-check --batch-all-object [/mnt/truenas-gitearepo/CompanyName/unrealengine.git]: context deadline exceeded -
Dec 19 14:03:58 gitea gitea[39671]: 2025/12/19 14:03:58 services/task/task.go:53:handler() [E] Run task failed: StoreMissingLfsObjectsInRepository: git cat-file --batch-check --batch-all-object [/mnt/truenas-gitearepo/CompanyName/unrealengine.git]: context deadline exceeded -
Dec 19 14:03:58 gitea gitea[39671]: 2025/12/19 14:03:58 HTTPRequest [I] router: completed GET /CompanyName/UnrealEngine/-/migrate/status for 10.41.6.211:50363, 200 OK in 19.6ms @ repo/migrate.go:294(repo.MigrateStatus)
Environment
Gitea 1.25.2 installed on Ubuntu 24.04 VM running on truenas, 16GB mem, 1 vCPU, 6 cores.
There are a number of posts about timeouts, which suggest tweaks to app.ini - I believe I have applied most of these. However, there may be timeouts at the system level I still need to adjust
Privacy redacted app.ini
APP_NAME = COMPANYNAME
RUN_USER = gitea
WORK_PATH = /var/lib/gitea/
RUN_MODE = prod
[database]
DB_TYPE = sqlite3
HOST = 127.0.0.1:3306
NAME = gitea
USER = gitea
PASSWD =
SCHEMA =
SSL_MODE = disable
PATH = /var/lib/gitea/data/gitea.db
LOG_SQL = false
CONN_MAX_LIFETIME = 3600
MAX_IDLE_CONNS = 2
MAX_OPEN_CONNS = 0
[repository]
ROOT = /mnt/truenas-gitearepo/
MAX_UPLOAD_SIZE = 0
SCRIPT_TYPE = bash
TIMEOUT = 1800
PULL_REQUEST_QUEUE_LENGTH = 1000
[server]
SSH_DOMAIN = gitea.COMPANYNAME.com
DOMAIN = gitea.COMPANYNAME.com
HTTP_PORT = 3000
ROOT_URL = https://gitea.COMPANYNAME.com
ROOT_URL = http://10.10.70.14
APP_DATA_PATH = /var/lib/gitea/data
START_SSH_SERVER = true
DISABLE_SSH = false
SSH_PORT = 2222
SSH_LISTEN_PORT = 2222
SSH_LISTEN_HOST = 0.0.0.0
SSH_LISTEN_HOST = 10.10.70.14
LFS_START_SERVER = true
LFS_JWT_SECRET =
LFS_HTTP_AUTH_EXPIRY = 24h
OFFLINE_MODE = true
MAX_REQUEST_SIZE = 0
[http]
POSTBUFFER = 624288000
TIMEOUT = 1800
[lfs]
STARTED = true
PATH = /mnt/truenas-gitealfs
MAX_FILE_SIZE = 10737418240
[mailer]
ENABLED = true
SMTP_ADDR = mail.REDACTED.com
SMTP_PORT = 25
FROM = gitea@COMPANYNAME.com
USER = gitea_server
PASSWD = REDACTED
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = true
DISABLE_REGISTRATION = true
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = false
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.localhost
[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false
[cron.update_checker]
ENABLED = false
[session]
PROVIDER = file
[log]
MODE = console
LEVEL = info
ROOT_PATH = /var/lib/gitea/log
[repository.pull-request]
DEFAULT_MERGE_STYLE = merge
[repository.signing]
DEFAULT_TRUST_MODEL = committer
[security]
INSTALL_LOCK = true
INTERNAL_TOKEN =
PASSWORD_HASH_ALGO = pbkdf2
ALLOW_LOCALNETWORKS = true
[migrations]
ALLOWED_DOMAINS = *
ALLOW_LOCALNETWORKS = true
SKIP_TLS_VERIFY = true
BLOCKED_DOMAINS =
[oauth2]
JWT_SECRET =
[git.timeout]
DEFAULT = 720
MIGRATE = 30000
MIRROR = 72000
CLONE = 30000
PULL = 30000
GC = 60
[git.http]
TIMEOUT = 3600
CONNECT_TIMEOUT = 60
[git]
TIMEOUT = 1800
HTTP_POSTBUFFER = 524288000
COMPRESS_LEVEL = 1
LARGE_FILE_THRESHOLD = 100m
FETCH_PRUNE = true
FETCH_PRUNE_INTERVAL = 24h
TIMEOUT = 3600
Any help or suggestions here would be appreciated.