Skip to content Skip to footer

Pakiet Local Ai – Przewodnik

wdrożenie na GPU DigitalOcean

Ten przewodnik przeprowadzi Cię przez proces konfiguracji bezpiecznego dropletu GPU w DigitalOcean w celu wdrożenia pakietu Local AI. Jest to krok wstępny przed wdrożeniem agenta AI w kolejnym filmie instruktażowym.

Wymagania wstępne

  • Konto DigitalOcean z wprowadzonymi informacjami rozliczeniowymi
  • Dostęp do prywatnego repozytorium GitHub dynamous-community/ai-agent-mastery

Generowanie pary kluczy SSH (jeśli jeszcze jej nie masz)

Na swoim lokalnym komputerze wygeneruj parę kluczy SSH:

        
ssh-keygen -t rsa -b 4096 -C "dowolna nazwa klucza"
# Naciśnij Enter, aby zaakceptować domyślną lokalizację pl Hawkins (~/.ssh/id_rsa)
# Wprowadź hasło dla dodatkowego bezpieczeństwa (opcjonalne, ale zalecane)
        
    

To polecenie utworzy dwa pliki (id_rsa to domyślna nazwa, możesz ją zmienić):

  • ~/.ssh/id_rsa (klucz prywatny – przechowuj go w bezpiecznym miejscu!)
  • ~/.ssh/id_rsa.pub (klucz publiczny – ten zostanie przesłany do DigitalOcean)

Wyświetl swój klucz publiczny za pomocą:

        
cat ~/.ssh/id_rsa.pub
        
    

Krok 1: Tworzenie dropletu GPU w DigitalOcean

Utwórz droplet GPU

  1. Wejdź na digitalocean.com
  2. Zarejestruj się i wprowadź informacje rozliczeniowe
  3. Utwórz nowy projekt lub użyj domyślnego
  4. Kliknij Utwórz w prawym górnym rogu → Droplety GPU (nie zwykłe droplety!)

Skonfiguruj droplet GPU

  1. Skonfiguruj swój droplet GPU:
    • Wybierz region: Droplety GPU są dostępne w centrach danych w Nowym Jorku (NYC2), Atlancie (ATL1) i Toronto (TOR1)
    • Wybierz obraz: Wybierz obraz AI/ML-ready (Ubuntu 22.04 z preinstalowanymi sterownikami NVIDIA)
    • Wybierz plan GPU: Wybierz GPU w zależności od lokalnych modeli LLM, które chcesz uruchomić
    • Autentykacja: Prześlij swój klucz publiczny SSH
    • Nazwa hosta: Nadaj dropletowi opisową nazwę
    • Kliknij Utwórz droplet GPU

Uwaga: Droplety GPU potrzebują więcej czasu na inicjalizację niż zwykłe droplety, szczególnie konfiguracje z 8 GPU.

Alternatywne opcje hostingu

Jeśli wolisz alternatywy dla dropletów GPU DigitalOcean:

  • Dla wymagań GPU: TensorDock
  • Dla wdrożeń tylko CPU (jeśli uruchamiasz Ollama osobno): Zwykłe droplety DigitalOcean, Hostinger VPS, Hetzner Cloud lub dowolny dostawca KVM

Krok 2: Początkowe połączenie z serwerem i konfiguracja zabezpieczeń

Połącz się z serwerem

        
ssh root@[ip-dropletu-digitalocean] -i [ścieżka-do-klucza-prywatnego]
# Przykład: ssh root@192.168.1.100 -i C:\Users\colem\.ssh\dynamous-key
        
    

Skonfiguruj podstawową zaporę sieciową

Zezwól na ruch HTTP, HTTPS i SSH przez zaporę:

        
ufw enable
ufw allow 80 && ufw allow 443 && ufw allow 22
ufw reload
        
    

Krok 3: Utwórz użytkownika bez uprawnień root i skonfiguruj dostęp sudo

Zgodnie z najlepszymi praktykami bezpieczeństwa, utworzymy zwykłe konto użytkownika zamiast używać roota do codziennych operacji.

Utwórz nowego użytkownika

        
adduser <nazwa-użytkownika>
# Postępuj zgodnie z instrukcjami, aby ustawić hasło i informacje o użytkowniku
        
    

Przyznaj uprawnienia sudo

        
usermod -aG sudo <nazwa-użytkownika>
        
    

Przełącz się na nowego użytkownika

        
su - <nazwa-użytkownika>
        
    

Krok 4: Skonfiguruj autentykację kluczem SSH dla nowego użytkownika

Ten krok zapewnia, że możesz zalogować się jako nowy użytkownik za pomocą kluczy SSH, co jest bezpieczniejsze niż autentykacja hasłem.

Utwórz katalog SSH i ustaw uprawnienia

        
mkdir .ssh
chmod 700 .ssh
        
    

Dodaj klucz publiczny

        
nano .ssh/authorized_keys
# Wklej swój klucz publiczny z pliku .pub utworzonego na komputerze
# Zapisz za pomocą Ctrl+X, następnie Y, a potem Enter
        
    

Zabezpiecz plik authorized_keys

        
chmod 600 .ssh/authorized_keys
        
    

Krok 5: Wyłącz logowanie roota (zwiększenie bezpieczeństwa)

Ten krok zapobiega bezpośredniemu dostępowi roota przez SSH, wymuszając logowanie użytkowników na ich własnych kontach i korzystanie z sudo do zadań administracyjnych.

Edytuj konfigurację SSH

        
sudo nano /etc/ssh/sshd_config
# Znajdź linię: PermitRootLogin yes
# Zmień na: PermitRootLogin no
        
    

Zrestartuj usługę SSH

        
service ssh restart
        
    

Krok 6: Konfiguracja DNS (przed instalacją)

Skonfiguruj rekordy DNS, aby wskazywały subdomeny usług na Twój droplet GPU przed instalacją pakietu Local AI:

Utwórz rekordy A dla usług, które chcesz udostępnić:

  • supabase.twojadomena.pl → IP Twojego dropletu
  • n8n.twojadomena.pl → IP Twojego dropletu
  • openwebui.twojadomena.pl → IP Twojego dropletu
  • flowise.twojadomena.pl → IP Twojego dropletu
  • langfuse.twojadomena.pl → IP Twojego dropletu
  • neo4j.twojadomena.pl → IP Twojego dropletu
  • agentapi.twojadomena.pl → IP Twojego dropletu (dla API agenta AI)
  • chat.twojadomena.pl → IP Twojego dropletu (dla frontendu agenta AI)

Wykonaj to w interfejsie zarządzania DNS Twojego rejestratora domen.

Krok 7: Zainstaluj Docker Compose

Droplety GPU DigitalOcean wymagają ręcznej instalacji Docker Compose. Większość tych kroków dotyczy tylko dropletów GPU DigitalOcean i nie jest potrzebna dla zwykłych dropletów DigitalOcean z obrazami Docker lub niektórych innych dostawców chmury.

        
# Pobierz najnowszą wersję Docker Compose i zainstaluj ją
DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# Skonfiguruj wtyczkę Docker Compose
sudo mkdir -p /usr/local/lib/docker/cli-plugins
sudo ln -s /usr/local/bin/docker-compose /usr/local/lib/docker/cli-plugins/docker-compose
        
    

Krok 8: Dodaj użytkownika do grupy Docker

        
# Dodaj użytkownika do grupy docker
sudo usermod -aG docker <nazwa-użytkownika>
newgrp docker
        
    

Krok 9: Zainstaluj pakiet Local AI

Postępuj zgodnie z pełnymi instrukcjami konfiguracji z repozytorium pakietu Local AI:

Sklonuj i skonfiguruj repozytorium

        
git clone -b stable https://github.com/coleam00/local-ai-packaged.git
cd local-ai-packaged
        
    

Skonfiguruj zmienne środowiskowe

        
cp .env.example .env
nano .env
        
    

