TFS 2008 zainstalowany jest w sieci wewnętrznej, na pojedynczej maszynie z Windows 2008, nie dołączonej do domeny (choć - ten ostatni warunek nie zawsze jest konieczny). Celem jest udostępnienie funkcjonalności TFS programiście, który chce połączyć się z serwerem bezpośrednio przy użyciu Internetu (bez używania VPN).
Zakładam 3 scenariusze pracy:
- Udostępnianie mechanizmu wersjonowania plików oraz zadań (Workitems) dla Team Explorer, Microsoft Excel czy Microsoft Project
- Udostępnianie Team Foundation Server Web Access
- Udostępnianie dokumentów i/lub raportów dla Team Explorer
Udostępnianie mechanizmu wersjonowania plików oraz zadań (Workitems)
Jeżeli potrzebny jest tylko dostęp do zadań (Workitems) oraz do narzędzi kontroli wersji, wystarczy przekierowanie portu 8080 z routera na serwer, na którym zainstalowany jest TFS (dokładniej na jego FQDN - Full Qualified Domain Name, np. . Najlepiej, jeżeli IIS będzie miał włączoną Windows Authentication, jednak będzie działać nawet autoryzacja typu Basic (ale uwaga, w takim przypadku hasło (i login) przekazywany jest czystym tekstem).

Programista w Team Explorer wprowadza jako adres serwera TFS albo numer IP routera albo jego FQDN (publiczną nazwę domenową).
To rozwiązanie wystarcza, by działała integracja z Windows Explorer (dostępna po zainstalowaniu Team Foundation Server Power Tools.)
Warto też rozważyć, by w takim scenariuszu komunikacja była dodatkowo zabezpieczona przy użyciu SSL (co eliminuje podstawowe problemy związane z bezpieczeństwem).
Po takiej konfiguracji można:
- Oddawać pliki do repozytorium kodu źródłowego
- Pobierać zmiany wprowadzone przez inne osoby z zespołu
- Synchronizować zmiany
- Dodawać/edytować Workitems
- Analizować Workitems przy użyciu Excela
- Pracować z Microsoft Project
Jednak nie można spoza sieci firmowej zakładać nowych projektów na TFS.
W przypadku gdy routerem jest Windows 2008, należy wejść w Server Manager, a potem w Routing and Remote Access. Po wybraniu IPv4, należy wskazać gałąź NAT, wybrać interfejs publiczny (tu INET) i we właściwościach (Properties) ustawić przekierowywanie portów (tu - tylko 8080).
Udostępnianie Team Foundation Server Web Access
W przypadku gdy chce się udostępnić funkcjonalność TFS WA, który zainstalowany jest na tej samej, wewnętrznej maszynie na której działa TFS, należy przekierować port 8090 (standardowy port na którym instalowany jest TFSWA).
Wtedy, adresem "wejściowym" do usługi będzie http://<domena zewnętrzna>:8090/UI/Pages/Login.aspx?redirect=%2findex.aspx. Ale, w oknie logowania, należy podać wewnętrzny adres serwera TFS:
Udostępnianie raportów i/lub dokumentów dla Team Explorer
Aby to osiągnąć należy:
- Przekierować porty 80 i port administracyjny SharePoint (w tym przypadku 48726)
- Zmienić konfigurację TFS, tak by zamiast lokalnej nazwy stosowana była nazwa FQDN (co pozwoli prawidłowo wykryć lokalizację dokumentów i raportów).
- Dodać publiczny, zewnętrzny adres URL do konfiguracji SharePoint
Aby sprawdzić numer portu administracyjnego, należy wejść w IIS Manager a potem odszukać Site SharePoint Central Administration v3.
(Warto też sprawdzić, czy SPS Central Administration ma Authentication ustawione na Windows Authentication oraz włączone ASP.NET Impersonation).
Przed zmianą konfiguracji TFS, należy pobrać aktualne ustawienia. Można to zrobić na dwa sposoby. Pierwszy, wykorzystujący Web Service:
- Należy zalogować się na maszynie na której uruchomiony jest TFS
- Wejść na adres: http://localhost:8080/services/v1.0/registration.asmx?op=GetRegistrationEntries
- Kliknąć Invoke (Parametr toolId ma być pusty)
- Zapisać dokument XML pod nazwą myRegistration.xml.
- Następnie w pliku XML należy zmienić root na <RegistrationEntries>
Można także (sposób prostszy):
- Uruchomić konsolę (z uprawnieniami administratora)
- Wejść w folder C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Tools.
- Uruchomić tfsreg /EXPORT myRegistration.xml <nazwa lokalna serwera TFS>
Wygenerowany dokument XML zapisujemy pod nazwą myRegistration.xml w folderze C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Tools (warto go też zachować pod inną nazwą "na później", ponieważ zawiera on pełną konfigurację TFS).
W pliku XML zmieniamy:
http://<lokalna nazwa serwera TFS>/coś na http://<FQDN>/coś (widoczna z internetu).
Dokładniej, zmodyfikować należy:
<ServiceInterfaces>
<ServiceInterface>
<Name>ReportsService</Name>
<Url>http://<FQDN>/ReportServer/ReportService.asmx</Url>
</ServiceInterface>
<ServiceInterface>
<Name>BaseReportsUrl</Name>
<Url>http://<FQDN>/Reports</Url>
</ServiceInterface>
Potem:
<ServiceInterfaces>
<ServiceInterface>
<Name>WssAdminService</Name>
<Url>http://<FQDN>:48726/_vti_adm/admin.asmx</Url>
</ServiceInterface>
<ServiceInterface>
<Name>BaseServerUrl</Name>
<Url>http://<FQDN>:80</Url>
</ServiceInterface>
<ServiceInterface>
<Name>BaseSiteUrl</Name>
<Url>http://<FQDN>:80/Sites</Url>
</ServiceInterface>
Do wgrania zmienionego pliku należy użyć narzędzia tfsreg.exe (dostępny w folderze C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Tools)
tfsreg.exe /OVERWRITE myRegistration.xml <nazwa lokalna serwera TFS>
Parametr /OVERWRITE wymusza nadpisanie wszystkich ustawień.
Część konfiguracji znajduje się w rejestrze. Ten krok jest opcjonalny i zależy od sposobu zainstalowania i dotychczasowej konfiguracji Reporting Services. Należy wejść do rejestru i sprawdzić klucze:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\TeamFoundation\ReportServer\80\Sites]"BaseReportsUrl"="http://%3cfqdn%3e/Reports%22%22ReportsService%22=%22http://%3CFQDN%3E/ReportServer%22""ReportsService"="http://<FQDN>/ReportServer"
oraz
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\TeamFoundation\Servers]"<nazwa lokalna>"="http://<FQDN>:8080"
i sprawdzić, czy nie wskazują one na adres lokalny.
Teraz warto zrestartować serwer (lub - wszystkie usług)
To wystarczy by uzyskać dostęp do dokumentów na SharePoint i raportów z poziomu Team Explorer. Jednak - to nie wystarczy by mieć dostęp do witryn projektowych na SharePoint.
Aby to było możliwe, konieczna jest modyfikacja ustawień SPS. Należy zdefiniować tzw. Public Zone URLs tak by wskazywało na FQDN serwera. Należy wejść w:
http://%3clokalna%20nazwa%20serwera%3e:48726/_admin/AlternateUrlCollections.aspx
Po czym wejść w Edit Public URLs
i ustawić:
W tym momencie także witryna projektowa SharePoint udostępniona jest w Internecie.
Warto się zastanowić, czy na pewno opłaca się udostępniać w taki sposób raporty i dokumenty. Po takim ustawieniu, nie będą dostępne one z "wnętrza" sieci firmowej, inaczej niż za pośrednictwem FQDN (chyba że zostanie zdefniowane odpowiednie mapowanie przy użyciu serwera DNS (lub pliku \windows\system32\etc\host).
A warto pamiętać, że zarówno do dokumentów jak i do raportów można uzyskać dostęp za pośrednictwem TFS WA.
Nazwa domeny
Oczywiście router podłączony do internetu może mieć ustawioną pewną nazwe DNS. Czasami jednak wygodniej jest użyć tzw. DDNS - dynamicznego DNS, gdzie można przypisać nazwę do adresu IP (niestety - bez tzw. reverse lookup). Takie usługi można znaleźć na przykład w:
- http://www.dyndns.com/services/dns/dyndns/
- http://www.no-ip.com/services/managed_dns/free_dynamic_dns.html
- http://www.ddns.pl/
- http://www.changeip.com/default.asp
Ew. wybór pozostawiam czytelnikowi.
Inne elementy konfiguracyjne
Warto zapoznać się z dokumentem http://msdn.microsoft.com/en-us/library/ms252507.aspx (Managing Team Foundation Server in a Workgroup) opisującym podstawowe "wyzwania" jakie mogą pojawić się przy instalacji TFS bez środowiska domenowego.
Uwagi końcowe
Oczywiście takie rozwiązania nie są szczególnie bezpiecznie. O wiele lepiej jest skonfigurować np. VPN i pozwalać na aktualizację kodu źródłowego tylko po dokładnej weryfikacji komputera jak i osoby która się loguje do sieci. Ale - czasami taki sposób udostępnienienia może być najwygodniejszy i najprostszy.