[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)

  • 446 Risposte
  • 290418 Visite

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Bixio

  • Nuovo Iscritto
  • *
  • 25
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #165 il: 29 Novembre 2021, 09:34 »
Salve ragazzi, da pochissimi giorni sono passato da adsl a Fibra e posseggo anche io questo modem che mi ha consegnato il tecnico Telecom configurato con connessione TIM e più precisamente queste sono le mie caratteristiche:

Fornitore del prodotto: Technicolor

Nome prodotto: AGMY2020

Versione Software: 19.4

Versione Firmware: AGTHF_1.1.1

Versione Hardware: VCNT-3


Seguo attentamente la discussione per lo sblocco del suddetto modem nella speranza che in futuro ci sia una procedura molto più semplice da seguire per le mie competenze per effettuare lo sblocco, come ho già fatto in passato per i vari modem AGA ecc..

Nell'attesa, una curiosità vi chiedo: visto che siete davvero esperti nel decompilare / modificare il firmware dei vari modem, cosa che purtroppo io non sono in grado, stavo pensando che si potrebbe creare un tool, come sui vecchi AGA, che inserendo il serial number del modem, ti rileva la password di fabbrica posta sull'etichetta dietro al modem. Questo tool stavo pensando che sarebbe molto utile se per esempio si va a cancellare l'etichetta o si stacca del tutto. Se va a succedere questo, neanche il 187 potrà aiutare nessun utente perchè la password è unica per quel serial number. Se succedesse questo non si avrebbe più accesso in nessun modo al modem e non so come ci si dovrà comportare per una evenenienza del genere.

Dite che è fattibile creare questo tool magari decompilando il firmware e capire come viene generata la password partendo dal serial number oppure dal MAC Address?


Offline LuKePicci

  • Global Moderator
  • VIP
  • *****
  • 2789
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #166 il: 29 Novembre 2021, 11:28 »
Tutto ciò che è univoco per quel dispositivo sta in una partizione a sè, allcuni sono esplicitamente random e da questi derivano una serie di cose. Altri sono diversi per ogni esemplare e non so dirti se siano anche loro random o ricavati da altro, ma non vedo che necessità avessero di non renderli casuali. Di solito generi materiale a partire da altro (come il MAC) quando non disponi sulla piattaforma di una porzione di dati "caratterizzante" il singolo esemplare e inizializzata in fabbrica. Qui esiste, quindi non vedo perchè debbano essere correlati.

Per leggere quei dati ci sono già alcuni tool, e molti li puoi leggere direttamente da riga di comando (da root ovviamente). Se leggi la wiki di hack-technicolor trovi altre info a riguardo.

Offline Bixio

  • Nuovo Iscritto
  • *
  • 25
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #167 il: 29 Novembre 2021, 16:11 »
Ciao LuKePicci grazie innanzitutto per avermi risposto. Seguirò la guida tecnicholor ed attenderò che ci sia lo sblocco per questo modem in maniera facilitata in modo tale da poter cambiare la password di accesso al modem in "admin" come ho scritto nella mia discussione in quanto non sono in grado ad oggi per le mie competenze di poter effettuare lo sblocco..

Grazie ancora!! Siete i migliori!!

Offline uomoukko

  • Membro Anziano
  • ***
  • 121
    • github.com/uomoukko
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #168 il: 01 Dicembre 2021, 18:56 »
Allora.. sto cercando di venire a capo dei problemi riguardanti lo sblocco del modem
allo scopo di capirci qualcosa e possibilmente realizzare tutto in Windows col meno
dispendio di energie disponibili.

Prima di tutto vorrei cercare di far chiarezza sui motivi per i quali
TCH così com'è non funziona, che -da quanto ho capito- sarebbero due:
- TCH funziona su HTTP, non autenticato mentre il modem nuovo vuole HTTPS su dominio autenticato
- TCH non usa VLAN ID mentre il modem nuovo vuole anche il VLAN ID=83
Correggetemi se sbaglio!

Per rimediare a questo io cerco di fare i minimi passi possibili e devo:

