Własny Serwer

Własny Serwer – cz.8: Repozytoria pakietów debianowych

Ostatnia aktualizacja: 16 września 2023, 15:16



 
Ósma część serii Własny Serwer poświęcona jest konfiguracji serwera hostującego własne pakiety dla dystrybucji opartych na Debianie lub Ubuntu.

Co to jest repozytorium pakietów?
Repozytorium pakietów jest wydzielonym miejscem na serwerze, które oferuje pakiety binarne oraz źródłowe dla konkretnej dystrybucji Linux. Dostęp do repozytoriów przez użytkowników zwykle możliwy jest po dodaniu adresu repozytoriów do swojego menadżera pakietów oraz klucza publicznego.

Komu jest to potrzebne?
Własne repozytorium pakietów jest pomocne przy udostępnianiu własnych pakietów, tworzonych na potrzeby własnego projektu lub tworzeniu, np. dodatkowej bazy pakietów z innych źródeł, innych niż te oferowane przez deweloperów Twojej dystrybucji.

Jeśli prześledziłeś wszystkie poprzednie części serii Własny Serwer, to znasz zasady konfiguracji domeny, serwera www i szyfrowania TSL/SSL.

Domena
Możesz postawić repozytoria na własnej, unikalnej domenie/subdomenie lub poprosić o utworzenie specjalnej subdomeny projektu, którego pakiety chcesz hostować, np.: pl.repo.sparkylinux.org

Serwer www
Minimum koniecznym do udostępniania plików jest serwer www, bazujący na Apache2 lub Nginx, lub innym.

Utwórz katalog, w którym będziesz udostępniał zasoby:
mkdir -p /var/www/pl.repo.sparkylinux.org/public_html

Dodaj konfigurację dla Apache:
nano /etc/apache2/sites-available/000-default.conf
wpisując:
##### pl.repo.sparkylinux.org #####
<VirtualHost *:80>
        ServerAdmin admin@lpl.repo.sparkylinux.org
        ServerName pl.repo.sparkylinux.org
        ServerAlias www.pl.repo.sparkylinux.org  pl.repo.sparkylinux.org
        DocumentRoot /var/www/pl.repo.sparkylinux.org/public_html
        DirectoryIndex index.html index.php index.htm
        <Directory /var/www/pl.repo.sparkylinux.org/public_html/>
               Options All Indexes FollowSymLinks
               AllowOverride All
               Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error- pl-repo-sparkylinux-org.log
        CustomLog ${APACHE_LOG_DIR}/access- pl-repo-sparkylinux-org.log combined
</VirtualHost>

Jeśli posiadasz Nginx zamiast Apache, to dodaj konfigurację do:
nano /etc/nginx/sites-available/default
wpisując:
##### pl.repo.sparkylinux.org #####
server {
listen 80;
server_name pl.repo.sparkylinux.org www.pl.repo.sparkylinux.org;
root /var/www/pl.repo.sparkylinux.org/public_html;
index index.php index.html index.htm;
location /
{
try_files $uri $uri/ =404;
}
}

Zmiana praw do zawartości udostępnionego katalogu i plików:
chown -R www-data:www-data /var/www/pl.repo.sparkylinux.org/public_html/

Szyforwanie TSL/SSL
Jeśli chcesz udostępniać swoje repozytoria przez szyfrowany protokół https, to dodaj link symboliczny:
ln -s /var/www/pl.repo.sparkylinux.org/public_html /var/www/pl.repo.sparkylinux.org/private_html

Oraz wpis do konfiguracji Apache:
nano /etc/apache2/sites-available/default-ssl.conf

dodając do powyższego pliku zawartość:
##### pl.repo.sparkylinux.org #####
<IfModule mod_ssl.c>
        <VirtualHost *:443>
               ServerAdmin admin@pl.repo.sparkylinux.org
               ServerName pl.repo.sparkylinux.org
               ServerAlias www.pl.repo.sparkylinux.org pl.repo.sparkylinux.org
               DocumentRoot /var/www/pl.repo.sparkylinux.org/private_html
               <Directory /var/www/pl.repo.sparkylinux.org/private_html/>
                       Options All Indexes FollowSymLinks
                       AllowOverride All
                       Require all granted
               </Directory>
               ErrorLog ${APACHE_LOG_DIR}/error-pl-repo-sparkylinux-org.log
               CustomLog ${APACHE_LOG_DIR}/access-pl-repo-sparkylinux-org.log
combined
               SSLEngine on
               <FilesMatch "\.(cgi|shtml|phtml|php)$">
                               SSLOptions +StdEnvVars
               </FilesMatch>
               <Directory /usr/lib/cgi-bin>
                               SSLOptions +StdEnvVars
               </Directory>
        </VirtualHost>
</IfModule>

Przeładuj Apache:
systemctl restart apache2

Teraz zainstaluj certyfikat TSL:
certbot --apache -d pl.repo.sparkylinux.org -d www.pl.repo.sparkylinux.org

Ponownie przeładuj Apache:
systemctl restart apache2

Lub do konfiguracji Nginx:
/etc/nginx/sites-available/default

server {
listen 443 ssl http2;
server_name pl.repo.sparkylinux.org www.pl.repo.sparkylinux.org;
root /var/www/pl.repo.sparkylinux.org/private_html;
index index.php index.html index.htm;
ssl_certificate /etc/ssl/certs/apache-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/apache-selfsigned.key;
location /
{
try_files $uri $uri/ =404;
}
}

