Guida Creazione VPS Debian 1GB su AWS per trading automatico

Last Updated on 2 Gennaio 2024 by automiamo.com

Ho deciso di cambiare sistema operativo della mia VPS per fare trading automatico, passando da Ubuntu a Debian, per ora con lo stesso quantitativo di RAM pari a 1GB.

Ho usato Debian per molti anni su Raspberry PI, per applicazioni IoT, e risulta decisamente più performante ed efficiente, in termini di richiesta di risorse hardware, come dimostrato alla fine di questo articolo, nel quale voglio riportare step by step tutta la procedura che seguo per installare una VPS da zero.

Da Ubuntu a Debian

Ormai non avevo più RAM disponibile, con Ubuntu e 1GB di RAM

Con il comando free -m è possibile monitorare il consumo di RAM della propria VPS su SO Linux. Con tutti i miei bot attivi e l’integrazione a Interactive Brokers tramite gateway, mi erano rimasti soltanto pochi MB di RAM. Spesso il mio sistema si bloccava con conseguenti riavvi forzati.

Creazione VPS da Zero su AWS Lightsail

  • Creazione nuova istanza in Oregon, in un data center nel west degli Stati uniti

Perchè Oregon? Faccio trading con i segnali che sviluppo su Tradingview, che ha i server su AWS, Oregon.

In questo modo, la mia VPS è più vicina possibile ai server di Tradingview, senza inutili passaggi oltreoceano, e la latenza di comunicazione tra i due sistemi sarà ridotta al minimo.

Faccio inoltre trading sui futures americani, e su Interactive Broker devo prestare attenzione a puntare al server in America, in modo da ridurre al minimo le latenze anche tra la mia VPS e il broker.

Quando ho creato l’account su IB la regione viene impostata di default su Europa, in base al paese di provenienza, pertanto è necessario cambiare l’impostazione.

Ricordarsi inoltre di avere l’impostazione seguente abilitata, in modo da salvare sempre le impostazioni sul cloud e non offline.

  • Selezione del Sistema Operativo (SO Debian)
  • Definizione di un nome per la nuova istanza

  • Prima connessione via SSH alla nuova VPS
  • Dopo la prima connessione, con il comando free -m è possibile notare come la maggior parte della RAM risulta libera (780MB)
  • Con il comando python3 –version possiamo verificare la versione di default installata nel sistema: Python 3.9.2
  • Manage –> Networking –> Attach Static IP (l’IP statico è necessario in modo che non cambi mai anche dopo i riavvi della VPS)
  • Nella sezione Networking –> IPv4 Firewall abilitiamo tutte le porte e la lista di IP (solo IP di Tradingview) necessari per la corretta esecuzione dell’intera infrastruttura in sicurezza
  • Scaricare la chiave per la connessione da remoto alla VPS

Download PuTTYGen da puttygen.com per trasformare il file .pem in .ppk.

File –> Load Privaty Key e selezionare il file .pem –> Save Privaty Key.

  • Caricare la chiave .ppk appena generata in WINSCP per la connessione FTP da remoto

Integrazione con Interactive Brokers

Nella fase Set up the repository, allo step 3, usare questo comando

echo “deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

  • Testare la corretta installazione con il comando: sudo docker run hello-world

Installazione IBeam (software di terze parti necessario per la connessione al gateway di Interactive Brokers)