- Avere un nome di dominio fisso di quelli gratis per il mio IP dinamico già settato
 e funzionante sul modem vecchio

- Tramite "let's encrypt" devo ottenere il certificato valido per il mio nome di dominio
  quindi in sostanza le due chiavi pubblica/privata che mi validano il dominio.
 Aggiungo solo a quanto spiegato diversi messaggi fa, che tutta la procedura può 
 essere fatta più comodamente da Windows, redirigendo con port forward la porta HTTPS
del modem vecchio su un pc locale su cui gira un server HTTPS,  e facendo girare "uacme" pure su tale pc
Questa procedura per fortuna si fa una volta e basta - i certificati durano 3 mesi.

- Avere una scheda di rete aggiuntiva con VLAN, settata su 83

- Dare internet alla rete aggiuntiva potendo modificare l'ip di base di Windows Internet Connection Sharing
 toccando (!) questa chiave di registro (regedit)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters
modifico sia la chiave ScopeAddress che ScopeAddressBackup e li porterò temporaneamente
da 192.168.137.1 a 58.162.0.1 per renderli compatibili con TCH

- far girare tch su windows

- Aprire una port forward sul modem vecchio che, quando il modem nuovo stimolato dal DHCP del TCH
inizia a dialogare col https://miodominio:porta mi ridirige la connessione sul pc locale, su socat che, grazie
alle mie chiavi pubbliche e private ascolta sulla porta HTTPS e poi ridirige sulla porta HTTP di TCH

MA C'E' UN PROBLEMA: TCH tramite DHCP option 43 manda al modem la richiesta di mandare i POST
su http://58.162.0.1:portavariabile ed essendo HTTP e senza dominio, il modem la rifiuterà!!!
in aggiunta a ciò la porta è casuale cioè la richiesta corretta doveva essere https://miodominio:portafissa
E visto che TCH manda la richiesta su porte variabili, varierà anche la porta dove il TCH ascolta la risposta
quindi ho problemi sia sul numero di porta da usare per il  port forward del modem vecchio,
sia sulla porta di socat che mi fa la conversione HTTPS->HTTP e alla quale il pc rimanda i dati al TCH

Spero di essermi espresso bene. Che casino!
C'e' un rimedio che mi consenta di usare TCH o devo andare avanti per la mia strada
spulciando le specifiche di TR-069 e costruendomi io un programma adatto,
visto che senza tch riesco comunque a far dialogare il modem?

Offline LuKePicci

  • Global Moderator
  • VIP
  • *****
  • 2789
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #169 il: 03 Dicembre 2021, 01:58 »
E' tutto giusto. Dovrebbero esserci delle opzioni a riga di comando per tch-exploit che ti permettono di cambiare l'url proposto in option 43 con quello del tuo dominio. Porta e indirizzo li puoi scegliere con questi parametri: https://github.com/hack-technicolor/hack-technicolor/issues/122#issuecomment-683316309

Offline uomoukko

  • Membro Anziano
  • ***
  • 121
    • github.com/uomoukko
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #170 il: 03 Dicembre 2021, 10:14 »
Ok. proverò a usare queste opzioni e vediamo se va.

Ma ne frattempo non c'è una possibilità di fare una modifica "facile"
per far dialogare il tch in https, indicando i certificati?
Per usare socat io faccio cosi':
Codice: [Seleziona]
socat openssl-listen:MIAPORTA,fork,reuseaddr,cafile=pub.pem,cert=priv.pem,verify=0 tcp4:IPLOCALE-TCH:PORTA-TCH
Se fosse possibile potrei togliere il socat e quindi avrei
un livello di complessità in meno.
Però non saprei nemmeno da che parte iniziare per modificare il tch,
la versione windows e' un exe, dovrei lavorare su quella unix?

