Dopo sangue, sudore e lacrime, penso che sia risolto.
Tuttavia, non sono particolarmente “orgoglioso” della soluzione, ma hey, è Google: non parleranno né spiegheranno nulla, quindi… conclusioni:
-
Prima di tutto, una lezione importante: non abilitare IPv6 su DigitalOcean se si utilizza Discourse, perché il loro intervallo IPv6 è bloccato da YouTube.
-
Dopo aver risolto il problema di IPv6, a causa dell’aumento del traffico, indipendentemente dall’host (ne ho cambiato un paio di volte, che viaggio!), ciò che è successo dopo è che YouTube ha iniziato a bloccare il mio IP per l’installazione di Discourse, a causa della quantità di video YouTube pubblicati sul sito e di come Discourse li carica.
-
Per verificare questo blocco, è necessario usare il proprio server come proxy verso uno con un browser oppure eseguire un curl e cercare questa riga: “Sorry for the interruption. We have been receiving a large volume of requests from your network.” (c’è questo argomento come riferimento)
-
Grazie all’aiuto di @riking @neounix e @Overgrow ho eseguito una serie di comandi (che puoi leggere sopra) per provare a fermare, limitare o cambiare la frequenza con cui vengono renderizzati gli embed di YouTube. Per la maggior parte dei siti sarebbe stato sufficiente, ma avevamo l’ulteriore complicazione di essere stati migrati dopo che avevo provato un paio di host, quindi tutti i post precedenti dovevano essere renderizzati. In effetti, limitarlo a uno ogni ora in un certo senso ha risolto il problema all’inizio. Ma immagino che la mia community ami davvero condividere video, perché non è durato a lungo.
-
Ovviamente non c’è alcun feedback o aiuto da parte di YouTube, tranne un paio di thread sul loro forum con l’errore e tutti i commenti che dicono “sì, ho anche io quel problema” ma senza soluzioni.
-
Date le circostanze, ricordando la logica degli infomercial “Deve esserci un altro modo!”, ho optato per un approccio “Rambo”: ho acquistato un altro indirizzo IP. Poi ho aggiunto un cron che cambia l’IP in uscita ogni ora. Problema risolto.
È probabile che, se il sito continua a crescere e la gente continua a condividere quell’amore per YouTube, potrei aver bisogno di acquisire un terzo IP. Ma hey, fino a quando non troverò un modo corretto per realizzare un “Discourse distribuito” su K8S o qualcosa del genere, questa è la soluzione migliore.
Non è la soluzione più elegante, lo so.
Ancora una volta, grazie per tutto l’aiuto (e soprattutto per la pazienza, perché so che sono molto n00b con la combinazione Rails/Sidekiq/RubyConsole, ma sto cercando di migliorare leggendo il codice di Discourse).
Grazie!