Ważne kroki konfiguracji:

  1. Wygeneruj bezpieczne, losowe wartości dla wszystkich sekretów (nigdy nie używaj przykładowych wartości!)
  2. Skonfiguruj Supabase zgodnie z ich przewodnikiem po self-hostingu
  3. Skonfiguruj hosty Caddy dla wdrożenia produkcyjnego, używając subdomen ustawionych w DNS
  4. Ustaw swój adres e-mail dla certyfikatów SSL Let’s Encrypt

(Opcjonalnie): Autentykacja Google

Jeśli chcesz włączyć autentykację Google dla Supabase, przed uruchomieniem pakietu dodaj te linie do pliku docker-compose.override-public.yml w sekcji services (upewnij się, że wcięcia zgadzają się z innymi nadpisaniami usług):

        
  auth:
    environment:
     GOTRUE_EXTERNAL_GOOGLE_ENABLED: ${ENABLE_GOOGLE_SIGNUP}
     GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
     GOTRUE_EXTERNAL_GOOGLE_SECRET: ${GOOGLE_CLIENT_SECRET}
     GOTRUE_EXTERNAL_GOOGLE_SKIP_NONCE_CHECK: false
     GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI: ${GOOGLE_REDIRECT_URI}
        
    

Upewnij się, że w pliku .env określiłeś wszystkie zmienne środowiskowe w ${…}. GOOGLE_REDIRECT_URI powinno wskazywać na domenę dla frontendu Twojego agenta.

Wdróż pakiet Local AI

Uwaga: Przed uruchomieniem wykonaj sudo chmod 777 searxng, aby ustawić odpowiednie uprawnienia, w przeciwnym razie kontener Searxng będzie się restartował. Problem ten występuje na dropletach GPU DigitalOcean, ale nie na wszystkich dostawcach.

Dla wdrożenia z obsługą GPU:

        
# Dla GPU NVIDIA
python start_services.py --profile gpu-nvidia

# Dla GPU AMD
python start_services.py --profile gpu-amd

# Dla wdrożenia tylko CPU
python start_services.py --profile cpu
        
    

Krok 10: Wdróż agenta AI (integracja lokalna)

Teraz, gdy pakiet Local AI działa, wdróż agenta AI, aby zintegrować go z istniejącymi usługami.

Sklonuj repozytorium agenta AI

        
git clone https://github.com/dynamous-community/ai-agent-mastery.git
cd ai-agent-mastery/6_Agent_Deployment
        
    

Skonfiguruj bazę danych

  1. Uzyskaj dostęp do lokalnego panelu Supabase pod adresem https://supabase.twojadomena.pl
  2. Zaloguj się, używając nazwy użytkownika i hasła ustawionych w pliku .env pakietu Local AI
  3. Przejdź do Edytora SQL
  4. Wykonaj pełne ustawienie bazy danych:
        
-- Skopiuj i wklej zawartość pliku sql/0-all-tables.sql
-- To tworzy wszystkie tabele, funkcje, wyzwalacze i polityki bezpieczeństwa
-- Upewnij się, że dostosujesz wymiary wektorów przed uruchomieniem w zależności od używanego modelu wektorowego!
        
    

Skonfiguruj zmienne środowiskowe

        
cp .env.example .env
nano .env
        
    

Ważne: Upewnij się, że VITE_AGENT_ENDPOINT odpowiada Twojej subdomenie dla agenta (agentapi.twojadomena.pl), zachowując ścieżkę /api/pydantic-agent na końcu.

