Konfiguracja zmiennych środowiskowych
Wprowadzenie
Po sklonowaniu repozytorium local-ai-packaged (https://github.com/coleam00/local-ai-packaged) na Ubuntu Server, kolejnym krokiem jest konfiguracja zmiennych środowiskowych dla Supabase, które są niezbędne do uruchomienia usług AI, takich jak n8n, Ollama, czy Open WebUI. Supabase, jako open-source’owa baza danych, wymaga odpowiedniego ustawienia zmiennych w pliku .env, aby zapewnić bezpieczne i poprawne działanie. Ten artykuł przedstawia idiotoodporną instrukcję tworzenia i konfiguracji pliku .env na podstawie .env.example, zgodnie z wytycznymi projektu i dokumentacją Supabase (https://supabase.com/docs/guides/self-hosting/docker).
Dlaczego konfiguracja zmiennych środowiskowych jako kolejny krok?
Plik .env zawiera kluczowe ustawienia, takie jak hasła, klucze JWT i konfiguracje dla Supabase, n8n, Neo4j i innych usług w pakiecie local-ai-packaged. Poprawna konfiguracja zmiennych środowiskowych jest niezbędna przed uruchomieniem skryptu start_services.py, który inicjuje wszystkie usługi. Bez tego kroku usługi mogą nie działać lub być narażone na problemy z bezpieczeństwem.
Krok po kroku: Konfiguracja zmiennych środowiskowych dla Supabase
1. Przejdź do katalogu projektu
Upewnij się, że jesteś w katalogu projektu local-ai-packaged, który został sklonowany w poprzednim kroku.
cd ~/local-ai-packaged2. Skopiuj plik .env.example do .env
Repozytorium zawiera plik .env.example, który służy jako szablon dla konfiguracji. Skopiuj go, aby utworzyć plik .env.
cp .env.example .env3. Otwórz plik .env do edycji
Użyj edytora tekstu, np. nano, aby otworzyć plik .env.
nano .envJeśli nano nie jest zainstalowane, możesz je zainstalować:
sudo apt install -y nano4. Generowanie bezpiecznych kluczy i haseł
Plik .env wymaga ustawienia kilku zmiennych środowiskowych, w tym dla Supabase, n8n, Neo4j i Langfuse. Poniżej opisujemy, jak wygenerować bezpieczne wartości dla kluczowych zmiennych, zgodnie z wytycznymi projektu i Supabase.
Generowanie kluczy za pomocą openssl
Użyj polecenia openssl do wygenerowania losowych, bezpiecznych kluczy. Jeśli openssl nie jest zainstalowane, zainstaluj je:
sudo apt install -y opensslWygeneruj klucze i hasła dla każdej zmiennej:
# N8N Configuration
N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)
N8N_USER_MANAGEMENT_JWT_SECRET=$(openssl rand -hex 32)
# Supabase Secrets
POSTGRES_PASSWORD=$(openssl rand -hex 32)
JWT_SECRET=$(openssl rand -hex 32)
ANON_KEY=$(openssl rand -hex 32)
SERVICE_ROLE_KEY=$(openssl rand -hex 32)
DASHBOARD_USERNAME=admin
DASHBOARD_PASSWORD=$(openssl rand -hex 16)
POOLER_TENANT_ID=your-tenant-id-$(openssl rand -hex 8)
# Neo4j Secrets
NEO4J_AUTH=neo4j/$(openssl rand -hex 16)
# Langfuse Credentials
CLICKHOUSE_PASSWORD=$(openssl rand -hex 32)
MINIO_ROOT_PASSWORD=$(openssl rand -hex 32)
LANGFUSE_SALT=$(openssl rand -hex 32)
NEXTAUTH_SECRET=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 32)Ważne: Zapisz wygenerowane wartości w bezpiecznym miejscu, np. w menedżerze haseł, ponieważ będą potrzebne do konfiguracji usług i dostępu do nich.
5. Edycja pliku .env
W pliku .env znajdź sekcje dla N8N Configuration, Supabase Secrets, Neo4j Secrets i Langfuse Credentials. Wklej wygenerowane wartości do odpowiednich pól. Przykład skonfigurowanego fragmentu pliku .env:
############
# N8N Configuration
############
N8N_ENCRYPTION_KEY=your-generated-n8n-encryption-key
N8N_USER_MANAGEMENT_JWT_SECRET=your-generated-n8n-jwt-secret
############
# Supabase Secrets
############
POSTGRES_PASSWORD=your-generated-postgres-password
JWT_SECRET=your-generated-jwt-secret
ANON_KEY=your-generated-anon-key
SERVICE_ROLE_KEY=your-generated-service-role-key
DASHBOARD_USERNAME=admin
DASHBOARD_PASSWORD=your-generated-dashboard-password
POOLER_TENANT_ID=your-tenant-id-xxxxxxxx
############
# Neo4j Secrets
############
NEO4J_AUTH=neo4j/your-generated-neo4j-password
############
# Langfuse Credentials
############
CLICKHOUSE_PASSWORD=your-generated-clickhouse-password
MINIO_ROOT_PASSWORD=your-generated-minio-password
LANGFUSE_SALT=your-generated-langfuse-salt
NEXTAUTH_SECRET=your-generated-nextauth-secret
ENCRYPTION_KEY=your-generated-encryption-keyUwagi:
Zastąp your-generated-… wygenerowanymi wartościami z poleceń openssl.
Nie używaj wartości przykładowych z pliku .env.example w środowisku produkcyjnym.
DASHBOARD_USERNAME możesz ustawić na dowolną wartość, np. admin.
POOLER_TENANT_ID powinien być unikalny; możesz dodać losowy ciąg, jak w przykładzie powyżej.
6. (Opcjonalne) Konfiguracja dla środowiska produkcyjnego
Jeśli planujesz wdrożenie w środowisku publicznym (np. w chmurze), odkomentuj i skonfiguruj sekcję Caddy Config w pliku .env. Przykład:
############
# Caddy Config
############
N8N_HOSTNAME=n8n.yourdomain.com
WEBUI_HOSTNAME=openwebui.yourdomain.com
FLOWISE_HOSTNAME=flowise.yourdomain.com
SUPABASE_HOSTNAME=supabase.yourdomain.com
OLLAMA_HOSTNAME=ollama.yourdomain.com
SEARXNG_HOSTNAME=searxng.yourdomain.com
NEO4J_HOSTNAME=neo4j.yourdomain.com
LETSENCRYPT_EMAIL=your-email@example.comUwagi:
Zastąp yourdomain.com własną domeną.
LETSENCRYPT_EMAIL to adres e-mail używany do generowania certyfikatów SSL przez Caddy.
Jeśli pracujesz lokalnie, możesz pominąć tę sekcję.
7. Zapisanie pliku .env
Po wprowadzeniu zmian zapisz plik .env (w nano naciśnij Ctrl+O, Enter, a następnie Ctrl+X).
8. Weryfikacja pliku .env
Sprawdź, czy plik .env został poprawnie skonfigurowany, wyświetlając jego zawartość:
cat .envUpewnij się, że wszystkie wymagane zmienne mają unikalne, bezpieczne wartości i nie zawierają domyślnych lub pustych pól.
9. Przygotowanie do następnych kroków
Plik .env jest teraz gotowy, co pozwala na uruchomienie usług za pomocą skryptu start_services.py w kolejnym kroku. Upewnij się, że masz zapisane wszystkie klucze i hasła w bezpiecznym miejscu, ponieważ będą potrzebne do konfiguracji usług, takich jak Supabase Studio czy n8n.
Najlepsze praktyki
Bezpieczeństwo kluczy: Nigdy nie zapisuj kluczy w publicznie dostępnym miejscu ani nie zatwierdzaj pliku .env do repozytorium Git. Plik .env jest domyślnie ignorowany przez .gitignore w projekcie local-ai-packaged.
Silne hasła: Używaj losowych, długich ciągów znaków (np. 32 znaki) dla wszystkich kluczy i haseł, generowanych za pomocą openssl lub menedżera haseł.
Kopia zapasowa: Zapisz kopię pliku .env w bezpiecznym miejscu, aby móc przywrócić konfigurację w razie potrzeby.
Supabase Studio: Po uruchomieniu usług, zmień domyślne dane logowania do Supabase Studio (np. DASHBOARD_USERNAME i DASHBOARD_PASSWORD) dla dodatkowego bezpieczeństwa.
Rozwiązywanie problemów
Błąd: „Permission denied” przy edycji .env: Upewnij się, że masz odpowiednie uprawnienia do edycji pliku. Możesz zmienić uprawnienia za pomocą chmod 600 .env.
Puste lub nieprawidłowe klucze: Sprawdź, czy wszystkie zmienne w pliku .env mają poprawnie wygenerowane wartości. Puste pola mogą powodować błędy podczas uruchamiania usług.
Problem z openssl: Jeśli polecenie openssl nie działa, upewnij się, że jest zainstalowane (sudo apt install openssl).
Podsumowanie
Konfiguracja zmiennych środowiskowych w pliku .env to kluczowy krok w przygotowaniu środowiska local-ai-packaged do uruchomienia usług, w tym Supabase. Poprawnie skonfigurowany plik .env zapewnia bezpieczeństwo i prawidłowe działanie wszystkich komponentów. W następnym artykule uruchomimy skrypt start_services.py, aby zainicjować usługi AI, takie jak Supabase, n8n i Ollama.