Docker Compose
Esegui un'istanza Status200 completa e gratuita su un unico server Linux con Docker Compose. Questa pagina ti porta da un server appena creato a un'istanza funzionante, poi tratta HTTPS, l'hardening per la produzione, i backup, gli aggiornamenti e la rimozione. Per lavorare invece sul codice di Status200, vedi Sviluppo locale.
Come funziona
Docker Compose esegue ogni parte di Status200 come container sul tuo server. Tutto il traffico entra dal container ingress, che lo instrada verso l'app. L'app conserva i suoi dati in PostgreSQL, ClickHouse e Valkey. Una sonda inclusa esegue i controlli dei tuoi monitor e riporta i risultati tramite l'ingress.
Il deployment con Docker Compose
| Servizio | Immagine | Cosa fa |
|---|---|---|
ingress | status200/nginx | Riceve tutto il traffico sulle porte 80 e 443 e lo instrada verso l'app. Serve HTTPS quando Status200 gestisce il certificato. |
app | status200/app | La dashboard, l'API, le pagine di stato, l'ingestione della telemetria e i worker in background. |
probe-1 | status200/probe | Una sonda globale che esegue i controlli dei tuoi monitor. Usa la rete dell'host. |
runner | status200/runner | Il Runner dell'istanza, che esegue le correzioni del codice con l'IA. Usa la rete dell'host. |
postgres | postgres:15 | Configurazione e stato: monitor, incidenti, utenti. Conservati nel volume postgres. |
clickhouse | clickhouse/clickhouse-server:26.7 | Telemetria: log, metriche, trace ed eccezioni. Conservata nel volume clickhouse. |
valkey | valkey/valkey:9.1-alpine | Cache e code. Non conserva nulla su disco. |
Il servizio valkey esegue Valkey, il fork con licenza BSD di Redis 7.2, configurato tramite le impostazioni VALKEY_* in config.env. Va bene qualsiasi server che parli il protocollo Redis: punta VALKEY_HOST a un Redis gestito se preferisci. Fino alla 13.0.0 queste impostazioni si chiamavano REDIS_*; i vecchi nomi vengono ancora letti, il container risponde ancora al nome host redis e npm run update non li riscrive, quindi un config.env più vecchio non richiede modifiche.
Per la produzione su larga scala, o quando ti serve l'alta disponibilità, usa invece il chart Helm su Kubernetes: Docker Compose esegue una sola copia di ogni servizio su un unico server.
Requisiti
Scegli la dimensione del server in base a ciò che ci farai girare. È la telemetria (log, metriche, trace) a determinare memoria e disco; consulta Dimensionamento e pianificazione della capacità quando conosci i tuoi volumi.
| Consigliato | Minimo per un homelab | |
|---|---|---|
| Memoria | 16 GB | 8 GB |
| CPU | 8 core | 4 core |
| Disco | 400 GB | 20 GB |
| Sistema | Ubuntu 22.04, o un altro Linux basato su Debian, Ubuntu o RHEL | Lo stesso |
| Architettura | x86-64 (amd64) o ARM (arm64) | La stessa |
Il minimo per un homelab va bene per un uso personale e sperimentale: c'è chi fa girare Status200 su un Raspberry Pi.
Ti servono anche:
- Docker con il plugin Docker Compose v2 (il comando
docker compose). - Git, per scaricare Status200.
- Node.js e npm, che eseguono gli script
npm startenpm run updateche avvolgono Docker Compose. - Porte 80 e 443 libere sul server. La tabella qui sotto elenca ogni porta che Status200 usa sull'host.
| Porta dell'host | Usata da | Impostazione | A cosa serve |
|---|---|---|---|
| 80 | ingress | ONEUPTIME_HTTP_PORT | La dashboard, l'API, l'ingestione della telemetria e la validazione di Let's Encrypt. |
| 443 | ingress | STATUS_PAGE_HTTPS_PORT | HTTPS per la tua istanza quando Status200 gestisce il certificato, e per le pagine di stato e le dashboard su domini personalizzati. |
| 5400 | postgres | Impostata in docker-compose.yml | Permette a npm run backup e a restore.sh di raggiungere PostgreSQL dal server stesso. È pubblicata solo su 127.0.0.1. |
| 3874 | probe-1 | GLOBAL_PROBE_1_PORT | Il server proprio della sonda. Niente fuori dal server ne ha bisogno. |
| 3876 | runner | ONEUPTIME_RUNNER_PORT | Il server proprio del Runner. Niente fuori dal server ne ha bisogno. |
C'è anche una guida video dell'installazione.
Installare Status200
Clona il branch release
Il branch
releasecontiene i file dell'ultima release.git clone --depth 1 --single-branch --branch release https://git.wilix.dev/status200/status200.git cd oneuptimeCrea config.env
Tutte le impostazioni di Status200 si trovano in
config.env. Parti dall'esempio:cp config.example.env config.envImposta il nome host
Apri
config.enve impostaHOSTsul nome di dominio o sull'indirizzo IP che verrà usato per raggiungere Status200, senzahttp://. Lascialocalhostsolo per provare Status200 sul tuo computer.HOST=status200.example.comGenera secret casuali
Il file di esempio contiene secret segnaposto che sono pubblici su GitHub. Sostituisci ciascuno con un valore casuale proprio:
while grep -q "please-change-this-to-random-value" config.env; do sed -i "0,/please-change-this-to-random-value/{s/please-change-this-to-random-value/$(openssl rand -hex 32)/}" config.env done grep -c "please-change-this" config.envL'ultimo comando stampa
0: non è rimasto alcun segnaposto. Il ciclo usa GNUsed, presente su ogni server Linux. Queste sono le impostazioni che compila:Impostazione Cosa protegge ONEUPTIME_SECRETLe chiamate tra i servizi di Status200. ENCRYPTION_SECRETI secret che Status200 conserva, come i token delle integrazioni e le password SMTP, e i token di accesso che emette. DATABASE_PASSWORD,CLICKHOUSE_PASSWORD,VALKEY_PASSWORDI tre datastore. REGISTER_PROBE_KEYLa registrazione delle sonde presso la tua istanza. GLOBAL_PROBE_1_KEY,GLOBAL_PROBE_2_KEYLe sonde globali che Docker Compose può eseguire ( probe-1è attiva per impostazione predefinita).STATUS200_RUNNER_KEYIl Runner incluso. GLOBAL_RUNNER_KEYIl Runner globale incluso, che esegue i passaggi JavaScript di tutti i progetti. ImportanteImposta i secret prima del primo avvio e poi non cambiarli. PostgreSQL prende la sua password solo quando crea il database, e cambiare
ENCRYPTION_SECRETin seguito rende illeggibile ogni valore cifrato con quello vecchio. Se al primo avvioDATABASE_PASSWORDè ancora il segnaposto,npm startle dà un valore casuale prima che PostgreSQL crei il suo database.Avvia Status200
npm
npm startDocker CLI
(export $(grep -v '^#' config.env | xargs) && docker compose up --remove-orphans -d)Il primo avvio richiede diversi minuti: Docker scarica le immagini e Status200 crea i suoi database.
npm startattende che ogni parte risponda e termina con Status200 is up!Crea il primo account
Apri
http://seguito dal tuoHOST(per esempiohttp://localhost) e registrati. Il primo account di una nuova istanza ne diventa l'amministratore principale, che può aprire l'Admin Dashboard su/admin.Chiunque possa raggiungere la pagina può registrarsi dopo di te. Per impedirlo, apri l'Admin Dashboard, vai in Impostazioni > Autenticazione e disattiva Consenti la registrazione. Le persone che inviti in un progetto possono comunque creare il proprio account.
Configurare HTTPS
Status200 serve HTTP semplice finché non scegli uno dei due modi per aggiungere HTTPS:
| Lasciare che Status200 ottenga un certificato | Usare il tuo reverse proxy | |
|---|---|---|
| TLS termina su | L'ingress di Status200, con un certificato Let's Encrypt gratuito che rinnova da solo | Il tuo proxy: Caddy, Nginx o un load balancer |
| Ti serve | Un nome di dominio pubblico che punti al server, e le porte 80 e 443 raggiungibili da Internet | Un proxy e un certificato per il tuo dominio |
| Impostazioni | PROVISION_SSL=true, HTTP_PROTOCOL=https | PROVISION_SSL=false, HTTP_PROTOCOL=https, TRUSTED_PROXY_HOPS=2 |
| Pagine di stato su domini personalizzati | Funzionano senza altra configurazione | Il tuo proxy deve servire anche quei domini |
Se metti pagine di stato o dashboard su domini personalizzati, lasciare che Status200 gestisca TLS è la configurazione più semplice: l'ingress ordina e serve da solo i certificati di quei domini.
Con HTTP_PROTOCOL=https, Status200 costruisce link HTTPS, mantiene i cookie di accesso su HTTPS e chiede ai browser di raggiungere il tuo HOST solo in HTTPS. Un browser vi si attiene per un anno, su ogni porta di quel nome, quindi se un giorno HOST dovrà di nuovo rispondere in HTTP semplice, imposta HSTS_MAX_AGE_SECONDS=0 in config.env un po' di tempo prima: i browser dimenticano la regola alla visita successiva.
Lasciare che Status200 ottenga un certificato
Punta il tuo dominio al server
Crea un record DNS
A(oAAAAper IPv6) per il tuo dominio, con l'indirizzo IP pubblico del server come valore. Con un recordAAAA, attiva anche IPv6 per Status200: vedi Indirizzi dei visitatori.Attiva l'ottenimento dei certificati
Imposta questi valori in
config.env:HOST=status200.example.com PROVISION_SSL=true HTTP_PROTOCOL=httpsHOSTdeve essere un nome di dominio: Status200 non può ottenere un certificato per un indirizzo IP o perlocalhost.Riavvia con le nuove impostazioni
npm startApri la tua istanza in HTTPS
Apri
https://status200.example.com. Status200 ordina il certificato all'avvio e poi lo controlla ogni ora, rinnovandolo quando mancano meno di 30 giorni. Finché non arriva il primo certificato, di solito entro pochi minuti, l'ingress serve un certificato autofirmato temporaneo e il browser ti avvisa.
Usare il tuo reverse proxy
Questi passi eseguono il proxy sullo stesso server di Status200. Se il tuo proxy gira su un'altra macchina, salta il primo passo, punta il proxy alla porta 80 di questo server e, con il firewall del tuo provider cloud, lascia che solo il proxy raggiunga le porte 80 e 443: un visitatore che raggiunge Status200 aggirando il proxy può scegliere l'indirizzo con cui Status200 lo conta.
Sposta l'ingress dalle porte 80 e 443
Il proxy ha bisogno delle porte 80 e 443, quindi sposta l'ingress su altre porte, pubblicate solo sull'indirizzo di loopback
127.0.0.1di questo server, così i visitatori raggiungono Status200 soltanto attraverso il tuo proxy. La sonda e il Runner usano la rete dell'host e raggiungono Status200 tramitehttp://localhost, quindi si spostano con lui:ONEUPTIME_HTTP_PORT=127.0.0.1:8080 STATUS_PAGE_HTTPS_PORT=127.0.0.1:8443 GLOBAL_PROBE_1_STATUS200_URL=http://localhost:8080 ONEUPTIME_RUNNER_STATUS200_URL=http://localhost:8080Indica a Status200 che è dietro un proxy
HOST=status200.example.com HTTP_PROTOCOL=https PROVISION_SSL=false TRUSTED_PROXY_HOPS=2HTTP_PROTOCOL=httpsfa usare HTTPS ai link che Status200 costruisce.TRUSTED_PROXY_HOPS=2conta il tuo proxy e l'ingress di Status200, così Status200 legge l'indirizzo reale del visitatore per le allowlist IP e i limiti di frequenza. Aggiungine uno per ogni altro proxy che aggiunge voci aX-Forwarded-For, come una CDN o un load balancer.Riavvia Status200 sulle nuove porte
(export $(grep -v '^#' config.env | xargs) && docker compose up --remove-orphans -d) bash Tests/Scripts/status-check.sh localhost:8080npm startcontrollahttp://localhostsulla porta 80, dove ci sarà il tuo proxy, quindi controlla tu la nuova porta. Lo script termina con Status200 is up!Configura il proxy
Caddy
status200.example.com { reverse_proxy localhost:8080 }Caddy ottiene e rinnova il certificato da solo, reindirizza HTTP su HTTPS e fa passare le connessioni WebSocket. Ricarica Caddy dopo aver modificato il file, per esempio con
sudo systemctl reload caddy.Nginx
map $http_upgrade $status200_connection_upgrade { default upgrade; "" close; } server { listen 80; server_name status200.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name status200.example.com; ssl_certificate /etc/letsencrypt/live/status200.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/status200.example.com/privkey.pem; # The limits Status200's own ingress uses. client_max_body_size 50M; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $status200_connection_upgrade; location / { proxy_pass http://127.0.0.1:8080; } # MCP clients keep a stream open. location /mcp { proxy_pass http://127.0.0.1:8080; proxy_buffering off; proxy_read_timeout 86400s; proxy_send_timeout 86400s; } }I percorsi dei certificati sono quelli in cui Certbot mette un certificato Let's Encrypt; usa i percorsi del tuo certificato se viene da altrove. Controlla il file e ricarica Nginx con
sudo nginx -t && sudo systemctl reload nginx.Entrambi inviano
X-Forwarded-Proto, che dice a Status200 che un visitatore è arrivato in HTTPS. Anche qualsiasi altro proxy deve inviarlo, altrimenti i cookie di accesso delle pagine di stato e delle dashboard sui tuoi domini personalizzati non restano su HTTPS.Apri la tua istanza tramite il proxy
Apri
https://status200.example.com. Dovresti vedere la pagina di accesso di Status200, servita con il certificato del tuo proxy.
Dietro il tuo proxy, invia la telemetria tramite OTLP/HTTP (/otlp). OTLP su gRPC raggiunge Status200 solo quando è il suo ingress a terminare TLS (PROVISION_SSL=true).
Indirizzi dei visitatori
Status200 conta ogni visitatore in base all'indirizzo da cui si collega: i limiti di accesso, gli altri limiti per indirizzo e le allowlist IP delle pagine di stato e delle dashboard lo leggono tutti. Due configurazioni richiedono un'impostazione perché quell'indirizzo sia proprio quello del visitatore:
| Configurazione | Impostazione |
|---|---|
Le persone raggiungono Status200 via IPv6, ad esempio tramite un record AAAA | IPv6 sulla rete di Status200, in docker-compose.override.yml |
| Il tuo reverse proxy sta davanti a Status200 | TRUSTED_PROXY_HOPS=2, con l'ingress pubblicato su 127.0.0.1 (vedi Usare il tuo reverse proxy) |
Senza IPv6 sulla rete di Status200, Docker passa a Status200 ogni visitatore che arriva via IPv6 da un indirizzo proprio, e Status200 li conta tutti come un solo visitatore: gli accessi non riusciti di una persona possono bloccare le altre. Attivare IPv6 richiede Docker Engine 27 o successivo (docker version mostra la tua).
Attiva IPv6
Crea
docker-compose.override.ymlaccanto adocker-compose.yml, oppure aggiungi questo a quello che hai già;npm startenpm run updatelo leggono:networks: oneuptime: enable_ipv6: trueRiavvia Status200
npm stop npm startStatus200 si ferma e riparte con IPv6 sulla sua rete. I tuoi dati restano. Docker non può rimuovere una rete a cui è ancora collegato un tuo container, come un reverse proxy: scollegalo prima dalla rete di Status200 e ricollegalo dopo. Se
npm startsi ferma conhas active endpoints, scollegalo ed esegui di nuovonpm stopenpm start.Controlla la rete
docker network ls --quiet --filter name=_oneuptime | xargs docker network inspect | grep EnableIPv6Stampa
"EnableIPv6": true,.
Quando più persone accedono da uno stesso indirizzo di rete privata, la pagina Integrità di Status200 dell'Admin Dashboard lo segnala, con l'impostazione che lo cambia.
Checklist per la produzione
Docker Compose esegue una sola copia di ogni servizio su un unico server, il che si adatta a team piccoli e homelab. Prima di affidartici, ripassa questa lista.
| Ambito | Cosa fare |
|---|---|
| Secret | Nessun valore in config.env è ancora un segnaposto please-change-this-to-random-value. Vedi Genera secret casuali, e Cambia la password del database per un'installazione avviata con il segnaposto in DATABASE_PASSWORD. |
| HTTPS | Status200 si raggiunge in HTTPS e HTTP_PROTOCOL=https è impostato. Vedi Configurare HTTPS. |
| Registrazioni | Quando il tuo team ha i suoi account, disattiva Consenti la registrazione in Impostazioni > Autenticazione nell'Admin Dashboard. |
| Firewall | Solo le porte 80 e 443 (e SSH) sono aperte verso Internet. Status200 pubblica la porta 5400 di PostgreSQL solo su 127.0.0.1. Chiudi ogni altra porta che pubblichi con il firewall del tuo provider cloud: le regole di ufw non si applicano alle porte che Docker pubblica. |
| Indirizzi dei visitatori | La pagina Integrità di Status200 dell'Admin Dashboard non segnala che più persone accedono da uno stesso indirizzo. Vedi Indirizzi dei visitatori. |
| Backup | PostgreSQL viene salvato ogni giorno e le copie lasciano il server. Vedi Backup e ripristino. |
| Un server di posta è configurato in Impostazioni > Notifiche > E-mail nell'Admin Dashboard, così Status200 può inviare inviti e notifiche. Vedi SMTP. | |
| Disco | Lo spazio libero è tenuto d'occhio. ClickHouse cresce con la telemetria che conservi (vedi Dimensionamento e pianificazione della capacità); il log di ogni container è limitato a 1000 MB. |
| Aggiornamenti | Status200 viene aggiornato almeno una volta alla settimana. Le release escono spesso. Vedi Aggiornare Status200. |
| Alta disponibilità | Se ti serve, passa al chart Helm su Kubernetes. |
Cambia la password del database
PostgreSQL mantiene la password con cui è stato creato, quindi cambiare solo DATABASE_PASSWORD in config.env lascia Status200 fuori dal suo database. Per dare una password propria a un'installazione avviata con il segnaposto, cambiala in PostgreSQL e in config.env insieme, poi avvia di nuovo Status200:
NEW_PASSWORD=$(openssl rand -hex 32) &&
(export $(grep -v '^#' config.env | xargs) && docker compose exec -T postgres psql -U "$DATABASE_USERNAME" -d "$DATABASE_NAME" -c "ALTER USER \"$DATABASE_USERNAME\" PASSWORD '$NEW_PASSWORD'") &&
sed -i "s/^DATABASE_PASSWORD=.*/DATABASE_PASSWORD=$NEW_PASSWORD/" config.env
npm startSe hai impostato DATABASE_BACKUP_PASSWORD e DATABASE_RESTORE_PASSWORD, dai anche a loro il nuovo valore.
Backup e ripristino
PostgreSQL contiene tutto ciò che configuri: monitor, incidenti, pagine di stato, utenti. npm run backup ne fa il dump in un file nella cartella Backups.
Dai allo script di backup la password del database
In
config.env, impostaDATABASE_BACKUP_PASSWORDsul valore diDATABASE_PASSWORD. Lo script leggeconfig.envcome testo semplice, quindi il${DATABASE_PASSWORD}fornito non viene mai sostituito.Esegui il backup
npm run backupChiede la tua password di sudo e scrive
Backups/db-<day of the month>.backup, così i backup giornalieri sostituiscono quelli di un mese prima. Eseguilo almeno una volta al giorno.Copia i backup fuori dal server
Un backup sullo stesso disco del database non sopravvive alla perdita di quel disco.
Solo il server stesso raggiunge PostgreSQL: risponde sulla porta 5400 di 127.0.0.1. Per farne il backup da un'altra macchina, apri un tunnel SSH da quella macchina, poi connettiti alla sua porta 5400:
ssh -N -L 5400:127.0.0.1:5400 you@status200.example.comPubblica PostgreSQL su un indirizzo di una rete privata
Se uno strumento della tua rete privata deve raggiungere PostgreSQL senza tunnel, pubblicalo anche sull'indirizzo del server in quella rete, su una porta a sé. Crea docker-compose.override.yml accanto a docker-compose.yml; npm start e npm run update lo leggono:
services:
postgres:
ports:
- "10.0.0.5:5401:5432"Metti l'indirizzo privato del server stesso al posto di 10.0.0.5, mai uno pubblico, e prima dai a PostgreSQL una password propria (vedi Cambia la password del database). Poi esegui npm start, e PostgreSQL risponderà anche sulla porta 5401 di quell'indirizzo.
ClickHouse conserva la tua telemetria nel volume Docker status200_clickhouse, e nessuno script ne fa il backup. Se devi conservare quella telemetria, fai il backup del volume con uno strumento per ClickHouse come clickhouse-backup, oppure copialo mentre Status200 è fermo.
Per ripristinare PostgreSQL, imposta i valori DATABASE_RESTORE_* in config.env: DATABASE_RESTORE_PASSWORD sul valore di DATABASE_PASSWORD, come per i backup, e DATABASE_RESTORE_FILENAME sul backup da ripristinare, per esempio db-31.backup. Poi esegui bash restore.sh. Il database in cui ripristina deve già esistere; in un'installazione in funzione esiste.
restore.sh elimina dal database di destinazione ogni oggetto presente nel backup prima di ricrearlo. Chiede conferma prima di iniziare; controlla il nome del database che mostra.Aggiornare Status200
Fai prima un backup, poi esegui:
git checkout release
git pull
npm run updatenpm run update chiede la tua password di sudo, aggiunge al tuo config.env le nuove impostazioni di config.example.env (i tuoi valori restano), scarica le nuove immagini e riavvia Status200. Come npm start, termina con Status200 is up!
Passare a una nuova versione major (dalla 13 alla 14, per esempio) può richiedere di più: leggi Aggiornamento di Status200 prima di iniziare.
APP_TAG=release in config.env scarica sempre l'ultima release della Community Edition. Per restare su una versione, imposta APP_TAG sul suo numero, per esempio 14.0.22. Per la Enterprise Edition, i tag sono enterprise-release e enterprise-14.0.22.
Disinstallare Status200
Ferma Status200 e rimuovi i suoi container e la sua rete:
npm run downI tuoi dati restano nei volumi status200_postgres e status200_clickhouse, e la cartella oneuptime conserva config.env e i tuoi backup. Per eliminare anche i dati:
(export $(grep -v '^#' config.env | xargs) && docker compose down --volumes --remove-orphans)Poi elimina la cartella oneuptime.
--volumes elimina per sempre ogni monitor, incidente, utente e tutta la telemetria. Fai prima un backup se potrebbe servirti qualcosa.Risoluzione dei problemi
Docker dice "permission denied" quando esegui npm start
Il tuo utente non raggiunge il daemon di Docker. Aggiungilo al gruppo docker, poi esci e rientra:
sudo usermod -aG docker $USERL'ingress non parte perché la porta 80 o 443 è occupata
Un altro programma sul server, spesso un web server, occupa la porta. Fermalo, oppure sposta l'ingress su altre porte e metti quel programma davanti a Status200 come descritto in Usare il tuo reverse proxy.
npm start termina con "Maximum retries reached"
Il controllo con cui termina npm start si è arreso prima che Status200 rispondesse. Il primo avvio può durare più di quanto il controllo aspetti, mentre si scaricano le immagini e si creano i database. Guarda cosa è in esecuzione e leggi i log:
npm run ps
npm run logsQuando ogni container è in esecuzione, ripeti il controllo con npm run status-check. Se hai spostato l'ingress dalla porta 80, controlla invece la sua nuova porta: bash Tests/Scripts/status-check.sh localhost:8080.
Alcune pagine si caricano, ma gli aggiornamenti in tempo reale o gli upload falliscono
Apri Status200 all'indirizzo in HOST. L'ingress instrada le richieste in base al nome host: solo HOST e localhost raggiungono l'intera applicazione, e qualsiasi altro nome, come l'indirizzo IP del server, viene trattato come dominio di una pagina di stato. Imposta HOST sul nome che si usa, poi esegui npm start.
La registrazione o l'accesso fallisce con "Page not found"
La pagina di registrazione si carica, ma la registrazione fallisce con Page not found - /identity/signup e l'accesso con Page not found - /identity/login. La richiesta ha raggiunto Status200 con un nome host diverso da HOST, quindi l'ingress l'ha instradata come il dominio personalizzato di una pagina di stato, dove la registrazione e l'accesso di Status200 non sono serviti. Controlla entrambe le cose:
HOSTè l'indirizzo che le persone aprono, con la sua porta se ne usano una, comestatus200.example.com:8080. Eseguinpm startdopo averlo cambiato.- Un proxy davanti a Status200 inoltra il nome host richiesto dal browser. Caddy lo fa per impostazione predefinita, Nginx con
proxy_set_header Host $host;come in Usare il tuo reverse proxy, e Apache conProxyPreserveHost On.
Il browser avvisa del certificato dopo che hai impostato PROVISION_SSL
Finché Let's Encrypt non emette il certificato, l'ingress serve un certificato autofirmato temporaneo. Se l'avviso resta per più di qualche minuto, controlla che:
HOSTsia un nome di dominio, non un indirizzo IP nélocalhost.- Il record DNS del dominio punti a questo server.
- La porta 80 sia raggiungibile da Internet, così Let's Encrypt può validare il dominio.
Quando un ordine fallisce, l'app registra un errore che inizia con CoreSSL:EnsurePrimaryHostCertificate, seguito dal motivo:
(export $(grep -v '^#' config.env | xargs) && docker compose logs app) | grep -A 5 CoreSSLLa sonda inclusa risulta Disconnesso dopo che hai spostato la porta dell'ingress
L'Admin Dashboard elenca la sonda in Impostazioni > Monitoraggio > Sonde globali. Raggiunge Status200 su GLOBAL_PROBE_1_STATUS200_URL, che per impostazione predefinita è http://localhost (porta 80). Impostalo sulla nuova porta dell'ingress, per esempio http://localhost:8080, imposta ONEUPTIME_RUNNER_STATUS200_URL allo stesso modo e riavvia Status200.