Offline LuKePicci

  • Global Moderator
  • VIP
  • *****
  • 2789
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #171 il: 03 Dicembre 2021, 10:57 »
tch-exploit è scritto in nodejs, immagino bast sostituire http.createServer in https.createServer e dargli i certificati, ma ti conviene scrivere direttamente a BoLaMN su github, se è una cosa banale da fare te la fa lui in cinque minuti. L'exe e l'eseguibile linux vengono fuori da un packaging del codice più il runtime nodejs. Tu per debugging puoi anche installare nodejs e lanciare i file js
« Ultima modifica: 03 Dicembre 2021, 10:59 da LuKePicci »

Offline uomoukko

  • Membro Anziano
  • ***
  • 121
    • github.com/uomoukko
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #172 il: 04 Dicembre 2021, 11:15 »
Ecco il punto della situazione di oggi. Ho studiato (!) e mi sono documentato su nodejs.
Dopo avere installato nodejs, è incredibile notare come si possa costruire un server https
con pochissima fatica rispetto al codice C che ho sempre usato. Ecco il codice
$ cat basic.js
Codice: [Seleziona]
const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('miopriv.pem'),
  cert: fs.readFileSync('miopub.pem')
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('hello world\n');
}).listen(8443);
e redirigendo la porta esterna 8443 tramite port-forward sulla porta 8443 del mio pc locale
e poi facendo partire il server con $ node basic.js,
effettivamente il comando $ curl https://miodominio restituisce hello, world
(non uso curl -k perché voglio controllare se i certificati funzionano)
e se lo provo da un browser digitando https://miodominio, il lucchetto si chiude.
BENE! ora devo solo trovare 2 cose:
1) come compilare i file coffee del tch.tar.gz senza modificare nulla (sto tentando di capire)
2) come inserire questa modifica nel tch e ricompilare senza errori.

#update di sabato:
la fase 1 è risolta, riesco a compilare la versione "standard"
ma non è stato per niente facile per via delle dipendenze
(e dei relativi conflitti) dei vari package coffeescript, pkg, npm.
Cmq è fatta. Nella cartella "release" ora ho le 3 versioni, linux, mac, win
Adesso la fase 2: modifica -- torno a studiare

aggiornamento.. penso di aver trovato il file da modificare
che sembra essere src/http/index.coffee ma essendo un coffeescript
che compila in nodejs, ha una sintassi diversa e fatico a trovare un modo
per passare il parametro delle chiavi pem a createServer

nuovo aggiornamento: sono riuscito a far funzionare le modifiche
usando la cartella dist dove ci sono tutti i nodejs ed evitandomi così
possibili errori se avessi toccato i coffeescript. Il server https sembra
funzionare, (non capivo dove mettere le opzioni fin quando non ho esplicitato
alcune delle contorte funzioni-freccia, cioè le funzioni anonime con => )

Adesso se non ci sono altri intoppi dovrei riuscire ad andare avanti,
anche se il server dhcp deve dare al modem l'ip locale 58.162.0.X,
ma gli passa l'opzione 43 specificando il mio nome di dominio:miaporta
mentre il server https(soap) ascolta sulla 58.162.0.1:miaporta
quindi ci sono altre piccole modifiche da fare, ma spero piccole!

lunedi sera:
le modifiche sembrano essere terminate... certo la procedura e' un po'
piu' laboriosa perche' si tratta di far partire il tch che trova già  il pc con ip
statico 58.162.0.1, far assegnare al DGA4331 l'ip staccando internet (altrimenti
cicla tra DHCPDISCOVER e DHCPOFFER). Quando vedo il DHCPACK
abilito la condivisione windows, che condivide la 58.162.0.1 senza
cambiargli ip.  Pero' il programma non logga nessun pacchetto SOAP.
Quello che ho provato a fare e' stato un
Codice: [Seleziona]
$ curl -X POST https://miodominio:8443   o
$ curl -X POST 58.162.0.1:8443
( grazie al port forward i due curl sono equivalenti)
la risposta sulla finestra del tch è stata questa (in colore verde)
Codice: [Seleziona]
[
  404,
  {
    'Content-Type': 'text/xml; charset="utf-8"',
    Server: 'ACSServer',
    SOAPServer: 'ACSServer'
  },
  null
]
la modifica al file http/index.js è banale, serve solo per attivare il server https.
Codice: [Seleziona]
createServer = require('https').createServer;   //Cambio in https
e piu sotto
  myfs = require('fs');     // necessario per leggere dal filesystem

const options = {
   key: myfs.readFileSync('miopriv.pem'),   //la chiave privata
   cert: myfs.readFileSync('miopub.pem')  //la chiave pubblica
};
  srv = createServer(options,route);       //ho incluso l'opzione chiavi
  srv.keepAliveTimeout = 30000;
invece la modifica al file principale index.js è stata questa:
Codice: [Seleziona]
if (args.tftp) {
  servers.push.apply(servers, tftp(args));
} else if (args.dhcponly) {
  servers.push(dhcpd(ip, args.acsurl, args.acspass));
} else {
  ask(ip).then(port).then(function(p) {
    var u, url;
    p=8443;     //Settato porta fissa

    console.log("PORT",p);
    u = new URL(args.acsurl || ("https://" + ip));   //Diventa https
    u.port = p;
    url = u.toString();
    console.log("listening for cwmp requests at " + url);
    //servers.push(dhcpd(ip, url, args.acspass));
    servers.push(dhcpd(ip,'https://miodominio:8443', args.acspass));
    console.log("http-url=",url);
    return servers.push(httpd(ip, p, url));
  });
}
Sono parecchio fuso.. la modifica del nodejs mi ha stancato.
Però sento che ci sono vicino ma non riesco a capire dove sbaglio...

Aggiornamento di mercoledì:
Penso di aver trovato la causa del problema. Ora vi spiego.
Io ho due connessioni di rete, una verso il modem vecchio, che mi da internet,
e una con vlan-id verso il DGA4331. Tutto sembrava funzionare ma l'opzione
43 non arrivava al modem, via programma tch modificato.
Allora ho tirato via il VLAN ID e ho connesso il mio fido portatile di test
al posto del modem e mi sono accorto del problema.

Io tenevo pronta la connessione sul modem vecchio, condivisa ma disabilitata
fino a che non ottenevo il DHCPACK del modem all'IP fornito dal TCH,
ma la rete 58.0.1.X disabilitata, essendo condivisa, NON DISABILITA IL DHCP di ICS
(Windows internet connection sharing)
e quindi il DHCP di ICS, nonostante la rete disattivata,
assegnava comunque al DGA4331 un IP sulla sottorete 58.162.0.X
ed essendo questo DHCP server più veloce di quello sul programma TCH, vinceva lui
Quindi il modem si trova ad avere un IP connesso, ma diverso da quello sul quale
il DHCP del TCH avrebbe dovuto mandare l'opzione 43, ma  tale IP non veniva assegnato.

Adesso ho due strade:
1) riesco a disabilitare completamente solo il server DHCP di Windows ICS (difficile)
oppure
2) attivo PRIMA la rete 192.168.1.X del modem vecchio che porta internet, senza condivisioni
e POI la condivido sulla rete 58.162.0.X sperando che, attivandosi pure il DHCP di ICS,
il DGA4331 - che ha già ricevuto l'IP dal programma TCH - non lo cambi più.
 Vi terrò aggiornati...
« Ultima modifica: 08 Dicembre 2021, 15:53 da uomoukko »

Offline LuKePicci

  • Global Moderator
  • VIP
  • *****
  • 2789
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #173 il: 02 Gennaio 2022, 13:39 »
La modifica al tch-exploit mi sembra molto utile, ti conviene fare una PR cos' dai a BoLaMN un riferimento veloce su cosa fare, lui si occuperò di rendere http/https selezionabili come opsioni da riga di comando.

