Instalacja Knock, knock, AI! na własnym hostingu

Wgrywasz folder, otwierasz jego adres i przechodzisz w przeglądarce siedem kroków (bez crona albo przy wgrywaniu plików logów sześć). Zaplanuj na to kilkanaście minut. Pilnuj jednego zegara: konto musisz założyć w ciągu 60 minut od pierwszego otwarcia.

Pobierz Knock, knock, AI! Wersja 0.5.2, plik ZIP, 1,8 MB.

Czego potrzebujesz

  • PHP 8.2 lub nowszego
  • rozszerzeń PHP: json, hash, zlib, session, pcre
  • prawa zapisu w folderze aplikacji
  • najlepiej crona w panelu hostingu (aplikacja go nie ustawia, tylko pokazuje, co wpisać); gdy hosting go nie ma, wybierasz "Bez crona" i dane liczysz przyciskiem "Przelicz teraz"
  • dostępu do pliku z logiem dostępu serwera (aplikacja czyta go bezpośrednio, albo cron go kopiuje, albo aplikacja pobiera go przez SFTP lub FTP), albo pliki logów, które pobierasz z panelu hostingu i wgrywasz w aplikacji ręcznie
  • HTTPS pod adresem aplikacji (zalecane: przez zwykły http hasło do panelu idzie otwartym tekstem)

Aplikacja czyta logi Apache i nginx, zwykłe i gzip. Nie używa bazy danych i nie wymaga żadnego programu na Twoim komputerze.

Rozszerzenie PHP sodium jest opcjonalne. Bez niego SFTP i FTP są niedostępne (aplikacja mówi to na ekranie), zostaje kopia przez cron, a aktualizacja przyciskiem w panelu nie działa.

Instalacja przez FTP

Krótka ścieżka dla kogoś, kto ma tylko klienta FTP (na przykład FileZilla) i panel hostingu.

  1. Pobierz zip (knock-knock-ai.zip), rozpakuj go i wgraj przez klienta FTP cały folder knock-ai/ na serwer swojej domeny.
  2. Otwórz adres folderu w przeglądarce, na przykład https://twojadomena.pl/knock-ai/. Aplikacja sama utworzy folder danych data-....
  3. Konto: wpisz login, hasło (co najmniej 12 znaków) i język. Masz na to 60 minut.
  4. Serwer: sprawdź domenę i rozpoznany hosting. Aplikacja testuje też, czy folder danych jest zamknięty przed internetem.
  5. Logi: pod nagłówkiem wybierz "Z serwera", "FTP albo SFTP" albo "Wgrywam pliki". "Z serwera" działa, gdy aplikacja może czytać log na swoim serwerze. Gdy nie może i nie ma crona, który skopiowałby log (albo cron nie ma do niego dostępu), wybierz "FTP albo SFTP", wpisz serwer, port, login, hasło i ścieżkę logu i kliknij "Sprawdź połączenie". Najlepiej użyj osobnego konta tylko do odczytu logów. Gdy nie da się ani tego, ani tego, wybierz "Wgrywam pliki" i wgraj pliki logów pobrane z panelu hostingu.
  6. Cron: przy "Uruchamianie" wybierz "Cron" (wpisz w panelu hostingu zadanie z tego kroku) albo "Bez crona" (gdy hosting nie ma crona). Przy wgrywaniu plików nie ma wyboru ani zadania.
  7. Sprawdzenie: z cronem strona sama pokaże "Działa!". Bez crona (i zawsze przy wgrywaniu plików) kliknij "Przelicz teraz", a "Działa!" pojawi się, gdy logi się znajdą.
  8. Harmonogram: tylko z cronem. Zmień zadanie na docelowe, 6:17 i 18:17. Bez crona albo przy wgrywaniu plików ten krok jest pomijany.
  9. Domeny: wybierz domenę główną i czy zbierać pozostałe domeny z logu. Na tym konfiguracja się kończy.

Krok po kroku

Bez crona (i przy wgrywaniu plików) konfiguracja ma sześć kroków, bo krok Harmonogram jest pomijany; szczegóły są w sekcji "Bez crona" niżej.