Przeładuj Nginx:
systemctl restart nginx

Teraz zainstaluj certyfikat TSL:
certbot --nginx -d pl.repo.sparkylinux.org -d www.pl.repo.sparkylinux.org

Ponownie przeładuj Nginx:
systemctl restart nginx

Klucz publiczny
W pierwszej kolejności utwórz klucz prywatny i publiczny.
Klucz prywatny wyeksportuj (opcjonalnie) i skopiuj na dysk lokalny – tego klucza nikomu nie udostępniaj.
Klucz publiczny wyeksportuj i udostępnij użytkownikom – dzięki niemu otrzymają dostęp do zawartości Twojego repozytorium.

Zainstaluj GPG:
apt update
apt install gnupg

Wygeneruj parę kluczy (domyślnie RSA):
gpg --generate-key
lub
gpg --full-generate-key

Podając swój email, imię i nazwisko/nazwę, hasło.

Wyeksportuj klucz publiczny (przykładowy):
gpg --armor --output ~/sparky.gpg.key --export nick@email-serwer.pl

Konfiguracja repozytoriów
Po skonfigurowaniu katalogów i serwera www oraz klucza, które będziesz udostępniał użytkownikom, można przejść do konfiguracji obsługi samego repozytorium. Do tego celu istnieje kilka aplikacji, ja polecam 'reprepro’.

apt install reprepro

Przejdź do katalogu udostępniania repo:
cd /var/www/pl.repo.sparkylinux.org/public_html
Utwórz podkatalog dla konfiguracji repo:
mkdir conf
i utwórz w nim plik konfiguracyjny:
nano conf/distributions

wklejając:
Origin: Debian
Label: Debian
Suite: stable
Codename: potolo
Architectures: i386 amd64 source
Components: main
Description: Sparky stable repository
SignWith: sparky.gpg.key

(Powyższa, przykładowa konfiguracja konfiguruje repozytoria dla SparkyLinux z linii stabilnej)

Zapisz plik, następnie skopiuj wcześniej wygenerowany klucz publiczny do przestrzeni udostępniania repo:

cp ~/sparky.gpg.key /var/www/pl.repo.sparkylinux.org/public_html/

Repo jest gotowe, czas dodać pierwszy pakiet binarny (w katalogu public_html):
reprepro -Vb . includedeb potolo /katalog-tymczasowy-pakietow/paczka.deb

oraz pakiet źródłowy, jeśli taki posiadasz:
reprepro -Vb . includedsc potolo /katalog-tymczasowy-pakietow/paczka.dsc

usunięcie pakietu z repo:
reprepro -Vb . remove potolo pakiet

Więcej informacji uzyskasz ze strony podręcznika:
man reprepro
man gpg

Konfiguracja repozytoriów na komputerze użytkownika
Skoro repo jest gotowe, pakiety dodane, użytkownicy powiadomieni, to należy poinstruować ich, jak dodać nasze nowe repozytoria do ich systemu opartego na Debianie lub Ubuntu.

W pierwszej kolejności zainstaluj z serwera repo klucz publiczny:
wget -O - http://pl.repo.sparkylinux.org/sparky.gpg.key | sudo tee /usr/share/keyrings/sparky.gpg.key

Teraz utwórz listę repozytoriów:
sudo nano /etc/apt/source.list.d/sparky-moja-lista.list

Dodając do niej adres repozytoriów podpisanych kluczem publicznym:
deb [signed-by=/usr/share/keyrings/sparky.gpg.key] http://pl.repo.sparkylinux.org/ potolo main
deb-src [signed-by=/usr/share/keyrings/sparky.gpg.key] http://pl.repo.sparkylinux.org/ potolo main

Adresy repozytoriów i klucz publiczny są przykładowe, zmień na swoje!

Odśwież listę pakietów:
sudo apt update

Na tym zakończyliśmy temat konfiguracji własnego repozytorium pakietów debianowych.

Odwiedź również:
man apt

W kolejnej, dziewiątej części cyklu Własny Serwer skonfigurujemy nasz system pod kątem serwera lustrzanego dla innego projektu, np. jeśli nie tworzysz własnych pakietów, ale posiadasz maszynę serwerową i chcesz udostępnić jej część na pakiety innego projektu, np. Debiana, Ubuntu, Sparky lub innego pochodnego OS-a.

Click to rate this post!
[Total: 0 Average: 0]

Jeden komentarz do “Własny Serwer – cz.8: Repozytoria pakietów debianowych

  • No tak, znów dużo po angielsku i zbyt wiele do ogarnięcia. Weźmy fragmencik pingwinka, taki swap. Partycja czy swapfile? Jakiej wielkości? 1 czy więcej? A jak na partycji to systemowej czy innej?A na stałe to jak? etc. Żeby Linuxy były number one, muszą być max uproszczone, z góry optimum skonfigurowane, niczym win, a może i lepiej (nie licząc mega szpiegostwa/inwigilacji). Może kiedyś będzie idealny Linux…

    Odpowiedz

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna jest chroniona przez reCAPTCHA i Google Politykę Prywatności oraz obowiązują Warunki Korzystania z Usługi.