mushroomlabs.hub20
Hub20
Ta rola zapewnia wszystko, co potrzebne do skonfigurowania instancji Hub20 wraz z wszystkimi pracami w tle.
Wymagania
Ta rola odpowiada tylko za instalację i konfigurację następujących usług Hub20:
- API: REST API (aplikacja django, obsługiwana przez uvicorn)
- nasłuchiwanie zdarzeń web3: zadanie w tle, które nasłuchuje istotnych zdarzeń web3 (np. transfery ETH/ERC20 na konta obsługiwane przez nasze usługi, otwieranie/zamykanie kanałów Raiden, cokolwiek innego użytkownik zdefiniuje)
- synchronizacja Raiden: zadanie w tle do zbierania i przetwarzania wszystkich zdarzeń z Twojej instancji Raiden
- śledzenie oczekujących płatności: zadanie w tle, które sprawdza oczekujące transakcje kierowane do któregokolwiek z kont wewnętrznych portfeli Hub20
Rola NIE zapewnia konfiguracji usług, od których zależy Hub20, czyli PostgreSQL i Redis. Nie obejmuje też żadnego serwera sieciowego, który powinien być z przodu uvicorn, aby obsługiwać, np. statyczne zasoby. Usługa ta jest przeznaczona do działania za jakimś serwerem sieciowym lub systemem równoważenia obciążenia (zapoznaj się z poradami wdrożeniowymi Uvicorn, aby poznać najlepsze opcje).
Ta rola zakłada również, że targetujesz dystrybucję Linux opartą na Debianie, która używa systemd. Dodatkowo, ze względu na zależność Hub20 od Pythona >= 3.7, należy użyć nowszej dystrybucji lub dodać kilka zadań do swojego playbooka, aby zainstalować nową wersję Pythona na docelowej platformie.
Zmienne Roli
hub20_application_host: (domyślnie 127.0.0.1)hub20_application_port: (domyślnie 5000)hub20_blockchain_network_id: (domyślnie 1)hub20_blockchain_starting_block: (domyślnie 9500000)hub20_database_host: (domyślnie localhost)hub20_database_name: (domyślnie hub20)hub20_database_user: (domyślnie hub20)hub20_database_port: (domyślnie 5432)hub20_environment_file_path: (domyślnie /etc/hub20)hub20_email_backend: (domyślnie django.core.mail.backends.console.EmailBackend)hub20_email_sender_address: (domyślnie noreply@hub20.example.com)hub20_pip_package_name: (domyślnie hub20)hub20_pip_package_state: (domyślnie latest)hub20_redis_host: (domyślnie localhost)hub20_redis_port: (domyślnie 6379)hub20_redis_celery_database: (domyślnie 0)hub20_redis_cache_database: (domyślnie 1)hub20_run_debug_mode: (domyślnie false)hub20_run_python_version: (domyślnie python3.7)hub20_service_web3_event_listener_enabled: (domyślnie true)hub20_service_raiden_sync_enabled: (domyślnie true)hub20_service_web_enabled: (domyślnie true)hub20_user_name: (domyślnie hub20)hub20_user_home_path: (domyślnie /srv/hub20)hub20_web3_provider_uri: (domyślnie http://localhost:8545)hub20_tracked_tokens: lista adresów tokenów (w formie ciągów szesnastkowych), które będą używane/akceptowane jako waluta przez sklepy. (domyślnie: adresy dla ETH, WETH, DAI i RDN)hub20_application_static_folder_path: (domyślnie /srv/hub20/static)hub20_broker_url: (domyślnie redis://localhost:6379/0)hub20_cache_url: (domyślnie redis://localhost:6379/1)hub20_run_virtualenv_path: (domyślnie /srv/hub20/.venv)
Poniższe zmienne muszą być zdefiniowane i powinny być traktowane jako wartości wrażliwe:
hub20_database_password: hasło do połączenia z bazą danych.hub20_service_secret_key: tajny klucz aplikacji internetowej hub20, używany do zarządzania sesjami, generowania tokenów CSRF itp.
Przykładowy Playbook
- hosts: hub20_servers
roles:
- role: geerlingguy.nginx # Używanie nginx jako proxy
- role: lullis.certbot-nginx # Aby uzyskać certyfikaty SSL od Let's Encrypt i obsługiwać je przez nginx
- role: mushroomlabs.hub20
Licencja
MIT
Informacje o autorze
Raphael Lullis (raphael@mushroomlabs.com)
Installs and sets up all hub20 services in any Debian-based linux distro
ansible-galaxy install mushroomlabs.hub20