DigitalOcean
Ten przewodnik przeprowadzi Cię przez proces konfiguracji bezpiecznego dropletu procesora graficznego DigitalOcean w celu wdrożenia lokalnego pakietu AI. Jest to krok wstępny przed wdrożeniem agenta AI w kolejnym filmie wideo.
- Konto DigitalOcean z informacjami rozliczeniowymi
- Dostęp do prywatnego repozytorium GitHub
dynamous-community/ai-agent-mastery
Na komputerze lokalnym wygeneruj parę kluczy SSH:
ssh-keygen -t rsa -b 4096 -C "any key name"
# Press Enter to accept default file location (~/.ssh/id_rsa)
# Enter a passphrase for added security (optional but recommended)
Spowoduje to utworzenie dwóch plików (id_rsa jest nazwą domyślną, możesz to również zmienić):
~/.ssh/id_rsa(Klucz prywatny – zachowaj to w bezpiecznym miejscu!)~/.ssh/id_rsa.pub(klucz publiczny – jest przesyłany do DigitalOcean)
Wyświetl swój klucz publiczny za pomocą:
cat ~/.ssh/id_rsa.pub
- Przejdź do 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 krople!)
- Skonfiguruj droplet GPU:
- Wybierz swój region: Droplety GPU są dostępne w centrach danych w Nowym Jorku (NYC2), Atlancie (ATL1) i Toronto (TOR1)
- Wybierz obraz: Wybierz obraz gotowy do sztucznej inteligencji/uczenia maszynowego (Ubuntu 22.04 z preinstalowanymi sterownikami NVIDIA)
- Wybierz plan GPU: Wybierz procesor graficzny na podstawie lokalnych LLM, które chcesz uruchomić
- Uwierzytelnianie: Przekaż swój klucz publiczny SSH
- Nazwa hosta: Nadaj kropli opisową nazwę
- Kliknij Utwórz kroplę GPU
Uwaga: Inicjalizacja kropel GPU trwa dłużej niż zwykłych kropel, szczególnie w konfiguracjach 8 GPU
Jeśli wolisz alternatywy dla kropel GPU DigitalOcean:
- Wymagania dotyczące procesora graficznego: TensorDock
- W przypadku wdrożenia tylko z procesorem (jeśli używasz Ollama osobno): zwykłe droplety DigitalOcean, Hostinger VPS, Hetzner Cloud lub dowolny dostawca KVM
ssh root@[digitalocean-gpu-ip] -i [path-to-your-private-key]
# Example: ssh root@192.168.1.100 -i C:\Users\colem\.ssh\dynamous-key
Zezwalaj na ruch HTTP, HTTPS i SSH przez zaporę:
ufw enable
ufw allow 80 && ufw allow 443 && ufw allow 22
ufw reload
Postępując zgodnie z najlepszymi praktykami w zakresie bezpieczeństwa, utworzymy zwykłe konto użytkownika zamiast używać roota do codziennych operacji.
adduser <username>
# Follow prompts to set password and user information
usermod -aG sudo <username>
su - <username>
Ten krok gwarantuje, że możesz zalogować się jako nowy użytkownik przy użyciu kluczy SSH, które są bezpieczniejsze niż uwierzytelnianie za pomocą hasła.
mkdir .ssh
chmod 700 .ssh
nano .ssh/authorized_keys
# Paste your public key from the .pub file created on your computer
# Save with Ctrl+X, then Y, then Enter
chmod 600 .ssh/authorized_keys
Ten krok uniemożliwia bezpośredni dostęp root przez SSH, zmuszając wszystkich użytkowników do logowania się na własne konta i używania do zadań administracyjnych.sudo
sudo nano /etc/ssh/sshd_config
# Find the line: PermitRootLogin yes
# Change it to: PermitRootLogin no
service ssh restart
Skonfiguruj rekordy DNS tak, aby wskazywały subdomeny usługi na droplet GPU przed zainstalowaniem lokalnego pakietu AI:
Utwórz rekordy A dla usług, które chcesz uwidocznić:
supabase.yourdomain.com→ Twój adres IP dropletun8n.yourdomain.com→ Twój adres IP dropletuopenwebui.yourdomain.com→ Twój adres IP dropletuflowise.yourdomain.com→ Twój adres IP dropletulangfuse.yourdomain.com→ Twój adres IP dropletuneo4j.yourdomain.com→ Twój adres IP dropletuagentapi.yourdomain.com→ Twój adres IP dropletu (dla interfejsu API agenta AI)chat.yourdomain.com→ Twój adres IP dropletu (dla frontonu agenta AI)
Odbywa się to za pomocą interfejsu zarządzania DNS rejestratora domen.
Droplety GPU DigitalOcean wymagają ręcznej instalacji Docker Compose. Większość z nich jest specyficzna dla kropel GPU DigitalOcean i nie jest potrzebna w przypadku zwykłych kropel DigitalOcean z obrazami Docker lub niektórymi innymi dostawcami chmury.
# Get the latest Docker Compose version and install it
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
# Set up Docker Compose plugin
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
# Add user to docker group
sudo usermod -aG docker <username>
newgrp docker
Postępuj zgodnie z pełnymi instrukcjami konfiguracji z repozytorium lokalnych pakietów sztucznej inteligencji:
git clone -b stable https://github.com/coleam00/local-ai-packaged.git
cd local-ai-packaged
cp .env.example .env
nano .env
Ważne kroki konfiguracji:
- Generuj bezpieczne losowe wartości dla wszystkich wpisów tajnych (nigdy nie używaj przykładowych wartości!)
- Skonfiguruj konfigurację Supabase zgodnie z przewodnikiem po samodzielnym hostingu
- Skonfiguruj nazwy hostów Caddy do wdrożenia produkcyjnego przy użyciu subdomen skonfigurowanych w systemie DNS
- Ustaw swój adres e-mail dla certyfikatów SSL Let’s Encrypt
Jeśli chcesz włączyć uwierzytelnianie Google dla Supabase, przed uruchomieniem pakietu dodaj te wiersze do docker-compose.override-public.yml w sekcji usługi (upewnij się, że karty są wyrównane z innymi zastąpieniami usługi):
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}
A następnie upewnij się, że w pliku .env określisz wszystkie zmienne środowiskowe w ${…}. GOOGLE_REDIRECT_URI musi wskazywać domenę frontendu agenta.
Uwaga: Uruchom wcześniej „sudo chmod 777 searxng”, aby ustawić odpowiednie uprawnienia, w przeciwnym razie kontener Searxng zostanie ponownie uruchomiony. Nie widziałem tego u każdego dostawcy, ale z jakiegoś powodu dzieje się tak w przypadku kropel GPU DigitalOcean.
W przypadku wdrożenia z obsługą procesora GPU:
# For NVIDIA GPUs
python start_services.py --profile gpu-nvidia
# For AMD GPUs
python start_services.py --profile gpu-amd
# For CPU-only deployment
python start_services.py --profile cpu
Teraz, gdy lokalny pakiet sztucznej inteligencji jest uruchomiony, wdróż agenta sztucznej inteligencji, aby zintegrować go z istniejącymi usługami.
git clone https://github.com/dynamous-community/ai-agent-mastery.git
cd ai-agent-mastery/6_Agent_Deployment
- Uzyskaj dostęp do lokalnego pulpitu nawigacyjnego Supabase pod adresem https://supabase.yourdomain.com
- Zaloguj się przy użyciu nazwy użytkownika i hasła ustawionych w pliku Local AI Package
.env - Przejdź do Edytora SQL
- Uruchom pełną konfigurację bazy danych:
-- Copy and paste the contents of sql/0-all-tables.sql -- This creates all tables, functions, triggers, and security policies -- Be sure to adjust the embedding dimensions before running based on your embedding model!
cp .env.example .env
nano .env
Ważne: Upewnij się, że nazwa jest zgodna z Twoją subdomeną agenta (agentapi.yourdomain.com), zachowując ścieżkę na końcu.VITE_AGENT_ENDPOINT/api/pydantic-agent
Ważne uwagi:
- Komunikacja sieciowa platformy Docker: Ponieważ agent sztucznej inteligencji działa w tej samej sieci platformy Docker co lokalny pakiet sztucznej inteligencji, można odwoływać się do usług według ich nazw kontenerów (np. ,
http://supabase:8000http://ollama:11434) - Dostęp zewnętrzny: Użyj skonfigurowanych subdomen (np. ), aby uzyskać dostęp do usług z przeglądarki
https://supabase.yourdomain.com - Zmienne środowiskowe: Skopiuj dokładne klucze z pliku lokalnego pakietu AI dla poświadczeń Supabase i langfuse
.env
# Deploy to integrate with Local AI Package
python deploy.py --type local --project localai
Aby włączyć zwrotne trasy proxy dla agenta AI za pośrednictwem Caddy lokalnego pakietu AI:
-
Skopiuj konfigurację dodatku Caddy:
# Copy to Local AI Package caddy-addon folder cp caddy-addon.conf ../../local-ai-packaged/caddy-addon/ -
Edytuj plik dodatku dla swoich subdomen:
cd ../../local-ai-packaged/caddy-addon/ nano caddy-addon.conf # Edit line 2: agentapi.yourdomain.com (for agent API) # Edit line 21: agentchat.yourdomain.com (for frontend) # These must match the A records you created in Step 6
-
Uruchom ponownie Caddy, aby załadować nową konfigurację:
docker compose -p localai restart caddy
Po zakończeniu konfiguracji uzyskaj dostęp do zintegrowanego agenta AI:
- Interfejs użytkownika: https://agentchat.yourdomain.com
- Interfejs API agenta: https://agentapi.yourdomain.com
- Kontrola stanu zdrowia: https://agentapi.yourdomain.com/health
# Navigate back to agent deployment directory
cd ../../ai-agent-mastery/6_Agent_Deployment
# Copy documents to the RAG pipeline directory
sudo chmod 777 rag-documents
cp your-documents/* ./rag-documents/
Po zakończeniu tej konfiguracji lokalnego pakietu sztucznej inteligencji i integracji agenta sztucznej inteligencji będziesz mieć:
- Ollama działająca lokalnie dla LLM
- Supabase do przechowywania baz danych i wektorów
- N8N do automatyzacji przepływu pracy
- Otwórz WebUI dla interfejsu czatu
- Flowise do tworzenia agentów AI bez kodu
- langfuse dla obserwowalności LLM
- Neo4j dla grafowej bazy danych
- RAG Pipeline do przetwarzania dokumentów
- Caddy automatycznie obsługuje SSL/TLS
- AI Agent API zintegrowany ze wszystkimi usługami lokalnymi
- Frontend agenta AI dostępny za pośrednictwem domeny niestandardowej
Pełna integracja: Twój agent AI komunikuje się teraz ze wszystkimi usługami Local AI Package za pośrednictwem sieci Docker, zapewniając w pełni lokalną infrastrukturę AI bez zewnętrznych zależności API.
Kolejne kroki: Masz teraz kompletną, zintegrowaną lokalną infrastrukturę AI! Agent sztucznej inteligencji działa wraz z usługami lokalnego pakietu sztucznej inteligencji i można uzyskać do niego dostęp za pośrednictwem domeny niestandardowej z automatycznym protokołem SSL.
- Nigdy nie używaj konta root do zwykłych operacji po instalacji
- Uwierzytelnianie za pomocą klucza SSH jest bezpieczniejsze niż uwierzytelnianie za pomocą hasła
- Reguły zapory sieciowej ograniczają dostęp tylko do niezbędnych portów
- Użytkownik inny niż root z sudo zapewnia dostęp administracyjny w razie potrzeby
- Let’s Encrypt SSL automatycznie zabezpiecza wszystkie Twoje usługi za pomocą protokołu HTTPS
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
- Skorzystaj z dostępu do konsoli DigitalOcean, jeśli zostaniesz zablokowany
- Sprawdź konfigurację SSH za pomocą:
sudo sshd -T
Aby uzyskać informacje o problemach specyficznych dla lokalnego pakietu sztucznej inteligencji, zapoznaj się z sekcją rozwiązywania problemów w repozytorium.