Dokumentacja / v1.4.2
Keyo, dokumentacja
Wszystko, czego potrzebujesz, żeby postawić Keyo na swojej sieci: instalacja, config, zaufani, limity, Discord, AI i połączenie z panelem Pterodactyl.
Wymagania
| Element | Wersja | Uwagi |
|---|---|---|
| Java | 21+ | Taka sama jak dla Paper 1.21 |
| Velocity | 3.3 lub 3.4 | Opcjonalnie, Keyo działa też na pojedynczym serwerze |
| Paper / Purpur | 1.20 do 1.21.11 | Agent na każdym podserwerze |
| LuckPerms | 5.4+ | Wymagany, Keyo pilnuje jego zmian |
| CoreProtect | 22+ | Opcjonalnie, do rollbacku WorldEdita |
| Pterodactyl | 1.11+ | Opcjonalnie, tylko dla ochrony konsoli panelu |
Instalacja
- Proxy. Wrzuć
Keyo-Velocity.jardoplugins/na Velocity i zrestartuj proxy. Powstanieplugins/keyo/config.yml. - Podserwery. Wrzuć
Keyo-Paper.jarna każdy podserwer. Agent sam połączy się z proxy przez kanał pluginu, nie potrzebuje osobnej bazy ani portu. - Licencja. W konsoli proxy wpisz klucz, który dostałeś na Discordzie:
keyo license KY-XXXX-XXXX-XXXX - Pierwszy zaufany. Wejdź do panelu Keyo, zaloguj się przez Discorda, włącz 2FA i dodaj swój nick do zaufanych. Z konsoli ani z gry nie da się tego zrobić.
config.yml
Plik leży w plugins/keyo/config.yml na proxy. Keyo pilnuje go sam: zmiana z gry albo przez plugin zostanie cofnięta, dozwolona jest tylko edycja pliku i keyo reload z konsoli.
# Zaufani są ustawiani tylko w panelu Keyo, tu nic nie wpiszesz
trusted: panel
# Uprawnienia, które dostaje tylko zaufany
dangerous: ["*", "group.admin", "group.owner", "luckperms.*"]
limits:
ban: 5 # na minutę, na osobę
kick: 10
worldedit-blocks: 500000
eco-max: 50000 # największa jednorazowa wypłata
entities-chunk: 600
punishment: quarantine # quarantine | kick | ban
lockdown:
auto-after: 2 # kwarantanny staffu w 60 s
discord:
token: "BOT_TOKEN"
alerts: "#keyo-logi"
audit: "#keyo-audyt"
ai:
model: auto # auto | ikazuchi | claude | gpt | gemini
panel:
enabled: false # patrz: Panel Pterodactyl| Klucz | Domyślnie | Opis |
|---|---|---|
trusted | panel | Zawsze panel. Listę zaufanych serwer dostaje podpisaną z panelu Keyo, zmiana tego pola nic nie da |
dangerous | *, admin, owner | Uprawnienia i grupy pilnowane przez strażnika |
limits.* | jak wyżej | Progi, po których przekroczeniu włącza się kwarantanna |
punishment | quarantine | Co dzieje się z osobą, która przekroczy limit |
lockdown.auto-after | 2 | Ile kwarantann staffu w minutę włącza lockdown. 0 wyłącza automat |
ai.model | auto | auto sam dobiera model do zdarzenia. Możesz też wymusić ikazuchi, claude, gpt albo gemini, bez własnego klucza API |
panel.enabled | false | Ochrona konsoli Pterodactyla. Włączysz ją dopiero po autoryzacji |
Zaufani i 2FA
Panel Keyo to strona, na którą logujesz się przez Discorda. Każda zmiana listy zaufanych wymaga kodu 2FA, a dodanie nowej osoby musi potwierdzić właściciel sieci. Serwer dostaje listę podpisaną kluczem Keyo i odrzuca każdą, której nie podpisał panel.
Samo uprawnienie to jeszcze nie zaufanie. Nawet jeśli ktoś ma w LuckPerms prawo edycji, groźne uprawnienie z listy dangerous nada tylko osoba z trusted. Każdy, kto dostaje takie uprawnienie, też musi być na liście, inaczej zmiana zostanie zatrzymana.
Staff z groźnymi uprawnieniami może mieć włączone 2FA. Po wejściu z nowego IP uprawnienia śpią, dopóki gracz nie wpisze /keyo auth KOD z aplikacji. Trzy złe kody z rzędu to kwarantanna i alert.
keyo 2fa require group.admin
keyo 2fa reset NickKwarantanna i przywracanie
Kwarantanna to nie ban. Gracz zostaje na serwerze i może grać, ale traci wszystkie uprawnienia staffu i trafia do grupy quarantine. Przed karą Keyo zapisuje kopię jego uprawnień.
- Przywróć na Discordzie albo
keyo restore Nickoddaje uprawnienia z kopii. - Zostaw karę zapisuje decyzję w
#keyo-audyt, kopia zostaje na 30 dni. - Bany z ostatniej minuty i edycje WorldEdita są cofane automatycznie, niezależnie od decyzji.
Lockdown
Lockdown nikogo nie wyrzuca. Gracze grają dalej, a groźne akcje (zmiany w LuckPerms, bany, WorldEdit, ekonomia, komendy z konsoli panelu) działają tylko dla zaufanych. Włącza się sam po serii kwarantann albo ręcznie:
keyo lockdown on
keyo lockdown offBot na Discordzie
- Utwórz aplikację na Discord Developer Portal, dodaj bota i skopiuj token do
discord.token. - Zaproś bota z uprawnieniami: wyświetlanie kanałów, wysyłanie wiadomości, osadzanie linków.
- Utwórz kanały
#keyo-logi(alerty z przyciskami) i#keyo-audyt(pełny log, tylko do odczytu). - Połącz konta zaufanych: każdy wpisuje na Discordzie
/keyo link, a potem w grze kod, który dostanie.
Alerty są wysyłane jako wiadomości Components V2 (flaga IS_COMPONENTS_V2, 32768): kontener z kolorowym paskiem, nagłówek z głową gracza, separatory i przyciski. Przyciski działają tylko dla połączonych kont zaufanych.
Ocena AI
Każde zdarzenie dostaje ocenę ryzyka od 0 do 1 i krótkie wyjaśnienie w alercie. Do wyboru jest Ikazuchi od Narakai oraz Claude, GPT i Gemini, które działają przez partnerstwo z EpsilonCode, więc nie potrzebujesz własnego klucza API.
| Wartość | Co robi |
|---|---|
auto | Domyślnie. Keyo sam wybiera model do zdarzenia, a gdy któryś nie odpowiada, przełącza się na kolejny |
ikazuchi | Model Ikazuchi od Narakai |
claude, gpt, gemini | Wybrany model przez EpsilonCode |
Panel Pterodactyl
Po włączeniu Keyo widzi komendy wpisane w konsoli panelu, zatrzymuje groźne, ustala z logu aktywności, kto je wpisał, i może odebrać mu dostęp do serwera i SFTP.
1. Dodaj subusera
W panelu (na RaidVM to panel.raidvm.com) wejdź w serwer, potem Users i New User. Wpisz e-mail:
keyo@fanth.pl2. Zaznacz uprawnienia
| Uprawnienie | Po co |
|---|---|
websocket.connect | Podgląd konsoli na żywo |
control.console | Anulowanie groźnych komend |
activity.read | Ustalenie, kto wpisał komendę |
user.read, user.update, user.delete | Odebranie dostępu podejrzanemu subuserowi |
file.read, file.update | Kwarantanna podejrzanych pluginów w plugins/ |
3. Wygeneruj kod
W konsoli proxy wpisz:
keyo panel linkKeyo pokaże UUID serwera i jednorazowy kod weryfikacyjny, na przykład KYP-7F3Q-92LD. Kod jest ważny 24 godziny.
4. Ustaw config
panel:
enabled: true
url: "https://panel.raidvm.com"
server: "a1b2c3d4" # krótkie UUID z adresu serwera w paneluPotem keyo reload. Przez chwilę status będzie pending.
5. Autoryzacja
Po keyo reload Keyo sam sprawdza połączenie. Jeśli kod z kroku 3 pasuje do UUID serwera, licencja jest aktywna, a zaproszenie subusera keyo@fanth.pl czeka w panelu, połączenie autoryzuje się automatycznie, zwykle w mniej niż minutę. Na #keyo-logi przyjdzie wiadomość "Panel połączony".
Jeśli coś się nie zgadza (kod wygasł, licencja nieaktywna, brak zaproszenia), połączenie zostanie odrzucone, a bot napisze powód. Zespół Keyo może też zablokować połączenie albo licencję, na przykład przy nadużyciach lub zaległej płatności. Wtedy napisz na naszym Discordzie.
6. Sprawdź
keyo panel status
# panel: connected (panel.raidvm.com, a1b2c3d4) jako keyo@fanth.plWyłączenie: usuń subusera keyo@fanth.pl w panelu albo ustaw panel.enabled: false. Dostęp znika od razu.
Komendy
| Komenda | Gdzie | Opis |
|---|---|---|
keyo trust list | konsola | Pokazuje zaufanych, tylko do odczytu. Zmiany robisz w panelu Keyo |
keyo restore Nick | konsola, zaufany | Przywraca uprawnienia z kopii |
keyo lockdown on|off | konsola, zaufany | Tryb ochronny całej sieci |
keyo panel link|status | konsola | Połączenie z Pterodactylem |
keyo 2fa require|reset | konsola | Ustawienia 2FA |
keyo reload | konsola | Przeładowuje config |
/keyo auth KOD | gra | Potwierdzenie 2FA |
/keyo status | gra, zaufany | Stan ochrony i ostatnie alerty |
Rozwiązywanie problemów
- Agent na podserwerze się nie łączy
- Sprawdź, czy wersje
Keyo-VelocityiKeyo-Papersą takie same, i czy podserwer ma włączony forwarding Velocity. - Ktoś z zaufanych trafił do kwarantanny
- Najczęściej dostał groźne uprawnienie od osoby spoza listy albo odwrotnie. Kliknij "Przywróć" i dodaj brakującą osobę w panelu Keyo.
- Panel ma status pending
- Autoryzacja zwykle trwa poniżej minuty. Sprawdź, czy zaproszenie subusera czeka w panelu i czy kod nie wygasł. Nowy wygenerujesz przez
keyo panel link. - Przyciski na Discordzie nie działają
- Twoje konto Discord nie jest połączone z nickiem z listy zaufanych. Użyj
/keyo link.