Przed krokiem 1: wgranie. Wrzuć folder aplikacji knock-ai/ na serwer swojej domeny i otwórz jego adres. Istniejące instalacje w folderze knock-knock-ai działają dalej bez zmian. Aplikacja utworzy folder danych o nazwie data- plus 24 znaki szesnastkowe i zamknie go przed internetem. Jeśli miną te 60 minut, usuń folder data-... i otwórz adres jeszcze raz.

1. Konto. Wybierz login o długości od 1 do 64 znaków, hasło o długości co najmniej 12 znaków i język. Licznik nad formularzem pokazuje, ile czasu Ci zostało.

2. Serwer. Aplikacja pobiera plik testowy z własnego folderu danych i ostrzega, gdy folder jest otwarty z internetu. Na nginx .htaccess nie działa. Dane chroni tam losowa nazwa folderu, a gdy aplikacja zobaczy folder otwarty, pokaże gotowy fragment konfiguracji nginx.

3. Logi. Aplikacja najpierw sama szuka logu w znanych miejscach. Gdy może go odczytać, widzisz "Znaleźliśmy log i czytamy go bezpośrednio". Inaczej podajesz pełną ścieżkę pliku logu, a aplikacja próbuje go odczytać: czyta go bezpośrednio, albo zapisuje, że skopiuje go cron, albo mówi, że pliku nie ma. Nie znasz ścieżki? Krok daje gotową wiadomość do wysłania hostingowi. Pod nagłówkiem jest przełącznik "Z serwera" / "FTP albo SFTP" / "Wgrywam pliki". Gdy aplikacja nie czyta logu na swoim serwerze i nie ma crona, który by go skopiował, wybierasz "FTP albo SFTP" i podajesz dane konta SFTP lub FTP. Gdy nie da się ani tego, ani tego, wybierasz "Wgrywam pliki" i wgrywasz pliki logów pobrane z panelu hostingu (patrz "Wgrywanie plików logów" niżej).

4. Cron. Przy "Uruchamianie" wybierasz "Cron" albo "Bez crona". Z cronem wpisujesz w panelu hostingu zadanie, które co minutę wywołuje aplikację (test). Przy kopii przez cron skrypt najpierw kopiuje log do folderu aplikacji. Gdy cron ma tylko wywołać aplikację, wybierasz polecenie albo "Sam adres URL" (pasuje też do zewnętrznej usługi crona, która wywołuje adres). Skrypt knock-cron.sh aplikacja zapisuje sama. W panelu hostingu wskazujesz tylko ten skrypt. Panele hostingów odrzucają długie polecenia, więc dzięki temu linia jest krótka. Krok pokazuje wartości pól dla lh.pl, cPanel, DirectAdmin i innych hostingów (linia crontaba), dopasowane do Twojego konta. Przy wgrywaniu plików nie ma wyboru ani zadania: cron nie jest potrzebny.

Jeśli pole Godzina nie przyjmuje 6,18, zrób dwa zadania: godzina 6 i godzina 18, minuta 17. Stare zadanie usuń. Aplikacja nie widzi Twojego panelu hostingu, więc przycisk "Gotowe, zmienione" tylko zapisuje, że sam to potwierdzasz.

5. Sprawdzenie. Z cronem krok pyta Twój serwer co 5 sekund i pokazuje "Działa!", gdy cron ruszy, a logi będą na miejscu (odczytane, skopiowane albo pobrane). Bez crona (i zawsze przy wgrywaniu plików) klikasz "Przelicz teraz", a "Działa!" pojawia się, gdy logi się znajdą. Gdy kopia albo pobieranie się nie udały, krok mówi to jednym zdaniem i podaje przycisk naprawy.

6. Harmonogram. Tylko z cronem. Docelowo codziennie o 6:17 i 18:17. Bez crona albo przy wgrywaniu plików krok jest pomijany. Po każdym wywołaniu crona aplikacja przelicza dane najwyżej raz na 15 minut.

7. Domeny. Nowa instalacja zbiera domyślnie tylko domenę główną. Pole "Zbieraj też pozostałe domeny" zbiera wizyty wszystkich domen z jednego logu, a między nimi przełączasz się w panelu. Limit to 200 innych domen.