A questo punto c'è il dhcp-ACS su https compatibile con certificati certbot.  Supponendo di generare certificati certbot per un dominio miodominio.tk su freenom con validazione tramite DNS TXT (c'è un plugin di certbot per automatizzare la scrittura di record TXT su freenom) e assegnare come IP di quel dominio nel file hosts lo stesso IP usato da tch-exploit (non dev'essere per forza quel 58.162... ma va bene uguale) la cosa sarebbe sostanzialmente fatta, basta disconnettere il PC da ogni altra rete, avviare tch-exploit in https con i certificati di certbot e fine.

Offline dragonx

  • Membro Anziano
  • ***
  • 480
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #174 il: 02 Gennaio 2022, 13:46 »
ragazzi scusate, come faccio a verificare che il root sia avvenuto con successo? quali comandi devo dare da riga di comando?
DGA4331 rooted 1.1.2 (standard GUI)
DGA4130 rooted 2.4.5 (ansuel GUI 9.7.6)

Offline LuKePicci

  • Global Moderator
  • VIP
  • *****
  • 2789
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #175 il: 02 Gennaio 2022, 16:30 »
ci entri in ssh con user: root e password: root

Se entra allora p andata.

Offline dragonx

  • Membro Anziano
  • ***
  • 480
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #176 il: 07 Gennaio 2022, 14:11 »
Diciamo che non ho fatto più di quello che abbiamo descritto in queste pagine, è difficile scrivere questa guida perché è un procedimento al quanto complesso, ma ci provo.

Qualcuno per favore può aiutarmi?
1. Genieacs dove sta? Come si installa ? Come si cambia lo script di provisioning? Come si carica lo script  del file sts?

2. per quanto riguarda la connessione dell'Iphone tramite usb, serve  per usare la connessione dell'Iphone ?
Quando parli di disconnettere il cavo della connessione Ont oppure Adsl significa che il DGA4331 deve essere già connesso ad Internet ? All'inizio come mi devo connettere , col DGA4331 oppure con il router che già possiedo ?

« Ultima modifica: 07 Gennaio 2022, 15:07 da MisterFTTH »
DGA4331 rooted 1.1.2 (standard GUI)
DGA4130 rooted 2.4.5 (ansuel GUI 9.7.6)

Offline lorenzocanalelc

  • Esperto
  • ****
  • 678
  • Sesso: Maschio
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #177 il: 07 Gennaio 2022, 14:18 »
Da quel che ho visto da @uomoukko e @LuKePicci sembra che possa essere rilasciata una versione di tch-exploit che funzioni anche con https. Datemi voi conferma. Se così fosse ti consiglierei di aspettare una possibilità in tal senso.
Per quanto riguarda il metodo seguito da me è molto macchinoso, genieACS si installa tramite lo script docker di @LuKePicci su un server dove è installato appunto Docker. Io l'ho installato come suggerito dallo stesso Luke su una macchina virtuale di Microsoft Azure (Che ai tempi aveva un periodo di prova free). Lo script di provvisioning poi si cambia direttamente dall'interfaccia grafica di GenieACS.

Per la seconda domanda io non avevo altre possibilità di internet, se tu le hai meglio usare un altro router piuttosto che l'hotspot.

Offline dragonx

  • Membro Anziano
  • ***
  • 480
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #178 il: 07 Gennaio 2022, 18:13 »
Da quel che ho visto da @uomoukko e @LuKePicci sembra che possa essere rilasciata una versione di tch-exploit che funzioni anche con https. Datemi voi conferma. Se così fosse ti consiglierei di aspettare una possibilità in tal senso.

Cosa cambia tra la versione http e quella https?

Per quanto riguarda il metodo seguito da me è molto macchinoso, genieACS si installa tramite lo script docker di @LuKePicci su un server dove è installato appunto Docker. Io l'ho installato come suggerito dallo stesso Luke su una macchina virtuale di Microsoft Azure (Che ai tempi aveva un periodo di prova free). Lo script di provvisioning poi si cambia direttamente dall'interfaccia grafica di GenieACS.

lo script docker di @LuKePicci è quello che hai linkato nel tuo post di istruzioni?
per fare quello che dici tu devo selezionare la prova gratuita macchine virtuali di windows da qui ?
https://azure.microsoft.com/it-it/free/search/?&ef_id=EAIaIQobChMI2tHBsI2g9QIV1fZRCh0EMwfsEAAYASAAEgIAOvD_BwE:G:s&OCID=AID2200205_SEM_EAIaIQobChMI2tHBsI2g9QIV1fZRCh0EMwfsEAAYASAAEgIAOvD_BwE:G:s&gclid=EAIaIQobChMI2tHBsI2g9QIV1fZRCh0EMwfsEAAYASAAEgIAOvD_BwE

Docker lo posso installare iio su un mio pc oppure devo per forza usare quello di Microsoft?

Per la seconda domanda io non avevo altre possibilità di internet, se tu le hai meglio usare un altro router piuttosto che l'hotspot.

tu hai scritto "solo adesso, resettato, disconnesso il cavo della connessione (Nel mio caso era l'ONT, nei vostri casi potrebbe essere il cavo dsl) e collegato il DGA via etherenet al Mac" ... quindi il tuo dga era connesso all'ont e quindi avevi la fibra...giusto?
io ho la fibra vdsl attualmente collegata al dga4130.... in tal caso come dovrei muovermi (ho windows sul mio portatile)? sul portatile posso impostare la VLAN83, l'interfaccia bridge cos'è?

i 2 comandi di cui parli sono
Codice: [Seleziona]
rm -rf /overlay/$(cat /proc/banktable/booted)
e

Codice: [Seleziona]
mkdir -p /overlay/$(cat /proc/banktable/booted)/etc
chmod 755 /overlay/$(cat /proc/banktable/booted) /overlay/$(cat /proc/banktable/booted)/etc
echo -e "echo root:root | chpasswd
sed -i 's#/root:.*\$#/root:/bin/ash#' /etc/passwd
sed -i -e 's/#//' -e 's#askconsole:.*\$#askconsole:/bin/ash#' /etc/inittab
uci -q set \$(uci show firewall | grep -m 1 \$(fw3 -q print | \
egrep 'iptables -t filter -A zone_lan_input -p tcp -m tcp --dport 22 -m comment --comment \"!fw3: .+\" -j DROP' | \
sed -n -e 's/^iptables.\+fw3: \(.\+\)\".\+/\1/p') | \
sed -n -e \"s/\(.\+\).name='.\+'$/\1/p\").target='ACCEPT'
uci add dropbear dropbear
uci rename dropbear.@dropbear[-1]=afg
uci set dropbear.afg.enable='1'
uci set dropbear.afg.Interface='lan'
uci set dropbear.afg.Port='22'
uci set dropbear.afg.IdleTimeout='600'
uci set dropbear.afg.PasswordAuth='on'
uci set dropbear.afg.RootPasswordAuth='on'
uci set dropbear.afg.RootLogin='1'
uci set dropbear.lan.enable='0'
uci commit dropbear
/etc/init.d/dropbear enable
/etc/init.d/dropbear restart
rm /overlay/\$(cat /proc/banktable/booted)/etc/rc.local
source /rom/etc/rc.local
" > /overlay/$(cat /proc/banktable/booted)/etc/rc.local
chmod +x /overlay/$(cat /proc/banktable/booted)/etc/rc.local
sync
« Ultima modifica: 07 Gennaio 2022, 18:48 da MisterFTTH »
DGA4331 rooted 1.1.2 (standard GUI)
DGA4130 rooted 2.4.5 (ansuel GUI 9.7.6)

Offline LuKePicci

  • Global Moderator
  • VIP
  • *****
  • 2789
Re:[RICERCA] TIM HUB+ Technicolor DGA4331 (VCNT-3)
« Risposta #179 il: 08 Gennaio 2022, 14:46 »
Ti basta una istanza di Azure App Service su Service Plan F1 (sempre gratuita), non devi creare nessuna macchina virtuale.

Quando crei la Azure App Service non devi selezionare quella con immagine container custom, gli dici che vuoi usare un multi-container (Docker compose) e gli incolli il contenuto del docker-compose.yml. E' facile e gratuita a tempo illimitato. non consuma nessuno dei crediti ottenuti come bonus di iscrizione quindi potete farlo anche quando i crediti esauriscono o scadono.