## Gitblit as a Viewer

Gitblit is designed to be a complete Git server solution, however you may already have a Git serving solution such as ssh+gitolite or Gerrit.  For these scenarios, you may configure Gitblit to be just a repository viewer.

### Lock-down your Viewer

Here is an example configuration that disables all administration, all Git serving features, and requires an authenticated user to view anything.

    git.repositoriesFolder = ${baseFolder}/git
    git.cacheRepositoryList = true
    git.searchRepositoriesSubfolders = true
    git.searchRecursionDepth = -1
    git.searchExclusions =
    git.daemonPort = 0
    git.enableGitServlet = false
    git.enableGarbageCollection = false
    git.defaultAccessRestriction = VIEW
    web.authenticateViewPages = true
    web.allowAdministration = false
    web.enableRpcServlet = false
    web.enableRpcManagement = false
    web.enableRpcAdministration = false
    web.allowForking = false

###  Tomcat or Reverse-Proxy Servers

If you are running Gitblit on a Tomcat-based container you will likely run into forward-slash character troubles.

To resolve this either set:

    web.mountParameters = false

or

    web.forwardSlashCharacter = !


### Advertised Repository Urls

You may also want to advertise repository urls for your other Git serving solution from Gitblit.

- *{0}* is the token for the repository name
- *{1}* is the token for the username

The username is only practical if you have setup the account names for your other git serving solution to match the Gitblit account.

    web.otherUrls = ssh://localhost/git/{0} git://localhost:29418/git/{0} https://{1}@localhost/r/{0}
