Deprecated: Creation of dynamic property c2c_AddAdminCSS::$admin_options_name is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$config is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$disable_contextual_help is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$disable_update_check is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$hook_prefix is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$form_name is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$menu_name is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$name is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$nonce_field is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$settings_page is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$show_admin is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$textdomain is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$textdomain_subdir is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 106
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$author_prefix is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 109
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$id_base is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 110
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$options_page is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 111
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$plugin_basename is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 112
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$plugin_file is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 113
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$plugin_path is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 114
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$u_id_base is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 115
Deprecated: Creation of dynamic property c2c_AddAdminCSS::$version is deprecated in /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php on line 116
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/add-admin-css/c2c-plugin.php:106) in /var/www/html/wp-includes/rest-api/class-wp-rest-server.php on line 1768
{"id":149,"date":"2022-01-19T13:52:21","date_gmt":"2022-01-19T06:52:21","guid":{"rendered":"https:\/\/erwin.co\/?p=149"},"modified":"2022-07-05T18:31:22","modified_gmt":"2022-07-05T11:31:22","slug":"git-self-hosted-gitlab-vs-gitea-vs-gogs-in-2022","status":"publish","type":"post","link":"https:\/\/erwin.co\/git-self-hosted-gitlab-vs-gitea-vs-gogs-in-2022\/","title":{"rendered":"Git Self Hosted: GitLab vs Gitea vs Gogs in 2022"},"content":{"rendered":"\nGithub is a double edged sword. Use it when you must, but you should self-host whenever possible.<\/p>\n\n\n\n
I started with gitlab<\/code> as it was the most popular github<\/code> alternative at the time, and I think for medium-large businesses hosting their own local, dedicated git instance, gitlab<\/code> is probably a good choice.<\/p>\n\n\n\n
For me though, gitlab<\/code> wad definitely overkill. The upgrades get very complicated, and I'm ultimately just not a big Ruby on Rails fan... I just wanted locally hosted git<\/code> that I could also browse easily via http<\/code>, especially to graphically view older commits and branches, because every once in a while I do leave the terminal...<\/p>\n\n\n\n
After gitlab<\/code> my next solution was Gitea<\/code>, as I read it was a community fork of gogs<\/code> so I assumed it must be better... In hindsight, I would say Gitea<\/code> is working hard to compete with GitLab<\/code>. That's fine, but `GitLab` is actually what I wanted to get away from.<\/p>\n\n\n\n
You can find a Gitea feature list here:<\/p>\n\n\n\n
https:\/\/docs.gitea.io\/en-us\/comparison\/<\/a><\/p>\n\n\n\n
Here's an old sysadmin rule of thumb: If it involves LDAP<\/code>, run the other way!<\/p>Me, screaming... every time I do something with LDAP...<\/cite><\/blockquote>\n\n\n\n
In all fairness, LDAP<\/code> is necessary for directory based authorization and authentication. With lots of users, you're kind of stuck with it and so you better know how it works. Everything connected to X.509<\/code> is a whole different mindset than the rest of the Linux and Open Source movement. If software had an attitude, ldap software and the zshell would be at opposite edges of the attitude spectrum.<\/p>\n\n\n\n
I spent a long time actually getting gitea<\/code> to work in my particular configuration, and just ended up dedicating way more time to it than I really wanted to. For me, git<\/code> isn't very much different from samba<\/code>... I just want it to work so I can focus on problems that I'm more interested in.<\/p>\n\n\n\n
I would recommend gitea<\/code> to anyone looking at gitlab<\/code> and vice versa. These two are very similar. I think that blindly running either of them in a container just because you can is asking for trouble though. Go through the manual instillation and know how to set things up from scratch. If you can't do that, you shouldn't run it, because you won't be able to fix it when things go wrong. You want a sysadmin that knows how to set these up and how to manage them, back them up, and fix problems along the way.<\/p>\n\n\n\n
So I spent far more hours than I'm proud to admit trying to get gitea<\/code> working in my particular environment, but when I decided to switch over to gogs<\/code>, I had it all working and my old repos migrated over within 30 minutes.<\/p>\n\n\n\n
If you're just looking for a simple, self hosted git<\/code> server via `https` in 2022, I think that gogs<\/code> is what you are looking for.<\/p>\n\n\n\n
https:\/\/github.com\/gogs\/gogs<\/a><\/p>\n\n\n\n
Another nice \"self hosted\" option is cgit<\/a> but the default interface is very dated, and it's even more minimal than my ideal feature set.<\/p>\n\n\n\n
If neither gitlab, gitea, gogs or cgit are what you're looking for, maybe check out the awesome self hosted list<\/a>, but a lot of these are very niche and not well supported.<\/p>\n","protected":false},"excerpt":{"rendered":"
Github is a double edged sword. Use it when you must, but you should self-host whenever possible. I started with gitlab as it was the most popular github alternative at the time, and I think for medium-large businesses hosting their own local, dedicated git instance, gitlab is probably a good choice. For me though, gitlab […]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[15],"tags":[],"_links":{"self":[{"href":"https:\/\/erwin.co\/wp-json\/wp\/v2\/posts\/149"}],"collection":[{"href":"https:\/\/erwin.co\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/erwin.co\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/erwin.co\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/erwin.co\/wp-json\/wp\/v2\/comments?post=149"}],"version-history":[{"count":1,"href":"https:\/\/erwin.co\/wp-json\/wp\/v2\/posts\/149\/revisions"}],"predecessor-version":[{"id":150,"href":"https:\/\/erwin.co\/wp-json\/wp\/v2\/posts\/149\/revisions\/150"}],"wp:attachment":[{"href":"https:\/\/erwin.co\/wp-json\/wp\/v2\/media?parent=149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/erwin.co\/wp-json\/wp\/v2\/categories?post=149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/erwin.co\/wp-json\/wp\/v2\/tags?post=149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}