Ważne uwagi:

  • Komunikacja w sieci Docker: Ponieważ agent AI działa w tej samej sieci Docker co pakiet Local AI, możesz odwoływać się do usług po ich nazwach kontenerów (np. http://supabase:8000, http://ollama:11434)
  • Dostęp zewnętrzny: Używaj skonfigurowanych subdomen (np. https://supabase.twojadomena.pl) do uzyskiwania dostępu do usług z przeglądarki
  • Zmienne środowiskowe: Skopiuj dokładnie klucze z pliku .env pakietu Local AI dla poświadczeń Supabase i langfuse

Wdróż agenta AI

        
# Wdróż, aby zintegrować z pakietem Local AI
python deploy.py --type local --project localai
        
    

Skonfiguruj integrację z Caddy

Aby włączyć trasy reverse proxy dla Twojego agenta AI przez Caddy pakietu Local AI:

  1. Skopiuj konfigurację dodatku Caddy:
  2.             
    # Skopiuj do folderu caddy-addon pakietu Local AI
    cp caddy-addon.conf ../../local-ai-packaged/caddy-addon/
                
            
  3. Edytuj plik dodatku dla swoich subdomen:
  4.             
    cd ../../local-ai-packaged/caddy-addon/
    nano caddy-addon.conf
    # Edytuj linię 2: agentapi.twojadomena.pl (dla API agenta)
    # Edytuj linię 21: agentchat.twojadomena.pl (dla frontendu)
    # Muszą one odpowiadać rekordom A utworzonym w kroku 6
                
            
  5. Zrestartuj Caddy, aby załadować nową konfigurację:
  6.             
    docker compose -p localai restart caddy
                
            

Uzyskaj dostęp do swojego agenta AI

Po zakończeniu konfiguracji uzyskaj dostęp do zintegrowanego agenta AI:

  • Frontend: https://agentchat.twojadomena.pl
  • API agenta: https://agentapi.twojadomena.pl
  • Sprawdzenie stanu: https://agentapi.twojadomena.pl/health

Dodaj dokumenty do potoku RAG

        
# Przejdź z powrotem do katalogu wdrożenia agenta
cd ../../ai-agent-mastery/6_Agent_Deployment

# Skopiuj dokumenty do katalogu potoku RAG
sudo chmod 777 rag-documents
cp twoje-dokumenty/* ./rag-documents/
        
    

Co dalej?

Po zakończeniu konfiguracji pakietu Local AI i integracji agenta AI będziesz mieć:

  • Ollama działającą lokalnie dla modeli LLM
  • Supabase dla bazy danych i przechowywania wektorów
  • n8n dla automatyzacji przepływów pracy
  • Open WebUI dla interfejsu czatu
  • Flowise dla budowania agentów AI bez kodu
  • langfuse dla obserwowalności LLM
  • Neo4j dla bazy danych grafowych
  • Potok RAG dla przetwarzania dokumentów
  • Caddy automatycznie obsługujący SSL/TLS
  • API agenta AI zintegrowane ze wszystkimi lokalnymi usługami
  • Frontend agenta AI dostępny przez Twoją niestandardową domenę

Pełna integracja: Twój agent AI komunikuje się teraz ze wszystkimi usługami pakietu Local AI przez sieć Docker, zapewniając w pełni lokalną infrastrukturę AI bez zależności od zewnętrznych API.

Kolejne kroki: Masz teraz kompletną, zintegrowaną lokalną infrastrukturę AI! Twój agent AI działa razem z usługami pakietu Local AI i jest dostępny przez Twoją niestandardową domenę z automatycznym SSL.

Uwagi dotyczące bezpieczeństwa

  • Nigdy nie używaj konta root do regularnych operacji po konfiguracji
  • Autentykacja kluczem SSH jest bezpieczniejsza niż autentykacja hasłem
  • Reguły zapory ograniczają dostęp tylko do niezbędnych portów
  • Użytkownik bez roota z sudo zapewnia dostęp administracyjny, gdy jest potrzebny
  • Certyfikaty SSL Let’s Encrypt automatycznie zabezpieczają wszystkie Twoje usługi przez HTTPS

Rozwiązywanie problemów

Jeśli napotkasz problemy z połączeniem po zmianie ustawień SSH:

  • Zawsze testuj połączenie SSH w nowym oknie terminala przed zamknięciem bieżącej sesji
  • Użyj konsoli DigitalOcean, jeśli zostaniesz zablokowany
  • Sprawdź konfigurację SSH za pomocą: sudo sshd -T

W przypadku problemów specyficznych dla pakietu Local AI, zapoznaj się z sekcją rozwiązywania problemów w repozytorium.