PG::InvalidTextRepresentation (ERROR: invalid input syntax for type inet: "unix:" LINE 7: client_ip = 'unix:', ^ ) lib/mini_sql_multisite_connection.rb:109:in 'MiniSqlMult
Job exception: ERROR: invalid input syntax for type inet: "unix:" LINE 2: SET ip_address = 'unix:' ^
Quando si verifica, viene visualizzata una pagina “Oops - Errore 500”. Inizialmente, pensavo che Caddy fosse il colpevole perché non inoltrava l’indirizzo IP del client a Discourse, quindi ho provato diverse configurazioni, ma nessuna ha risolto il problema.
Vale la pena menzionare che questo non accade molto spesso. Si verifica solo occasionalmente e, quando lo fa, semplicemente aggiornando la pagina il sito si ripristina immediatamente. Funziona normalmente per un bel po’ di tempo prima che l’errore si verifichi nuovamente in modo casuale.
Non sono un esperto e non ho usato Caddy ma Nginx sulla mia istanza self-hosted, ma posso chiederti la configurazione effettiva dei tuoi template Caddy e Discourse in ./app/containers.yml?
Ricordi cosa facevi solitamente prima che si verificasse l’errore? Intendo, modificare le impostazioni di amministrazione, pubblicare, usare qualche plugin?
Mi dispiace non poter dare un aiuto specifico per il tuo problema, ma penso che le tue risposte possano aggiungere valore alla tua domanda per ottenere una risposta chiara e rapida dalla community.
Questo significa che una richiesta / un utente ha un IP remoto che punta al tuo socket, il che indica che qualcosa nella tua catena di proxy è configurato in modo errato.
templates:
- "templates/postgres.18.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.socketed.template.yml"
- "templates/enable-ruby-yjit.yml"
## quali porte TCP/IP dovrebbe esporre questo container?
## Se vuoi che Discourse condivida una porta con un altro webserver come Apache o nginx,
## vedi https://meta.discourse.org/t/17247 per i dettagli
expose:
# - "66:80" # http
# - "66:443" # https
params:
## Quale revisione Git dovrebbe usare questo container? (default: latest)
version: latest
## Dimensione massima del caricamento (default: 10m)
upload_size: 150m
db_default_text_search_config: "pg_catalog.english"
## Imposta db_shared_buffers a un massimo del 25% della memoria totale.
## verrà impostato automaticamente da bootstrap in base alla RAM rilevata, oppure puoi sovrascriverlo
db_shared_buffers: "2048MB"
## può migliorare le prestazioni di ordinamento, ma aumenta l'uso di memoria per connessione
#db_work_mem: "40MB"
## Quale revisione Git dovrebbe usare questo container? (default: tests-passed)
#version: tests-passed
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## https://meta.discourse.org/t/rescaling-the-server-which-configs-need-to-be-changed-unicorn-workers-memory-etc/252788
## Quante richieste web simultanee sono supportate? Dipende dalla memoria e dai core CPU.
## verrà impostato automaticamente da bootstrap in base alle CPU rilevate, oppure puoi sovrascriverlo
UNICORN_WORKERS: 8
## TODO: Il nome di dominio a cui questa istanza Discourse risponderà
## Obbligatorio. Discourse non funzionerà con un indirizzo IP nudo.
DISCOURSE_HOSTNAME: example.com
## Decommenta se vuoi che il container venga avviato con lo stesso
## hostname (opzione -h) specificato sopra (default "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Lista di email separate da virgole che saranno rese admin e developer
## al primo accesso, esempio 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'admin+discourse@example.com'
## TODO: Il server di posta SMTP usato per validare nuovi account e inviare notifiche
# L'INDIRIZZO SMTP è obbligatorio
# ATTENZIONE: la password SMTP dovrebbe essere racchiusa tra virgolette per evitare problemi
DISCOURSE_SMTP_ADDRESS: smtp.provider.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: noreply@example.com
DISCOURSE_SMTP_PASSWORD: "***"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opzionale, default: true)
DISCOURSE_SMTP_DOMAIN: example.com # (richiesto da alcuni provider)
DISCOURSE_NOTIFICATION_EMAIL: noreply@example.com
#DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: peer # (opzionale, default: peer, valori validi: none, peer, client_once, fail_if_no_peer_cert)
#DISCOURSE_SMTP_AUTHENTICATION: plain # (default: plain, valori validi: plain, login, cram_md5)
## Se hai aggiunto il template Lets Encrypt, decommenta qui sotto per ottenere un certificato SSL gratuito
# LETSENCRYPT_ACCOUNT_EMAIL: admin+letsencrypt@example.com
## L'indirizzo CDN http o https per questa istanza Discourse (configurato per il pull)
## vedi https://meta.discourse.org/t/14857 per i dettagli
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## L'ID account e la chiave di licenza Maxmind geolocation IP per le ricerche di indirizzi IP
## vedi https://meta.discourse.org/t/-/173941 per i dettagli
#DISCOURSE_MAXMIND_ACCOUNT_ID: 123456
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
# Forza HTTPS
DISCOURSE_FORCE_HTTPS: true
# Limiti delle richieste
DISCOURSE_MAX_REQS_PER_IP_MODE: none
DISCOURSE_MAX_ADMIN_API_REQS_PER_MINUTE: 12000
DISCOURSE_MAX_DATA_EXPLORER_API_REQ_MODE: none
DISCOURSE_MAX_DATA_EXPLORER_API_REQS_PER_10_SECONDS: 1000
DISCOURSE_YJIT_ENABLED: true
## Il container Docker è stateless; tutti i dati sono memorizzati in /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
- volume:
host: /var/discourse/plugins
guest: /var/plugins
## I plugin vanno qui
## vedi https://meta.discourse.org/t/19157 per i dettagli
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- cp -a /var/plugins/. $home/plugins/
## Comandi personalizzati da eseguire dopo la build
run:
- exec: echo "Inizio dei comandi personalizzati"
## Se vuoi impostare l'indirizzo email "Da" per il tuo primo registro, decommenta e modifica:
## Dopo aver ricevuto la prima email di registrazione, ricommenta la riga. Deve essere eseguita solo una volta.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Fine dei comandi personalizzati"
Per essere più specifici, questo errore si verifica diverse ore dopo il precedente, non capita molto spesso. Non vedo nulla di insolito in app.yml o nel Caddyfile.
Penso di aver trovato il problema. Se eseguo una ricostruzione, non riavvio mai Caddy. D’ora in poi, farò così:
./launcher rebuild app && systemctl reload caddy
Sospetto che Caddy utilizzi la cache del socket o qualcosa di simile dopo una ricostruzione. Ma di solito non accade immediatamente dopo una ricostruzione. Vedremo.