+The simplest way to publish a repository or a group of repositories is
+``git daemon``. The daemon provides anonymous access, by default it is
+read-only. The repositories are accessible by git protocol (git://
+URLs). Write access can be enabled but the protocol lacks any
+authentication means, so it should be enabled only within a trusted
+LAN. See ``git help daemon`` for details.
+
+Git over ssh provides authentication and repo-level authorisation as
+repositories can be made user- or group-writeable (see parameter
+``core.sharedRepository`` in ``git help config``). If that's too
+permissive or too restrictive for some project's needs there is a
+wrapper `gitolite <http://gitolite.com/gitolite/index.html>`_ that can
+be configured to allow access with great granularity; gitolite has a
+lot of documentation.
+
+Web interface to browse repositories can be created using `gitweb
+<https://git.kernel.org/cgit/git/git.git/tree/gitweb>`_ and `cgit
+<http://git.zx2c4.com/cgit/about/>`_. Both are CGI scripts (written in
+Perl and C). In addition to web interface both provide read-only dumb
+http access for git (http(s):// URLs).
+
+There are also more advanced web-based development environments that
+include ability to create and manage users and groups, private, group
+and public repositories, and usually include issue trackers, wiki
+pages, pull requests and other developers tools. Among these
+environments are `Kallithea <https://kallithea-scm.org/>`_ and `pagure
+<https://pagure.io/>`_, both are written in Python; `Gogs
+<http://gogs.io/>`_ is written in Go; when its development seemed to
+be stagnated there was a fork `Gitea <http://gitea.io/>`_, still
+active.
+
+And last but not least `Gitlab <https://about.gitlab.com/>`_. It's the
+most advanced web-based development environment. Written in Ruby,
+community edition is free and open source (MIT license).