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
- Wejdź na digitalocean.com
- Zarejestruj się i wprowadź informacje rozliczeniowe
- Utwórz nowy projekt lub użyj domyślnego
- Kliknij Utwórz w prawym górnym rogu → Droplety GPU (nie zwykłe droplety!)
Skonfiguruj droplet GPU
- 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 dropletun8n.twojadomena.pl→ IP Twojego dropletuopenwebui.twojadomena.pl→ IP Twojego dropletuflowise.twojadomena.pl→ IP Twojego dropletulangfuse.twojadomena.pl→ IP Twojego dropletuneo4j.twojadomena.pl→ IP Twojego dropletuagentapi.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:
- Wygeneruj bezpieczne, losowe wartości dla wszystkich sekretów (nigdy nie używaj przykładowych wartości!)
- Skonfiguruj Supabase zgodnie z ich przewodnikiem po self-hostingu
- Skonfiguruj hosty Caddy dla wdrożenia produkcyjnego, używając subdomen ustawionych w DNS
- 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
- Uzyskaj dostęp do lokalnego panelu Supabase pod adresem https://supabase.twojadomena.pl
- Zaloguj się, używając nazwy użytkownika i hasła ustawionych w pliku
.envpakietu Local AI - Przejdź do Edytora SQL
- 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
.envpakietu 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:
- Skopiuj konfigurację dodatku Caddy:
- Edytuj plik dodatku dla swoich subdomen:
- Zrestartuj Caddy, aby załadować nową konfigurację:
# Skopiuj do folderu caddy-addon pakietu Local AI
cp caddy-addon.conf ../../local-ai-packaged/caddy-addon/
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
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.