Docker Compose
Instalați platforma pe un singur gazdă cu definiția oficială Docker Compose, acoperind secretele,TLS, backup-uri, upgrade-uri și pași de depanare.
Repozitorul platformei include o definiție Compose care rulează platforma, PostgreSQL, SeaweedFS și Chrome fără cap pe un singur gazdă.
Pentru sarcinile de lucru care necesită scalare independentă, servicii de date gestionate sau actualizări rulante, utilizați Kubernetes deployment.
Requirements
Secțiune intitulată „Requirements”- Un gazdă Linux cu Docker Engine și Docker Compose v2
- O înregistrare DNS pentru numele de gazdă pe care îl veți utiliza
- A TLS-terminating reverse proxy or load balancer
- Un relay SMTP dacă doriți ca platforma să trimită e-mailuri
- Memorie suficientă pentru platformă și dependențele sale; numai configurația PostgreSQL furnizată necesită 4 GB de bufferuri partajate
Install the platform
Secțiune intitulată „Install the platform”-
Clone the repository
Terminal window git clone https://github.com/getprobo/probo.gitcd proboPăstrați
compose.prod.yamlși directorulcompose/împreună. Definiția compusă montă scriptul de inițializare PostgreSQL și configurația SeaweedFS din acel director. -
Generate application secrets
Terminal window umask 077openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 \-out oauth2-signing-key.pemexport PROBOD_ENCRYPTION_KEY="$(openssl rand -base64 32)"export PROBOD_AUTH_COOKIE_SECRET="$(openssl rand -base64 32)"export PROBOD_AUTH_PASSWORD_PEPPER="$(openssl rand -base64 32)"export PROBOD_TRUST_AUTH_TOKEN_SECRET="$(openssl rand -base64 32)"Modificarea secretelor de criptare, semnare sau autentificare după existența utilizatorilor și a datelor poate invalida sesiunile sau poate face inaccesibile datele stocate.
-
Create the environment file
Înlocuiți
probo.example.comși valorile SMTP, apoi rulați:Terminal window cat > .env <<EOFPROBOD_ENCRYPTION_KEY=${PROBOD_ENCRYPTION_KEY}PROBOD_AUTH_COOKIE_SECRET=${PROBOD_AUTH_COOKIE_SECRET}PROBOD_AUTH_PASSWORD_PEPPER=${PROBOD_AUTH_PASSWORD_PEPPER}PROBOD_TRUST_AUTH_TOKEN_SECRET=${PROBOD_TRUST_AUTH_TOKEN_SECRET}PROBOD_BASE_URL=https://probo.example.comPROBOD_API_ADDR=0.0.0.0:8080PROBOD_API_CORS_ALLOWED_ORIGINS=https://probo.example.comPROBOD_SMTP_ADDR=smtp.example.com:587PROBOD_SMTP_USER=replace-with-smtp-userPROBOD_SMTP_PASSWORD=replace-with-smtp-passwordPROBOD_SMTP_TLS_REQUIRED=truePROBOD_MAILER_SENDER_EMAIL=no-reply@example.comEOFTerminal window chmod 600 .env oauth2-signing-key.pem -
Add the required OAuth signing key
Curentul
compose.prod.yamlnu trece cheia de semnătură OAuth pe platformă. Creațicompose.local.yaml:services:probo:environment:PROBOD_OAUTH2_SERVER_SIGNING_KEY: ${PROBOD_OAUTH2_SERVER_SIGNING_KEY}PROBOD_SMTP_ADDR: ${PROBOD_SMTP_ADDR}PROBOD_SMTP_USER: ${PROBOD_SMTP_USER}PROBOD_SMTP_PASSWORD: ${PROBOD_SMTP_PASSWORD}PROBOD_SMTP_TLS_REQUIRED: ${PROBOD_SMTP_TLS_REQUIRED}PROBOD_MAILER_SENDER_EMAIL: ${PROBOD_MAILER_SENDER_EMAIL}Exportați cheia înainte de fiecare comandă Compoziți:
Terminal window export PROBOD_OAUTH2_SERVER_SIGNING_KEY="$(cat oauth2-signing-key.pem)" -
Review the rendered configuration
Terminal window docker compose \-f compose.prod.yaml \-f compose.local.yaml \configNu continuați dacă o valoare cerută este goală. ieșirea renderată conține secrete, deci nu o salvați sau nu o partajați.
-
Începeți serviciile
Terminal window docker compose \-f compose.prod.yaml \-f compose.local.yaml \up -d -
Verify startup
Terminal window docker compose \-f compose.prod.yaml \-f compose.local.yaml \psdocker compose \-f compose.prod.yaml \-f compose.local.yaml \logs --tail=100 probocurl --fail http://127.0.0.1:8080/Un răspuns HTTP reușit și un serviciu funcțional
proboconfirmă faptul că aplicația este accesibilă. De asemenea, testați autentificarea, încărcarea fișierelor și livrarea de e-mail înainte de a invita utilizatorii.
Put the platform behind HTTPS
Secțiune intitulată „Put the platform behind HTTPS”OprițiTLSla un proxy invers sau la un balancier de încărcare și trimiteți solicitările către portul 8080. Păstrați titlurile originale ___ZBT_I18N_RUNTIME_BLOCK_188__, X-Forwarded-For și X-Forwarded-Proto.
Definiția Compose furnizată publică platforma, porturile PostgreSQL, SeaweedFS și Chrome pe fiecare interfață gazdă.
- restrângerea traficului de intrare cu gazda sau firewall-ul cloud;
- expuneți numai porturile ___ZBT_I18N_RUNTIME_BLOCK_191__ și ___ZBT_I18N_RUNTIME_BLOCK_192__ prin intermediul proxy-ului invers;
- Pentru a preveni accesul extern la porturile
5432,8080,8081,8333,8443,9222și9333; - înlocuiți credențialele PostgreSQL și SeaweedFS combinate sau utilizați servicii gestionate externe;
- Așezați imaginea platformei într-o versiune testată în loc de
latest.
Montajul unui certificat în containerul platformei nu configureazăTLSîn sine.
Data and backups
Secțiune intitulată „Data and backups”Magazinele de implementare sunt prezentate în trei volume numite:
probo-datapentru datele locale ale platformei;postgres-datafor PostgreSQL;seaweedfs-datapentru stocarea obiectelor.
Backup PostgreSQL și SeaweedFS ca un singur punct de recuperare. un dump de baze de date fără obiectele sale corespunzătoare poate lăsa înregistrări document ale căror fișiere nu pot fi restaurate.
Create a database dump with:
docker compose \ -f compose.prod.yaml \ -f compose.local.yaml \ exec -T postgres \ pg_dump -U postgres -d probod --format=custom > probod.dumpUtilizați un instrument de backup conștient de volum sau o captură instantanee de stocare pentru SeaweedFS. Opriți scrierea în timp ce faceți o backup de volum offline și testați restaurarea pe un alt gazdă. Copiați .env, oauth2-signing-key.pem și orice configurație proxy în sistemul de backup criptat separat.
Citiți notele de lansare și faceți mai întâi o copie de rezervă testată, apoi trageți și recreați containerele:
export PROBOD_OAUTH2_SERVER_SIGNING_KEY="$(cat oauth2-signing-key.pem)"
docker compose \ -f compose.prod.yaml \ -f compose.local.yaml \ pull
docker compose \ -f compose.prod.yaml \ -f compose.local.yaml \ up -dVerificați jurnalele platformei și repetați verificările funcționale utilizate în timpul instalării.Migrările bazei de date se execută atunci când se pornește platforma; nu întrerupeți pornirea în timp ce se execută o migrare.
Troubleshooting
Secțiune intitulată „Troubleshooting”the platform exits during startup
Secțiune intitulată „the platform exits during startup”docker compose \ -f compose.prod.yaml \ -f compose.local.yaml \ logs --tail=200 proboDacă jurnalele raportează o lipsă PROBOD_OAUTH2_SERVER_SIGNING_KEY, confirmați că cheia este exportată în shell-ul curent și că ambele fișiere Compoziți sunt incluse în comandă.
PostgreSQL is unhealthy
Secțiune intitulată „PostgreSQL is unhealthy”docker compose \ -f compose.prod.yaml \ -f compose.local.yaml \ logs --tail=200 postgres
docker compose \ -f compose.prod.yaml \ -f compose.local.yaml \ exec postgres pg_isready -U postgres -d probodSetările PostgreSQL furnizate necesită mult mai mult de 4 GB de memorie totală de gazdă. Dacă PostgreSQL este ucis de kernel, creșteți memoria gazdă sau revizuiți configurația acesteia înainte de a reduce limitele.
Uploads or PDF generation fail
Secțiune intitulată „Uploads or PDF generation fail”Verificați jurnalele de platformă, SeaweedFS și Chrome:
docker compose \ -f compose.prod.yaml \ -f compose.local.yaml \ logs --tail=200 probo seaweedfs chromeSee the environment variable reference atunci când se adaugă integrări opționale sau se modifică comportamentul runtime-ului.