-
Wejdź na stronę Azure i załóż konto.
Przy pierwszej rejestracji dostajesz 200$ kredytu na 30 dni – wszystkie poniższe kroki mieszczą się spokojnie w tym limicie.
-
Utworzenie i konfiguracja maszyny wirtualnej
- Utwórz maszynę wirtualną z dowolnymi parametrami
- Po utworzeniu maszyny wykonaj następujące kroki w celu otwarcia portu do nasłuchu:
- W widoku swojej maszyny wirtualnej wejdź w: Sieć -> Ustawienia Sieci
- W sekcji Reguły wybierz "Dodaj nową regułę" i wypełnij:
- Źródło: any
- Źródłowe zakresy portów: *
- Lokalizacja docelowa: Any
- Usługa: Custom
- Docelowe zakresy portów: <twój port>
- Protokół: udp (protokół quic oparty jest na udp)
- Priorytet: np. 100
- nazwa: dowolność
- Zapisz konfigurację dodanej reguły
- Uruchom ponownie maszynę wirtualną
-
Połączenie z VM przez SSH:
ssh -i /ścieżka/do/klucza.pem azureusername@PUBLIC_IP
Ścieżka do key.pem najprawdopodoniej będzie czymś w rodzaju:
\<twoje foldery\>.../KittyProtocol/certs/key.pem
PUBLIC_IPznajdziesz w szczegółach VM. -
Instalacja Go, Git, Docker na VM
sudo apt update sudo apt install -y golang-go git go version git --version sudo apt update sudo apt install -y ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://docker.com -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://docker.com \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginDla wygody sugerowane są także działania:
# 1. Utwórz grupę docker (na wypadek, gdyby instalator jej nie stworzył) sudo groupadd docker # 2. Dodaj swojego obecnego użytkownika ($USER) do grupy docker sudo usermod -aG docker $USER # 3. Aktywuj zmiany w obecnej sesji terminala (bez restartu systemu) newgrp docker
Zlikwiduje to powinność każdorazowego używania
sudo -
Pobranie repozytorium
cd ~ git clone https://github.com/gabbla05/KittyProtocol.git cd KittyProtocol
-
Konfiguracja plików .env:
wykonaj operacje:
cd KittyProtocol cp ./.env.example ./.env cp ./db/.env.example ./db/.env -
Uruchomienie kontenerów z usługami bazy danych PostgreSQL
cd KittyProtocol/db docker compose up -d -
Wejście do środka kontenera bazy danych:
Operacja dla przykładowej konfiguracji
docker compose exec db psql -U kitty -d kittyhub -
Utworzenie tabeli użytkowników
Wykonaj skrypt sql weewnątrz kontenera:
CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, username TEXT UNIQUE NOT NULL, password_hash TEXT NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT NOW() );
Sprawdź czy tabela została utworzona, a następnie wyjdź z kontenera:
\dt --Wyświetlenie listy wszystkich tabel w bazie. \q --Wyjście z konsoli PostgreSQL z powrotem do Twojego systemu.
-
Ustawienie zmiennych środowiskowych dla Huba
Na VM, np. w pliku
~/.bashrcdodaj na końcu:export KITTY_DB_DSN="postgres://kitty:kittypass@localhost:5432/kittyhub?sslmode=disable" export KITTY_INTERCEPT_ADDR="0.0.0.0:9999" export KITTY_LOG_COLOR=0 export HUB_TLS_CERT="/home/kittyhub/KittyProtocol/certs/cert.pem" export HUB_TLS_KEY="/home/kittyhub/KittyProtocol/certs/key.pem" export HUB_LOG_LEVEL="info"
oraz załaduj:
source ~/.bashrc
-
Certyfikaty TLS
Przy uruchomieniu huba certyfikaty powinny wygenerować się automatycznie, jeżeli na ten moment ich nie ma
-
Uruchomienie Huba
cd ~/KittyProtocol go run ./cmd/hub
-
Na lokalnym urządzeniu w głównym katalogu projektu należy zmodyfikować plik
.envzgodnie ze wskazówkami z pliku .env.example:# ----------------------------- # KittyProtocol configuration # ----------------------------- # 127.0.0.1:9999 - local version # ========== AZURE ============ # for KITTY_HUB_ADDR you can assign # 6.67.67.67:9999 - Azure version # it depends on which port you # enabled in network settings # as a role and assigned public ip KITTY_HUB_ADDR=127.0.0.1:9999 KITTY_INTERCEPT_ADDR=127.0.0.1:9999 # 127.0.0.1:9999 - version for local dev tests # 0.0.0.0:9999 - version for production - listen all devices