Sari la conținut

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.

View as Markdown

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.

  • 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
  1. Clone the repository

    git clone https://github.com/getprobo/probo.git
    cd probo
    

    Keep compose.prod.yaml şi a compose/ Definiția Compose montă scriptul de inițializare PostgreSQL și configurația SeaweedFS din acel director.

  2. Generate application secrets

    umask 077
    openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 \
      -out oauth2-signing-key.pem
    
    export 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.

  3. Create the environment file

    Replace probo.example.com şi valorile SMTP, apoi rulaţi:

    cat > .env <<EOF
    PROBOD_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.com
    PROBOD_API_ADDR=0.0.0.0:8080
    PROBOD_API_CORS_ALLOWED_ORIGINS=https://probo.example.com
    
    PROBOD_SMTP_ADDR=smtp.example.com:587
    PROBOD_SMTP_USER=replace-with-smtp-user
    PROBOD_SMTP_PASSWORD=replace-with-smtp-password
    PROBOD_SMTP_TLS_REQUIRED=true
    PROBOD_MAILER_SENDER_EMAIL=no-reply@example.com
    EOF
    
    chmod 600 .env oauth2-signing-key.pem
    
  4. Add the required OAuth signing key

    The current compose.prod.yaml nu trece cheia de semnătură OAuth pe platformă. compose.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:

    export PROBOD_OAUTH2_SERVER_SIGNING_KEY="$(cat oauth2-signing-key.pem)"
    
  5. Review the rendered configuration

    docker compose \
      -f compose.prod.yaml \
      -f compose.local.yaml \
      config
    

    Nu continuați dacă o valoare cerută este goală. ieșirea renderată conține secrete, deci nu o salvați sau nu o partajați.

  6. Începeți serviciile

    docker compose \
      -f compose.prod.yaml \
      -f compose.local.yaml \
      up -d
    
  7. Verify startup

    docker compose \
      -f compose.prod.yaml \
      -f compose.local.yaml \
      ps
    
    docker compose \
      -f compose.prod.yaml \
      -f compose.local.yaml \
      logs --tail=100 probo
    
    curl --fail http://127.0.0.1:8080/
    

    A successful HTTP response and a running probo Serviciul confirmă faptul că aplicația este accesibilă.De asemenea, testați autentificarea, încărcarea fișierelor și livrarea de e-mailuri înainte de a invita utilizatorii.

Terminarea TLS la un proxy invers sau la un balancier de sarcină și redirecționarea solicitărilor către port 8080. Preserve the original Host, X-Forwarded-For, and X-Forwarded-Proto headers.

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;
  • expose only ports 80 and 443 prin intermediul proxy-ului invers;
  • prevent external access to ports 5432, 8080, 8081, 8333, 8443, 9222, and 9333;
  • înlocuiți credențialele PostgreSQL și SeaweedFS combinate sau utilizați servicii gestionate externe;
  • atârnă imaginea platformei într-o versiune testată în loc de latest.

Montajul unui certificat în containerul platformei nu configurează TLS în sine.

Magazinele de implementare sunt prezentate în trei volume numite:

  • probo-data pentru datele locale ale platformei;
  • postgres-data for PostgreSQL;
  • seaweedfs-data for object storage.

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.dump

Utilizaț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ă. .env, oauth2-signing-key.pem, și orice configurație proxy în sistemul dvs. 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 -d

Verificaț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.

docker compose \
  -f compose.prod.yaml \
  -f compose.local.yaml \
  logs --tail=200 probo

If the logs report a missing 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ă.

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 probod

Setă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.

Verificați jurnalele de platformă, SeaweedFS și Chrome:

docker compose \
  -f compose.prod.yaml \
  -f compose.local.yaml \
  logs --tail=200 probo seaweedfs chrome

See the environment variable reference atunci când se adaugă integrări opționale sau se modifică comportamentul runtime-ului.

Ultima actualizare: