mrkeyoor.com_
Sat 31 Oct 08:52 UTC
Dev Toolsevaluationupdated 25 Oct 2026

gitea review

Gitea is a self-hosted Git service. Its README describes code review, issue tracking, a package registry and CI/CD through Gitea Actions. It is written in Go and licensed under MIT. Our recorded pnpm dependency installation did not establish that the Git server builds or runs.

+105stars / 7d
Verdict

Gitea merits evaluation for teams prepared to operate their own Git host, maintain its data and run Actions infrastructure separately. In our recorded 2026-10-11 run at commit 8a9e8c4, only the pnpm dependency-install step succeeded: 25 seconds rounded, 881 recorded dependencies and a 612 MB installation footprint. Build and tests were skipped, so server readiness remains unverified. Before adoption, check your deployment and package-publishing workflows against Gitea's documented Actions differences, then rehearse a backup and restoration.

We ran it

Lab card: what happened when we ran giteaScreenshot of gitea (gitea.com)
Install✓ · 25s881 packages · 612 MB
Buildn/ano build script
Testsn/ano test script
Repo6351 files~547,283 lines of source · 33 MB · 18 CI workflows · Dockerfile · tests dir

Answers from our run

Does gitea build from source?

Dependencies installed in 25 seconds (881 packages), and the project has no separate build step. We cloned commit 8a9e8c4 into a clean Debian container with 3 CPUs and no project-specific setup.

Does gitea have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Who should not use gitea?

Teams that need GitHub workflows to retain all their behavior without changes: Gitea documents ignored job environments and unsupported GitHub-only permission scopes, including id-token.

What are the alternatives to gitea?

Gogs, GitLab Community Edition. Gitea merits evaluation for teams prepared to operate their own Git host, maintain its data and run Actions infrastructure separately.

Setup3/5The 2026-10-11 run at 8a9e8c4 completed the pnpm dependency-install step in 25 seconds rounded. Deployment guidance is concrete, but build, tests and server operation were not verified.
Docs3/5Supplied primary documentation explains Docker storage and ownership, Actions differences and manual recovery. Those procedures were not executed in our run.
Community2/5The README identifies contribution instructions, Discord and a discussion forum. Supplied evidence does not establish support responsiveness or current adoption; stars are not a quality measure.
Maturity3/5Documentation addresses configuration, workflow compatibility and recovery. Our dependency-only run does not verify runtime reliability or a successful restoration.

Discussed on

  1. hnGiteabot account was compromised134 points
  2. hnGitea blocks PR from community, charging $$ for open-source contributions68 points
  3. hnGitea v1.7.025 points
  4. hn5000€ bounty to implement forgefed federation for Gitea6 points
  5. hnSelf-Hosted Git Service4 points

Who it’s for

Teams that want to host repositories, code review and issues on infrastructure they manage.
Developers who want a package registry alongside their repositories under an MIT license.
Operators prepared to maintain persistent data, rehearse recovery and deploy an Actions runner separately.

Who it’s NOT for

Teams that need GitHub workflows to retain all their behavior without changes: Gitea documents ignored job environments and unsupported GitHub-only permission scopes, including id-token.
Operators expecting the Git server itself to execute Actions jobs without a runner.
Teams requiring a built-in recovery command: the documented restoration process is manual.
Readers seeking a verified server build, passing test suite or hosting performance benchmark from this review. Our run did not establish those results.

Setup reality

In our recorded run on 2026-10-11 at commit 8a9e8c4e8ce3d535e98ea775fdf994b66ce5dd40, the pnpm dependency-install step succeeded with exit code 0. Its recorded duration was 24,579 ms, rounded to 25 seconds in the summary. The parser recorded 881 dependencies and a 612 MB installation footprint. The command tail separately reported "Done in 3.8s using pnpm v12.8.1"; that is pnpm's own timing, not the duration of the recorded harness step.

The checkout measurement was 33 MB, 6,351 files and approximately 547,283 source lines. Detection found Node, Python and Go, selected Node/pnpm as the primary path, and recorded a Makefile, 18 CI workflow files, a Dockerfile, a tests directory and workspaces. Build and test steps were skipped with reason "no script". This describes the harness's selected path, not the absence of project build instructions, tests or Makefile targets.

The recorded sandbox configuration was 3 CPUs, 8 GB memory and image lab-node:22. The image label alone does not establish the actual runtime version. The run did not verify an installed Gitea binary, server startup, Git operations, Actions execution or a measured hosting workload. No audit result or audit coverage was recorded.

For deployment, the Docker documentation describes persistent storage, SQLite or separate MySQL/PostgreSQL services, and browser-based installation. Host-volume ownership needs attention. The guide warns against switching between rootful and rootless images by changing the image value. These deployment instructions were not executed in our run.

A dependency install leaves the hosting decision open

Gitea can put repositories, code review, issues and packages on infrastructure your team controls. The README describes those capabilities and CI/CD that can reuse GitHub Actions. The adoption question is whether your team can operate that service and preserve the workflow behavior it needs.

Our recorded run answers a narrower question: the selected pnpm dependency-install step completed. It does not establish that Gitea's Go server built, started or accepted a push.

What our recorded run established

