Bu sayfa son olarak 2020-09 tarihinde güncellendi ve 0.9.47 yöneltici sürümü için geçerli.

I2P Üzerinden Gitlab Kurulumu

Bu bölümde hizmetin kendisini yönetmek için Docker ile Gitlab ve I2P yapılandırmaları için kullandığım kurulum sürecini anlatacağım. Bu şekilde I2P üzerinde Gitlab barındırmak çok kolaydır ve tek kişi tarafından çok zorlanmadan yönetilebilir. Yapılandırmamda, bir Debian sunucu sisteminde docker kapsayıcılarını ve bir I2P yönelticisini barındırmak için bir Debian sanal makinesi kullanıyorum. Ancak bu kurulum bazı insanlar için gereğinden fazla olabilir. Bu yönergeler, bir sanal makinede olsun veya olmasın, herhangi bir Debian tabanlı sistemde çalışmalı ve Docker ile bir I2P yönelticisinin bulunduğu herhangi bir sisteme kolayca dönüştürülebilmelidir. Bu rehber Docker ile başlar ve altında herhangi bir sanal makine olmadığını varsayar.

Bağımlılıklar ve Docker

Gitlab bir kapsayıcı içinde çalıştığı için ana sistemimize yalnız kapsayıcı için gerekli olan bağımlılıkları kurmanız gerekir. Uygun bir şekilde, gerek duyduğunuz her şeyi aşağıdaki komutlarla kurabilirsiniz:

sudo apt install docker.io

başka şekilde değiştirilmemiş bir Debian sistemi veya Docker uygulamasının kendi "Topluluk" Debian deposunu eklediyseniz, şunları kullanabilirsiniz:

sudo apt install docker-ce

onun yerine.

Docker Kapsayıcılarını Alın

Docker'ı kurduktan sonra Gitlab için gerekli docker kapsayıcılarını getirebilirsiniz. Henüz çalıştırmayın.

docker pull gitlab/gitlab-ce

For those who are concerned, the gitlab-ce Docker image is built using only Ubuntu Docker images as a parent, which are built from scratch images. Since there are no third-party images involved here, updates should come as soon as they are available in the host images. To review the Dockerfile for yourself, visit the Gitlab source code.

Gitlab kullanımı için bir I2P HTTP vekil sunucusu kurun (önemli bilgiler, isteğe bağlı adımlar)

Gitlab servers inside of I2P can be run with or without the ability to interact with servers on the internet outside of I2P. In the case where the Gitlab server is not allowed to interact with servers outside of I2P, they cannot be de-anonymized by cloning a git repository from a git server on the internet outside of I2P. They can, however, export and mirror repositories from other git services inside of I2P.

In the case where the Gitlab server is allowed to interact with servers outside of I2P, it can act as a “Bridge” for the users, who can use it to mirror content outside I2P to an I2P-accessible source, however it is not anonymous in this case. Git services on the non-anonymous internet will be connected to directly.

If you want to have a bridged, non-anonymous Gitlab instance with access to web repositories, no further modification is necessary.

If you want to have an I2P-Only Gitlab instance with no access to Web-Only Repositories, you will need to configure Gitlab to use an I2P HTTP Proxy. Since the default I2P HTTP proxy only listens on 127.0.0.1, you will need to set up a new one for Docker that listens on the Host/Gateway address of the Docker network, which is usually 172.17.0.1. I configure mine on port 4446.

Kapsayıcıyı Yerel Olarak Başlatın

Bu kurulumu yaptıktan sonra kapsayıcıyı başlatabilir ve Gitlab kopyanızı yerel olarak yayınlayabilirsiniz.

docker run --detach \
  --env HTTP_PROXY=http://172.17.0.1:4446 \
  --publish 127.0.0.1:8443:443 --publish 127.0.0.1:8080:80 --publish 127.0.0.1:8022:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab:Z \
  --volume /srv/gitlab/logs:/var/log/gitlab:Z \
  --volume /srv/gitlab/data:/var/opt/gitlab:Z \
  gitlab/gitlab-ce:latest

Yerel Gitlab kopyanızı ziyaret edin ve yönetici hesabınızı ayarlayın. Güçlü bir parola seçin ve kaynaklarınıza uygun kullanıcı hesabı sınırlamalarını yapılandırın.

gitlab.rb dosyasını değiştirin (isteğe bağlı, ama "köprülenmiş anonim olmayan" sunucular için iyi bir fikir)

