Whoever you are, an independent developer, freelancer or a team, your daily activities go far beyond just writing the code. You have plenty of issues in your backlog, a lot of code to test, a bunch of code repositories to manage and lots of binary dependencies to store somewhere (probably not in the code repository).
In order to unload all this burden out of your head and make some room for new ideas you start looking for better ways to organize your development workflow, to upgrade it and make it smoother. Even if you are a freelancer you often need to collaborate with other devs working on private projects but without paying extra money for the hosted services that you can host yourself. Tools for the rescue!
Redmine is a free and open source, web-based project management and bug-tracking tool. It includes a calendar and Gantt charts to aid visual representation of projects and their deadlines. It handles multiple projects. Redmine provides integrated project management features, issue tracking, and support for various version control systems. There are a lot of extensions for Redmine that you can use to adjust this tool for your needs.
Project URL: http://www.redmine.org/
GitLab offers git repository management, code reviews, issue tracking, activity feeds and wikis. Enterprises install GitLab on-premise and connect it with LDAP and Active Directory servers for secure authentication and authorization. A single GitLab server can handle more than 25,000 users but it is also possible to create a high availability setup with multiple active servers. You can think about Gitlab as about your very own Github!
Project URL: https://about.gitlab.com/
In a nutshell, Jenkins provides an easy-to-use so-called continuous integration system, making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. It supports SCM tools including AccuRev, CVS, Subversion, Git, Mercurial, Perforce, Clearcase and RTC, and can execute Apache Ant and Apache Maven based projects as well as arbitrary shell scripts and Windows batch commands.
Project URL: http://jenkins-ci.org/
Nexus is a repository manager. It allows you to proxy, collect, and manage your dependencies so that you are not constantly juggling a collection of JARs. It makes it easy to distribute your software. You configure your build to publish artifacts to Nexus and it will make them available to other developers. You get the benefits of having your own ‘central’, and there is no easier way to collaborate.
Project URL: http://www.sonatype.org/
With ‘a little’ effort you can install all this tools on your own dedicated server or even on a virtual server. My very unexpensive VPS can handle all of this tools and still it has plenty of resources for other things.