Reimplementacja serwera protokołu Gadu-Gadu 6.0 w języku Rust. Projekt umożliwia uruchomienie własnego serwera kompatybilnego z oryginalnym klientem GG 6.0.
- Logowanie i rejestracja użytkowników
- Wysyłanie i odbieranie wiadomości
- Statusy online/offline/zajęty/niewidoczny
- Kolejkowanie wiadomości offline
- Formatowanie tekstu (pogrubienie, kursywa, kolory)
Nie musisz kompilować projektu samodzielnie! Gotowe pliki wykonywalne dla Windowsa, Linuxa i macOS są dostępne na stronie:
Dla osób nietechnicznych - instrukcja krok po kroku:
- Wejdź na stronę z wydaniami
- Pobierz plik
gg-retro_win64.exe(dla Windows 64-bit) lubgg-retro_win32.exe(dla starszych systemów) - Zapisz w dowolnym folderze (np.
C:\gg-retro\)
To najważniejszy krok! Dzięki niemu klient GG będzie wiedział gdzie szukać serwera.
-
Otwórz Notatnik jako Administrator:
- Wyszukaj "Notatnik" w menu Start
- Kliknij prawym → "Uruchom jako administrator"
-
Otwórz plik:
C:\Windows\System32\drivers\etc\hosts- W Notatniku: Plik → Otwórz
- Wpisz ścieżkę:
C:\Windows\System32\drivers\etc\hosts - Zmień filtr na "Wszystkie pliki (.)"
-
Dodaj na końcu pliku:
127.0.0.1 gg-retro.local -
Zapisz plik (Ctrl+S)
-
Utwórz plik
config.tomlw folderze z serwerem:bind = "0.0.0.0" http_port = 80 gg_port = 8074 db = "./gg.db" hostname = "gg-retro.local"
-
Kliknij dwukrotnie
gg-retro_win64.exe- Jeśli Windows wyświetli ostrzeżenie, kliknij "Więcej informacji" → "Uruchom mimo to"
- Serwer uruchomi się w oknie konsoli
Jeśli port 80 wymaga uprawnień administratora, zmień http_port na 8080 w config.toml
-
Otwórz przeglądarkę i wejdź na:
http://gg-retro.local(lubhttp://gg-retro.local:8080jeśli zmieniłeś port) -
Pobierz klienta GG:
- Zakładka "Pobierz" → pobierz
gg61.exe
- Zakładka "Pobierz" → pobierz
-
Spatchuj klienta:
- Zakładka "Patcher"
- Wybierz pobrany
gg61.exe - Adres serwera:
gg-retro.local - Kliknij "Patchuj plik" → pobierz spatchowany plik
-
Zarejestruj konto:
- Zakładka "Rejestracja" → zarejestruj nowe konto GG
-
Uruchom spatchowanego klienta i zaloguj się! 🎉
Dla zaawansowanych: Jeśli masz własną domenę, możesz użyć jej zamiast gg-retro.local (max 16 znaków).
- Rust 1.90+
- SQLite
- Klient Gadu-Gadu 6.0
# Wszystkie testy
cargo test
# Testy protokołu
cargo test -p gg-protocol
# Testy serwera
cargo test -p gg-servermake amd64 # x86_64
make rpi64 # Raspberry Pi 64-bit (Pi 3/4/5)
make rpi32 # Raspberry Pi 32-bit (Pi 2/3/4)
make linux # wszystkie architektury Linux
make deb # wszystkie pakiety .debmake win64 # Windows 64-bit (Windows 7+)
make win32 # Windows 32-bit (Windows 7+, działa na 32-bit i 64-bit)
make windows # obie wersje WindowsWymagania: Windows 7 lub nowszy. Wersja 32-bit działa na wszystkich systemach Windows.
make macos-intel # macOS Intel (macOS 10.12+)
make macos-arm # macOS Apple Silicon M1/M2/M3 (macOS 11+)
make macos # obie wersje macOSUwaga: Budowanie dla macOS wymaga natywnego Maca lub GitHub Actions z macos-runner.
make all # Linux + Windows
make clean # czyszczeniePakiety znajdziesz w katalogu dist/.
Wymagane narzędzia (cross, cargo-deb) instalują się automatycznie.
sudo dpkg -i dist/gg-retro_*.deb
# Uruchomienie serwera
sudo systemctl start gg-retro
# Włączenie autostartu
sudo systemctl enable gg-retro| Ścieżka | Opis |
|---|---|
/etc/gg-retro/config.toml |
Konfiguracja |
/var/lib/gg-retro/gg.db |
Baza danych |
journalctl -u gg-retro |
Logi |
./gg-retro_macos_arm # Apple Silicon
./gg-retro_macos_intel # Intel MacKonfiguracja analogiczna jak na Linux (zmienne środowiskowe lub config.toml).
cargo run --bin gg-serverSerwer nasłuchuje na:
- Port 8074: Protokół GG (TCP)
- Port 80: API HTTP (rejestracja, CAPTCHA, discovery)
Serwer może być konfigurowany na trzy sposoby (w kolejności priorytetów):
GG_BIND=0.0.0.0 GG_HTTP_PORT=8080 GG_GG_PORT=8074 GG_DB=./gg.db cargo run --bin gg-retroStwórz plik config.toml w katalogu głównym projektu:
bind = "0.0.0.0"
http_port = 80
gg_port = 8074
db = "./gg.db"
hostname = "gg-retro.local"Jeśli nie podano żadnej konfiguracji, serwer użyje wartości domyślnych:
bind:0.0.0.0- nasłuchiwanie na wszystkich interfejsachhttp_port:80- port HTTP APIgg_port:8074- port protokołu GGdb:./gg.db- ścieżka do bazy danych SQLitehostname:gg-retro.local- nazwa hosta serwera
Uwaga: Zmienne środowiskowe nadpisują ustawienia z pliku, a plik nadpisuje wartości domyślne.
cargo run --bin gg-clientKlient Gadu-Gadu 6.1 jest dostępny do pobrania ze strony serwera GG-Retro (zakładka "Pobierz").
SHA256: bcc8157aa6bface009d8018c308bf3cef8725546b4f826bdbaf6bbeaa953b06f gg61.exe
Windows (PowerShell):
Get-FileHash gg61.exe -Algorithm SHA256Linux/macOS:
sha256sum gg61.exeAby połączyć oryginalnego klienta GG 6.0 z własnym serwerem, masz dwie opcje:
Dodaj wpisy do pliku hosts:
Windows: C:\Windows\System32\drivers\etc\hosts
Linux/Mac: /etc/hosts
127.0.0.1 appmsg.gadu-gadu.pl
127.0.0.1 appsrv.gadu-gadu.pl
127.0.0.1 register.gadu-gadu.pl
Uwaga: Po zmianie wpisów wyczyść cache rejestru GG - klient cachuje adresy serwerów.
Użyj wbudowanego patchera na stronie głównej serwera (zakładka "Patcher").
Patcher zamienia domenę gadu-gadu.pl na Twoją domenę (max 16 znaków) bezpośrednio w przeglądarce - plik nie jest wysyłany na serwer.
Wymagania:
- Serwer GG-Retro musi być uruchomiony na porcie 80 (HTTP API)
- Musisz mieć skonfigurowaną domenę wskazującą na serwer
- Domenę możesz ustawić w:
- Pliku
/etc/hosts(Linux/Mac) lubC:\Windows\System32\drivers\etc\hosts(Windows) - Pi-hole (jeśli używasz lokalnego DNS)
- Lokalnym serwerze DNS
- Pliku
Przykładowa konfiguracja domeny w /etc/hosts:
192.168.1.100 gg-retro.local
Patchowanie:
- Otwórz stronę serwera GG-Retro (np.
http://gg-retro.local) - Przejdź do zakładki "Patcher"
- Wybierz plik
gg.exe - Wpisz adres serwera (np.
gg-retro.local) - Kliknij "Patchuj plik"
- Pobierz spatchowany plik
Arch/Manjaro:
sudo pacman -S wine winetricksUbuntu/Debian:
sudo apt install wine winetricksFedora:
sudo dnf install wine winetricksStwórz dedykowany prefix Wine i ustaw Windows XP:
WINEPREFIX=~/.wine-xp winecfgW oknie konfiguracji wybierz Windows XP, zamknij.
GG używa wbudowanego Internet Explorera do wyświetlania HTML:
WINEPREFIX=~/.wine-xp winetricks ie8Jeśli ie8 sprawia problemy, spróbuj ie6:
WINEPREFIX=~/.wine-xp winetricks ie6Dodatkowe komponenty:
WINEPREFIX=~/.wine-xp winetricks mshtml riched20 riched30WINEPREFIX=~/.wine-xp wine gg_patched.exegg-retro/
├── protocol/ # Implementacja protokołu GG
├── server/ # Serwer GG (TCP + HTTP + patcher webowy)
├── client/ # Klient testowy
└── docs/ # Dokumentacja protokołu
- 222x33
- 400x50
Serwer używa SQLite. Plik bazy: ./gg.db
Migracje uruchamiają się automatycznie przy starcie serwera.
- Wysyłanie obrazków (GG 6.0 używa DCC, nie przechodzi przez serwer)
- Publiczny katalog użytkowników
- Przypomnienie hasła (email)
Pełna dokumentacja protokołu GG znajduje się w docs/protocol.md (po polsku).
Przydatne źródło: https://libgadu.net/protocol/
MIS License - zobacz plik LICENSE