sudo -i per accedere con privilegi di amministratore root

  • docker pull voyz/ibeam
  • cd root –> mkdir inputs
  • creare file conf.jaml (https://github.com/Voyz/ibeam/wiki/Gateway-Configuration)
  • Creare i file con le credenziali per la connessione al conto reale
  • Creare i file con le credenziali per la connessione al conto demo

  • Avviare ibeam su conto reale e confermare autenticazione 2FA sul cellulare: sudo -i docker container run -d –env-file /home/admin/ibeam/ib_real/env.list –restart=always –name ibeam_real -v /root/inputs:/srv/inputs -p 5000:5000 voyz/ibeam

Per controllare i logs: docker logs ibeam_real

Per controllare i container in esecuzione: docker ps

Per interrompere il container in esecuzione: docker stop ibeam_real

  • Lo stesso procedimento di esecuzione del container vale su ambiente demo: sudo -i docker container run -d –env-file /home/admin/ibeam/ib_demo/env.list –restart=always –name ibeam_demo -v /root/inputs:/srv/inputs -p 5002:5000 voyz/ibeam

krakenbot (il mio bot per fare arbitraggio automatico su criptovalute)

  • Spostare i files di configurazione e codice sorgente nella wps

Creazione di un ambiente virtuale e avvio del bot

  • cd /home/admin/automiamo/krakenbot
  • Installare eventualmente il software per creare gli ambienti virtuali: sudo apt-get install python3-venv
  • Creazione ambiente virtual: python3 -m venv krakenbot
  • Attivazione: source krakenbot/bin/activate
  • Installare tutte le librerie necessarie all’esecuzione: pip install -r requirements.txt (requirements.txt è un file di configurazione previsto nel mio sofware krakenbot)
  • Disabilitare l’ambiente virtuale: deactivate
  • Rendere eseguibile lo script: chmod u+x krakenbot_restart.sh
  • Eseguire il krakenbot tramite lo script .sh
  • Avviare il bot: bash krakenbot_restart.sh

gserver (il mio web server personalizzabile integrato con vari broker)

  • sudo apt-get install python3-pip
  • spostare i files di configurazione e codice sorgente nella wps

Creazione di un ambiente virtuale e avvio del web server

  • cd /home/admin/automiamo/gserver
  • Creazione ambiente virtuale (con privilegi amministrativi per accedere anche a cartelle root /usr/) sudo python3 -m venv gserver
  • Attivazione: source gserver/bin/activate
  • Installare tutte le librerie necessarie all’esecuzione: sudo pip3 install -r requirements.txt (requirements.txt è un file di configurazione previsto nel mio software)
  • inserire l’indirizzo privato nel file init.py del web server

  • Rendere eseguibile lo script: chmod u+x gserver_restart.sh
  • Eseguire il gserver tramite lo script .sh

Crontab (per le schedulazioni automatiche di bot e altri script)

  • comando crontab -e
  • Inserire le seguenti istruzioni nel file in modo da avviare krakenbot e gserver in automatico allo start della vps (nel caso dovesse essere riavviata)
  • Ctrl-X per salvare

Conclusioni

Dopo aver completato la creazione della mia nuova VPS, l’uso della memoria RAM da parte del sistema operativo è decisamente migliorata.

UBUNTU

DEBIAN

Circa 100MB di RAM available in più su DEBIAN, ma il margine non è troppo ampio per una operatività stabile nel lungo termine.

Qualora volessi installare altri bot sarà necessario passare ad una VPS da 2GB di RAM.

Posso procedere con la creazione di uno snapshot di questa VPS appena creata e installare successivamente il backup su una nuova VPS Debian da 2GB di RAM.

Da notare infine la RAM usata senza ibeam attivo su conto reale e demo:

Dal 70% di RAM usata con 2 container ibeam in esecuzione al 27% di RAM occupata soltanto dai miei bot python e il sistema operativo.

Ribadisco pertanto che le VPS da 1GB RAM sono ottime per applicazioni backend ma non frontend.

Il gateway di Interactive Brokers è una applicazione che richiede operatività desktop, e ibeam lo fa in automatico tramite selenium, richiedendo non poca memoria RAM per un corretto funzionamento.


Giancarlo Pagliaroli

Disclaimer: il contenuto che trovate in questo sito non è da intendersi in alcun modo come consiglio finanziario, né sollecitazione all’investimento, ma soltanto a scopo didattico.

/ 5
Grazie per aver votato!

2 Risposte a “Guida Creazione VPS Debian 1GB su AWS per trading automatico”

  1. Quando viene creata una nuova vps e cancellata la vecchia, bisogna ricordarsi di cancellare manualmente anche tutte le risorse associate alla vecchia vps, per esempio il vecchio IP statico. Altrimenti si continua a pagarlo

  2. Ho notato che AWS, allo stesso costo, ha aumentato le risorse da 1vCPU a 2vCPU. Quindi chi ha vecchia VPS da 1GB e 1vCPU conviene cancellarla e creare nuova VPS allo stesso costo ma con 2vCPU.

Lascia un commento