W porównaniu gitea vs forgejo vs onedev masz do czynienia z trzema narzędziami, które odpowiadają na dwa różne pytania. Gitea i Forgejo to serwery git, do których doczepiono zarządzanie projektami. OneDev to platforma do zarządzania projektami i CI, która przy okazji naprawdę dobrze hostuje git. Decyzja nie brzmi więc "które z tych trzech jest najlepsze". Brzmi ona "czy chcę mały serwer git, czy platformę typu wszystko w jednym, i czy stać mnie na RAM, którego kosztuje takie rozwiązanie".
Ta ostatnia część to sedno napięcia. OneDev robi więcej od razu po instalacji, a testy nodatools.com wykazały, że w stanie bezczynności zużywa on około 3 razy więcej pamięci niż surowa instalacja Forgejo, co na małym VPS-ie może podwoić miesięczny rachunek. Ten kompromis to cała gra. (I nie, GitLab nie występuje w tym porównaniu. Gdybyś chciał znać zapotrzebowanie GitLab, nie czytałbyś o tych trzech narzędziach.)
Uruchomiłem wszystkie trzy. Poniżej znajduje się to, co faktycznie ma znaczenie przy wyborze jednego z nich dla zespołu: różnice w zarządzaniu i licencjach, które odróżniają Gitea od Forgejo, funkcje uzasadniające istnienie OneDev, przetestowane liczby RAM oraz konkretne "wybierz to, jeśli..." dla każdego z nich.
TL;DR
- Chcesz lekkiego serwera git z CI w stylu Actions? Gitea lub Forgejo. Wybierz Gitea, jeśli zależy Ci na bliższej zgodności z GitHub Actions; wybierz Forgejo, jeśli akceptowalna jest składnia workflowów podobna do GitHub z pewnymi poprawkami migracyjnymi.
- Zależy Ci na zarządzaniu przez organizację non-profit lub na licencji copyleft? Forgejo. To fork zarządzany przez społeczność i mój domyślny wybór dla większości zespołów.
- Chcesz licencji MIT, największej społeczności wśród forge'ów lub płatnej wersji Enterprise z SLA/SSO? Gitea.
- Chcesz wbudowanego zarządzania projektami, gotowego CI i inteligentnej analizy kodu w jednej instalacji, i masz zapas RAM? OneDev. Tylko wiedz, że wymaga minimum około 4 GB, podczas gdy Forgejo wystarczy 1 GB.
Krótki werdykt: Dla większości zespołów Forgejo to właściwy, lekki wybór domyślny: ten sam rdzeń co Gitea, przejrzystsze zarządzanie oraz Forgejo Actions ze składnią workflowów podobną do GitHub. Sięgnij po OneDev tylko wtedy, gdy naprawdę zależy Ci na połączonym doświadczeniu PM plus CI w jednym pakiecie i nie migrujesz stosu istniejących workflowów GitHub Actions.
Dwa pytania, na które odpowiadają te trzy narzędzia

OneDev uruchamia swój demon budowania CI wewnątrz procesu OneDev, więc nie trzeba wdrażać osobnego runnera. Gitea i Forgejo robią odwrotnie: serwer git to jedna rzecz, a runner CI wdraża się jako osobny proces obok niego. Ten pojedynczy fakt architektoniczny mówi wszystko o tym, jak każde z tych narzędzi postrzega samo siebie.
Gitea i Forgejo stawiają git na pierwszym miejscu. Repozytoria, pull requesty i code review to rdzeń; issues i kanban to przydatne dodatki; CI to coś, co dołączasz z zewnątrz. Całość jest zbudowana wokół hostowania git i nieprzeszkadzania Ci. Dlatego są małe, szybkie i tanie w utrzymaniu.
OneDev jest zbudowane w odwrotny sposób. To platforma do zarządzania projektami i CI/CD, w której hostowanie git jest pełnoprawnym komponentem, ale nie zasadą organizującą. Tablice kanban są zautomatyzowane, CI jest wbudowane, inteligencja kodu jest wbudowana, i platforma oczekuje, że będzie miejscem, w którym żyje Twój zespół, a nie tylko miejscem, gdzie leży Twój kod. To naprawdę inny produkt, dlatego porównywanie go z Gitea pod kątem tego, "kto lepiej hostuje git", mija się z celem. Oba hostują git mniej więcej równie dobrze. OneDev po prostu chce robić dużo więcej i każe Ci za to płacić zasobami.
Wszystko, co następuje dalej, wynika z tego podziału. Wybór Gitea kontra Forgejo to decyzja podrzędna w ramach gałęzi "lekki forge". Pytanie "czy OneDev jest tego wart" to zupełnie inna gałąź.
Gitea vs Forgejo: decyzja pomiędzy niemal bliźniakami

Oba zużywają około 180-350 MB RAM, oba dzielą tę samą bazę kodu aż do momentu forka i oba obsługują podstawowe hostowanie git w ten sam sposób. Jeśli chodzi o repozytoria, pull requesty, code review, issues i CI w stylu Actions, na co dzień trudno będzie znaleźć znaczącą różnicę, chyba że migrujesz istniejące workflowy GitHub Actions. Powiedzmy więc od razu jasno: to nie jest walka na funkcje. Różnica onedev vs gitea jest ogromna; różnica gitea vs forgejo dotyczy tego, kto kontroluje projekt i na jakiej licencji jest wydawany.
Oto tło, które faktycznie jest Ci potrzebne. W październiku 2022 roku domena i znak towarowy Gitea stały się centrum sporu o zarządzanie, a Forgejo powstało w odpowiedzi na to wydarzenie. Forgejo działa teraz pod skrzydłami Codeberg e.V., organizacji non-profit w Niemczech, i jest wydawane na licencji GPL-3.0. Gitea pozostaje na licencji MIT i ma darmową, otwartoźródłową edycję do samodzielnego hostowania, podczas gdy CommitGo sprzedaje obok niej Gitea Enterprise. Forgejo opisuje to rozwiązanie jako Open Core; Gitea/CommitGo kwestionuje tę etykietę i twierdzi, że sam projekt open source Gitea nie zawiera zastrzeżonego kodu. Dla czytelników praktyczna różnica jest prostsza niż polityka: Forgejo stawia na zarządzanie non-profit, copyleft i całkowicie wolne od opłat; Gitea oferuje permisywny rdzeń MIT plus wspieraną przez dostawcę ścieżkę Enterprise.
Wynikają z tego trzy rzeczy, każda istotna dla decyzji:
- Licencja. GPL-3.0 copyleft (Forgejo) oznacza, że jeśli zmodyfikujesz Forgejo i rozpowszechnisz zmodyfikowaną wersję, musisz udostępnić swoje zmiany na licencji GPL. MIT (Gitea) tego nie wymaga. Dla większości zespołów uruchamiających niezmodyfikowaną instancję wewnętrznie ta kwestia nigdy się nie pojawi. Ale jeśli budujesz coś na bazie forge'a i wydajesz to na zewnątrz, ma to znaczenie.
- Ujawnianie luk bezpieczeństwa. Forgejo informuje wszystkich o poradach bezpieczeństwa przez publiczne kanały. Gitea rezerwuje wcześniejsze powiadomienia o bezpieczeństwie dla płacących klientów Enterprise, co oznacza, że administratorzy samodzielnie hostujący instancję na darmowym poziomie mogą być narażeni na znaną lukę dłużej niż płacący klienci. Jeśli korzystasz z wersji darmowej, warto znać tę asymetrię.
- Po jednej stronie istnieje płatny poziom. Gitea ma komercyjną edycję Enterprise ($9,50-$19/użytkownika/miesiąc), która dodaje SSO, logi audytowe, priorytetowe wsparcie oraz SLA. Forgejo nie ma płatnego poziomu, każda funkcja jest dostępna w darmowej wersji na licencji GPL.
Jeśli dziś korzystasz z Gitea i to skłania Cię ku Forgejo, dobra wiadomość jest taka, że istnieje wspierana ścieżka migracji (z progiem wersji przy Gitea 1.22, który warto zrozumieć przed rozpoczęciem). Opisałem to osobno, zobacz pełny przewodnik migracji po szczegółowe zestawienie wersja po wersji. Jeśli przechodzisz z GitHub i nie wybrałeś jeszcze forge'a, to osobna decyzja z własnymi kompromisami, którą warto przemyśleć na jej własnych zasadach.
Wniosek z sekcji: w zakresie podstawowego hostingu git Gitea i Forgejo są remisowe. Wybierz Forgejo, jeśli zależy ci na własności non-profit, licencji copyleft i publicznym ujawnianiu luk bezpieczeństwa. Wybierz Gitea, jeśli zależy ci na licencji MIT, większej społeczności lub komercyjnej wersji Enterprise.
Czym OneDev naprawdę się wyróżnia
Uruchom OneDev (16.0.1 w chwili pisania tego tekstu) na jeden dzień, a pierwszą rzeczą, jaką zauważysz, jest to, że nigdy nie wdrożyłeś runnera CI. Demon budujący działa wewnątrz serwera OneDev, więc CI działa od razu po uruchomieniu platformy. Możesz zbudować pipeline w GUI bez napisania choćby linijki YAML, debugować zadanie przez terminal webowy i przetestować build na niezacommitowanych lokalnych zmianach jeszcze przed wysłaniem. To realne uproszczenie operacyjne w porównaniu z tańcem "zainstaluj serwer, potem zainstaluj i zarejestruj osobnego runnera", którego wymagają Gitea i Forgejo.
Haczyk, i to duży dla istniejących zespołów, polega na tym, że OneDev używa własnego dialektu YAML. Jest on nie zgodne z GitHub Actions. Każdy workflow napisany dla GitHub, Gitea lub Forgejo musi zostać przepisany, aby działał na OneDev. Jeśli masz stos plików .github/workflows, na których polegasz, to prawdziwy koszt migracji, a nie drobna uwaga na marginesie. Gitea i Forgejo dziedziczą ekosystem GitHub Actions, ale nie robią tego w ten sam sposób. Gitea Actions zaprojektowano jako zamiennik GitHub Actions typu drop-in, więc większość workflowów przenosi się bez zmian. Runner Forgejo jest w praktyce zgodny, ale ma udokumentowane luki: brakujący podklucz permissions, ignorowane continue-on-error, inna składnia OIDC. Sprawdź to, zanim założysz pełną przenośność.
Druga rzecz, którą OneDev robi, a mniejsze fork'i po prostu nie: inteligentna analiza kodu w interfejsie webowym. Wyszukiwanie symboli, przejście do definicji i wyszukiwanie odwołań działają dla wielu języków (oficjalna lista obejmuje Java, JavaScript, C, C++, C#, Go, PHP i Python) bez klonowania repozytorium lokalnie. Gitea i Forgejo nie mają wbudowanego niczego równoważnego, więc sięgnąłbyś po zewnętrzne narzędzie. Jeśli twój zespół często przegląda kod w przeglądarce, to naprawdę przyjemna funkcja.
Dołóż do tego w pełni zautomatyzowaną tablicę kanban (przenoszenie zadań według reguł, niestandardowe stany i pola, reguły przejść), service desk zamieniający przychodzącą pocztę w zgłoszenia bez potrzeby posiadania konta przez nadawcę, oraz poufne zgłoszenia wewnątrz publicznych projektów, i masz pełny obraz: OneDev próbuje być jednocześnie twoim systemem śledzenia zgłoszeń, systemem CI, przeglądarką kodu i tablicą projektową.
Warto doprecyzować jedną kwestię dotyczącą rejestrów pakietów. OneDev ma wbudowany rejestr; to jest jasne. Jego samouczek dotyczący pakietów wymienia Docker, npm, NuGet, Maven, PyPI i RubyGems, a obecny opis produktu wspomina też o Helm. Gitea i Forgejo obejmują wciąż znacznie szerszy zestaw formatów pakietów, w tym Alpine, Arch, Cargo, Composer, Conan, Conda, Debian, Go, Helm, Maven, npm, NuGet, PyPI, RPM, RubyGems, Swift, Vagrant i inne. Jeśli twój zespół polega na formatach pakietów wykraczających poza węższy zestaw rejestrów OneDev, Gitea lub Forgejo to bezpieczniejszy wybór.
Wniosek z sekcji: OneDev daje ci wbudowane CI, inteligentną analizę kodu i pełny pakiet do zarządzania projektami w jednej instalacji. Płacisz za to koniecznością przepisania workflowów GitHub Actions, akceptacją mniejszego ekosystemu i (jak opisuje kolejna sekcja) znacznie większym zapotrzebowaniem na RAM.
Koszt zasobów: czego każde z nich faktycznie potrzebuje

