The problem with Visual Studio Team Foundation Server is that it requires Windows servers, and there are no clients for other OSes (like Linux, for your servers.)
Personally, I use a git repository over SSH and plain git. No GitHub or GitLab needed, unless you want a fancy web GUI for pull requests and such.
I use putty with pageant for my SSH client, which means I have plink.exe as my GIT_SSH link.
Set up a git repository on any server you have command line access to:
[FONT=Courier New]plink account@example.com git init --bare repository.git
Setting up a local folder to be git tracked (Windows shell):
[FONT=Courier New]git init .
copy \users\you\documents\standard-gitignore.txt .gitignore
git commit -a -m “first commit”
git remote add origin account@example.com:repository.git
git push -u origin master
Pulling new changes:
[FONT=Courier New]git pull -r
Pushing committed changes:
[FONT=Courier New]git push