Pure-Docker Sourcegraph cluster deployment reference
There are two recommended ways to deploy Sourcegraph:
But what if your organization wants a multi-machine deployment without using Kubernetes? What if you use a different container management platform, for example? This project aims to solve that, by providing a pure-Docker deployment option.
The goal is that anyone using a container management platform other than Kubernetes (Netflix's Titus, Apache's Mesos, etc.) would be able to use this repository as a reference for how to deploy Sourcegraph.
Deploying
First clone the repository, then:
./deploy.shVisit http://localhost:3080 to visit the running Sourcegraph instance!
Tearing down the deployment
./teardown.shSystem topology
To understand the system topology:
- Look at
deploy.shto get an overview of services. - Every service (
deploy-*.sh) has documentation inline indicating:- What the service does / provides.
- What ports the service exposes.
- What other services it talks to (see environment variables).
Service system requirements
Every service (deploy-*.sh) documents inline what the system requirements are (CPU/Memory/Disk allocation). For example, the frontend service.
Scaling / replicas
To scale the cluster deployment, you will need to:
- Deploy more instances of
gitserver,indexed-search,searcherandsymbolsservices as desired. - Configure the
frontendandfrontend-internalto communicate with the new instances. - You're done! You do not need to configure or restart any other services.
Metrics and Tracing
This deployment comes with metrics and tracing built-in. See metrics and tracing for details.
Configuring HTTPS
See https://docs.sourcegraph.com/admin/nginx#nginx-for-other-sourcegraph-clusters-e-g-pure-docker
Configuring SSH cloning
- Ensure your Site admin > External services code host configuration is configured to use SSH. For example, by setting the
gitURLTypefield to"ssh". You may still need to configure an access token or other codehost authentication method in order for Sourcegraph to discover your repositories.
Alternatively, you may use the OTHER codehost type under External services, which allows you to directly specify Git repository URLs for cloning.
- Provide your
gitserverinstances with your SSH / Git configuration (usually just.ssh/id_rsa,.ssh/id_rsa.pub, and.ssh/known_hosts-- but you can also provide other files like.netrc,.gitconfig, etc. if needed) by mounting it into thesourcegraphusers home directory in thegitservercontainers. For example, by adding the following flag:
-v ~/my-sourcegraph-ssh-config/.ssh:/home/sourcegraph/.ssh
All future Git cloning operations will use the credentials configured there.
If you wish, you can test that cloning with your configuration is working by performing the clone in a gitserver container shell, e.g. first acquire shell access:
$ docker exec -it gitserver-0 sh
Then try cloning the repository:
$ git clone ssh://git@myhost.com/my/repo /tmp/my-repo
Questions & Issues
Open an issue (in sourcegraph/sourcegraph) or contact us (support@sourcegraph.com), we are happy to help!

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
