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