<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dariusz [LocK] Łuksza &#187; gitosis</title>
	<atom:link href="http://luksza.org/tag/gitosis/feed/" rel="self" type="application/rss+xml" />
	<link>http://luksza.org</link>
	<description>myśli luźno zebrane ... ja i moja jaźń w intenecie</description>
	<lastBuildDate>Fri, 30 Jul 2010 01:22:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>

   <image>
    <title>Dariusz [LocK] Łuksza</title>
    <url>http://0.gravatar.com/avatar/ed2d261ca5db36a17e690dc736dcd9ef?s=48&amp;d=http%3A%2F%2Fluksza.org%2Fwp-includes%2Fimages%2F</url>
    <link>http://luksza.org</link>
   </image>
		<item>
		<title>Gitosis dodanie repo</title>
		<link>http://luksza.org/2010/03/03/gitosis-dodanie-repo/</link>
		<comments>http://luksza.org/2010/03/03/gitosis-dodanie-repo/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 19:52:34 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=482</guid>
		<description><![CDATA[Prace nad programem do inżynierki zaszły już tak &#8222;daleko&#8221;, że wypadało by gdzieś ten kod przetrzymywać dla bezpieczeństwa. Dobrym dodatkowym feature&#8217;m byla by też możliwość jego wersjonowania &#8230; jako, że jakiś temu postawiłem sobie własne repo git&#8217;a (dwie (1, 2) z zamierzonych trzech części opisu instalacji zostały już opublikowane) wybór był oczywisty. Początkowo zadanie wydawało [...]]]></description>
			<content:encoded><![CDATA[<p>Prace nad programem do inżynierki <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2x1a3N6YS5vcmcvMjAxMC8wMy8wMi9pbnp5bmllcmthLXYwLTEv" target=\"_blank\">zaszły już tak &#8222;daleko&#8221;</a>, że wypadało by gdzieś ten kod przetrzymywać dla bezpieczeństwa. Dobrym dodatkowym feature&#8217;m byla by też możliwość jego wersjonowania &#8230; jako, że jakiś temu postawiłem sobie własne repo git&#8217;a (dwie (<a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2x1a3N6YS5vcmcvMjAwOS8xMS8yOS9wcnl3YXRuZS1yZXBvLWdpdGEtY3otMS8=" target=\"_blank\">1</a>, <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2x1a3N6YS5vcmcvMjAwOS8xMi8wMi9wcnl3YXRuZS1yZXBvLWdpdCVlMiU4MCU5OWEtY3otMi8=" target=\"_blank\">2</a>) z zamierzonych trzech części opisu instalacji zostały już opublikowane) wybór był oczywisty.</p>
<p>Początkowo zadanie wydawało się bardzo banalne &#8230; dodać repozytorium do <em>gitosis</em> i wszystko powinno się zrobić automatycznie &#8230; cóż tak niestety <strong>nie było</strong>. Dla potomności (oraz mojej często wątpliwej pamięci) postanowiłem opisać całą procedurę.</p>
<p>Będzie do tego potrzebna nam konfiguracja <em>gitosis</em>. Jako że jest ona przetrzymywana jako jedno z repozytoriów nie powinno być żadnych problemów z jej uzyskaniem. Tak więc jeżeli nie mamy już jakiejś kopi na dysku wywołujemy komendę:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git clone <span style="color: #c20cb9; font-weight: bold;">ssh</span>:<span style="color: #000000; font-weight: bold;">//</span>gitosis<span style="color: #000000; font-weight: bold;">@</span>server.z.gitem.org<span style="color: #000000; font-weight: bold;">/</span>gitosis-admin.git</pre></div></div>

<p>Następnie edytujemy plik gitosis.conf w którym odajemy nowe repo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>repo nazwa-nowego-repo<span style="color: #7a0874; font-weight: bold;">&#93;</span>
owner = joe
description = opis</pre></div></div>

<p>No i niby wygląda na to, że to wszystko &#8230; niestety nie jest tak łatwo, z tego co doświadczyłem to  <em>gitosis</em> wymaga, żeby każde repo posiadało osobną grupę o tej samej nazwie (możliwe, że można to jakoś przekonfigurować ale ja nie znalazłem takich informacji). Więc nie pozostaje nam nic innego jak dodać kolejną grupę:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>group nazwa-nowego-repo<span style="color: #7a0874; font-weight: bold;">&#93;</span>
owner = joe
writable = nazwa-nowego-repo
members = joe</pre></div></div>

<p>Zapisujemy zmiany i za pomocą <em>git push</em> wypychamy je na serwer &#8230; no to konfiguracje gitosis mamy za sobą. Teraz zostało nam jeszcze utworzyć repo ;&gt;</p>
<p>Tak więc w lokalnym systemie tworzymy sobie nowy katalog albo wchodzimy do katalogu projektu który chcemy wrzucić do repo, w środku wywołujemy <em>git init</em>, następnie przy użyciu <em>git add</em> dodajemy wszystkie pliki do commit&#8217;a. Potem commit&#8217;ujemy zmiany do lokalnego repo (<em>git commit -m &#8222;initial commit&#8221;</em>) &#8230; no i teraz najważniejsze, dodajemy nasze zdalne repo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git remote add dowolna-nazwa-repo <span style="color: #c20cb9; font-weight: bold;">ssh</span>:<span style="color: #000000; font-weight: bold;">//</span>gitosis<span style="color: #000000; font-weight: bold;">@</span>server.z.gitem.org<span style="color: #000000; font-weight: bold;">/</span>nazwa-nowego-repo.git</pre></div></div>

<p>i tryumfalnie wypychamy wszystko na serwer</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git push dowolna-nazwa-repo <span style="color: #660033;">--all</span></pre></div></div>

<p>To tyle, wszystko powinno działać &#8230; przynajmniej na razie u mnie działa ;&gt;</p>
<p><del>Dziś</del> lub <del>jutro</del> dodam wpis odnośnie aktualnego stanu wtyczki dodającej obsługę git&#8217;a dla Eclipse <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  będzie to bardzo szybkie overview funkcjonalności których do tej pory użyłem/używałem.</p>
<p>UPDATE:<br />
Wpis o git&#8217;cie i eclipse jest prawie gotowy, zostało mi jeszcze opisać <del>branche&#8217;owanie</del>, merge&#8217;owanie, <del>push&#8217;owanie</del> oraz <del>pull&#8217;owanie</del> i wstawić screenshot&#8217;y <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>UPDATE2:<br />
Dziś git też mnie pokonał <img src='http://luksza.org/wp-includes/images/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' />  &#8230; okazało się, że aktualnie plugin nie wspiera merge&#8217;owania branche&#8217;y, a push&#8217;owanie i fetch&#8217;owanie jest zbyt skomplikowane żeby opisywać je w jednym wpisie (zwłaszcza jeżeli nie ma się z tym zbyt wiele doświadczenia). Postaram się skończyć wpis jutro (zapamiętać: <em>jutro</em> nigdy nie umiera <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) i <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2h0dHA6Ly9sdWtzemEub3JnLzIwMTAvMDMvMDUvamdpdC1lZ2l0LWVjbGlwc2UtZ2l0LXN1cHBvcnQv">go opublikować</a>.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=482" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/03/03/gitosis-dodanie-repo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Prywatne repo git’a cz.2</title>
		<link>http://luksza.org/2009/12/02/prywatne-repo-git%e2%80%99a-cz-2/</link>
		<comments>http://luksza.org/2009/12/02/prywatne-repo-git%e2%80%99a-cz-2/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 21:38:08 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=436</guid>
		<description><![CDATA[W poprzednim poście de facto mało zajmowaliśmy się git&#8217;em &#8230; szczerze powiedziawszy to skonfigurowaliśmy tylko lighttpd które to później będzie nam potrzebne do uruchomienia cgit&#8216;a czyli interfejsu www w którym będziemy mogli obejrzeć sobie nasze repo. Dziś za to zajmiemy się instalacją i konfiguracją gitosis. Czym jest gitosis i o czego będzie nam potrzebne? Cóż, [...]]]></description>
			<content:encoded><![CDATA[<p>W poprzednim poście de facto mało zajmowaliśmy się git&#8217;em &#8230; szczerze powiedziawszy to skonfigurowaliśmy tylko <em>lighttpd</em> które to później będzie nam potrzebne do uruchomienia <em>cgit</em>&#8216;a czyli interfejsu www w którym będziemy mogli obejrzeć sobie nasze repo. Dziś za to zajmiemy się instalacją i konfiguracją gitosis.</p>
<p>Czym jest gitosis i o czego będzie nam potrzebne?</p>
<p>Cóż, podobnie jak sam git, gitosis jest zestawem skryptów ułatwiającym prace z repozytorium. Zestaw tych skryptów odpowiedzialny jest za kontrolę dostępu do repo jak i za sam dostęp do niego.</p>
<p>Jak działa gitosis?</p>
<p>&#8222;Integruje&#8221; się ono z serwerem SSH, &#8222;integruje się&#8221; to za wiele powiedziane, bo <em>sshd</em> wykorzystywane jest tylko do autoryzacji użytkowników oraz transferu danych z i do repo. Samo gitosis nie uruchamia dodatkowego daemona, jak już wspomniałem korzysta z <em>sshd</em>.</p>
<p>Jak przebiega proces autoryzacji ?</p>
<p>Podobnie jak w <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2dpdGh1Yi5jb20v" target=\"_blank\">GitHub</a>&#8216;ie najpierw trzeba dodać nasz klucz publiczny, żebyśmy mogli zostać z autoryzowani, następnie przy każdej próbie połączenia z repo będzie on wykorzystywany do przeprowadzenia autoryzacji &#8230; nie ma w tym żadnej wielkiej filozofii, dorzycamy nasz klucz i wszystko po prostu działa.</p>
<p>Ok, więc może w końcu do sedna &#8230; zaczynamy od zainstalowania pakietu <em>gitosis</em> w systemie:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> gitosis</pre></div></div>

<p>Proces instalacji sam utworzy w systemie konto użytkownika (standardowy login to <em>gitosis</em>), założy mu katalog domowy (standardowo: <em>/srv/gitosis</em>). Jeżeli bardzo chcemy to możemy to zmienić korzystając ze standardowej komendy <em>usermod</em> dla uproszczenia ja będę się posługiwał standardową nazwą użytkownika. Pozostaje nam tylko inicjalizacja i konfiguracja:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #660033;">-H</span> <span style="color: #660033;">-u</span> gitosis gitosis-init <span style="color: #000000; font-weight: bold;">&lt;</span> id_rsa.pub</pre></div></div>

<p>Gdzie <em>id_rsa.pub</em> jest naszym kluczem publicznym używanym przez naszego klienta ssh &#8230; fajnie to brzmi ale co to właściwie jest ? <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Dokładny opis jak taki klucz sobie wygenerować (i co z nim zrobić) znajduje się <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2hlbHAuZ2l0aHViLmNvbS9rZXktc2V0dXAtcmVkaXJlY3Q=" target=\"_blank\">tutaj</a>. Generalnie powinien być to klucz który będzie identyfikował naszą maszynę z której będziemy się łączyć do repozytorium (tj. klucz prywatny i publiczny powinny być zapisane w katalogu <em>~/.ssh</em> na twoim desktopie/laptopie, tylko klucz publiczny w celu instalacji go w konfiguracji gitosis powinieneś skopiować na serwer na którym instalujesz repozytorium). Powyższa komęda powinna zainicjalizować repozytorium git/gitosis oraz dodać wskazany klucz publiczny jako klucz administratora. Jeżeli mamy szczęście to po wykonaniu poniżeszej komędy na naszym desktopie/laptopie (tj. na tym na którym znajduje się para <em>~/.ssh/id_rsa</em> i <em>~/.ssh/id_rsa.pub</em>):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git clone gitosis<span style="color: #000000; font-weight: bold;">@</span>adres_serwera:gitosis-admin.git</pre></div></div>

<p>Jeżeli powyższa komenda nie wykona się poprawnie (jak to było w moim przypadku) zmuszeni jesteśmy skonfigurować gitosis ręcznie. W tym celu udajemy musimy przeedytować plik <em>/srv/gitosis/.ssh/authorized_keys</em> (tak wiem, że nie powinno się go edytować &#8230; ale co nam pozostaje ?) i zmienić &#8222;domyślny&#8221; login na identyczny z tym podanym w komentarzu do naszego klucza prywatnego (to jest to co podaliśmy za przełącznikiem <em>-C</em> podczas jego tworzenia), wartość klucza publicznego (to jest ten dziwny ciąg znaków za <em>ssh-rsa</em>) oraz na samym końcu ponownie wstawiamy wartość z naszego komentarza. Po wykonaniu tych zmian i ich zapisaniu ponownie próbujemy sklonować repozytorium z konfiguracją (czyli jeszcze raz wydajemy poprzednią komendę) &#8230; jeżeli znowu nie wykona się poprawnie &#8230; cóż czasem trzeba sobie radzić samemu <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ok, zakładam że w końcu uda się pobrać z serwera konfigurację z serwera &#8230; tak, na prawdę gitosis przechowuje swoją konfigurację w formie jednego z repozytoriów. Jest to dość wygodne, gdyż nie wymusza na nas logowania się na serwer celem zmiany konfiguracji (w wypadku dodania użytkownika repozytorium, czy też nowego projektu). W każdej chwili możemy sobie ta konfigurację pobrać, zmodyfikować, &#8222;wepchnąć&#8221; z powrotem i usunąć <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  jak dla mnie bomba <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Co do samej konfiguracji to składa się ona z 2 rzeczy:</p>
<ul>
<li>pliku z konfiguracją (znajdują się tam definicje repozytoriów, grup i praw dostępu)</li>
<li>katalogu z kluczami publicznymi użytkowników</li>
</ul>
<p>W katalogu <em>keydir/</em> znajdują się klucze publiczne użytkowników, w postaci:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">uzywany_login.pub</pre></div></div>

<p>najczęściej login ma postać adresu email, więc przykładowy plik dla użytkownika <em>wlodek@luksza.org</em> będzie się nazywał<em> wlodek@luksza.org.pub</em> &#8230; jest to niezmiernie skomplikowane, nieprawdaż <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>W przypadku kiedy chcemy dodać nowego użytkownika bądź repozytorium musimy przeedytować plik <em>gitosis.conf</em>, jego opis można znaleźć <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2VhZ2Fpbi5uZXQvZ2l0d2ViLz9wPWdpdG9zaXMuZ2l0O2E9YmxvYl9wbGFpbjtmPWV4YW1wbGUuY29uZjtoYj1IRUFE" target=\"_blank\">tutaj</a>. W przypadku użytkowników należy pamiętać o zgodności nawy użytkownika z nazwą pliku zawierającą jego klucz publiczny. Dodatkowo warto wspomnieć o tym, że dla każdego repozytorium możemy zdefiniować właściciela (parametr <em>owner</em> <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) oraz opis (<em>description</em>), są to przydatne parametry zwłaszcza podczas eksploracji repozytorium przy użyciu <em>cgit</em>&#8216;a czy też <em>gitweb</em>&#8216;a.</p>
<p>Kiedy już wykonamy wszystkie zmiany commit&#8217;ujemy je do lokalnego repo, a potem wypychamy do głównego:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git commit <span style="color: #660033;">-a</span>
git push</pre></div></div>

<p>W ten prosty sposób administrujemy repozytorium git&#8217;a zarządzanym przez <em>gitosis</em> <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>BTW. Chyba szykuje się nam zmiana na miejscu domyślnego repo Eclipse Fundation możliwe, że nowe repo będzie obsługiwane przez git&#8217;a, &#8222;pierwsze&#8221; takie przesłanki można znaleźć <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Rldi5lY2xpcHNlLm9yZy9ibG9ncy93YXluZS8yMDA5LzEyLzAxL2dpdC1hdC1lY2xpcHNlLw==" target=\"_blank\">tutaj</a>.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=436" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2009/12/02/prywatne-repo-git%e2%80%99a-cz-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Prywatne repo git&#8217;a cz.1</title>
		<link>http://luksza.org/2009/11/29/prywatne-repo-gita-cz-1/</link>
		<comments>http://luksza.org/2009/11/29/prywatne-repo-gita-cz-1/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 22:09:21 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[cgit]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[lighttpd]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=417</guid>
		<description><![CDATA[Jakiś czas temu pisałem jak za pomocą git&#8217;a i pendirve&#8217;a można w łatwy sposób zabezpieczyć się przed utratą projektu. Dziś przedstawię bardziej skomplikowane podejście, a mianowicie postawimy repozytorium git&#8217;a na serwerze. W moich założeniach takie repozytorium nie będzie dostępnie publicznie (w przeciwieństwie do rozwiązania jakie na starcie proponuje GitHub; mają też rozwiązanie płatne w którym [...]]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu pisałem jak za pomocą <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2x1a3N6YS5vcmcvMjAwOS8wNC8yNC93bGFzbmUtemFwYXNvd2UtcmVwb3p5dG9yaXVtLWdpdC8=" target=\"_blank\">git&#8217;a i pendirve&#8217;a można w łatwy sposób zabezpieczyć się przed utratą projektu</a>. Dziś przedstawię bardziej skomplikowane podejście, a mianowicie postawimy repozytorium git&#8217;a na serwerze. W moich założeniach takie repozytorium nie będzie dostępnie publicznie (w przeciwieństwie do rozwiązania jakie na starcie proponuje <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2dpdGh1Yi5jb20v" target=\"_blank\">GitHub</a>; mają też rozwiązanie płatne w którym to możemy mieć  prywatne repo, ale ja wole mieć je u siebie <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p>Moje oczekiwania od takiego repo są następujące:</p>
<ul>
<li>dostępność do repo z każdego zakątka świata (czyli serwer musi być dostępny szeroko pojętej sieci)</li>
<li>możliwość dostępu do repo tylko dla wybranych użytkowników</li>
<li>możliwość przeglądania repo z poziomu www</li>
<li>bezpieczeństwo stosowanego rozwiązania (https, ssh)</li>
</ul>
<p>Jakie wybrałem oprogramowanie ?</p>
<ul>
<li>systemem bazowym będzie Debian (znany, <em>lubiany</em> i standardowy linux)</li>
<li>gitosis (prosty soft do hostowania repozytorium git&#8217;a z równie prostą kontrolą dostępu, IMO rozwiązanie w sam raz do moich potrzeb)</li>
<li><a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5saWdodHRwZC5uZXQv" target=\"_blank\">lighttpd</a> (mały i szybki httpd)</li>
<li>mod_ssl oraz mod_auth do wyżej wymienionego httpd</li>
<li><a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2hqZW1saS5uZXQvZ2l0L2NnaXQv" target=\"_blank\">cgit</a> odpowiednik gitweb&#8217;a ale moim zdaniem ładniejszy i bardziej przejrzysty</li>
</ul>
<p>We własnym zakresie trzeba zadbać o system bazowy, oraz jego konfigurację <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Zakładam, że Debian jest już zainstalowany, skonfigurowany, <em>zabezpieczony</em> oraz podpięty do sieci.</p>
<p>Zaczynamy od instalacji i konfiguracji <em>lighttpd</em></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> lighttpd apache2-utils</pre></div></div>

<p>Pakiet <em>apache2-utils</em> będzie nam potrzebny do wygenerowania <em>hash</em>&#8216;a hasła potrzebnego do <em>mod_auth</em> (swoją drogą system pakietowania debiana coraz bardziej mnie zadziwia &#8230; nie rozumiem po co w zależnościach do tego pakietu znajduje się libmysqlclient &#8230;). Po zainstalowaniu włączamy dwa interesujące nas moduły:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">lighttpd-enable-mod auth
lighttpd-enable-mod ssl</pre></div></div>

<p>Oraz przechodzimy do konfiguracji zarówno httpd jak i modułów. Zaczniemy od <em>mod_auth</em>, czyli edytujemy pliczek <em>/etc/lighttpd/conf-enabled/05-auth.conf</em>, w którym to wybieramy backend (czyli algorytm szyfrowania haseł oraz miejsce ich zapisu) oraz konfigurujemy miejsca do których dostęp będzie strzeżony hasłem. Po modyfikacjach plik konfiguracyjny powinien wyglądać mniej więcej tak:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">## Authentication for lighttpd</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">## Documentation: /usr/share/doc/lighttpd-doc/authentication.txt.gz</span>
<span style="color: #666666; font-style: italic;">##                http://www.lighttpd.net/documentation/authentication.html</span>
server.modules                += <span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #ff0000;">&quot;mod_auth&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #666666; font-style: italic;"># htdigest jest najmocniejszym dostepnym &quot;algorytmem&quot; szyfrujacym</span>
auth.backend                   = <span style="color: #ff0000;">&quot;htdigest&quot;</span>
auth.backend.htdigest.userfile = <span style="color: #ff0000;">&quot;/etc/lighttpd/lighttpd-htdigest.user&quot;</span>
&nbsp;
auth.require                 = <span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #ff0000;">&quot;/&quot;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span>
                                     <span style="color: #7a0874; font-weight: bold;">&#40;</span>
                                       <span style="color: #ff0000;">&quot;method&quot;</span>  =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;digest&quot;</span>,
                                       <span style="color: #ff0000;">&quot;realm&quot;</span>   =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;secure content&quot;</span>,
                                       <span style="color: #ff0000;">&quot;require&quot;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;valid-user&quot;</span>
                                      <span style="color: #7a0874; font-weight: bold;">&#41;</span>
                                <span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>Opcja <em>auth.require</em> zawiera tylko jeden element, którym jest root serwera httpd, czyli dostęp do dowolnego pliku na serwerze będzie chroniony hasłem. Warto tutaj wspomnieć, że hash hasła zostanie <em>posolony</em> wartością w <em>realm</em>, dzięki temu uzyskujemy prosty mechanizm kontroli dostępu (tj. gdybyśmy mieli dwa zasoby z różnymi wartościami w <em>realm</em>, każdego użytkownika który powinien posiadać dostęp do obu powinniśmy dodać osobno). Teraz wystarczy tylko dodać użytkownika:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">htdigest <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>lighttpd<span style="color: #000000; font-weight: bold;">/</span>lighttpd-htdigest.user <span style="color: #ff0000;">'secure content'</span> user_name</pre></div></div>

<p>Po wydaniu tej komendy zostaniemy poproszeni o podanie oraz potwierdzenie hasła dla tego użytkownika.</p>
<p>Po skonfigurowaniu <em>mod_auth</em> przechodzimy do konfiguracji <em>mod_ssl</em>, w tym celu edytujemy <em>/etc/lighttpd/conf-enabled/10-ssl.conf</em>. Ja zdecydowałem się udostępniać usługę http tylko na porcie 443 z szyfrowaniem (czyli popularny https <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), więc w konfiguracji <em>mod_ssl</em> wskazałem na którym dokładnie adresie IP oraz na jakim porcie ma nasłuchiwać daemon; plik konfiguracyjny wygląda mniej więcej tak:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">## lighttpd support for SSLv2 and SSLv3</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">## Documentation: /usr/share/doc/lighttpd-doc/ssl.txt</span>
<span style="color: #666666; font-style: italic;">##      http://www.lighttpd.net/documentation/ssl.html</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#### SSL engine</span>
<span style="color: #007800;">$SERVER</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">&quot;socket&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> == <span style="color: #ff0000;">&quot;111.222.3.4:443&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
ssl.engine                  = <span style="color: #ff0000;">&quot;enable&quot;</span>
ssl.pemfile                 = <span style="color: #ff0000;">&quot;/etc/lighttpd/server.pem&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>następnie generujemy certyfikat <em>self-signed</em> dla naszego serwera:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">openssl req <span style="color: #660033;">-new</span> <span style="color: #660033;">-x509</span> <span style="color: #660033;">-keyout</span> server.pem <span style="color: #660033;">-out</span> server.pem <span style="color: #660033;">-days</span> <span style="color: #000000;">365</span> <span style="color: #660033;">-nodes</span></pre></div></div>

<p>Który to kopujemy do <em>/etc/lighttpd/server.pem</em>.</p>
<p>Ostatnią częścią konfiguracji lighttpd będzie ogólna konfiguracja serwera, czyli edytujemy plik<br />
<em>/etc/lighttpd/lihttpd.conf.</em> W którym to odkomentowujemy tylko linie:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">server.bind = <span style="color: #ff0000;">&quot;localhost&quot;</span></pre></div></div>

<p>Spowoduje to, że port 80 zostanie otwarty tylko na interfejsie <em>loopback</em>, co w konsekwencji prowadzi do tego, że wszystkie połączenia (z sieci) do portu 80 będą odrzucane (za to akceptowane będą połączenia do portu 443, zgodnie z konfiguracją w pliku <em>10-ssl.conf</em>).</p>
<p>Na razie to wszystko w kwestii konfiguracji lighttpd, wrócimy jeszcze do niej podczas konfiguracji cgit&#8217;a. W następnej części zajmiemy się konfiguracją gitosis.</p>
<p>PS. Tutaj jest <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2x1a3N6YS5vcmcvMjAwOS8xMi8wMi9wcnl3YXRuZS1yZXBvLWdpdCVlMiU4MCU5OWEtY3otMi8=" target=\"_self\">część druga</a>.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=417" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2009/11/29/prywatne-repo-gita-cz-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
