Aggiornamenti/Ricostruzioni falliscono a causa della fine del supporto di MaxMind DB

Ragazzi,

Spero che qualcuno possa aiutarmi. Non ho avuto problemi da oltre 12 mesi con gli aggiornamenti del mio forum, che gira in un contenitore Docker su EC2.

Ho provato:

  • Pulizia del launcher, ma non ci sono problemi di spazio su disco
  • Ultimo git pull
  • Diversi rebuild dell’app
  • Ho anche provato un discourse-setup e stavo per tentare un ripristino del DB :frowning:
  • Riavvio del server
  • apt-get update; apt-get upgrade

Ecco la coda del log:

Done compressing all JS files : 88.88 secs
rake aborted!
SocketError: Failed to open TCP connection to geolite.maxmind.com:443 (getaddrinfo: No address associated with hostname)
/var/www/discourse/lib/final_destination.rb:411:in `safe_session'
/var/www/discourse/lib/final_destination.rb:362:in `safe_get'
/var/www/discourse/lib/final_destination.rb:131:in `get'
/var/www/discourse/lib/file_helper.rb:51:in `download'
/var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download'
/var/www/discourse/lib/tasks/assets.rake:220:in `block (3 levels) in <top (required)>'
/var/www/discourse/lib/tasks/assets.rake:219:in `each'
/var/www/discourse/lib/tasks/assets.rake:219:in `block (2 levels) in <top (required)>'

Caused by:

SocketError: getaddrinfo: No address associated with hostname

/var/www/discourse/lib/final_destination.rb:411:in `safe_session'
/var/www/discourse/lib/final_destination.rb:362:in `safe_get'
/var/www/discourse/lib/final_destination.rb:131:in `get'
/var/www/discourse/lib/file_helper.rb:51:in `download'
/var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download'
/var/www/discourse/lib/tasks/assets.rake:220:in `block (3 levels) in <top (required)>'
/var/www/discourse/lib/tasks/assets.rake:219:in `each'
/var/www/discourse/lib/tasks/assets.rake:219:in `block (2 levels) in <top (required)>'

Tasks: TOP => assets:precompile

(See full trace by running task with --trace)