The run took place on 2026-10-11 at commit 8a9e8c4e8ce3d535e98ea775fdf994b66ce5dd40. The install step exited successfully after 24,579 ms, rounded to 25 seconds in the stored summary. The parser recorded 881 dependencies and a 612 MB installation footprint. These are development-installation measurements, not production image size, repository storage requirements or hosting performance.

The install output ends with "Done in 3.8s using pnpm v12.8.1". That internal pnpm timing and the harness's full step duration measure different scopes. Neither is a server-startup measurement. The complete harness run was recorded as 45 seconds.

The checkout measured 33 MB across 6,351 files and approximately 547,283 source lines. Detection found Node, Python and Go but selected Node/pnpm as the primary path. It also recorded a Makefile, 18 CI workflow files, a Dockerfile, a tests directory and workspaces. These are parser observations, not evidence that any upstream checks passed.

Build and test steps were skipped with the reason "no script". This does not mean Gitea has no build step or runnable tests. Its README explicitly points to build prerequisites, local development, linting, testing and source-build instructions. The recorded run contains no compiler result, passing-test count, installed-binary check, server-startup check, Git workload or Actions execution. No audit result or coverage was recorded.

The sandbox configuration was 3 CPUs, 8 GB memory and image lab-node:22. The image name does not establish the runtime version actually used. There was no new execution for this correction.

Deployment needs persistent data

The Docker installation guide describes a persistent volume and browser-based installation. SQLite can serve the basic setup without a separate database service; the guide also provides MySQL and PostgreSQL configurations. These are documented deployment routes, not configurations tested in our sandbox.

For host volumes, match ownership to the configured UID and GID. The documentation warns that incorrect permissions may prevent startup and that rootful and rootless images are not interchangeable by changing the image value. The README also distinguishes dynamic settings from static app.ini settings, which require an instance restart.

Check Actions behavior before migrating

Gitea Actions delegates jobs to a separately deployed runner. Treat the runner as another service your team must configure and maintain.

The GitHub Actions comparison identifies differences that can affect a release process. Job environments are ignored. GitHub-only permission scopes, including id-token, are unsupported. The guide also says GITEA_TOKEN cannot publish to its repository's package registry and directs users to a personal access token instead.

Review workflows that rely on deployment environments, identity tokens or package publishing before moving a release repository. Successful parsing alone would not demonstrate equivalent behavior. We did not execute workflows in this run.

Rehearse recovery before relying on the host

The backup and restoration guide requires stopping the instance for backup consistency. Its explanation is concrete: a database dump and a repository copy can disagree if a migration is in progress.

Restoration is documented as a manual process involving files and a database dump. The guide warns about possible restoration problems with XORM-generated database dumps and discusses native database tools. It also calls for regenerating repository hooks when installation paths or methods change.

A useful next step is a recovery rehearsal on a separate instance, followed by a Git push check. That is a recommendation, not a test completed for this review.

Choose alternatives by workflow

Gogs lists repository issues, pull requests, protected branches and mirroring. Consider it when those collaboration features match your requirements and you will evaluate automation separately. Its README does not give us a measured comparison with Gitea.

GitLab Community Edition is identified as freely available under the MIT Expat license. The repository overview describes merge requests and CI/CD pipelines. Consider it when retaining a GitLab pipeline workflow matters, while checking which edition provides each required feature. We have no comparative resource-use or security measurement supporting a preference between GitLab and Gitea.

How to read the scores

These are editorial ratings of the evidence available for this review, not benchmark results. Across each category, 1 means insufficient evidence for an adoption recommendation; 2 means documented capability or support routes with substantial uncertainty; 3 means concrete guidance or a bounded successful observation with important checks remaining; 4 requires broader corroboration; and 5 requires comprehensive evidence within the stated scope. Missing measurements do not establish a product defect.

Setup receives 3/5 because dependency installation completed and deployment guidance is concrete, but server operation was not checked. Documentation receives 3/5 because the supplied instructions explain deployment, compatibility and recovery limits, although we did not execute those procedures. Community receives 2/5 because the README identifies contribution and support routes without establishing response quality or current adoption. Maturity receives 3/5 because the supplied documentation covers operational concerns, while our run leaves runtime behavior and recovery unverified.

Alternatives

ProjectWhat it isPick it when
Gogs gh↗A self-hosted Git service whose README lists issues, pull requests, protected branches and repository mirroring.Consider Gogs when your requirements center on those repository collaboration features and you plan to evaluate automation separately. We did not measure its resource use against Gitea.
GitLab Community Edition gh↗GitLab's freely available MIT Expat edition; its repository overview describes Git hosting, merge requests and CI/CD pipelines.Consider GitLab Community Edition when retaining a GitLab pipeline workflow is a priority. Check the required features against the edition before migrating; this review does not establish a resource or security advantage for either product.

What people are saying

  1. [github-trending] go-gitea/gitea

Sources

  1. Gitea README and repository
  2. Gitea v28.1.0 release notes
  3. Gitea Docker installation
  4. Gitea Actions runner overview
  5. Gitea Actions differences from GitHub Actions
  6. Gitea backup and restoration
  7. Gogs repository and README
  8. GitLab Community Edition mirror and README

More dev tools reviews

linux-insides · cat-catch · date-fns · okhttp · the-craft-of-selfteaching · skills · the whole board →