Na końcu strona stanu pokazuje ostatnie przeliczenie, pliki, które aplikacja czyta, ostatnie wywołanie crona, stan ostatniego pobierania (przy SFTP i FTP) i Twoje ustawienia (sposób pobierania logu z linkiem "Zmień", ścieżkę logu, domenę główną, skrypt crona), z przyciskami "Przejdź do panelu" i "Przelicz teraz". Przy wgrywaniu plików ma też sekcję "Wgraj nowe pliki logów". Dopóki nie pojawi się pierwsza wizyta robota, ekranem głównym jest ta strona stanu.

Pięć sposobów pobierania logu

Krok Logi wybiera jeden sposób (przełącznik "Z serwera" daje odczyt bezpośredni albo kopię przez cron, "FTP albo SFTP" daje pobieranie, "Wgrywam pliki" daje ręczne wgrywanie), a zmienisz go później na stronie stanu (wiersz "Sposób pobierania", link "Zmień"). Cron Twojego hostingu jest harmonogramem przy każdym sposobie, chyba że wybierzesz "Bez crona" albo "Wgrywam pliki" (wtedy cron nie jest potrzebny).

Sposób Jak działa
Odczyt bezpośredni Aplikacja sama otwiera plik logu. Nic się nie kopiuje, a cron tylko wywołuje aplikację. Aplikacja próbuje tego sposobu pierwszego.
Kopia przez cron Skrypt crona kopiuje log do folderu danych i wywołuje aplikację.
SFTP Aplikacja sama pobiera log z Twojego konta przy każdym wywołaniu crona. Połączenie jest zawsze szyfrowane.
FTP To samo, ale protokołem FTP. Aplikacja najpierw próbuje szyfrowania TLS. FTP bez szyfrowania jest możliwy dopiero po zaznaczeniu "Rozumiem ryzyko".
Wgrywanie plików Pobierasz pliki logów z panelu hostingu i wgrywasz je w aplikacji. Aplikacja nie łączy się z serwerem logów i nie potrzebuje żadnego hasła do niego. Dla hostingu bez crona i bez dostępu przez FTP albo SFTP. Dane liczą się tylko z tego, co wgrasz.

Dla SFTP i FTP zalecamy osobne konto tylko do odczytu: ustaw folder z logami jako jego folder startowy i, jeśli panel hostingu na to pozwala, daj mu prawo tylko do odczytu. Zapisane hasło jest przechowywane na Twoim serwerze w postaci zaszyfrowanej.

Wgrywanie plików logów

Gdy hosting nie ma crona ani FTP albo SFTP, a logi da się pobrać z jego panelu, wybierz w kroku Logi "Wgrywam pliki". Aplikacja nie łączy się wtedy z żadnym serwerem.

  1. Skąd wziąć plik. W panelu hostingu znajdź logi dostępu Twojej domeny i pobierz je na komputer. Aplikacja przyjmuje zwykłe pliki .log i spakowane .gz, a format rozpoznaje po zawartości, nie po nazwie.
  2. Wgranie. Wybierz jeden plik albo kilka naraz i kliknij "Wgraj pliki". Pierwszy przyjęty plik zapisuje sposób "Wgrywam pliki" i kończy krok Logi. Lista pokazuje każdy plik z rozmiarem i rozpoznanym formatem albo z powodem odmowy. Plik, który nie wygląda na log, jest odrzucany i nic po nim nie zostaje.
  3. Dalej. Krok Cron nie ma wyboru ani zadania, a w kroku Sprawdzenie klikasz "Przelicz teraz". Krok Harmonogram jest pomijany.
  4. Kolejne pliki. Strona stanu ma sekcję "Wgraj nowe pliki logów" z tym samym formularzem. Wgraj nowe pliki i kliknij "Przelicz teraz". Te same wiersze wgrane drugi raz nie podwoją wizyt. Przy innym sposobie pobierania nowe pliki nie są przyjmowane: najpierw wybierz "Wgrywam pliki" w kroku Logi.

Limity. Największy plik i liczbę plików naraz ustala serwer, a aplikacja dokłada własny sufit: 200 MB na plik i 20 plików naraz. Ekran pokazuje aktualny limit. Plik .gz jest kilka razy mniejszy od zwykłego logu, więc większy log zmieści się po spakowaniu.