I, [2019-12-30T18:56:27.608998 #1] INFO -- : Downloading MaxMindDB...
Compressing Javascript and Generating Source Maps
I, [2019-12-30T18:56:27.633923 #1] INFO -- : Terminating async processes
I, [2019-12-30T18:56:27.637383 #1] INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main pid: 49
I, [2019-12-30T18:56:27.639770 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 166
166:signal-handler (1577732187) Received SIGTERM scheduling shutdown...
2019-12-30 18:56:27.639 UTC [49] LOG: received fast shutdown request
2019-12-30 18:56:27.654 UTC [49] LOG: aborting any active transactions
166:M 30 Dec 2019 18:56:27.666 # User requested shutdown...
166:M 30 Dec 2019 18:56:27.694 * Saving the final RDB snapshot before exiting.
2019-12-30 18:56:27.702 UTC [49] LOG: worker process: logical replication launcher (PID 58) exited with exit code 1
2019-12-30 18:56:27.711 UTC [53] LOG: shutting down
2019-12-30 18:56:27.819 UTC [49] LOG: database system is shut down
166:M 30 Dec 2019 18:56:27.885 * DB saved on disk
166:M 30 Dec 2019 18:56:27.886 # Redis is now ready to exit, bye bye...

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake assets:precompile' failed with return #<Process::Status: pid 507 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake assets:precompile'"]}
fcf17d793c27c4e87616420ead222cc3f4a9fc163f239a5542b1c9a092579b30

** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Spero davvero che qualcuno possa fare luce su questa situazione.

Grazie a tutti.

Nel caso in cui qualcuno voglia continuare a utilizzare gli ultimi file pubblicati sotto la vecchia licenza, li ho tutti salvati su archive.org.

Tutti i file sono stati creati da MaxMind e distribuiti sotto la Licenza Creative Commons Attribution-ShareAlike 4.0 International.

URL archive.org Hash MD5 Intestazione Last-Modified
GeoLite2-City.tar.gz 7ba2c58b4e0eac6c08c6399aebdae26c Tue, 24 Dec 2019 17:46:00 GMT
GeoLite2-Country.tar.gz dc6224c648350d90f344a0c5c3ca5474 Tue, 24 Dec 2019 17:40:42 GMT
GeoLite2-ASN.tar.gz f3c9c5775fd226db6e8098675ff65861 Tue, 24 Dec 2019 14:16:58 GMT
GeoLite2-City-CSV.zip 89e5bf01a970b5668d74cf29a242d546 Tue, 24 Dec 2019 17:45:52 GMT
GeoLite2-Country-CSV.zip f50b518341de54fe48c5e34f13e24e99 Tue, 24 Dec 2019 17:40:41 GMT
GeoLite2-ASN-CSV.zip 463ccd73c104c52547fa50a84fc2f86e Tue, 24 Dec 2019 14:16:58 GMT

Archivio della pagina informativa (Screenshot)

Ora supportiamo il metodo ufficialmente supportato per ottenere i database, come indicato qui:

Se desideri ricevere gli aggiornamenti regolari di MaxMind, dovrai visitare GeoLite sign up | MaxMind per registrare un account e generare una chiave di licenza.

Successivamente, dovrai modificare il tuo container per includerla nella sezione env::

env:
   DISCOURSE_MAXMIND_LICENSE_KEY: ...chiave qui...

La correzione garantisce che non ci sia più una bomba a tempo. Se non abbiamo una chiave di licenza, non tenteremo mai di scaricare i file.

Stiamo discutendo con MaxMind la possibilità di includere i database aggiornati nelle nostre nuove immagini base. Per chi effettua l’hosting autonomo, ci sono due alternative a seconda dell’esito:

  1. Nessuna risoluzione IP nella pagina del profilo utente e nella pagina di amministrazione fino a quando non viene aggiunta una licenza

  2. Risoluzione IP non aggiornata per un massimo di N giorni dall’ottenimento dell’immagine base (cioè dopo aver eseguito ./launcher rebuild app)

È molto probabile che l’opzione (1) sia l’esito per chi effettua l’hosting autonomo.

Stiamo anche esaminando altre alternative, ma le nostre mani sono piuttosto legate.

Sono fortemente contrario all’aggiunta di funzionalità al core che effettuano ricerche IP tramite un servizio web, poiché ciò espone informazioni a terze parti. Esistono solo due grandi alternative reali e entrambe richiedono la registrazione.

@sam Ho una piccola richiesta di funzionalità: è possibile aggiungere un’impostazione nel pannello di amministrazione per inserire la chiave di licenza MaxMind?

Improbabile nel prossimo futuro: questa è un’impostazione globale; per sito in un Multisite non ha senso.

Qualcun altro sta ricevendo questo errore quando prova a registrarsi a un account MaxMind?

Posso confermare che siamo riusciti a registrarci per un account senza problemi. Dovrai contattare MaxMind per il supporto relativo ai problemi dell’account; qui non possiamo fornirti assistenza.

Sto cercando di aggiornare dalla versione 2.3.8 alla 2.3.9, ma nulla funziona.

L’errore rilevante, per quanto riesco a capire, è quello discusso in questo argomento.

rake aborted!
SocketError: Failed to open TCP connection to geolite.maxmind.com:443 (getaddrinfo: Name or service not known)

Nel mio file app.yml ho provato i valori 30, 100 e 0 per quel flag env:

DISCOURSE_REFRESH_MAXMIND_DB_DURING_PRECOMPILE_DAYS: 0

Ma sembra non fare mai alcuna differenza (mi chiedo se venga riconosciuto correttamente).

Cosa altro potrei provare?

Grazie a tutti coloro che hanno lavorato alla correzione rapida nelle ultime settimane. Ho dovuto fare la stessa cosa con Matomo, il che è stato molto più doloroso (manuale).

Questo mi porta alla mia domanda: Dov’è utilizzata esattamente la MaxMind? Solo nei casi in cui gli amministratori visualizzano gli indirizzi IP degli utenti? Qualcos’altro a cui non sto pensando?

Ovviamente ho già un account MM, ma mi chiedo se valga la pena impegnarsi a farlo con urgenza.

Esegue ricerche geografiche sugli indirizzi IP. Ho eseguito diverse installazioni e aggiornamenti di recente senza impostare una chiave API e i rebuild funzionano correttamente. (la versione corrente è la beta 10)

Inoltre, non è difficile ottenere una chiave per scaricare il database.

Spero di aggiornare discourse-setup per permettere l’impostazione della chiave la prossima settimana.

Esatto, vengono utilizzati per la ricerca degli indirizzi IP degli utenti da parte degli amministratori. Inoltre, per l’elenco dei “dispositivi utilizzati di recente” nelle preferenze dell’utente e per gli avvisi agli amministratori quando viene rilevato un nuovo accesso al loro account da una posizione diversa.

Scusa l’intrusione, ma volevo chiedere se è previsto mantenere la possibilità di disabilitare la ricerca dell’IP. Mi sembra che obbligare gli amministratori a iscriversi a un servizio di terze parti non sia una buona idea. Io stesso ho già una chiave di licenza per altri utilizzi, quindi mi esprimo in senso generale.

Se non inserisci una chiave di licenza, la funzionalità verrà disabilitata. Non c’è nulla che costringa gli amministratori a configurarla.

Inoltre, solo per evitare qualsiasi confusione, Discourse non invia mai indirizzi IP a terze parti. Discourse scarica un intero database di località degli IP da MaxMind ed esegue quindi la ricerca internamente.

Ottimo, grazie per il chiarimento!

Revisione di questo… è stato backportato alla versione stabile.