Liczba, która dla wielu zespołów rozstrzyga to całe porównanie, pochodzi z testów nodatools.com: OneDev w stanie bezczynności zużywał około 600 MB RAM, podczas gdy Forgejo około 180 MB. To ponad 3 razy więcej, a różnica rośnie pod obciążeniem. Oto ich zmierzone wartości z nodatools.com's measured comparison, uruchom na świeżym VPS:
| Narzędzie | Bieżąca wersja | RAM w spoczynku (przetestowano) | Aktywny RAM pod obciążeniem (przetestowano) | Oficjalne minimum |
|---|---|---|---|---|
| Forgejo | v15.0.3 LTS | ~180 MB | ~320 MB | 512 MB |
| Gitea | 1.26.4 | ~200 MB | ~350 MB | 512 MB |
| OneDev | 16.0.1 | ~600 MB | ~950 MB | 2 GB |
Skąd ta różnica? OneDev jest napisane głównie w Java, więc JVM niesie ze sobą narzut sterty, którego oparte na Go Gitea i Forgejo po prostu nie mają. Do tego OneDev indeksuje kod na potrzeby funkcji analizy inteligentnej, a to wstępne indeksowanie jest bardzo pamięciożerne. Gdy stawiałem OneDev po raz pierwszy, skok zużycia pamięci przy starcie był najbardziej przerażającą częścią, a to przecież nie stan ustabilizowany.
Wskazówka: nie panikuj z powodu zużycia pamięci przez OneDev przy starcie. Może ono chwilowo wzrosnąć zaraz po uruchomieniu, gdy JVM się rozgrzewa i budowany jest wstępny indeks kodu, po czym wraca do wartości spoczynkowej, gdy wszystko się ustabilizuje. Mimo to planuj realistyczną wartość roboczą, a nie spoczynkową. Przy aktywnie działającym CI zakładaj konsekwentnie 1-2 GB. Oficjalne minimum 2 GB istnieje nie bez powodu.
Pod względem doboru rozmiaru przekłada się to bezpośrednio na poziomy VPS:
- Forgejo lub Gitea, instalacja bazowa, bez runnera CI na maszynie: 1 GB RAM / 1 vCPU is comfortable.
- Forgejo lub Gitea z runnerem CI na tym samym serwerze: podnieś do 4 GB RAM / 2 vCPU, aby runner miał zapas.
- OneDev, instalacja bazowa: 4 GB RAM is the practical floor. Go to 8 GB if code indexing is heavy or CI is busy.
Różnica w kosztach nie jest więc subtelna. Okrojony serwer git, który działa dobrze na maszynie z 1 GB, w porównaniu z instancją OneDev, która chce 4 GB, to mniej więcej podwojenie miesięcznego rachunku za VPS. Dla samodzielnego dewelopera lub małego zespołu to różnica między "praktycznie darmowym utrzymaniem" a wydatkiem, który zauważysz. Dla większego zespołu, który codziennie będzie korzystał z wbudowanego CI i PM, może to być zdecydowanie warte swojej ceny. Ale to prawdziwy kompromis: narzutem OneDev jest JVM, a ten koszt kupuje ci to, co JVM uruchamia.
Gitea, Forgejo oraz OneDev to wszystko wdrożenia jednym kliknięciem w Marketplace Cloudzy, więc gdy już dobierzesz odpowiedni rozmiar, postawienie forge'a zajmuje kilka minut zamiast całego popołudnia walki z Docker. Jeśli uruchamiasz runner CI lub indeksowanie kodu OneDev, dodatkowy zapas znajduje się na Linux VPS z dostępem root, dzięki czemu możesz samodzielnie dostroić stertę JVM i współbieżność runnerów.
Jedna uwaga specyficzna dla Cloudzy: karty aplikacji w Marketplace obecnie uruchamiają Gitea, Forgejo i OneDev przy 2 GB RAM. Powyższe zalecenie 1 GB dotyczy lekkich instalacji ręcznych bez lokalnego runnera CI. Jeśli wdrażasz przez Cloudzy Marketplace, trzymaj się minimum podanego na karcie aplikacji, aby system operacyjny, baza danych, aktualizacje pakietów i usługi w tle miały zapas.
Który wybrać?
Widziałeś już tabelę i kompromisy, więc oto moja bezpośrednia rekomendacja dla każdego profilu czytelnika, wynikająca z uruchomienia wszystkich trzech narzędzi.
Wybierz Forgejo jeśli chcesz lekkiego, zarządzanego przez społeczność forge'a z CI w stylu Actions i możesz tolerować niewielkie różnice w workflowach względem GitHub Actions. To moja domyślna rekomendacja dla większości zespołów. Otrzymujesz ten sam podstawowy hosting git co w Gitea, czystszą własność non-profit, publiczne ujawnianie luk bezpieczeństwa, licencję copyleft i najmniejsze zapotrzebowanie na RAM spośród tej trójki. Jeśli nie masz konkretnego powodu, by wybrać jedno z pozostałych, wybierz to.
Wybierz Gitea, jeśli konkretnie zależy ci na licencji MIT (bardziej permisywnej niż GPL-3.0 Forgejo), największej społeczności i ekosystemie wśród forge'ów, lub komercyjnej wersji Enterprise z SSO, dziennikami audytu i SLA. Pod względem samego hostingu git jest remis z Forgejo, więc wybierasz na podstawie licencji i preferencji co do własności, a także opcji płatnego wsparcia, jeśli twoja organizacja potrzebuje dostawcy, do którego może zadzwonić.
Wybierz OneDev, jeśli chcesz wbudowanego zarządzania projektami, gotowego CI i inteligentnej analizy kodu w jednej instalacji, zaczynasz od zera (nie masz istniejących workflowów GitHub Actions do migracji) i masz budżet pamięciowy na maszynę z 4 GB lub więcej. Decyzja forgejo kontra onedev tak naprawdę sprowadza się do tego: kupujesz serwer git czy platformę? Jeśli odpowiedź brzmi "platformę, i nie chcę samodzielnie doklejać CI", OneDev zasługuje na swój narzut.
Jeden czynnik decyzyjny łatwo przeoczyć: nie istnieje ścieżka migracji pomiędzy rodziną Gitea/Forgejo a OneDev. Inny model danych, inny format CI, inny schemat. Jeśli zaczniesz od Forgejo, a później zdecydujesz, że chcesz OneDev (lub odwrotnie), czeka Cię przeniesienie oparte na API, repozytorium po repozytorium, które traci historię CI i dane zarządzania projektem. Jeśli więc podejście OneDev typu wszystko w jednym choć trochę Cię interesuje, dużo taniej jest zacząć od niego niż przełączać się na nie później. Pomiędzy Gitea a Forgejo migracja istnieje (to jest ścieżkę migracji opisane powyżej), ale przekroczenie granicy między lekkim forge'em a OneDev to podróż w jedną stronę, wiążąca się z utratą danych. Uwzględnij to w decyzji teraz, a nie za osiemnaście miesięcy.
Często zadawane pytania
Czy Gitea nadal jest open source?
Tak. Rdzeń Gitea jest objęty licencją MIT i darmowy do samodzielnego hostowania z nieograniczoną liczbą użytkowników i repozytoriów. Praktycznym zastrzeżeniem jest zarządzanie, nie dostępność kodu źródłowego: Gitea jest kontrolowana przez firmę i ma wspieraną przez dostawcę ofertę Enterprise przez CommitGo, podczas gdy Forgejo to zarządzany przez społeczność fork na licencji GPL pod skrzydłami Codeberg e.V. Forgejo opisuje komercyjne rozwiązanie Gitea jako Open Core; Gitea/CommitGo kwestionuje tę etykietę i twierdzi, że sam projekt open source nie zawiera zastrzeżonego kodu. Gitea pozostaje więc open source, ale nie jest zarządzana przez społeczność w taki sam sposób jak Forgejo.
Czy Forgejo jest lepsze od Gitea?
Jeśli chodzi o podstawowe hostowanie git, są niemal identyczne: Forgejo powstało jako fork Gitea i dzieli tę samą bazę. Forgejo różni się w kwestii zarządzania (non-profit Codeberg e.V.), licencji (GPL-3.0 copyleft w porównaniu do MIT w Gitea) oraz ujawniania informacji o bezpieczeństwie (publicznie dla wszystkich, w porównaniu do polityki Gitea faworyzującej klientów Enterprise). "Lepsze" zależy od tego, czy te kwestie mają dla Ciebie znaczenie; pod względem samych funkcji to remis.
Ile RAM potrzebuje OneDev?
Oficjalne minimum OneDev to 2 GB RAM. W testach nodatools.com w spoczynku zużywało około 600 MB, a pod obciążeniem osiągało w przybliżeniu 950 MB. Podczas uruchamiania zużycie może być wyższe, gdy JVM się rozgrzewa i kończy się indeksowanie, ale przy aktywnie działającym CI należy konsekwentnie zakładać 1-2 GB. Dla porównania, te same testy wykazały, że Forgejo i Gitea zużywają w spoczynku około 180-200 MB.
Czy mogę migrować z Gitea do OneDev, lub z OneDev do Forgejo?
Nie istnieje bezpośrednia ścieżka migracji pomiędzy rodziną Gitea/Forgejo a OneDev. Używają one różnych modeli danych, formatów CI i schematów, więc przeniesienie wymagałoby migracji opartej na API, repozytorium po repozytorium, która traci historię CI i zarządzania projektem. Migracja pomiędzy Gitea a Forgejo istnieje (zobacz nasz poradnik migracji z Gitea do Forgejo, ponieważ mają wspólne pochodzenie.
Czy OneDev wspiera GitHub Actions?
Nie. OneDev używa własnego dialektu YAML wraz z edytorem pipeline'ów w GUI, więc workflowy napisane dla GitHub, Gitea lub Forgejo muszą zostać przepisane, aby na nim działać. Gitea Actions zaprojektowano jako bezpośredni zamiennik, więc większość istniejących workflowów działa bez zmian. Runner Forgejo jest w praktyce zgodny, ale nie został zaprojektowany, aby dokładnie odzwierciedlać GitHub Actions; sprawdź oficjalną dokumentację Forgejo pod kątem udokumentowanych niezgodności, zanim założysz pełną przenośność.