Instalacja serwera ed2k - amule na OpenWrt
Ostatnia zmiana: 2013-11-27 16:55

Celem jest uruchomienie kompletnego serwera amule wraz interfejsem www do jego kontroli. Sam amule skompilowany na platformę mipsel jest za duży na to, żeby całkowicie "zmieścić" do w pamięci flash, dlatego tez zarówno program jak i ściągane dane zostaną umieszczone na zewnętrznym nośniku. W moim przypadku był to dysk zewnętrzny w kieszeni USB. Może to być także karta pamięci lub inny rodzaj nośnika. Jako system testowy wykorzystano OpenWrt Whiterussian 0.9 na Asus WL-500gP.

UWAGA: W większości przypadków pliki udostępnione w sieci p2p są nielegalnie. Masz tego świadomość.

Należy także pamiętać, że OpenWrt pracuje zwykle na urządzeniach do ograniczonej pamięci i zasobach sprzętowych. W konfiguracji amule należy zminimalizować liczbę połączeń, filtracje adresów itd. Należy również ograniczyć liczbę plików włożonych do kolejki.

Wszystkie patche i pliki niezbędne do kompilacji amule pod openwrt: amule_src.tgz

UWAGA: Kamikaze 8.09 posiada standardowo paczki z amule, więc poniższy poradnik jest całkowicie nieprzydatny, jeżeli masz tą wersję.

Przygotowania

Dysk zewnętrzny należy sformatować w systemie plików ext2. Wykonujemy to przy pomocy polecenia


        mkfs.ext2 -m 0 /dev/sda1

(zakładając, że podłączony dysk jest widoczny jako /dev/sda)
Przygotowany nośnik należy połączyć do urządzania. Powinien zostać on automatycznie zamontowany (w moim przypadku w /mnt/disc0_1).

Instalacja

Od tego momentu wszystkie czynności należy wykonać będąc zalogowanym w OpenWrt. Nie będzie to standardowa instalacja z pakietów z racji rozmiaru paczki i sposobu jej przygotowania.

Ponieważ nie wiadomo gdzie zostanie zamontowany nośnik, należy zrobić odpowiedni link symboliczny do katalogu /tmp/shared, który będzie katalogiem domowym serwera amule


        ln -s /mnt/disc0_1 /tmp/shared

Należy przejść do tego katalogu:


        cd /tmp/shared

a następnie pobrać przygotowaną wersję amule i rozpakować ją do tego katalogu.


        wget http://eko.one.pl/openwrt/amule-2.1.3.tgz
        tar zxvf amule-2.1.3.tgz
        rm amule-2.1.3.tgz

Podany pakiet jest moim kompilatem; jeżeli będzie sprawiał problemy (ale nie problemy konfiguracyjne! od tego jest strona www.amule.org) - proszę o kontakt.

Konfiguracja

Pierwsze uruchomienie amule powoduje wygenerowanie odpowiedniego pliku konfiguracyjnego.


        /tmp/shared/bin/amule start

Ponieważ zostaje wymuszony katalog domowy (HOME), cała konfiguracja amule zawarta jest w katalogu /tmp/shared/home/amule/.aMule
Potrzebujemy jeszcze odpowiednio przygotowanego hasła do serwera amule:


        echo -n haslo | md5sum | cut -d ' ' -f 1

Słowo haslo należy zastąpić swoim własnym. Zostanie wygenerowany ciąg znaków; należy je zapisać/zapamiętać :)

Ulubionym edytorem należy pozmieniać parę opcji konfiguracyjnych (przy wyłączonym amule!). Uruchamiamy edycję...


        /tmp/shared/bin/amule stop
        nano /tmp/shared/home/amule/.aMule/amule.conf

... i ustawiamy podane niżej opcje


        [eMule]
        IPFilterAutoLoad=0
        [WebServer]
        Enabled=1
        Password=###
        Template=php-default
        [ExternalConnect]
        AcceptExternalConnections=1
        ECPassword=###
        ShowProgressBar=1