Porządek na serwerze. Wgrane pliki leżą w folderze danych (zamkniętym przed internetem) pod nazwami, które nadaje aplikacja. Plik przeczytany do końca jest usuwany po 14 dniach. Wizyty z niego są już zapisane i od pliku nie zależą. Nic z tych plików nie trafia do api.adinspire.com.

Jak często. Przy wgrywaniu dane przychodzą tylko z plików, które wgrasz, więc to Ty decydujesz, jak często je dosyłasz. Wizyty z okresu, którego pliku nie wgrasz, nie pojawią się w panelu.

Bez crona

Gdy hosting nie ma crona, w kroku Cron wybierz przy "Uruchamianie" przycisk "Bez crona".

  1. Aplikacja nie pokazuje wtedy tabeli z zadaniem, tylko ostrzeżenie: dane liczą się tylko po kliknięciu "Przelicz teraz".
  2. W kroku Sprawdzenie klikasz "Przelicz teraz". Aplikacja czyta logi od razu i pokazuje "Działa!", gdy je znajdzie.
  3. Krok Harmonogram jest pomijany, a konfiguracja kończy się na Domenach.
  4. Później przeliczasz tym samym przyciskiem "Przelicz teraz" na stronie stanu. Wiersz "Uruchamianie" pokazuje wtedy "bez crona (przycisk Przelicz teraz)".

Ograniczenia:

  • Hosting trzyma logi zwykle 7 dni, więc przeliczaj co najmniej raz w tygodniu. Wizyty ze starszych logów przepadną.
  • "Bez crona" nie da się wybrać przy sposobie "kopia przez cron" (cron kopiuje wtedy log). Wybierz w kroku Logi "FTP albo SFTP", gdy aplikacja nie czyta logu na swoim serwerze, albo "Wgrywam pliki", gdy nie ma też FTP ani SFTP.
  • Alternatywa: zewnętrzna usługa crona, która wywołuje adres aplikacji. W kroku Cron wybierz wtedy "Cron" i "Sam adres URL".

Gdy coś nie działa

Co widzisz Co sprawdzić
Aplikacja nie może zapisywać Prawo zapisu w folderze aplikacji
Strona "Czas na konfigurację minął" Minęło 60 minut. Usuń folder data-... i otwórz adres jeszcze raz
Kilka folderów data-... Ma być dokładnie jeden. Zostaw jeden, resztę usuń
Brak sygnału po 3 minutach Interpreter w zadaniu cron i literówkę w ścieżce skryptu
Cron ruszył, ale brak logów Zależy od sposobu. Kopia: "brak pliku" to zła ścieżka (popraw ją w kroku Logi), "brak prawa odczytu" to hosting, który nie pozwala cronowi czytać logu (pobieraj przez SFTP lub FTP). Pobieranie: ekran podaje powód (serwer nie odpowiada, login odrzucony, brak plików w podanym folderze) i przycisk "Popraw dane połączenia"
Czerwony alarm o kluczu lub certyfikacie na stronie stanu Pobieranie jest zatrzymane, żeby nikt nie mógł podszyć się pod Twój serwer. Zapytaj hosting, czy zmieniał klucze lub certyfikaty. Nowy klucz zaakceptuj tylko wtedy, gdy tak. Jeśli hosting niczego nie zmieniał, nie akceptuj
Uruchomienie kończy się i nic nie zapisuje Ponad 5% z pierwszych 500 linii logu nie pasowało do formatu. Aplikacja wymaga 95% czytelnych linii
Część plików logów czeka Jedno uruchomienie ma budżet najwyżej 45 sekund. Pliki, na które zabrakło czasu, czekają na następne uruchomienie
Krok Domeny nie pokazuje domen Format logu nie został rozpoznany, nie ma wierszy albo log nie zawiera nazw domen. Wróć do kroku Logi
Panelu jeszcze nie ma To normalne do pierwszej wizyty robota, zastępuje go strona stanu. Użyj tam "Przelicz teraz"

Co dalej

Zobacz, jak działa weryfikacja Zobacz, skąd biorą się wersje stron Przeczytaj dokumentację