HTTP vekil sunucu ayarlarınızı daha ayrıntılı bir şekilde de uygulayabilirsiniz. Böylece kullanıcıların yalnız seçtiğiniz etki alanlarındaki depoları yansıtmasını sağlayabilirsiniz. Etki alanı muhtemelen bir kuruluş tarafından işletildiğinden, yansıtılabilir depoların makul bir ilke kümesine uymasını sağlamak için bunu kullanabilirsiniz. Ne de olsa, anonim olmayan İnternet üzerinde I2P üzerindekinden çok daha fazla taciz edici içerik var. Bu kadar kötü bir yerden taciz edici içeriğin sunulmasını çok kolaylaştırmak istemeyiz.

/src/gitlab/config kapsayıcısının içindeki gitlab.rb dosyanıza aşağıdaki satırları ekleyin. Bu ayarlar, biraz sonra yeniden başlattığınızda geçerlilik kazanacak.

gitlab_rails['env'] = {
    "http_proxy" => "http://172.17.0.1:4446",
    "https_proxy" => "http://172.17.0.1:4446",
    "no_proxy" => ".github.com,.gitlab.com"
}
gitaly['env'] = {
    "http_proxy" => "http://172.17.0.1:4446",
    "https_proxy" => "http://172.17.0.1:4446",
    "no_proxy" => "unix,.github.com,.gitlab.com"
}
gitlab_workhorse['env'] = {
    "http_proxy" => "http
    "https_proxy" => "http://172.17.0.1:4446",
    "no_proxy" => "unix,.github.com,.gitlab.com"
}

Hizmet tünellerinizi kurun ve bir sunucu adı kaydı yapın

Gitlab yerel olarak kurulduktan sonra, I2P yöneltici panosuna gidin. Biri 8080 TCP kapı numarası üzerindeki Gitlab web (HTTP) arabirimine ve diğeri 802 TCP kapı numarası üzerindeki Gitlab SSH arabirimine giden iki sunucu tüneli kurmanız gerekecek.

Gitlab Web (HTTP) Arayüzü

For the Web interface, use an “HTTP” server tunnel. From http://127.0.0.1:7657/i2ptunnelmgr launch the “New Tunnel Wizard” and enter the following values at each step:

  1. “Sunucu tüneli" seçin
  2. “HTTP sunucu” seçin
  3. “Gitlab web hizmetini” doldurun veya tüneli başka bir şekilde tanımlayın
  4. Sunucu olarak 127.0.0.1 ve kapı numarası olarak 8080 yazın.
  5. “Yöneltici başlatıldığında tünel de otomatik olarak başlatılsın” olarak seçin
  6. Seçimlerinizi doğrulayın
Bir sunucu adı kaydedin (isteğe bağlı)

Web services on I2P can register hostnames for themselves by providing an authentication string to a jump service provider like stats.i2p. To do this, open the http://127.0.0.1:7657/i2ptunnelmgr again and click on the “Gitlab Web Service” item you just set up. Scroll to the bottom of the “Edit Server Settings” section and click Registration Authentication. Copy the field that says “Authentication for adding Hostname” and visit stats.i2p to add your hostname. Note that if you want to use a subdomain(Like git.idk.i2p) then you will have to use the correct authentication string for your subdomain, which is a little bit more complicated and merits it’s own instructions.

Gitlab SSH Arayüzü

For the SSH interface, use a “Standard” server tunnel. From http://127.0.0.1:7657/i2ptunnelmgr launch the “New Tunnel Wizard” and enter the following values at each step:

  1. “Sunucu tüneli" seçin
  2. “Standard sunucu” seçin
  3. “Gitlab SSH hizmeti” yazın veya tünele başka bir ad yazın
  4. Fill in 127.0.0.1 for the host and 8022 for the port.
  5. “Yöneltici başlatıldığında tünel de otomatik olarak başlatılsın” olarak seçin
  6. Seçimlerinizi doğrulayın

Gitlab hizmetini yeni sunucu adı ile yeniden başlatın

Finally, if you either modified gitlab.rb or you registered a hostname, you will need to re-start the gitlab service for the settings to take effect.

docker stop gitlab
docker rm gitlab
docker run --detach \
  --hostname your.hostname.i2p \
  --hostname thisisreallylongbase32hostnamewithfiftytwocharacters.b32.i2p \
  --env HTTP_PROXY=http://172.17.0.1:4446 \
  --publish 127.0.0.1:8443:443 --publish 127.0.0.1:8080:80 --publish 127.0.0.1:8022:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab:Z \
  --volume /srv/gitlab/logs:/var/log/gitlab:Z \
  --volume /srv/gitlab/data:/var/opt/gitlab:Z \
  gitlab/gitlab-ce:latest