W miejsce ### należy wstawić wcześniej wygenerowany ciąg znaków.

Należy także pobrać aktualną listę serwerów (z http://ed2k.2x4u.de - link jest zmieniany po kilka minut więc trzeba wejść na stronę i skopiować aktualny!) i skopiować do katalogu /tmp/shared/home/amule/.aMule oraz wskazać katalog z szablonem stron www:


        ln -s /tmp/shared/share/amule/webserver/ /tmp/shared/home/amule/.aMule/webserver

Ponowne uruchomienie polecenia


        /tmp/shared/bin/amule start

powinno uruchomić już serwer amule.

Jeżeli po uruchomieniu serwera nie będzie on widoczny w liście procesów (do uzyskania przez ps ax), należy zmienić opcję -f w pliku /tmp/shared/bin/amule na -i -o. Spowoduje to wypisanie na konsolę komunikatów startowych umożliwiając tym samym diagnozę problemów.

Dostęp do serwera można uzyskać zarówno z linii poleceń (amulecmd) jak również z poziomu www pod adresem http://adres_serwera:4711

Przykładowe zrzuty ekranu:

(kliknij, aby powiększyć)


(kliknij, aby powiększyć)

Ściągnięte pliki znajdują się w katalogu /tmp/shared/home/amule/.aMule/Incoming; można to zmienić zmieniając odpowiednią opcję w pliku konfiguracyjnym. W razie problemów z amule należy zapoznać się z pomocą dostępną na stronie amule http://www.amule.org/wiki/index.php/Main_Page. Wszystkie odpowiedzi typu "a dlaczego mam lowid" czy "a dlaczego mi nie działa ta opcja" są też wyjaśnione na stronie pomocy aMule.

Automatycznie uruchamianie

W katalogu /etc/init.d należy utworzyć plik o nazwie S99amule


        touch /etc/init.d/S99amule
        chmod 755 /etc/init.d/S99amule

I umieścić w nim wywołanie serwera:


        #!/bin/sh
        ln -s /mnt/disc0_1 /tmp/shared
        /tmp/shared/bin/amule start

Rozwiązanie to ma pewne wady - nie zawsze podmontowany jest dysk i nie zawsze dostępny jest katalog /tmp/shared wskazujący na ten nośnik.

Lepszym rozwiązaniem wydaje się być wykorzystanie skryptu automatycznego mountowania dysku.

W pliku /etc/hotplug.d/usb, w pliku 01-mount należy zamienić


        for part in part*; do
            path=/mnt/${dev}_${part##*part}
            mkdir -p ${path}
            mount ${part} ${path}
        done

na


        for part in part*; do
            path=/mnt/${dev}_${part##*part}
            mkdir -p ${path}
            mount ${part} ${path}
            if [ -f ${path}/bin/amule ]; then
                ln -s ${path} /tmp/shared
                /tmp/shared/bin/amule start
            fi
        done


Przed odłączeniem dysku należy upewnić się, że nie jest on wykorzystywany, i w szczególności, nie jest uruchomiony serwer amule. Można zrobić odpowiedni skrypt połączony pod przycisk SES (EZSetup w Asus WL-500gP). Wtedy, jeżeli chcemy odłączyć dysk wystarczy nacinąć przycisk, odczekać kilka sekund i można go bezpiecznie odłączyć. Przykład takiego skryptu (do umieszczenia w katalogu /etc/hotplug.d/button pod nazwą 01-umount)


        if [ "$BUTTON" = "ses" ] ; then
            if [ "$ACTION" = "pressed" ] ; then
                if [ -f /tmp/shared/bin/amule ]; then
                    /tmp/shared/bin/amule stop
                    umount /dev/sda1
                    sleep 3
                fi
            fi
        fi

    
Informacje na temat dalszej konfiguracji i pracy amule dostępne są na forum.