Passa al contenuto principale

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

informazioni

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.

informazioni

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:

docker-compose.yml
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.2.1
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.2.1
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.2.1
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/
Nota bene

È 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
Nota bene

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:
seer_box_gui.template
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 comando openssl:
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 a 53380:433.