Docker Compose
Seer Box può essere installato attraverso Docker Compose, utilizzando un file YAML che consente di configurare tutti i servizi necessari per il suo corretto funzionamento.
Note per l'installazione
Per utilizzare l'istanza di Seer Box è necessario accettare le Condizioni generali di utilizzo del servizio (EULA). Per accettarne i termini, è necessario impostare esplicitamente il valore della variabile d'ambiente SBX_ACCEPT_EULA
all'interno del servizio sbx-engine
a YES
.
Se l'ambiente di installazione rende necessario l'utilizzo di una connessione cifrata per l'accesso all'interfaccia grafica di Seer Box, è possibile seguire le istruzioni presenti alla fine di questo documento prima di proseguire.
Volumi
Per garantire la persistenza dei dati su Seer Box è possibile utilizzare un volume Docker o un bind mount. Non tutti i container necessitano di un volume indipendente: nel caso di Seer Box Engine e di Seer Box Reporter essi dovranno condividere il medesimo volume. Di seguito vengono elencati i container che necessitano di un volume e le relative directory:
Seer Box Queue
Directory del container: /var/lib/rabbitmq/mnesia
Seer Box Storage
Directory del container: /var/lib/postgresql/data
Seer Box Engine & Reporter
Directory del container: /opt/seer_box
La directory montata come volume sul path /opt/seer_box
deve essere configurata con UID e GID di appartenenza pari a 53380
. Questo assicura che i permessi di accesso siano corretti e che i container possano leggere e scrivere i dati correttamente.
Per configurare i permessi eseguire il comando:
chown -R 53380:53380 /directory/to/seer_box_volume
Definizione YAML
È possibile utilizzare la seguente definizione per l'avvio dei servizi:
services:
sbx-queue:
image: docker.io/rabbitmq:3.13
container_name: seer_box_queue
hostname: seer_box_queue
volumes:
- /directory/to/seer_box_queue_volume:/var/lib/rabbitmq/mnesia:Z
# Remove comment to modify RabbitMQ default configuration
# - ./seer_box_queue.conf:/etc/rabbitmq/conf.d/30-seer_box_queue.conf:Z
networks:
- seer_box_network
environment:
- RABBITMQ_DEFAULT_USER=seer_box
- RABBITMQ_DEFAULT_PASS=seer_box
restart: unless-stopped
healthcheck:
test: rabbitmq-diagnostics -q ping
interval: 5s
timeout: 10s
retries: 6
sbx-storage:
image: docker.io/postgres:15
container_name: seer_box_storage
volumes:
- /directory/to/seer_box_storage_volume:/var/lib/postgresql/data:Z
networks:
- seer_box_network
environment:
- POSTGRES_USER=seer_box
- POSTGRES_DB=seer_box
- POSTGRES_PASSWORD=seer_box
restart: unless-stopped
healthcheck:
test: [ "CMD-SHELL", "/usr/bin/pg_isready -U seer_box" ]
interval: 5s
timeout: 10s
retries: 6
sbx-engine:
image: quay.io/pluribus_one/seer_box_engine:24.3
container_name: seer_box_engine
user: seer-box:seer-box
volumes:
- /directory/to/seer_box_volume:/opt/seer_box:z
# Remove comments to user docker volumes
# - seerbox_volume:/opt/seer_box/
networks:
- seer_box_network
environment:
- SBX_DATABASE_HOSTNAME=seer_box_storage
- SBX_QUEUE_HOSTNAME=seer_box_queue
- SBX_SERVER_WEB_URL_HOST=seer_box_engine
- SBX_DATABASE_PASSWORD=seer_box
- SBX_QUEUE_PASSWORD=seer_box
- SBX_ACCEPT_EULA=NO
ports:
- 20050-20100:20050-20100/udp
- 20050-20100:20050-20100/tcp
restart: unless-stopped
depends_on:
sbx-queue:
condition: service_healthy
sbx-storage:
condition: service_healthy
sbx-reporter:
image: quay.io/pluribus_one/seer_box_reporter:24.3
container_name: seer_box_reporter
user: seer-box:seer-box
volumes:
- /directory/to/seer_box_volume:/opt/seer_box:z
# Remove comments to user docker volumes
# - seer_box_volume:/opt/seer_box/
networks:
- seer_box_network
environment:
- SBX_DATABASE_HOSTNAME=seer_box_storage
- SBX_QUEUE_HOSTNAME=seer_box_queue
- SBX_QUEUE_PASSWORD=seer_box
- SBX_DATABASE_PASSWORD=seer_box
restart: unless-stopped
depends_on:
sbx-engine:
condition: service_started
sbx-storage:
condition: service_healthy
cap_add:
- SYS_ADMIN
sbx-gui:
image: quay.io/pluribus_one/seer_box_gui:24.3
container_name: seer_box_gui
# Remove comments to enable SSL
# volumes:
# - ./default.conf.template:/etc/nginx/templates/default.conf.template:Z
# - ./your-cert.crt:/etc/ssl/certs/seer-box.crt:Z
# - ./your-cert-key.key:/etc/ssl/private/seer-box.key:Z
networks:
- seer_box_network
environment:
- SBX_API_HOST=seer_box_engine
- SBX_DNS_RESOLVER=127.0.0.11
ports:
- 53380:80
restart: unless-stopped
depends_on:
- sbx-engine
volumes:
seer_box_queue_volume:
seer_box_storage_volume:
seer_box_volume:
networks:
seer_box_network:
Avvio
Per avviare l'applicazione è sufficiente lanciare il seguente comando dalla directory in cui è presente il file docker-compose.yml
:
docker compose up -d
Terminato l'avvio dei servizi sarà possibile accedere all'interfaccia web del sistema, disponibile all'indirizzo:
http://<machine_ip>:53380/
È consigliato esporre l'interfaccia web dietro reverse proxy con SSL abilitato e, se possibile, limitare l'accesso solo ad indirizzi IP autorizzati. In ogni caso è preferibile non esporre tale interfaccia su un indirizzo pubblico.
Le credenziali di default per l'utenza di amministrazione sono:
- Username:
admin
- Password:
SeerBox_4dm1n
Dopo il primo accesso è consigliato cambiare la password di default.
Licenza
A seguito del login sarà possibile inserire la License Key fornita da Pluribus One per l'attivazione dell'istanza.
È possibile richiedere una licenza gratuita dal seguente link: https://license.seerbox.it
Configurazione HTTPS
Seer Box di default espone la sua interfaccia web in HTTP sulla porta 80
del container seer_box_gui. Per abilitare l'HTTPS è necessario:
- Creare il file
seer_box_gui.template
, e inserire al suo interno la configurazione riportata di seguito:
server {
listen 443 http2 ssl;
listen [::]:443 http2 ssl;
error_page 500 502 503 504 /50x.html;
ssl_certificate /etc/ssl/certs/seer-box.crt;
ssl_certificate_key /etc/ssl/private/seer-box.key;
resolver ${SBX_DNS_RESOLVER} valid=${SBX_DNS_RESOLVER_VALIDITY};
set $upstream_endpoint ${SBX_API_PROTOCOL}://${SBX_API_HOST}:${SBX_API_PORT};
location = /50x.html {
root /usr/share/nginx/html;
}
location ${SBX_API_ENDPOINT} {
rewrite ${SBX_API_ENDPOINT}(.*) /$1 break;
proxy_pass $upstream_endpoint${SBX_API_ENDPOINT}$1$is_args$args;
proxy_pass_request_headers on;
proxy_redirect off;
}
location ${SBX_FEEDS_ENDPOINT} {
rewrite ${SBX_FEEDS_ENDPOINT}(.*) /$1 break;
proxy_pass $upstream_endpoint${SBX_FEEDS_ENDPOINT}$1$is_args$args;
proxy_pass_request_headers on;
proxy_redirect off;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
- Generare un certificato SSL e rispettiva chiave da montare all'interno del servizio
sbx-gui
. È possibile generare un certificato autofirmato utilizzando il tool da riga di comandoopenssl
:
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout ./seer-box.key -out ./seer-box.crt
-
Decommentare i volumi definiti nello YAML per il servizio
sbx-gui
, modificando i percorsi di certificato e chiavi sulla macchina host se necessario. -
Nello stesso servizio modificare il forwarding delle porte da
53380:80
a53380:433
.