Browse Source

Merge branch 'master' into translate-fa/python-types

pull/13524/head
Mohammad 2 weeks ago
committed by GitHub
parent
commit
b7d79408e5
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      .github/workflows/build-docs.yml
  2. 2
      .github/workflows/contributors.yml
  3. 2
      .github/workflows/deploy-docs.yml
  4. 2
      .github/workflows/label-approved.yml
  5. 2
      .github/workflows/notify-translations.yml
  6. 3
      .github/workflows/people.yml
  7. 2
      .github/workflows/smokeshow.yml
  8. 2
      .github/workflows/sponsors.yml
  9. 6
      .github/workflows/test.yml
  10. 2
      .github/workflows/topic-repos.yml
  11. 2
      .pre-commit-config.yaml
  12. 23
      README.md
  13. 3
      docs/bn/docs/about/index.md
  14. 298
      docs/bn/docs/environment-variables.md
  15. 2
      docs/de/docs/advanced/generate-clients.md
  16. 2
      docs/de/docs/deployment/concepts.md
  17. 18
      docs/de/docs/deployment/https.md
  18. 12
      docs/de/docs/how-to/custom-docs-ui-assets.md
  19. 4
      docs/de/docs/tutorial/bigger-applications.md
  20. 2
      docs/em/docs/deployment/concepts.md
  21. 18
      docs/em/docs/deployment/https.md
  22. 4
      docs/em/docs/tutorial/bigger-applications.md
  23. 62
      docs/en/data/contributors.yml
  24. 2
      docs/en/data/external_links.yml
  25. 211
      docs/en/data/github_sponsors.yml
  26. 826
      docs/en/data/people.yml
  27. 28
      docs/en/data/sponsors.yml
  28. 5
      docs/en/data/sponsors_badge.yml
  29. 550
      docs/en/data/topic_repos.yml
  30. 393
      docs/en/data/translation_reviewers.yml
  31. 98
      docs/en/data/translators.yml
  32. 4
      docs/en/docs/advanced/generate-clients.md
  33. 2
      docs/en/docs/advanced/response-directly.md
  34. 2
      docs/en/docs/async.md
  35. 22
      docs/en/docs/contributing.md
  36. 1
      docs/en/docs/deployment/cloud.md
  37. 4
      docs/en/docs/deployment/concepts.md
  38. 18
      docs/en/docs/deployment/https.md
  39. 15
      docs/en/docs/help-fastapi.md
  40. 12
      docs/en/docs/how-to/custom-docs-ui-assets.md
  41. 106
      docs/en/docs/img/deployment/concepts/process-ram.drawio
  42. 297
      docs/en/docs/img/deployment/concepts/process-ram.drawio.svg
  43. 59
      docs/en/docs/img/deployment/concepts/process-ram.svg
  44. 277
      docs/en/docs/img/deployment/https/https.drawio
  45. 907
      docs/en/docs/img/deployment/https/https.drawio.svg
  46. 62
      docs/en/docs/img/deployment/https/https.svg
  47. 78
      docs/en/docs/img/deployment/https/https01.drawio
  48. 131
      docs/en/docs/img/deployment/https/https01.drawio.svg
  49. 57
      docs/en/docs/img/deployment/https/https01.svg
  50. 110
      docs/en/docs/img/deployment/https/https02.drawio
  51. 245
      docs/en/docs/img/deployment/https/https02.drawio.svg
  52. 57
      docs/en/docs/img/deployment/https/https02.svg
  53. 131
      docs/en/docs/img/deployment/https/https03.drawio
  54. 715
      docs/en/docs/img/deployment/https/https03.drawio.svg
  55. 62
      docs/en/docs/img/deployment/https/https03.svg
  56. 152
      docs/en/docs/img/deployment/https/https04.drawio
  57. 419
      docs/en/docs/img/deployment/https/https04.drawio.svg
  58. 62
      docs/en/docs/img/deployment/https/https04.svg
  59. 166
      docs/en/docs/img/deployment/https/https05.drawio
  60. 641
      docs/en/docs/img/deployment/https/https05.drawio.svg
  61. 62
      docs/en/docs/img/deployment/https/https05.svg
  62. 183
      docs/en/docs/img/deployment/https/https06.drawio
  63. 673
      docs/en/docs/img/deployment/https/https06.drawio.svg
  64. 62
      docs/en/docs/img/deployment/https/https06.svg
  65. 203
      docs/en/docs/img/deployment/https/https07.drawio
  66. 540
      docs/en/docs/img/deployment/https/https07.drawio.svg
  67. 62
      docs/en/docs/img/deployment/https/https07.svg
  68. 217
      docs/en/docs/img/deployment/https/https08.drawio
  69. 625
      docs/en/docs/img/deployment/https/https08.drawio.svg
  70. 62
      docs/en/docs/img/deployment/https/https08.svg
  71. BIN
      docs/en/docs/img/sponsors/dribia.png
  72. BIN
      docs/en/docs/img/sponsors/interviewpal.png
  73. 133
      docs/en/docs/img/sponsors/subtotal-banner.svg
  74. 31
      docs/en/docs/img/sponsors/subtotal.svg
  75. BIN
      docs/en/docs/img/sponsors/zuplo.png
  76. 43
      docs/en/docs/img/tutorial/bigger-applications/package.drawio
  77. 420
      docs/en/docs/img/tutorial/bigger-applications/package.drawio.svg
  78. 1
      docs/en/docs/img/tutorial/bigger-applications/package.svg
  79. 11
      docs/en/docs/index.md
  80. 166
      docs/en/docs/release-notes.md
  81. 4
      docs/en/docs/tutorial/bigger-applications.md
  82. 5
      docs/en/docs/tutorial/cors.md
  83. 4
      docs/en/docs/tutorial/handling-errors.md
  84. 4
      docs/en/docs/tutorial/index.md
  85. 23
      docs/en/docs/tutorial/middleware.md
  86. 20
      docs/en/mkdocs.yml
  87. 40
      docs/en/overrides/main.html
  88. 2
      docs/es/docs/advanced/generate-clients.md
  89. 2
      docs/es/docs/deployment/concepts.md
  90. 2
      docs/es/docs/deployment/docker.md
  91. 18
      docs/es/docs/deployment/https.md
  92. 12
      docs/es/docs/how-to/custom-docs-ui-assets.md
  93. 4
      docs/es/docs/tutorial/bigger-applications.md
  94. 5
      docs/fa/docs/learn/index.md
  95. 2
      docs/ja/docs/deployment/concepts.md
  96. 18
      docs/ja/docs/deployment/https.md
  97. 2
      docs/ja/docs/tutorial/body-fields.md
  98. 2
      docs/ja/docs/tutorial/encoder.md
  99. 2
      docs/ja/docs/tutorial/handling-errors.md
  100. 146
      docs/ko/docs/advanced/events.md

4
.github/workflows/build-docs.yml

@ -53,7 +53,7 @@ jobs:
with:
python-version: "3.11"
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true
@ -95,7 +95,7 @@ jobs:
with:
python-version: "3.11"
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true

2
.github/workflows/contributors.yml

@ -30,7 +30,7 @@ jobs:
with:
python-version: "3.11"
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true

2
.github/workflows/deploy-docs.yml

@ -29,7 +29,7 @@ jobs:
with:
python-version: "3.11"
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true

2
.github/workflows/label-approved.yml

@ -26,7 +26,7 @@ jobs:
with:
python-version: "3.11"
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true

2
.github/workflows/notify-translations.yml

@ -34,7 +34,7 @@ jobs:
with:
python-version: "3.11"
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true

3
.github/workflows/people.yml

@ -30,7 +30,7 @@ jobs:
with:
python-version: "3.11"
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true
@ -51,3 +51,4 @@ jobs:
run: python ./scripts/people.py
env:
GITHUB_TOKEN: ${{ secrets.FASTAPI_PEOPLE }}
SLEEP_INTERVAL: ${{ vars.PEOPLE_SLEEP_INTERVAL }}

2
.github/workflows/smokeshow.yml

@ -26,7 +26,7 @@ jobs:
with:
python-version: '3.9'
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true

2
.github/workflows/sponsors.yml

@ -30,7 +30,7 @@ jobs:
with:
python-version: "3.11"
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true

6
.github/workflows/test.yml

@ -29,7 +29,7 @@ jobs:
with:
python-version: "3.11"
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true
@ -67,7 +67,7 @@ jobs:
with:
python-version: ${{ matrix.python-version }}
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true
@ -112,7 +112,7 @@ jobs:
with:
python-version: '3.8'
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true

2
.github/workflows/topic-repos.yml

@ -25,7 +25,7 @@ jobs:
with:
python-version: "3.11"
- name: Setup uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true

2
.pre-commit-config.yaml

@ -14,7 +14,7 @@ repos:
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.11.2
rev: v0.12.2
hooks:
- id: ruff
args:

23
README.md

@ -48,22 +48,20 @@ The key features are:
<a href="https://blockbee.io?ref=fastapi" target="_blank" title="BlockBee Cryptocurrency Payment Gateway"><img src="https://fastapi.tiangolo.com/img/sponsors/blockbee.png"></a>
<a href="https://platform.sh/try-it-now/?utm_source=fastapi-signup&utm_medium=banner&utm_campaign=FastAPI-signup-June-2023" target="_blank" title="Build, run and scale your apps on a modern, reliable, and secure PaaS."><img src="https://fastapi.tiangolo.com/img/sponsors/platform-sh.png"></a>
<a href="https://www.porter.run" target="_blank" title="Deploy FastAPI on AWS with a few clicks"><img src="https://fastapi.tiangolo.com/img/sponsors/porter.png"></a>
<a href="https://bump.sh/fastapi?utm_source=fastapi&utm_medium=referral&utm_campaign=sponsor" target="_blank" title="Automate FastAPI documentation generation with Bump.sh"><img src="https://fastapi.tiangolo.com/img/sponsors/bump-sh.svg"></a>
<a href="https://github.com/scalar/scalar/?utm_source=fastapi&utm_medium=website&utm_campaign=main-badge" target="_blank" title="Scalar: Beautiful Open-Source API References from Swagger/OpenAPI files"><img src="https://fastapi.tiangolo.com/img/sponsors/scalar.svg"></a>
<a href="https://www.propelauth.com/?utm_source=fastapi&utm_campaign=1223&utm_medium=mainbadge" target="_blank" title="Auth, user management and more for your B2B product"><img src="https://fastapi.tiangolo.com/img/sponsors/propelauth.png"></a>
<a href="https://www.withcoherence.com/?utm_medium=advertising&utm_source=fastapi&utm_campaign=website" target="_blank" title="Coherence"><img src="https://fastapi.tiangolo.com/img/sponsors/coherence.png"></a>
<a href="https://www.mongodb.com/developer/languages/python/python-quickstart-fastapi/?utm_campaign=fastapi_framework&utm_source=fastapi_sponsorship&utm_medium=web_referral" target="_blank" title="Simplify Full Stack Development with FastAPI & MongoDB"><img src="https://fastapi.tiangolo.com/img/sponsors/mongodb.png"></a>
<a href="https://zuplo.link/fastapi-gh" target="_blank" title="Zuplo: Scale, Protect, Document, and Monetize your FastAPI"><img src="https://fastapi.tiangolo.com/img/sponsors/zuplo.png"></a>
<a href="https://zuplo.link/fastapi-gh" target="_blank" title="Zuplo: Deploy, Secure, Document, and Monetize your FastAPI"><img src="https://fastapi.tiangolo.com/img/sponsors/zuplo.png"></a>
<a href="https://liblab.com?utm_source=fastapi" target="_blank" title="liblab - Generate SDKs from FastAPI"><img src="https://fastapi.tiangolo.com/img/sponsors/liblab.png"></a>
<a href="https://docs.render.com/deploy-fastapi?utm_source=deploydoc&utm_medium=referral&utm_campaign=fastapi" target="_blank" title="Deploy & scale any full-stack web app on Render. Focus on building apps, not infra."><img src="https://fastapi.tiangolo.com/img/sponsors/render.svg"></a>
<a href="https://www.coderabbit.ai/?utm_source=fastapi&utm_medium=badge&utm_campaign=fastapi" target="_blank" title="Cut Code Review Time & Bugs in Half with CodeRabbit"><img src="https://fastapi.tiangolo.com/img/sponsors/coderabbit.png"></a>
<a href="https://github.com/deepset-ai/haystack/" target="_blank" title="Build powerful search from composable, open source building blocks"><img src="https://fastapi.tiangolo.com/img/sponsors/haystack-fastapi.svg"></a>
<a href="https://subtotal.com/?utm_source=fastapi&utm_medium=sponsorship&utm_campaign=open-source" target="_blank" title="The Gold Standard in Retail Account Linking"><img src="https://fastapi.tiangolo.com/img/sponsors/subtotal.svg"></a>
<a href="https://databento.com/" target="_blank" title="Pay as you go for market data"><img src="https://fastapi.tiangolo.com/img/sponsors/databento.svg"></a>
<a href="https://speakeasy.com?utm_source=fastapi+repo&utm_medium=github+sponsorship" target="_blank" title="SDKs for your API | Speakeasy"><img src="https://fastapi.tiangolo.com/img/sponsors/speakeasy.png"></a>
<a href="https://speakeasy.com/editor?utm_source=fastapi+repo&utm_medium=github+sponsorship" target="_blank" title="SDKs for your API | Speakeasy"><img src="https://fastapi.tiangolo.com/img/sponsors/speakeasy.png"></a>
<a href="https://www.svix.com/" target="_blank" title="Svix - Webhooks as a service"><img src="https://fastapi.tiangolo.com/img/sponsors/svix.svg"></a>
<a href="https://www.stainlessapi.com/?utm_source=fastapi&utm_medium=referral" target="_blank" title="Stainless | Generate best-in-class SDKs"><img src="https://fastapi.tiangolo.com/img/sponsors/stainless.png"></a>
<a href="https://www.permit.io/blog/implement-authorization-in-fastapi?utm_source=github&utm_medium=referral&utm_campaign=fastapi" target="_blank" title="Fine-Grained Authorization for FastAPI"><img src="https://fastapi.tiangolo.com/img/sponsors/permit.png"></a>
<a href="https://www.interviewpal.com/?utm_source=fastapi&utm_medium=open-source&utm_campaign=dev-hiring" target="_blank" title="InterviewPal - AI Interview Coach for Engineers and Devs"><img src="https://fastapi.tiangolo.com/img/sponsors/interviewpal.png"></a>
<a href="https://dribia.com/en/" target="_blank" title="Dribia - Data Science within your reach"><img src="https://fastapi.tiangolo.com/img/sponsors/dribia.png"></a>
<!-- /sponsors -->
@ -150,7 +148,7 @@ $ pip install "fastapi[standard]"
### Create it
* Create a file `main.py` with:
Create a file `main.py` with:
```Python
from typing import Union
@ -472,15 +470,20 @@ Used by Starlette:
* <a href="https://jinja.palletsprojects.com" target="_blank"><code>jinja2</code></a> - Required if you want to use the default template configuration.
* <a href="https://github.com/Kludex/python-multipart" target="_blank"><code>python-multipart</code></a> - Required if you want to support form <abbr title="converting the string that comes from an HTTP request into Python data">"parsing"</abbr>, with `request.form()`.
Used by FastAPI / Starlette:
Used by FastAPI:
* <a href="https://www.uvicorn.org" target="_blank"><code>uvicorn</code></a> - for the server that loads and serves your application. This includes `uvicorn[standard]`, which includes some dependencies (e.g. `uvloop`) needed for high performance serving.
* `fastapi-cli` - to provide the `fastapi` command.
* `fastapi-cli[standard]` - to provide the `fastapi` command.
* This includes `fastapi-cloud-cli`, which allows you to deploy your FastAPI application to <a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a>.
### Without `standard` Dependencies
If you don't want to include the `standard` optional dependencies, you can install with `pip install fastapi` instead of `pip install "fastapi[standard]"`.
### Without `fastapi-cloud-cli`
If you want to install FastAPI with the standard dependencies but without the `fastapi-cloud-cli`, you can install with `pip install "fastapi[standard-no-fastapi-cloud-cli]"`.
### Additional Optional Dependencies
There are some additional dependencies you might want to install.

3
docs/bn/docs/about/index.md

@ -0,0 +1,3 @@
# সম্পর্কে
**FastAPI** সম্পর্কে বিস্তারিত — এর ডিজাইন, অনুপ্রেরণা ও আরও অনেক কিছু। 🤓

298
docs/bn/docs/environment-variables.md

@ -0,0 +1,298 @@
# এনভায়রনমেন্ট ভেরিয়েবলস
/// tip
আপনি যদি "এনভায়রনমেন্ট ভেরিয়েবলস" কী এবং সেগুলো কীভাবে ব্যবহার করতে হয় সেটা জানেন, তাহলে এই অংশটি স্কিপ করে যেতে পারেন।
///
এনভায়রনমেন্ট ভেরিয়েবল (সংক্ষেপে "**env var**" নামেও পরিচিত) হলো এমন একটি ভেরিয়েবল যা পাইথন কোডের **বাইরে**, **অপারেটিং সিস্টেমে** থাকে এবং আপনার পাইথন কোড (বা অন্যান্য প্রোগ্রাম) দ্বারা যাকে রিড করা যায়।
এনভায়রনমেন্ট ভেরিয়েবলস অ্যাপ্লিকেশনের **সেটিংস** পরিচালনা করতে, পাইথনের **ইনস্টলেশন** প্রক্রিয়ার অংশ হিসেবে, ইত্যাদি কাজে উপযোগী হতে পারে।
## Env Vars তৈরী এবং ব্যবহার
আপনি **শেল (টার্মিনাল)**-এ, পাইথনের প্রয়োজন ছাড়াই, এনভায়রনমেন্ট ভেরিয়েবলস **তৈরি** এবং ব্যবহার করতে পারবেনঃ
//// tab | লিনাক্স, ম্যাকওএস, উইন্ডোজ Bash
<div class="termy">
```console
// আপনি চাইলে MY_NAME নামে একটি env var তৈরি করতে পারেন
$ export MY_NAME="Wade Wilson"
// তারপরে এটিকে চাইলে অন্যান্য প্রোগ্রামে ব্যবহার করতে পারেন
$ echo "Hello $MY_NAME"
Hello Wade Wilson
```
</div>
////
//// tab | উইন্ডোজ পাওয়ারশেল
<div class="termy">
```console
// MY_NAME নামে env var তৈরি
$ $Env:MY_NAME = "Wade Wilson"
// অন্যান্য প্রোগ্রামে এটিকে ব্যবহার
$ echo "Hello $Env:MY_NAME"
Hello Wade Wilson
```
</div>
////
## পাইথনে env vars রিড করা
আপনি চাইলে পাইথনের **বাইরে**, টার্মিনালে (বা অন্য কোনো উপায়ে) এনভায়রনমেন্ট ভেরিয়েবলস তৈরি করতে পারেন, এবং পরে সেগুলো **পাইথনে রিড** (অ্যাক্সেস করতে) পারেন।
উদাহরণস্বরূপ, আপনার `main.py` নামে একটি ফাইল থাকতে পারেঃ
```Python hl_lines="3"
import os
name = os.getenv("MY_NAME", "World")
print(f"Hello {name} from Python")
```
/// tip
<a href="https://docs.python.org/3.8/library/os.html#os.getenv" class="external-link" target="_blank">`os.getenv()`</a> এর দ্বিতীয় আর্গুমেন্টটি হলো এর ডিফল্ট ভ্যালু যা রিটার্ন করা হবে।
যদি এটি দেওয়া না হয়, ডিফল্টভাবে `None` ব্যবহৃত হবে, এখানে আমরা ডিফল্ট ভ্যালু হিসেবে `"World"` ব্যবহার করেছি।
///
তারপরে পাইথন প্রোগ্রামটিকে নিম্নোক্তভাবে কল করা যাবেঃ
//// tab | লিনাক্স, ম্যাকওএস, উইন্ডোজ Bash
<div class="termy">
```console
// এখনো আমরা এনভায়রনমেন্ট ভেরিয়েবল সেট করিনি
$ python main.py
// যেহেতু env var সেট করা হয়নি, তাই আমরা ডিফল্ট ভ্যালু পাচ্ছি
Hello World from Python
// কিন্তু আমরা প্রথমে যদি একটা এনভায়রনমেন্ট ভারিয়েবল তৈরি করে নেই
$ export MY_NAME="Wade Wilson"
// এবং তারপর আবার প্রোগ্রাটিকে কল করি
$ python main.py
// এখন এটি এনভায়রনমেন্ট ভেরিয়েবল রিড করতে পারবে
Hello Wade Wilson from Python
```
</div>
////
//// tab | উইন্ডোজ পাওয়ারশেল
<div class="termy">
```console
// এখনো আমরা এনভায়রনমেন্ট ভেরিয়েবল সেট করিনি
$ python main.py
// যেহেতু env var সেট করা হয়নি, তাই আমরা ডিফল্ট ভ্যালু পাচ্ছি
Hello World from Python
// কিন্তু আমরা প্রথমে যদি একটা এনভায়রনমেন্ট ভারিয়েবল তৈরি করে নেই
$ $Env:MY_NAME = "Wade Wilson"
// এবং তারপর আবার প্রোগ্রাটিকে কল করি
$ python main.py
// এখন এটি এনভায়রনমেন্ট ভেরিয়েবল রিড করতে পারবে
Hello Wade Wilson from Python
```
</div>
////
যেহেতু এনভায়রনমেন্ট ভেরিয়েবলস কোডের বাইরে সেট করা যায়, কিন্তু পরবর্তীতে কোড দ্বারা রিড করা যায়, এবং বাকি ফাইলগুলোর সাথে রাখতে (`git` এ কমিট) হয় না, তাই কনফিগারেশনস বা **সেটিংস** এর জন্য এগুলো সাধারণত ব্যবহৃত হয়ে থাকে।
আপনি একটি এনভায়রনমেন্ট ভেরিয়েবল শুধুমাত্র একটি **নির্দিষ্ট প্রোগ্রাম ইনভোকেশনের** জন্যও তৈরি করতে পারেন, যা শুধুমাত্র সেই প্রোগ্রামের জন্যই এভেইলেবল থাকবে এবং শুধুমাত্র তার চলাকালীন সময় পর্যন্তই সক্রিয় থাকবে।
এটি করতে, প্রোগ্রামটি রান করার ঠিক আগেই, একই লাইনে এনভায়রনমেন্ট ভেরিয়েবল তৈরি করুন:
<div class="termy">
```console
// প্রোগ্রামটি কল করার সময় একই লাইনে MY_NAME এনভায়রনমেন্ট ভেরিয়েবল তৈরি করুন
$ MY_NAME="Wade Wilson" python main.py
// এখন এটি এনভায়রনমেন্ট ভ্যরিয়েবলটিকে রিড করতে পারবে
Hello Wade Wilson from Python
// পরবর্তীতে এনভায়রনমেন্ট ভেরিয়েবলটিকে আর ব্যবহার করা যাচ্ছে না
$ python main.py
Hello World from Python
```
</div>
/// tip
এটি নিয়ে আরো বিস্তারিত পড়তে পারেন এখানে <a href="https://12factor.net/config" class="external-link" target="_blank">The Twelve-Factor App: Config</a>
///
## টাইপস এবং ভ্যালিডেশন
এই এনভায়রনমেন্ট ভেরিয়েবলগুলো শুধুমাত্র **টেক্সট স্ট্রিংস** হ্যান্ডেল করতে পারে, যেহেতু এগুলো পাইথনের বাইরে অবস্থিত এবং অন্যান্য প্রোগ্রাম এবং সিস্টেমের বাকি অংশের (এমনকি বিভিন্ন অপারেটিং সিস্টেম যেমন লিনাক্স, উইন্ডোজ, ম্যাকওএস) সাথে সামঞ্জস্যপূর্ণ হতে হয়।
এর অর্থ হচ্ছে পাইথনে এনভায়রনমেন্ট ভেরিয়েবল থেকে রিড করা **যেকোনো ভ্যালু** একটি `str` হবে, এবং অন্য কোনো টাইপে কনভার্সন বা যেকোনো ভেলিডেশন কোডে আলাদাভাবে করতে হবে।
এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে **এপ্লিকেশন সেটিংস** হ্যান্ডেল করা নিয়ে আরো বিস্তারিত জানা যাবে [Advanced User Guide - Settings and Environment Variables](./advanced/settings.md){.internal-link target=_blank}.
## `PATH` এনভায়রনমেন্ট ভেরিয়েবল
**`PATH`** নামে একটি **বিশেষ** এনভায়রনমেন্ট ভেরিয়েবল রয়েছে, যেটি প্রোগ্রাম রান করার জন্য অপারেটিং সিস্টেমস (লিনাক্স, ম্যাকওএস, উইন্ডোজ) দ্বারা ব্যবহৃত হয়।
`PATH` ভেরিয়েবল এর ভ্যালু হচ্ছে একটি বিশাল স্ট্রিং যা ডিরেক্টরিকে কোলন `:` দিয়ে আলাদা করার মাধ্যমে লিনাক্সে ও ম্যাকওএস এ, এবং সেমিকোলন `;` এর মাধ্যমে উইন্ডোজ এ তৈরি করা থাকে।
উদাহরণস্বরূপ, `PATH` ভেরিয়েবল নিচের মতো দেখতে হতে পারেঃ
//// tab | লিনাক্স, ম্যাকওএস
```plaintext
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
```
তারমানে হলো সিস্টেম প্রোগ্রামগুলোকে নিচের ডিরেক্টরিগুলোতে খুঁজবেঃ
* `/usr/local/bin`
* `/usr/bin`
* `/bin`
* `/usr/sbin`
* `/sbin`
////
//// tab | উইন্ডোজ
```plaintext
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32
```
তারমানে হলো সিস্টেম প্রোগ্রামগুলোকে নিচের ডিরেক্টরিগুলোতে খুঁজবেঃ
* `C:\Program Files\Python312\Scripts`
* `C:\Program Files\Python312`
* `C:\Windows\System32`
////
যখন আপনি টার্মিনালে কোনো **কমান্ড** লিখবেন, অপারেটিং সিস্টেম **প্রত্যেকটি ডিরেক্টরিতে** প্রোগ্রামটি **খুঁজবে** যেগুলো `PATH` এনভায়রনমেন্ট ভেরিয়েবল এ লিস্ট করা আছে।
উদাহরণস্বরূপ, যখন আপনি টার্মিনালে `python` টাইপ করবেন, অপারেটিং সিস্টেম এই লিস্ট এর **প্রথম ডিরেক্টরিতে** `python` নামের একটি প্রোগ্রাম খুঁজবে।
যদি এটি খুঁজে পায়, তাহলে এটি প্রোগ্রামটিকে ব্যবহার করবে। অন্যথায় এটি **অন্যান্য ডিরেক্টরিগুলোতে** এটিকে খুঁজতে থাকবে।
### পাইথন ইনস্টল এবং `PATH` আপডেট
যখন আপনি পাইথন ইনস্টল করেন, আপনি `PATH` এনভায়রনমেন্ট ভেরিয়েবল আপডেট করতে চান কিনা সেটা জিজ্ঞেস করা হতে পারে।
//// tab | লিনাক্স, ম্যাকওএস
ধরা যাক আপনি পাইথন ইনস্টল করলেন এবং এটি `/opt/custompython/bin` ডিরেক্টরিতে ইনস্টল হচ্ছে।
যদি আপনি "Yes" সিলেক্ট করে `PATH` এনভায়রনমেন্ট ভেরিয়েবল আপডেট করতে চান, তাহলে ইনস্টলার `/opt/custompython/bin` কে `PATH` এনভায়রনমেন্ট ভেরিয়েবল এ এড করে দিবে।
এটা দেখতে এমনটা হতে পারেঃ
```plaintext
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin
```
এইভাবে, আপনি যখন টার্মিনালে `python` টাইপ করেন, সিস্টেম পাইথন প্রোগ্রামটিকে `/opt/custompython/bin` (সর্বশেষ ডিরেক্টরি) তে খুঁজে পাবে এবং এটাকে ব্যবহার করবে।
////
//// tab | উইন্ডোজ
ধরা যাক আপনি পাইথন ইনস্টল করলেন এবং এটি `C:\opt\custompython\bin` ডিরেক্টরিতে ইনস্টল হচ্ছে।
যদি আপনি "Yes" সিলেক্ট করে `PATH` এনভায়রনমেন্ট ভেরিয়েবল আপডেট করতে চান, তাহলে ইনস্টলার `C:\opt\custompython\bin` কে `PATH` এনভায়রনমেন্ট ভেরিয়েবল এ এড করে দিবে।
```plaintext
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin
```
এইভাবে, আপনি যখন টার্মিনালে `python` টাইপ করেন, সিস্টেম পাইথন প্রোগ্রামটিকে `C:\opt\custompython\bin` (সর্বশেষ ডিরেক্টরি) তে খুঁজে পাবে এবং এটাকে ব্যবহার করবে।
////
তাই, আপনি যদি টাইপ করেনঃ
<div class="termy">
```console
$ python
```
</div>
//// tab | লিনাক্স, ম্যাকওএস
সিস্টেম `python` প্রোগ্রামকে `/opt/custompython/bin`**খুঁজে পাবে** এবং এটাকে রান করবে।
এটা মোটামুটিভাবে নিচের মতো করে লেখার সমান হবেঃ
<div class="termy">
```console
$ /opt/custompython/bin/python
```
</div>
////
//// tab | উইন্ডোজ
সিস্টেম `python` প্রোগ্রামকে `C:\opt\custompython\bin\python`**খুঁজে পাবে** এবং এটাকে রান করবে।
এটা মোটামুটিভাবে নিচের মতো করে লেখার সমান হবেঃ
<div class="termy">
```console
$ C:\opt\custompython\bin\python
```
</div>
////
এই তথ্যগুলো [ভার্চুয়াল এনভায়রনমেন্টস](virtual-environments.md){.internal-link target=_blank} শেখার ক্ষেত্রে সহায়ক হবে।
## উপসংহার
এর মাধ্যমে আপনি **এনভায়রনমেন্ট ভেরিয়েবলস** কি এবং এটিকে পাইথনে কিভাবে ব্যবহার করতে হয় তার সম্পর্কে বেসিক ধারনা পেলেন।
চাইলে এই সম্পর্কে আরো বিস্তারিত পড়তে পারেন <a href="https://en.wikipedia.org/wiki/Environment_variable" class="external-link" target="_blank">Wikipedia for Environment Variable</a> এ।
অনেক ক্ষেত্রে, দেখা মাত্রই এনভায়রনমেন্ট ভেরিয়েবল কীভাবে প্রয়োজন হবে তা স্পষ্ট হয় না। কিন্তু ডেভেলপমেন্টের সময় আপনি নানা রকম পরিস্থিতিতে এগুলোর সম্মুখীন হবেন, তাই এগুলো সম্পর্কে জেনে রাখা ভালো।
উদাহরণস্বরূপ, আপনার এই ইনফরমেশনটি পরবর্তী, [ভার্চুয়াল এনভায়রনমেন্টস](virtual-environments.md) অংশে দরকার হবে।

2
docs/de/docs/advanced/generate-clients.md

@ -20,7 +20,7 @@ Einige von diesen ✨ [**sponsern FastAPI**](../help-fastapi.md#den-autor-sponse
Und es zeigt deren wahres Engagement für FastAPI und seine **Community** (Sie), da diese Ihnen nicht nur einen **guten Service** bieten möchten, sondern auch sicherstellen möchten, dass Sie über ein **gutes und gesundes Framework** verfügen, FastAPI. 🙇
Beispielsweise könnten Sie <a href="https://speakeasy.com/?utm_source=fastapi+repo&utm_medium=github+sponsorship" class="external-link" target="_blank">Speakeasy</a> ausprobieren.
Beispielsweise könnten Sie <a href="https://speakeasy.com/editor?utm_source=fastapi+repo&utm_medium=github+sponsorship" class="external-link" target="_blank">Speakeasy</a> ausprobieren.
Es gibt auch mehrere andere Unternehmen, welche ähnliche Dienste anbieten und die Sie online suchen und finden können. 🤓

2
docs/de/docs/deployment/concepts.md

@ -216,7 +216,7 @@ Dieser Manager-Prozess wäre wahrscheinlich derjenige, welcher der IP am **Port*
Diese Workerprozesse würden Ihre Anwendung ausführen, sie würden die Hauptberechnungen durchführen, um einen **Request** entgegenzunehmen und eine **Response** zurückzugeben, und sie würden alles, was Sie in Variablen einfügen, in den RAM laden.
<img src="/img/deployment/concepts/process-ram.svg">
<img src="/img/deployment/concepts/process-ram.drawio.svg">
Und natürlich würden auf derselben Maschine neben Ihrer Anwendung wahrscheinlich auch **andere Prozesse** laufen.

18
docs/de/docs/deployment/https.md

@ -85,7 +85,7 @@ Zuerst würde der Browser mithilfe der **DNS-Server** herausfinden, welches die
Die DNS-Server geben dem Browser eine bestimmte **IP-Adresse** zurück. Das wäre die von Ihrem Server verwendete öffentliche IP-Adresse, die Sie in den DNS-Servern konfiguriert haben.
<img src="/img/deployment/https/https01.svg">
<img src="/img/deployment/https/https01.drawio.svg">
### TLS-Handshake-Start
@ -93,7 +93,7 @@ Der Browser kommuniziert dann mit dieser IP-Adresse über **Port 443** (den HTTP
Der erste Teil der Kommunikation besteht lediglich darin, die Verbindung zwischen dem Client und dem Server herzustellen und die zu verwendenden kryptografischen Schlüssel usw. zu vereinbaren.
<img src="/img/deployment/https/https02.svg">
<img src="/img/deployment/https/https02.drawio.svg">
Diese Interaktion zwischen dem Client und dem Server zum Aufbau der TLS-Verbindung wird als **<abbr title="TLS-Handschlag">TLS-Handshake</abbr>** bezeichnet.
@ -111,7 +111,7 @@ Mithilfe der oben beschriebenen **SNI-Erweiterung** würde der TLS-Terminierungs
In diesem Fall würde er das Zertifikat für `someapp.example.com` verwenden.
<img src="/img/deployment/https/https03.svg">
<img src="/img/deployment/https/https03.drawio.svg">
Der Client **vertraut** bereits der Entität, die das TLS-Zertifikat generiert hat (in diesem Fall Let's Encrypt, aber wir werden später mehr darüber erfahren), sodass er **verifizieren** kann, dass das Zertifikat gültig ist.
@ -133,19 +133,19 @@ Da Client und Server (sprich, der Browser und der TLS-Terminierungsproxy) nun ü
Der Client sendet also einen **HTTPS-Request**. Das ist einfach ein HTTP-Request über eine verschlüsselte TLS-Verbindung.
<img src="/img/deployment/https/https04.svg">
<img src="/img/deployment/https/https04.drawio.svg">
### Den Request entschlüsseln
Der TLS-Terminierungsproxy würde die vereinbarte Verschlüsselung zum **Entschlüsseln des Requests** verwenden und den **einfachen (entschlüsselten) HTTP-Request** an den Prozess weiterleiten, der die Anwendung ausführt (z. B. einen Prozess, bei dem Uvicorn die FastAPI-Anwendung ausführt).
<img src="/img/deployment/https/https05.svg">
<img src="/img/deployment/https/https05.drawio.svg">
### HTTP-Response
Die Anwendung würde den Request verarbeiten und eine **einfache (unverschlüsselte) HTTP-Response** an den TLS-Terminierungsproxy senden.
<img src="/img/deployment/https/https06.svg">
<img src="/img/deployment/https/https06.drawio.svg">
### HTTPS-Response
@ -153,7 +153,7 @@ Der TLS-Terminierungsproxy würde dann die Response mithilfe der zuvor vereinbar
Als Nächstes überprüft der Browser, ob die Response gültig und mit dem richtigen kryptografischen Schlüssel usw. verschlüsselt ist. Anschließend **entschlüsselt er die Response** und verarbeitet sie.
<img src="/img/deployment/https/https07.svg">
<img src="/img/deployment/https/https07.drawio.svg">
Der Client (Browser) weiß, dass die Response vom richtigen Server kommt, da dieser die Kryptografie verwendet, die zuvor mit dem **HTTPS-Zertifikat** vereinbart wurde.
@ -163,7 +163,7 @@ Auf demselben Server (oder denselben Servern) könnten sich **mehrere Anwendunge
Nur ein Prozess kann diese spezifische IP und den Port verarbeiten (in unserem Beispiel der TLS-Terminierungsproxy), aber die anderen Anwendungen/Prozesse können auch auf dem/den Server(n) ausgeführt werden, solange sie nicht versuchen, dieselbe **Kombination aus öffentlicher IP und Port** zu verwenden.
<img src="/img/deployment/https/https08.svg">
<img src="/img/deployment/https/https08.drawio.svg">
Auf diese Weise könnte der TLS-Terminierungsproxy HTTPS und Zertifikate für **mehrere Domains**, für mehrere Anwendungen, verarbeiten und die Requests dann jeweils an die richtige Anwendung weiterleiten.
@ -173,7 +173,7 @@ Irgendwann in der Zukunft würde jedes Zertifikat **ablaufen** (etwa 3 Monate na
Und dann gäbe es ein anderes Programm (in manchen Fällen ist es ein anderes Programm, in manchen Fällen ist es derselbe TLS-Terminierungsproxy), das mit Let's Encrypt kommuniziert und das/die Zertifikat(e) erneuert.
<img src="/img/deployment/https/https.svg">
<img src="/img/deployment/https/https.drawio.svg">
Die **TLS-Zertifikate** sind **einem Domainnamen zugeordnet**, nicht einer IP-Adresse.

12
docs/de/docs/how-to/custom-docs-ui-assets.md

@ -98,7 +98,7 @@ Sie können wahrscheinlich mit der rechten Maustaste auf jeden Link klicken und
Und **ReDoc** verwendet diese Datei:
* <a href="https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js" class="external-link" target="_blank">`redoc.standalone.js`</a>
* <a href="https://cdn.jsdelivr.net/npm/redoc@2/bundles/redoc.standalone.js" class="external-link" target="_blank">`redoc.standalone.js`</a>
Danach könnte Ihre Dateistruktur wie folgt aussehen:
@ -129,14 +129,8 @@ Sie sollten eine sehr lange JavaScript-Datei für **ReDoc** sehen.
Sie könnte beginnen mit etwas wie:
```JavaScript
/*!
* ReDoc - OpenAPI/Swagger-generated API Reference Documentation
* -------------------------------------------------------------
* Version: "2.0.0-rc.18"
* Repo: https://github.com/Redocly/redoc
*/
!function(e,t){"object"==typeof exports&&"object"==typeof m
/*! For license information please see redoc.standalone.js.LICENSE.txt */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("null")):
...
```

4
docs/de/docs/tutorial/bigger-applications.md

@ -52,7 +52,7 @@ from app.routers import items
* Es gibt auch ein Unterverzeichnis `app/internal/` mit einer weiteren Datei `__init__.py`, es handelt sich also um ein weiteres „Python-Subpackage“: `app.internal`.
* Und die Datei `app/internal/admin.py` ist ein weiteres Submodul: `app.internal.admin`.
<img src="/img/tutorial/bigger-applications/package.svg">
<img src="/img/tutorial/bigger-applications/package.drawio.svg">
Die gleiche Dateistruktur mit Kommentaren:
@ -270,7 +270,7 @@ Aber diese Datei existiert nicht, unsere Abhängigkeiten befinden sich in einer
Erinnern Sie sich, wie unsere Anwendungs-/Dateistruktur aussieht:
<img src="/img/tutorial/bigger-applications/package.svg">
<img src="/img/tutorial/bigger-applications/package.drawio.svg">
---

2
docs/em/docs/deployment/concepts.md

@ -216,7 +216,7 @@
👈 👨‍🏭 🛠️ 🔜 🕐 🏃‍♂ 👆 🈸, 👫 🔜 🎭 👑 📊 📨 **📨** &amp; 📨 **📨**, &amp; 👫 🔜 📐 🕳 👆 🚮 🔢 💾.
<img src="/img/deployment/concepts/process-ram.svg">
<img src="/img/deployment/concepts/process-ram.drawio.svg">
&amp; ↗️, 🎏 🎰 🔜 🎲 ✔️ **🎏 🛠️** 🏃 👍, ↖️ ⚪️➡️ 👆 🈸.

18
docs/em/docs/deployment/https.md

@ -85,7 +85,7 @@
🏓 💽 🔜 💬 🖥 ⚙️ 🎯 **📢 📢**. 👈 🔜 📢 📢 📢 ⚙️ 👆 💽, 👈 👆 🔗 🏓 💽.
<img src="/img/deployment/https/https01.svg">
<img src="/img/deployment/https/https01.drawio.svg">
### 🤝 🤝 ▶️
@ -93,7 +93,7 @@
🥇 🍕 📻 🛠️ 🔗 🖖 👩‍💻 &amp; 💽 &amp; 💭 🔐 🔑 👫 🔜 ⚙️, ♒️.
<img src="/img/deployment/https/https02.svg">
<img src="/img/deployment/https/https02.drawio.svg">
👉 🔗 🖖 👩‍💻 &amp; 💽 🛠️ 🤝 🔗 🤙 **🤝 🤝**.
@ -111,7 +111,7 @@
👉 💼, ⚫️ 🔜 ⚙️ 📄 `someapp.example.com`.
<img src="/img/deployment/https/https03.svg">
<img src="/img/deployment/https/https03.drawio.svg">
👩‍💻 ⏪ **💙** 👨‍💼 👈 🏗 👈 🤝 📄 (👉 💼 ➡️ 🗜, ✋️ 👥 🔜 👀 🔃 👈 ⏪), ⚫️ 💪 **✔** 👈 📄 ☑.
@ -133,19 +133,19 @@
, 👩‍💻 📨 **🇺🇸🔍 📨**. 👉 🇺🇸🔍 📨 🔘 🗜 🤝 🔗.
<img src="/img/deployment/https/https04.svg">
<img src="/img/deployment/https/https04.drawio.svg">
### 🗜 📨
🤝 ❎ 🗳 🔜 ⚙️ 🔐 ✔ **🗜 📨**, &amp; 🔜 📶 **✅ (🗜) 🇺🇸🔍 📨** 🛠️ 🏃 🈸 (🖼 🛠️ ⏮️ Uvicorn 🏃‍♂ FastAPI 🈸).
<img src="/img/deployment/https/https05.svg">
<img src="/img/deployment/https/https05.drawio.svg">
### 🇺🇸🔍 📨
🈸 🔜 🛠️ 📨 &amp; 📨 **✅ (💽) 🇺🇸🔍 📨** 🤝 ❎ 🗳.
<img src="/img/deployment/https/https06.svg">
<img src="/img/deployment/https/https06.drawio.svg">
### 🇺🇸🔍 📨
@ -153,7 +153,7 @@
⏭, 🖥 🔜 ✔ 👈 📨 ☑ &amp; 🗜 ⏮️ ▶️️ 🔐 🔑, ♒️. ⚫️ 🔜 ⤴️ **🗜 📨** &amp; 🛠️ ⚫️.
<img src="/img/deployment/https/https07.svg">
<img src="/img/deployment/https/https07.drawio.svg">
👩‍💻 (🖥) 🔜 💭 👈 📨 👟 ⚪️➡️ ☑ 💽 ↩️ ⚫️ ⚙️ ⚛ 👫 ✔ ⚙️ **🇺🇸🔍 📄** ⏭.
@ -163,7 +163,7 @@
🕴 1️⃣ 🛠️ 💪 🚚 🎯 📢 &amp; ⛴ (🤝 ❎ 🗳 👆 🖼) ✋️ 🎏 🈸/🛠️ 💪 🏃 🔛 💽(Ⓜ) 💁‍♂️, 📏 👫 🚫 🔄 ⚙️ 🎏 **🌀 📢 📢 &amp; ⛴**.
<img src="/img/deployment/https/https08.svg">
<img src="/img/deployment/https/https08.drawio.svg">
👈 🌌, 🤝 ❎ 🗳 💪 🍵 🇺🇸🔍 &amp; 📄 **💗 🆔**, 💗 🈸, &amp; ⤴️ 📶 📨 ▶️️ 🈸 🔠 💼.
@ -173,7 +173,7 @@
&amp; ⤴️, 📤 🔜 ➕1️⃣ 📋 (💼 ⚫️ ➕1️⃣ 📋, 💼 ⚫️ 💪 🎏 🤝 ❎ 🗳) 👈 🔜 💬 ➡️ 🗜, &amp; ♻ 📄(Ⓜ).
<img src="/img/deployment/https/https.svg">
<img src="/img/deployment/https/https.drawio.svg">
**🤝 📄** **🔗 ⏮️ 🆔 📛**, 🚫 ⏮️ 📢 📢.

4
docs/em/docs/tutorial/bigger-applications.md

@ -52,7 +52,7 @@ from app.routers import items
* 📤 📁 `app/internal/` ⏮️ ➕1️⃣ 📁 `__init__.py`, ⚫️ ➕1️⃣ "🐍 📦": `app.internal`.
* &amp; 📁 `app/internal/admin.py` ➕1️⃣ 🔁: `app.internal.admin`.
<img src="/img/tutorial/bigger-applications/package.svg">
<img src="/img/tutorial/bigger-applications/package.drawio.svg">
🎏 📁 📊 ⏮️ 🏤:
@ -244,7 +244,7 @@ from .dependencies import get_token_header
💭 ❔ 👆 📱/📁 📊 👀 💖:
<img src="/img/tutorial/bigger-applications/package.svg">
<img src="/img/tutorial/bigger-applications/package.drawio.svg">
---

62
docs/en/data/contributors.yml

@ -1,18 +1,23 @@
tiangolo:
login: tiangolo
count: 723
count: 753
avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=cb5d06e73a9e1998141b1641aa88e443c6717651&v=4
url: https://github.com/tiangolo
dependabot:
login: dependabot
count: 94
count: 104
avatarUrl: https://avatars.githubusercontent.com/in/29110?v=4
url: https://github.com/apps/dependabot
alejsdev:
login: alejsdev
count: 47
avatarUrl: https://avatars.githubusercontent.com/u/90076947?u=356f39ff3f0211c720b06d3dbb060e98884085e3&v=4
avatarUrl: https://avatars.githubusercontent.com/u/90076947?u=638c65283ac9e9e2c3a0f9d1e3370db4b8a2c58d&v=4
url: https://github.com/alejsdev
pre-commit-ci:
login: pre-commit-ci
count: 33
avatarUrl: https://avatars.githubusercontent.com/in/68672?v=4
url: https://github.com/apps/pre-commit-ci
github-actions:
login: github-actions
count: 26
@ -23,11 +28,6 @@ Kludex:
count: 23
avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=df8a3f06ba8f55ae1967a3e2d5ed882903a4e330&v=4
url: https://github.com/Kludex
pre-commit-ci:
login: pre-commit-ci
count: 22
avatarUrl: https://avatars.githubusercontent.com/in/68672?v=4
url: https://github.com/apps/pre-commit-ci
dmontagu:
login: dmontagu
count: 17
@ -70,7 +70,7 @@ vishnuvskvkl:
url: https://github.com/vishnuvskvkl
svlandeg:
login: svlandeg
count: 6
count: 7
avatarUrl: https://avatars.githubusercontent.com/u/8796347?u=556c97650c27021911b0b9447ec55e75987b0e8a&v=4
url: https://github.com/svlandeg
alissadb:
@ -116,7 +116,7 @@ hitrust:
ShahriyarR:
login: ShahriyarR
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/3852029?u=c9a1691e5ebdc94cbf543086099a6ed705cdb873&v=4
avatarUrl: https://avatars.githubusercontent.com/u/3852029?u=631b2ae59360ab380c524b32bc3d245aff1165af&v=4
url: https://github.com/ShahriyarR
adriangb:
login: adriangb
@ -171,7 +171,7 @@ hukkin:
marcosmmb:
login: marcosmmb
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/6181089?u=b8567a842b38c5570c315b2b7ca766fa7be6721e&v=4
avatarUrl: https://avatars.githubusercontent.com/u/6181089?u=03c50eec631857d84df5232890780d00a3f76903&v=4
url: https://github.com/marcosmmb
Serrones:
login: Serrones
@ -183,11 +183,11 @@ uriyyo:
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/32038156?u=a27b65a9ec3420586a827a0facccbb8b6df1ffb3&v=4
url: https://github.com/uriyyo
amacfie:
login: amacfie
andrew222651:
login: andrew222651
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/889657?u=d70187989940b085bcbfa3bedad8dbc5f3ab1fe7&v=4
url: https://github.com/amacfie
url: https://github.com/andrew222651
rkbeatss:
login: rkbeatss
count: 3
@ -311,7 +311,7 @@ dconathan:
Jamim:
login: Jamim
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/5607572?u=0cf3027bec78ba4f0b89802430c136bc69847d7a&v=4
avatarUrl: https://avatars.githubusercontent.com/u/5607572?u=9ce0b6a6d1a5124e28b3c04d8d26827ca328713a&v=4
url: https://github.com/Jamim
svalouch:
login: svalouch
@ -366,7 +366,7 @@ sattosan:
michaeloliverx:
login: michaeloliverx
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/55017335?u=e606eb5cc397c07523be47637b1ee796904fbb59&v=4
avatarUrl: https://avatars.githubusercontent.com/u/55017335?u=efb0cb6e261ff64d862fafb91ee80fc2e1f8a2ed&v=4
url: https://github.com/michaeloliverx
voegtlel:
login: voegtlel
@ -488,6 +488,11 @@ Lancetnik:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/44573917?u=f9a18be7324333daf9cc314c35c3051f0a20a7a6&v=4
url: https://github.com/Lancetnik
joakimnordling:
login: joakimnordling
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/6637576?u=df5d99db9b899b399effd429f4358baaa6f7199c&v=4
url: https://github.com/joakimnordling
yogabonito:
login: yogabonito
count: 2
@ -508,6 +513,11 @@ tamird:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/1535036?v=4
url: https://github.com/tamird
ndimares:
login: ndimares
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/6267663?u=cfb27efde7a7212be8142abb6c058a1aeadb41b1&v=4
url: https://github.com/ndimares
rabinlamadong:
login: rabinlamadong
count: 2
@ -518,6 +528,11 @@ AyushSinghal1794:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/89984761?v=4
url: https://github.com/AyushSinghal1794
gsheni:
login: gsheni
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/8726321?u=ee3bd9ff6320f4715d1dd9671a3d55cccb65b984&v=4
url: https://github.com/gsheni
DanielKusyDev:
login: DanielKusyDev
count: 2
@ -528,3 +543,18 @@ DanielYang59:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/80093591?u=63873f701c7c74aac83c906800a1dddc0bc8c92f&v=4
url: https://github.com/DanielYang59
valentinDruzhinin:
login: valentinDruzhinin
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/12831905?u=aae1ebc675c91e8fa582df4fcc4fc4128106344d&v=4
url: https://github.com/valentinDruzhinin
blueswen:
login: blueswen
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/1564148?u=6d6b8cc8f2b5cef715e68d6175154a8a94d518ee&v=4
url: https://github.com/blueswen
YuriiMotov:
login: YuriiMotov
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/109919500?u=e83a39697a2d33ab2ec9bfbced794ee48bc29cec&v=4
url: https://github.com/YuriiMotov

2
docs/en/data/external_links.yml

@ -412,7 +412,7 @@ Talks:
link: https://www.youtube.com/watch?v=3DLwPcrE5mA
title: 'PyCon UK 2019: FastAPI from the ground up'
Taiwanese:
- author: Bluewen
- author: Blueswen
author_link: https://github.com/blueswen
link: https://www.youtube.com/watch?v=y3sumuoDq4w
title: 'PyCon TW 2024: 全方位強化 Python 服務可觀測性:以 FastAPI 和 Grafana Stack 為例'

211
docs/en/data/github_sponsors.yml

@ -1,22 +1,13 @@
sponsors:
- - login: classmethod
avatarUrl: https://avatars.githubusercontent.com/u/1532151?v=4
url: https://github.com/classmethod
- - login: renderinc
avatarUrl: https://avatars.githubusercontent.com/u/36424661?v=4
url: https://github.com/renderinc
- login: bump-sh
avatarUrl: https://avatars.githubusercontent.com/u/33217836?v=4
url: https://github.com/bump-sh
- login: Nixtla
avatarUrl: https://avatars.githubusercontent.com/u/79945230?v=4
url: https://github.com/Nixtla
- login: andrew-propelauth
avatarUrl: https://avatars.githubusercontent.com/u/89474256?u=1188c27cb744bbec36447a2cfd4453126b2ddb5c&v=4
avatarUrl: https://avatars.githubusercontent.com/u/89474256?u=c98993dec8553c09d424ede67bbe86e5c35f48c9&v=4
url: https://github.com/andrew-propelauth
- login: liblaber
avatarUrl: https://avatars.githubusercontent.com/u/100821118?v=4
url: https://github.com/liblaber
- login: zanfaruqui
avatarUrl: https://avatars.githubusercontent.com/u/104461687?v=4
url: https://github.com/zanfaruqui
- login: blockbee-io
avatarUrl: https://avatars.githubusercontent.com/u/115143449?u=1b8620c2d6567c4df2111a371b85a51f448f9b85&v=4
url: https://github.com/blockbee-io
@ -26,16 +17,25 @@ sponsors:
- login: coderabbitai
avatarUrl: https://avatars.githubusercontent.com/u/132028505?v=4
url: https://github.com/coderabbitai
- login: porter-dev
avatarUrl: https://avatars.githubusercontent.com/u/62078005?v=4
url: https://github.com/porter-dev
- login: madisonredtfeldt
avatarUrl: https://avatars.githubusercontent.com/u/152656511?v=4
url: https://github.com/madisonredtfeldt
- login: subtotal
avatarUrl: https://avatars.githubusercontent.com/u/176449348?v=4
url: https://github.com/subtotal
- login: Nixtla
avatarUrl: https://avatars.githubusercontent.com/u/79945230?v=4
url: https://github.com/Nixtla
- login: scalar
avatarUrl: https://avatars.githubusercontent.com/u/301879?v=4
url: https://github.com/scalar
- - login: ObliviousAI
avatarUrl: https://avatars.githubusercontent.com/u/65656077?v=4
url: https://github.com/ObliviousAI
- - login: svix
- - login: dribia
avatarUrl: https://avatars.githubusercontent.com/u/41189616?v=4
url: https://github.com/dribia
- login: svix
avatarUrl: https://avatars.githubusercontent.com/u/80175132?v=4
url: https://github.com/svix
- login: stainless-api
@ -50,18 +50,21 @@ sponsors:
- login: permitio
avatarUrl: https://avatars.githubusercontent.com/u/71775833?v=4
url: https://github.com/permitio
- - login: mercedes-benz
avatarUrl: https://avatars.githubusercontent.com/u/34240465?v=4
url: https://github.com/mercedes-benz
- login: xoflare
- - login: xoflare
avatarUrl: https://avatars.githubusercontent.com/u/74335107?v=4
url: https://github.com/xoflare
- login: marvin-robot
avatarUrl: https://avatars.githubusercontent.com/u/41086007?u=b9fcab402d0cd0aec738b6574fe60855cb0cd36d&v=4
url: https://github.com/marvin-robot
- login: mercedes-benz
avatarUrl: https://avatars.githubusercontent.com/u/34240465?v=4
url: https://github.com/mercedes-benz
- login: Ponte-Energy-Partners
avatarUrl: https://avatars.githubusercontent.com/u/114745848?v=4
url: https://github.com/Ponte-Energy-Partners
- login: snapit-cypher
avatarUrl: https://avatars.githubusercontent.com/u/115662654?v=4
url: https://github.com/snapit-cypher
- login: LambdaTest-Inc
avatarUrl: https://avatars.githubusercontent.com/u/171592363?u=96606606a45fa170427206199014f2a5a2a4920b&v=4
url: https://github.com/LambdaTest-Inc
@ -77,59 +80,50 @@ sponsors:
- - login: takashi-yoneya
avatarUrl: https://avatars.githubusercontent.com/u/33813153?u=2d0522bceba0b8b69adf1f2db866503bd96f944e&v=4
url: https://github.com/takashi-yoneya
- login: Doist
avatarUrl: https://avatars.githubusercontent.com/u/2565372?v=4
url: https://github.com/Doist
- - login: mainframeindustries
avatarUrl: https://avatars.githubusercontent.com/u/55092103?v=4
url: https://github.com/mainframeindustries
- login: CanoaPBC
avatarUrl: https://avatars.githubusercontent.com/u/64223768?v=4
url: https://github.com/CanoaPBC
- login: yasyf
avatarUrl: https://avatars.githubusercontent.com/u/709645?u=f36736b3c6a85f578886ecc42a740e7b436e7a01&v=4
url: https://github.com/yasyf
- - login: alixlahuec
avatarUrl: https://avatars.githubusercontent.com/u/29543316?u=44357eb2a93bccf30fb9d389b8befe94a3d00985&v=4
url: https://github.com/alixlahuec
- - login: primer-io
avatarUrl: https://avatars.githubusercontent.com/u/62146168?v=4
url: https://github.com/primer-io
- login: povilasb
avatarUrl: https://avatars.githubusercontent.com/u/1213442?u=b11f58ed6ceea6e8297c9b310030478ebdac894d&v=4
url: https://github.com/povilasb
- - login: upciti
avatarUrl: https://avatars.githubusercontent.com/u/43346262?v=4
url: https://github.com/upciti
- login: freddiev4
avatarUrl: https://avatars.githubusercontent.com/u/8339018?u=1aad5b4f5a04cb750852b843d5e1d8f4ce339c2e&v=4
url: https://github.com/freddiev4
- - login: samuelcolvin
avatarUrl: https://avatars.githubusercontent.com/u/4039449?u=42eb3b833047c8c4b4f647a031eaef148c16d93f&v=4
url: https://github.com/samuelcolvin
- login: vincentkoc
avatarUrl: https://avatars.githubusercontent.com/u/25068?u=fbd5b2d51142daa4bdbc21e21953a3b8b8188a4a&v=4
url: https://github.com/vincentkoc
- login: ddilidili
avatarUrl: https://avatars.githubusercontent.com/u/42176885?u=c0a849dde06987434653197b5f638d3deb55fc6c&v=4
url: https://github.com/ddilidili
- login: CoodingPenguin
avatarUrl: https://avatars.githubusercontent.com/u/37505775?u=6a9e1f6647fbf95f99afeee82a3682e15fc6e959&v=4
url: https://github.com/CoodingPenguin
- login: deight93
avatarUrl: https://avatars.githubusercontent.com/u/37678115?u=a608798b5bd0034183a9c430ebb42fb266db86ce&v=4
url: https://github.com/deight93
- login: otosky
avatarUrl: https://avatars.githubusercontent.com/u/42260747?u=69d089387c743d89427aa4ad8740cfb34045a9e0&v=4
url: https://github.com/otosky
- login: ramonalmeidam
avatarUrl: https://avatars.githubusercontent.com/u/45269580?u=3358750b3a5854d7c3ed77aaca7dd20a0f529d32&v=4
url: https://github.com/ramonalmeidam
- login: sepsi77
avatarUrl: https://avatars.githubusercontent.com/u/18682303?v=4
url: https://github.com/sepsi77
- login: kaoru0310
avatarUrl: https://avatars.githubusercontent.com/u/80977929?u=1b61d10142b490e56af932ddf08a390fae8ee94f&v=4
url: https://github.com/kaoru0310
- login: RaamEEIL
avatarUrl: https://avatars.githubusercontent.com/u/20320552?v=4
url: https://github.com/RaamEEIL
- login: jhundman
avatarUrl: https://avatars.githubusercontent.com/u/24263908?v=4
url: https://github.com/jhundman
- login: b-rad-c
avatarUrl: https://avatars.githubusercontent.com/u/25362581?u=5bb10629f4015b62bec1f9a366675d5085551af9&v=4
url: https://github.com/b-rad-c
- login: ehaca
avatarUrl: https://avatars.githubusercontent.com/u/25950317?u=cec1a3e0643b785288ae8260cc295a85ab344995&v=4
url: https://github.com/ehaca
- login: raphaellaude
avatarUrl: https://avatars.githubusercontent.com/u/28026311?u=28faad3e62250ef91a0c3c5d0faba39592d9ab39&v=4
avatarUrl: https://avatars.githubusercontent.com/u/28026311?u=91e1c00d9ac4f8045527e13de8050d504531cbc0&v=4
url: https://github.com/raphaellaude
- login: timlrx
avatarUrl: https://avatars.githubusercontent.com/u/28362229?u=9a745ca31372ee324af682715ae88ce8522f9094&v=4
@ -137,21 +131,9 @@ sponsors:
- login: Leay15
avatarUrl: https://avatars.githubusercontent.com/u/32212558?u=c4aa9c1737e515959382a5515381757b1fd86c53&v=4
url: https://github.com/Leay15
- login: BoYanZh
avatarUrl: https://avatars.githubusercontent.com/u/32470225?u=55b174d080382822759d74307f8a0355fa86e808&v=4
url: https://github.com/BoYanZh
- login: ygorpontelo
avatarUrl: https://avatars.githubusercontent.com/u/32963605?u=35f7103f9c4c4c2589ae5737ee882e9375ef072e&v=4
url: https://github.com/ygorpontelo
- login: ProteinQure
avatarUrl: https://avatars.githubusercontent.com/u/33707203?v=4
url: https://github.com/ProteinQure
- login: chickenandstats
avatarUrl: https://avatars.githubusercontent.com/u/79477966?u=ae2b894aa954070db1d7830dab99b49eba4e4567&v=4
url: https://github.com/chickenandstats
- login: kaoru0310
avatarUrl: https://avatars.githubusercontent.com/u/80977929?u=1b61d10142b490e56af932ddf08a390fae8ee94f&v=4
url: https://github.com/kaoru0310
- login: DelfinaCare
avatarUrl: https://avatars.githubusercontent.com/u/83734439?v=4
url: https://github.com/DelfinaCare
@ -182,6 +164,9 @@ sponsors:
- login: patricioperezv
avatarUrl: https://avatars.githubusercontent.com/u/73832292?u=5f471f156e19ee7920e62ae0f4a47b95580e61cf&v=4
url: https://github.com/patricioperezv
- login: chickenandstats
avatarUrl: https://avatars.githubusercontent.com/u/79477966?u=ae2b894aa954070db1d7830dab99b49eba4e4567&v=4
url: https://github.com/chickenandstats
- login: dodo5522
avatarUrl: https://avatars.githubusercontent.com/u/1362607?u=9bf1e0e520cccc547c046610c468ce6115bbcf9f&v=4
url: https://github.com/dodo5522
@ -191,9 +176,6 @@ sponsors:
- login: knallgelb
avatarUrl: https://avatars.githubusercontent.com/u/2358812?u=c48cb6362b309d74cbf144bd6ad3aed3eb443e82&v=4
url: https://github.com/knallgelb
- login: Shark009
avatarUrl: https://avatars.githubusercontent.com/u/3163309?u=0c6f4091b0eda05c44c390466199826e6dc6e431&v=4
url: https://github.com/Shark009
- login: dblackrun
avatarUrl: https://avatars.githubusercontent.com/u/3528486?v=4
url: https://github.com/dblackrun
@ -209,15 +191,15 @@ sponsors:
- login: anomaly
avatarUrl: https://avatars.githubusercontent.com/u/3654837?v=4
url: https://github.com/anomaly
- login: mj0331
avatarUrl: https://avatars.githubusercontent.com/u/3890353?u=1c627ac1a024515b4871de5c3ebbfaa1a57f65d4&v=4
url: https://github.com/mj0331
- login: gorhack
avatarUrl: https://avatars.githubusercontent.com/u/4141690?u=ec119ebc4bdf00a7bc84657a71aa17834f4f27f3&v=4
url: https://github.com/gorhack
- login: Ryandaydev
avatarUrl: https://avatars.githubusercontent.com/u/4292423?u=48f68868db8886fce31a1d802c1003914c6cd7c6&v=4
url: https://github.com/Ryandaydev
- login: jaredtrog
avatarUrl: https://avatars.githubusercontent.com/u/4381365?v=4
url: https://github.com/jaredtrog
- login: vincentkoc
avatarUrl: https://avatars.githubusercontent.com/u/25068?u=fbd5b2d51142daa4bdbc21e21953a3b8b8188a4a&v=4
url: https://github.com/vincentkoc
- login: jstanden
avatarUrl: https://avatars.githubusercontent.com/u/63288?u=c3658d57d2862c607a0e19c2101c3c51876e36ad&v=4
url: https://github.com/jstanden
@ -239,9 +221,6 @@ sponsors:
- login: wshayes
avatarUrl: https://avatars.githubusercontent.com/u/365303?u=07ca03c5ee811eb0920e633cc3c3db73dbec1aa5&v=4
url: https://github.com/wshayes
- login: gaetanBloch
avatarUrl: https://avatars.githubusercontent.com/u/583199?u=50c49e83d6b4feb78a091901ea02ead1462f442b&v=4
url: https://github.com/gaetanBloch
- login: koxudaxi
avatarUrl: https://avatars.githubusercontent.com/u/630670?u=507d8577b4b3670546b449c4c2ccbc5af40d72f7&v=4
url: https://github.com/koxudaxi
@ -251,15 +230,9 @@ sponsors:
- login: mintuhouse
avatarUrl: https://avatars.githubusercontent.com/u/769950?u=ecfbd79a97d33177e0d093ddb088283cf7fe8444&v=4
url: https://github.com/mintuhouse
- login: TrevorBenson
avatarUrl: https://avatars.githubusercontent.com/u/9167887?u=dccbea3327a57750923333d8ebf1a0b3f1948949&v=4
url: https://github.com/TrevorBenson
- login: wdwinslow
avatarUrl: https://avatars.githubusercontent.com/u/11562137?u=dc01daafb354135603a263729e3d26d939c0c452&v=4
avatarUrl: https://avatars.githubusercontent.com/u/11562137?u=371272f2c69e680e0559a7b0a57385e83a5dc728&v=4
url: https://github.com/wdwinslow
- login: catherinenelson1
avatarUrl: https://avatars.githubusercontent.com/u/11951946?u=fe11bc35d36b6038cd46a946e4e46ef8aa5688ab&v=4
url: https://github.com/catherinenelson1
- login: jsoques
avatarUrl: https://avatars.githubusercontent.com/u/12414216?u=620921d94196546cc8b9eae2cc4cbc3f95bab42f&v=4
url: https://github.com/jsoques
@ -278,6 +251,12 @@ sponsors:
- login: ashi-agrawal
avatarUrl: https://avatars.githubusercontent.com/u/17105294?u=99c7a854035e5398d8e7b674f2d42baae6c957f8&v=4
url: https://github.com/ashi-agrawal
- login: Ryandaydev
avatarUrl: https://avatars.githubusercontent.com/u/4292423?u=679ff84cb7b988c5795a5fa583857f574a055763&v=4
url: https://github.com/Ryandaydev
- login: jaredtrog
avatarUrl: https://avatars.githubusercontent.com/u/4381365?v=4
url: https://github.com/jaredtrog
- login: oliverxchen
avatarUrl: https://avatars.githubusercontent.com/u/4471774?u=534191f25e32eeaadda22dfab4b0a428733d5489&v=4
url: https://github.com/oliverxchen
@ -288,23 +267,20 @@ sponsors:
avatarUrl: https://avatars.githubusercontent.com/u/5920492?u=208d419cf667b8ac594c82a8db01932c7e50d057&v=4
url: https://github.com/eseglem
- login: FernandoCelmer
avatarUrl: https://avatars.githubusercontent.com/u/6262214?u=d29fff3fd862fda4ca752079f13f32e84c762ea4&v=4
avatarUrl: https://avatars.githubusercontent.com/u/6262214?u=58ba6d5888fa7f355934e52db19f950e20b38162&v=4
url: https://github.com/FernandoCelmer
- login: simw
avatarUrl: https://avatars.githubusercontent.com/u/6322526?v=4
url: https://github.com/simw
- login: Rehket
avatarUrl: https://avatars.githubusercontent.com/u/7015688?u=3afb0ba200feebbc7f958950e92db34df2a3c172&v=4
url: https://github.com/Rehket
- login: hiancdtrsnm
avatarUrl: https://avatars.githubusercontent.com/u/7343177?v=4
url: https://github.com/hiancdtrsnm
- - login: jpizquierdo
avatarUrl: https://avatars.githubusercontent.com/u/6716239?v=4
url: https://github.com/jpizquierdo
- - login: pawamoy
avatarUrl: https://avatars.githubusercontent.com/u/3999221?u=b030e4c89df2f3a36bc4710b925bdeb6745c9856&v=4
url: https://github.com/pawamoy
- login: bnkc
avatarUrl: https://avatars.githubusercontent.com/u/34930566?u=db5e6f4f87836cad26c2aa90ce390ce49041c5a9&v=4
url: https://github.com/bnkc
- login: petercool
avatarUrl: https://avatars.githubusercontent.com/u/37613029?u=81c525232bb35780945a68e88afd96bb2cdad9c4&v=4
url: https://github.com/petercool
@ -320,6 +296,9 @@ sponsors:
- login: caviri
avatarUrl: https://avatars.githubusercontent.com/u/45425937?u=4e14bd64282bad8f385eafbdb004b5a279366d6e&v=4
url: https://github.com/caviri
- login: joshuatz
avatarUrl: https://avatars.githubusercontent.com/u/17817563?u=f1bf05b690d1fc164218f0b420cdd3acb7913e21&v=4
url: https://github.com/joshuatz
- login: SebTota
avatarUrl: https://avatars.githubusercontent.com/u/25122511?v=4
url: https://github.com/SebTota
@ -335,21 +314,18 @@ sponsors:
- login: rlnchow
avatarUrl: https://avatars.githubusercontent.com/u/28018479?u=a93ca9cf1422b9ece155784a72d5f2fdbce7adff&v=4
url: https://github.com/rlnchow
- login: dvlpjrs
avatarUrl: https://avatars.githubusercontent.com/u/32254642?u=fbd6ad0324d4f1eb6231cf775be1c7bd4404e961&v=4
url: https://github.com/dvlpjrs
- login: engineerjoe440
avatarUrl: https://avatars.githubusercontent.com/u/33275230?u=eb223cad27017bb1e936ee9b429b450d092d0236&v=4
url: https://github.com/engineerjoe440
- login: bnkc
avatarUrl: https://avatars.githubusercontent.com/u/34930566?u=db5e6f4f87836cad26c2aa90ce390ce49041c5a9&v=4
url: https://github.com/bnkc
- login: lukzmu
avatarUrl: https://avatars.githubusercontent.com/u/175964415?u=75348f25bb99a5f92ddb40c0b9b1ff7acb39c150&v=4
url: https://github.com/lukzmu
- login: hgalytoby
avatarUrl: https://avatars.githubusercontent.com/u/50397689?u=62c7ff3519858423579676cd0efbd7e3f1ffe63a&v=4
url: https://github.com/hgalytoby
- login: conservative-dude
avatarUrl: https://avatars.githubusercontent.com/u/55538308?u=f250c44942ea6e73a6bd90739b381c470c192c11&v=4
url: https://github.com/conservative-dude
- login: CR1337
avatarUrl: https://avatars.githubusercontent.com/u/62649536?u=57a6aab10d2421a497306da8bcded01b826c54ae&v=4
url: https://github.com/CR1337
- login: PunRabbit
avatarUrl: https://avatars.githubusercontent.com/u/70463212?u=1a835cfbc99295a60c8282f6aa6199d1b42241a5&v=4
url: https://github.com/PunRabbit
@ -363,14 +339,11 @@ sponsors:
avatarUrl: https://avatars.githubusercontent.com/u/1484589?u=54556072b8136efa12ae3b6902032ea2a39ace4b&v=4
url: https://github.com/miguelgr
- login: WillHogan
avatarUrl: https://avatars.githubusercontent.com/u/1661551?u=7036c064cf29781470573865264ec8e60b6b809f&v=4
avatarUrl: https://avatars.githubusercontent.com/u/1661551?u=8a80356e3e7d5a417157aba7ea565dabc8678327&v=4
url: https://github.com/WillHogan
- login: my3
avatarUrl: https://avatars.githubusercontent.com/u/1825270?v=4
url: https://github.com/my3
- login: leobiscassi
avatarUrl: https://avatars.githubusercontent.com/u/1977418?u=f9f82445a847ab479bd7223debd677fcac6c49a0&v=4
url: https://github.com/leobiscassi
- login: Alisa-lisa
avatarUrl: https://avatars.githubusercontent.com/u/4137964?u=e7e393504f554f4ff15863a1e01a5746863ef9ce&v=4
url: https://github.com/Alisa-lisa
@ -389,6 +362,9 @@ sponsors:
- login: tochikuji
avatarUrl: https://avatars.githubusercontent.com/u/851759?v=4
url: https://github.com/tochikuji
- login: moonape1226
avatarUrl: https://avatars.githubusercontent.com/u/8532038?u=d9f8b855a429fff9397c3833c2ff83849ebf989d&v=4
url: https://github.com/moonape1226
- login: msehnout
avatarUrl: https://avatars.githubusercontent.com/u/9369632?u=8c988f1b008a3f601385a3616f9327820f66e3a5&v=4
url: https://github.com/msehnout
@ -419,9 +395,6 @@ sponsors:
- login: TheR1D
avatarUrl: https://avatars.githubusercontent.com/u/16740832?u=b0dfdbdb27b79729430c71c6128962f77b7b53f7&v=4
url: https://github.com/TheR1D
- login: joshuatz
avatarUrl: https://avatars.githubusercontent.com/u/17817563?u=f1bf05b690d1fc164218f0b420cdd3acb7913e21&v=4
url: https://github.com/joshuatz
- login: danielunderwood
avatarUrl: https://avatars.githubusercontent.com/u/4472301?v=4
url: https://github.com/danielunderwood
@ -446,16 +419,7 @@ sponsors:
- login: harsh183
avatarUrl: https://avatars.githubusercontent.com/u/7780198?v=4
url: https://github.com/harsh183
- login: hcristea
avatarUrl: https://avatars.githubusercontent.com/u/7814406?u=19092923a4ea5b338567961c8270b9206a6d81bb&v=4
url: https://github.com/hcristea
- login: moonape1226
avatarUrl: https://avatars.githubusercontent.com/u/8532038?u=d9f8b855a429fff9397c3833c2ff83849ebf989d&v=4
url: https://github.com/moonape1226
- - login: larsyngvelundin
avatarUrl: https://avatars.githubusercontent.com/u/34173819?u=74958599695bf83ac9f1addd935a51548a10c6b0&v=4
url: https://github.com/larsyngvelundin
- login: andrecorumba
- - login: andrecorumba
avatarUrl: https://avatars.githubusercontent.com/u/37807517?u=9b9be3b41da9bda60957da9ef37b50dbf65baa61&v=4
url: https://github.com/andrecorumba
- login: rwxd
@ -470,21 +434,24 @@ sponsors:
- login: Olegt0rr
avatarUrl: https://avatars.githubusercontent.com/u/25399456?u=3e87b5239a2f4600975ba13be73054f8567c6060&v=4
url: https://github.com/Olegt0rr
- login: FabulousCodingFox
avatarUrl: https://avatars.githubusercontent.com/u/78906517?u=924a27cbee3db7e0ece5cc1509921402e1445e74&v=4
url: https://github.com/FabulousCodingFox
- login: anqorithm
avatarUrl: https://avatars.githubusercontent.com/u/61029571?u=468256fa4e2d9ce2870b608299724bebb7a33f18&v=4
url: https://github.com/anqorithm
- login: Materacl
avatarUrl: https://avatars.githubusercontent.com/u/70155818?u=ae11d084518856127cca483816a91a187e3124ee&v=4
url: https://github.com/Materacl
- login: larsyngvelundin
avatarUrl: https://avatars.githubusercontent.com/u/34173819?u=74958599695bf83ac9f1addd935a51548a10c6b0&v=4
url: https://github.com/larsyngvelundin
- login: 0ne-stone
avatarUrl: https://avatars.githubusercontent.com/u/62360849?u=746dd21c34e7e06eefb11b03e8bb01aaae3c2a4f&v=4
url: https://github.com/0ne-stone
- login: darixsamani
avatarUrl: https://avatars.githubusercontent.com/u/67915678?u=cfa82128692eeeec4bf0e7a0faaa9a614695c0f9&v=4
url: https://github.com/darixsamani
- login: nayasinghania
avatarUrl: https://avatars.githubusercontent.com/u/74111380?u=af853245a21fe052b6a27e41a8de8cf4cdf76e85&v=4
url: https://github.com/nayasinghania
- login: Toothwitch
avatarUrl: https://avatars.githubusercontent.com/u/1710406?u=5eebb23b46cd26e48643b9e5179536cad491c17a&v=4
url: https://github.com/Toothwitch
- login: ssbarnea
avatarUrl: https://avatars.githubusercontent.com/u/102495?u=c7bd9ddf127785286fc939dd18cb02db0a453bce&v=4
url: https://github.com/ssbarnea
- login: roboman-tech
avatarUrl: https://avatars.githubusercontent.com/u/8183070?u=fdeaa2ed29f598eb7901693884c0ad32b16982e3&v=4
url: https://github.com/roboman-tech
- login: andreagrandi
avatarUrl: https://avatars.githubusercontent.com/u/636391?u=13d90cb8ec313593a5b71fbd4e33b78d6da736f5&v=4
url: https://github.com/andreagrandi

826
docs/en/data/people.yml

File diff suppressed because it is too large

28
docs/en/data/sponsors.yml

@ -5,26 +5,14 @@ gold:
- url: https://platform.sh/try-it-now/?utm_source=fastapi-signup&utm_medium=banner&utm_campaign=FastAPI-signup-June-2023
title: "Build, run and scale your apps on a modern, reliable, and secure PaaS."
img: https://fastapi.tiangolo.com/img/sponsors/platform-sh.png
- url: https://www.porter.run
title: Deploy FastAPI on AWS with a few clicks
img: https://fastapi.tiangolo.com/img/sponsors/porter.png
- url: https://bump.sh/fastapi?utm_source=fastapi&utm_medium=referral&utm_campaign=sponsor
title: Automate FastAPI documentation generation with Bump.sh
img: https://fastapi.tiangolo.com/img/sponsors/bump-sh.svg
- url: https://github.com/scalar/scalar/?utm_source=fastapi&utm_medium=website&utm_campaign=main-badge
title: "Scalar: Beautiful Open-Source API References from Swagger/OpenAPI files"
img: https://fastapi.tiangolo.com/img/sponsors/scalar.svg
- url: https://www.propelauth.com/?utm_source=fastapi&utm_campaign=1223&utm_medium=mainbadge
title: Auth, user management and more for your B2B product
img: https://fastapi.tiangolo.com/img/sponsors/propelauth.png
- url: https://www.withcoherence.com/?utm_medium=advertising&utm_source=fastapi&utm_campaign=website
title: Coherence
img: https://fastapi.tiangolo.com/img/sponsors/coherence.png
- url: https://www.mongodb.com/developer/languages/python/python-quickstart-fastapi/?utm_campaign=fastapi_framework&utm_source=fastapi_sponsorship&utm_medium=web_referral
title: Simplify Full Stack Development with FastAPI & MongoDB
img: https://fastapi.tiangolo.com/img/sponsors/mongodb.png
- url: https://zuplo.link/fastapi-gh
title: 'Zuplo: Scale, Protect, Document, and Monetize your FastAPI'
title: 'Zuplo: Deploy, Secure, Document, and Monetize your FastAPI'
img: https://fastapi.tiangolo.com/img/sponsors/zuplo.png
- url: https://liblab.com?utm_source=fastapi
title: liblab - Generate SDKs from FastAPI
@ -35,14 +23,14 @@ gold:
- url: https://www.coderabbit.ai/?utm_source=fastapi&utm_medium=badge&utm_campaign=fastapi
title: Cut Code Review Time & Bugs in Half with CodeRabbit
img: https://fastapi.tiangolo.com/img/sponsors/coderabbit.png
- url: https://subtotal.com/?utm_source=fastapi&utm_medium=sponsorship&utm_campaign=open-source
title: The Gold Standard in Retail Account Linking
img: https://fastapi.tiangolo.com/img/sponsors/subtotal.svg
silver:
- url: https://github.com/deepset-ai/haystack/
title: Build powerful search from composable, open source building blocks
img: https://fastapi.tiangolo.com/img/sponsors/haystack-fastapi.svg
- url: https://databento.com/
title: Pay as you go for market data
img: https://fastapi.tiangolo.com/img/sponsors/databento.svg
- url: https://speakeasy.com?utm_source=fastapi+repo&utm_medium=github+sponsorship
- url: https://speakeasy.com/editor?utm_source=fastapi+repo&utm_medium=github+sponsorship
title: SDKs for your API | Speakeasy
img: https://fastapi.tiangolo.com/img/sponsors/speakeasy.png
- url: https://www.svix.com/
@ -54,6 +42,12 @@ silver:
- url: https://www.permit.io/blog/implement-authorization-in-fastapi?utm_source=github&utm_medium=referral&utm_campaign=fastapi
title: Fine-Grained Authorization for FastAPI
img: https://fastapi.tiangolo.com/img/sponsors/permit.png
- url: https://www.interviewpal.com/?utm_source=fastapi&utm_medium=open-source&utm_campaign=dev-hiring
title: InterviewPal - AI Interview Coach for Engineers and Devs
img: https://fastapi.tiangolo.com/img/sponsors/interviewpal.png
- url: https://dribia.com/en/
title: Dribia - Data Science within your reach
img: https://fastapi.tiangolo.com/img/sponsors/dribia.png
bronze:
- url: https://www.exoflare.com/open-source/?utm_source=FastAPI&utm_campaign=open_source
title: Biosecurity risk assessments made easy.

5
docs/en/data/sponsors_badge.yml

@ -38,3 +38,8 @@ logins:
- render-sponsorships
- renderinc
- stainless-api
- snapit-cypher
- coderabbitai
- permitio
- LambdaTest-Inc
- dribia

550
docs/en/data/topic_repos.yml

@ -1,495 +1,495 @@
- name: full-stack-fastapi-template
html_url: https://github.com/fastapi/full-stack-fastapi-template
stars: 30645
stars: 34156
owner_login: fastapi
owner_html_url: https://github.com/fastapi
- name: Hello-Python
html_url: https://github.com/mouredev/Hello-Python
stars: 28690
stars: 30835
owner_login: mouredev
owner_html_url: https://github.com/mouredev
- name: serve
html_url: https://github.com/jina-ai/serve
stars: 21356
stars: 21631
owner_login: jina-ai
owner_html_url: https://github.com/jina-ai
- name: sqlmodel
html_url: https://github.com/fastapi/sqlmodel
stars: 15312
owner_login: fastapi
owner_html_url: https://github.com/fastapi
- name: HivisionIDPhotos
html_url: https://github.com/Zeyi-Lin/HivisionIDPhotos
stars: 14957
stars: 18125
owner_login: Zeyi-Lin
owner_html_url: https://github.com/Zeyi-Lin
- name: sqlmodel
html_url: https://github.com/fastapi/sqlmodel
stars: 16249
owner_login: fastapi
owner_html_url: https://github.com/fastapi
- name: Douyin_TikTok_Download_API
html_url: https://github.com/Evil0ctal/Douyin_TikTok_Download_API
stars: 11192
stars: 13279
owner_login: Evil0ctal
owner_html_url: https://github.com/Evil0ctal
- name: fastapi-best-practices
html_url: https://github.com/zhanymkanov/fastapi-best-practices
stars: 10501
stars: 12334
owner_login: zhanymkanov
owner_html_url: https://github.com/zhanymkanov
- name: awesome-fastapi
html_url: https://github.com/mjhea0/awesome-fastapi
stars: 9193
stars: 9934
owner_login: mjhea0
owner_html_url: https://github.com/mjhea0
- name: FastUI
html_url: https://github.com/pydantic/FastUI
stars: 8721
stars: 8838
owner_login: pydantic
owner_html_url: https://github.com/pydantic
- name: XHS-Downloader
html_url: https://github.com/JoeanAmier/XHS-Downloader
stars: 7962
owner_login: JoeanAmier
owner_html_url: https://github.com/JoeanAmier
- name: nonebot2
html_url: https://github.com/nonebot/nonebot2
stars: 6433
stars: 6834
owner_login: nonebot
owner_html_url: https://github.com/nonebot
- name: serge
html_url: https://github.com/serge-chat/serge
stars: 5699
owner_login: serge-chat
owner_html_url: https://github.com/serge-chat
- name: FileCodeBox
html_url: https://github.com/vastsa/FileCodeBox
stars: 5534
stars: 6783
owner_login: vastsa
owner_html_url: https://github.com/vastsa
- name: fastapi-users
html_url: https://github.com/fastapi-users/fastapi-users
stars: 4921
owner_login: fastapi-users
owner_html_url: https://github.com/fastapi-users
- name: polar
html_url: https://github.com/polarsource/polar
stars: 4598
owner_login: polarsource
owner_html_url: https://github.com/polarsource
- name: fastapi_mcp
html_url: https://github.com/tadata-org/fastapi_mcp
stars: 5846
owner_login: tadata-org
owner_html_url: https://github.com/tadata-org
- name: hatchet
html_url: https://github.com/hatchet-dev/hatchet
stars: 4585
stars: 5773
owner_login: hatchet-dev
owner_html_url: https://github.com/hatchet-dev
- name: chatgpt-web-share
html_url: https://github.com/chatpire/chatgpt-web-share
stars: 4318
owner_login: chatpire
owner_html_url: https://github.com/chatpire
- name: serge
html_url: https://github.com/serge-chat/serge
stars: 5728
owner_login: serge-chat
owner_html_url: https://github.com/serge-chat
- name: polar
html_url: https://github.com/polarsource/polar
stars: 5709
owner_login: polarsource
owner_html_url: https://github.com/polarsource
- name: fastapi-users
html_url: https://github.com/fastapi-users/fastapi-users
stars: 5336
owner_login: fastapi-users
owner_html_url: https://github.com/fastapi-users
- name: strawberry
html_url: https://github.com/strawberry-graphql/strawberry
stars: 4180
stars: 4317
owner_login: strawberry-graphql
owner_html_url: https://github.com/strawberry-graphql
- name: chatgpt-web-share
html_url: https://github.com/chatpire/chatgpt-web-share
stars: 4301
owner_login: chatpire
owner_html_url: https://github.com/chatpire
- name: atrilabs-engine
html_url: https://github.com/Atri-Labs/atrilabs-engine
stars: 4114
stars: 4106
owner_login: Atri-Labs
owner_html_url: https://github.com/Atri-Labs
- name: dynaconf
html_url: https://github.com/dynaconf/dynaconf
stars: 3904
stars: 4045
owner_login: dynaconf
owner_html_url: https://github.com/dynaconf
- name: poem
html_url: https://github.com/poem-web/poem
stars: 3781
stars: 4037
owner_login: poem-web
owner_html_url: https://github.com/poem-web
- name: farfalle
html_url: https://github.com/rashadphz/farfalle
stars: 3190
stars: 3348
owner_login: rashadphz
owner_html_url: https://github.com/rashadphz
- name: opyrator
html_url: https://github.com/ml-tooling/opyrator
stars: 3119
owner_login: ml-tooling
owner_html_url: https://github.com/ml-tooling
- name: LitServe
html_url: https://github.com/Lightning-AI/LitServe
stars: 3347
owner_login: Lightning-AI
owner_html_url: https://github.com/Lightning-AI
- name: fastapi-admin
html_url: https://github.com/fastapi-admin/fastapi-admin
stars: 3086
stars: 3309
owner_login: fastapi-admin
owner_html_url: https://github.com/fastapi-admin
- name: docarray
html_url: https://github.com/docarray/docarray
stars: 3021
owner_login: docarray
owner_html_url: https://github.com/docarray
- name: datamodel-code-generator
html_url: https://github.com/koxudaxi/datamodel-code-generator
stars: 2988
stars: 3291
owner_login: koxudaxi
owner_html_url: https://github.com/koxudaxi
- name: LitServe
html_url: https://github.com/Lightning-AI/LitServe
stars: 2863
owner_login: Lightning-AI
owner_html_url: https://github.com/Lightning-AI
- name: fastapi-realworld-example-app
html_url: https://github.com/nsidnev/fastapi-realworld-example-app
stars: 2850
owner_login: nsidnev
owner_html_url: https://github.com/nsidnev
- name: logfire
html_url: https://github.com/pydantic/logfire
stars: 2757
stars: 3288
owner_login: pydantic
owner_html_url: https://github.com/pydantic
- name: uvicorn-gunicorn-fastapi-docker
html_url: https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker
stars: 2731
owner_login: tiangolo
owner_html_url: https://github.com/tiangolo
- name: huma
html_url: https://github.com/danielgtaylor/huma
stars: 2700
stars: 3201
owner_login: danielgtaylor
owner_html_url: https://github.com/danielgtaylor
- name: opyrator
html_url: https://github.com/ml-tooling/opyrator
stars: 3132
owner_login: ml-tooling
owner_html_url: https://github.com/ml-tooling
- name: Kokoro-FastAPI
html_url: https://github.com/remsky/Kokoro-FastAPI
stars: 3099
owner_login: remsky
owner_html_url: https://github.com/remsky
- name: docarray
html_url: https://github.com/docarray/docarray
stars: 3075
owner_login: docarray
owner_html_url: https://github.com/docarray
- name: fastapi-realworld-example-app
html_url: https://github.com/nsidnev/fastapi-realworld-example-app
stars: 2902
owner_login: nsidnev
owner_html_url: https://github.com/nsidnev
- name: tracecat
html_url: https://github.com/TracecatHQ/tracecat
stars: 2539
stars: 2888
owner_login: TracecatHQ
owner_html_url: https://github.com/TracecatHQ
- name: uvicorn-gunicorn-fastapi-docker
html_url: https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker
stars: 2775
owner_login: tiangolo
owner_html_url: https://github.com/tiangolo
- name: best-of-web-python
html_url: https://github.com/ml-tooling/best-of-web-python
stars: 2460
stars: 2537
owner_login: ml-tooling
owner_html_url: https://github.com/ml-tooling
- name: RasaGPT
html_url: https://github.com/paulpierre/RasaGPT
stars: 2401
stars: 2427
owner_login: paulpierre
owner_html_url: https://github.com/paulpierre
- name: fastapi-react
html_url: https://github.com/Buuntu/fastapi-react
stars: 2315
stars: 2397
owner_login: Buuntu
owner_html_url: https://github.com/Buuntu
- name: nextpy
html_url: https://github.com/dot-agent/nextpy
stars: 2266
owner_login: dot-agent
owner_html_url: https://github.com/dot-agent
- name: 30-Days-of-Python
html_url: https://github.com/codingforentrepreneurs/30-Days-of-Python
stars: 2163
owner_login: codingforentrepreneurs
owner_html_url: https://github.com/codingforentrepreneurs
- name: FastAPI-template
html_url: https://github.com/s3rius/FastAPI-template
stars: 2156
stars: 2334
owner_login: s3rius
owner_html_url: https://github.com/s3rius
- name: nextpy
html_url: https://github.com/dot-agent/nextpy
stars: 2295
owner_login: dot-agent
owner_html_url: https://github.com/dot-agent
- name: sqladmin
html_url: https://github.com/aminalaee/sqladmin
stars: 2051
stars: 2235
owner_login: aminalaee
owner_html_url: https://github.com/aminalaee
- name: 30-Days-of-Python
html_url: https://github.com/codingforentrepreneurs/30-Days-of-Python
stars: 2181
owner_login: codingforentrepreneurs
owner_html_url: https://github.com/codingforentrepreneurs
- name: langserve
html_url: https://github.com/langchain-ai/langserve
stars: 2025
stars: 2119
owner_login: langchain-ai
owner_html_url: https://github.com/langchain-ai
- name: fastapi-utils
html_url: https://github.com/fastapiutils/fastapi-utils
stars: 2021
stars: 2100
owner_login: fastapiutils
owner_html_url: https://github.com/fastapiutils
- name: solara
html_url: https://github.com/widgetti/solara
stars: 1980
owner_login: widgetti
owner_html_url: https://github.com/widgetti
- name: supabase-py
html_url: https://github.com/supabase/supabase-py
stars: 1874
stars: 2084
owner_login: supabase
owner_html_url: https://github.com/supabase
- name: python-week-2022
html_url: https://github.com/rochacbruno/python-week-2022
stars: 1829
owner_login: rochacbruno
owner_html_url: https://github.com/rochacbruno
- name: solara
html_url: https://github.com/widgetti/solara
stars: 2056
owner_login: widgetti
owner_html_url: https://github.com/widgetti
- name: mangum
html_url: https://github.com/Kludex/mangum
stars: 1820
stars: 1923
owner_login: Kludex
owner_html_url: https://github.com/Kludex
- name: Kokoro-FastAPI
html_url: https://github.com/remsky/Kokoro-FastAPI
stars: 1771
owner_login: remsky
owner_html_url: https://github.com/remsky
- name: python-week-2022
html_url: https://github.com/rochacbruno/python-week-2022
stars: 1821
owner_login: rochacbruno
owner_html_url: https://github.com/rochacbruno
- name: agentkit
html_url: https://github.com/BCG-X-Official/agentkit
stars: 1765
owner_login: BCG-X-Official
owner_html_url: https://github.com/BCG-X-Official
- name: manage-fastapi
html_url: https://github.com/ycd/manage-fastapi
stars: 1719
stars: 1756
owner_login: ycd
owner_html_url: https://github.com/ycd
- name: ormar
html_url: https://github.com/collerek/ormar
stars: 1710
stars: 1755
owner_login: collerek
owner_html_url: https://github.com/collerek
- name: agentkit
html_url: https://github.com/BCG-X-Official/agentkit
stars: 1658
owner_login: BCG-X-Official
owner_html_url: https://github.com/BCG-X-Official
- name: langchain-serve
html_url: https://github.com/jina-ai/langchain-serve
stars: 1618
stars: 1631
owner_login: jina-ai
owner_html_url: https://github.com/jina-ai
- name: termpair
html_url: https://github.com/cs01/termpair
stars: 1611
owner_login: cs01
owner_html_url: https://github.com/cs01
- name: coronavirus-tracker-api
html_url: https://github.com/ExpDev07/coronavirus-tracker-api
stars: 1588
owner_login: ExpDev07
owner_html_url: https://github.com/ExpDev07
- name: piccolo
html_url: https://github.com/piccolo-orm/piccolo
stars: 1546
stars: 1629
owner_login: piccolo-orm
owner_html_url: https://github.com/piccolo-orm
- name: fastapi-cache
html_url: https://github.com/long2ice/fastapi-cache
stars: 1478
owner_login: long2ice
owner_html_url: https://github.com/long2ice
- name: termpair
html_url: https://github.com/cs01/termpair
stars: 1616
owner_login: cs01
owner_html_url: https://github.com/cs01
- name: openapi-python-client
html_url: https://github.com/openapi-generators/openapi-python-client
stars: 1467
stars: 1603
owner_login: openapi-generators
owner_html_url: https://github.com/openapi-generators
- name: fastapi-cache
html_url: https://github.com/long2ice/fastapi-cache
stars: 1589
owner_login: long2ice
owner_html_url: https://github.com/long2ice
- name: coronavirus-tracker-api
html_url: https://github.com/ExpDev07/coronavirus-tracker-api
stars: 1580
owner_login: ExpDev07
owner_html_url: https://github.com/ExpDev07
- name: slowapi
html_url: https://github.com/laurentS/slowapi
stars: 1533
owner_login: laurentS
owner_html_url: https://github.com/laurentS
- name: fastapi-crudrouter
html_url: https://github.com/awtkns/fastapi-crudrouter
stars: 1462
stars: 1518
owner_login: awtkns
owner_html_url: https://github.com/awtkns
- name: awesome-fastapi-projects
html_url: https://github.com/Kludex/awesome-fastapi-projects
stars: 1418
stars: 1461
owner_login: Kludex
owner_html_url: https://github.com/Kludex
- name: vue-fastapi-admin
html_url: https://github.com/mizhexiaoxiao/vue-fastapi-admin
stars: 1409
owner_login: mizhexiaoxiao
owner_html_url: https://github.com/mizhexiaoxiao
- name: awesome-python-resources
html_url: https://github.com/DjangoEx/awesome-python-resources
stars: 1383
stars: 1393
owner_login: DjangoEx
owner_html_url: https://github.com/DjangoEx
- name: slowapi
html_url: https://github.com/laurentS/slowapi
stars: 1363
owner_login: laurentS
owner_html_url: https://github.com/laurentS
- name: budgetml
html_url: https://github.com/ebhy/budgetml
stars: 1344
owner_login: ebhy
owner_html_url: https://github.com/ebhy
- name: fastapi-pagination
html_url: https://github.com/uriyyo/fastapi-pagination
stars: 1284
stars: 1378
owner_login: uriyyo
owner_html_url: https://github.com/uriyyo
- name: fastapi-boilerplate
html_url: https://github.com/teamhide/fastapi-boilerplate
stars: 1234
stars: 1348
owner_login: teamhide
owner_html_url: https://github.com/teamhide
- name: fastapi-tutorial
html_url: https://github.com/liaogx/fastapi-tutorial
stars: 1181
owner_login: liaogx
owner_html_url: https://github.com/liaogx
- name: budgetml
html_url: https://github.com/ebhy/budgetml
stars: 1344
owner_login: ebhy
owner_html_url: https://github.com/ebhy
- name: fastapi-amis-admin
html_url: https://github.com/amisadmin/fastapi-amis-admin
stars: 1164
stars: 1284
owner_login: amisadmin
owner_html_url: https://github.com/amisadmin
- name: bracket
html_url: https://github.com/evroon/bracket
stars: 1274
owner_login: evroon
owner_html_url: https://github.com/evroon
- name: fastapi-tutorial
html_url: https://github.com/liaogx/fastapi-tutorial
stars: 1265
owner_login: liaogx
owner_html_url: https://github.com/liaogx
- name: fastapi-code-generator
html_url: https://github.com/koxudaxi/fastapi-code-generator
stars: 1132
stars: 1216
owner_login: koxudaxi
owner_html_url: https://github.com/koxudaxi
- name: bolt-python
html_url: https://github.com/slackapi/bolt-python
stars: 1130
stars: 1190
owner_login: slackapi
owner_html_url: https://github.com/slackapi
- name: fastcrud
html_url: https://github.com/benavlabs/fastcrud
stars: 1169
owner_login: benavlabs
owner_html_url: https://github.com/benavlabs
- name: prometheus-fastapi-instrumentator
html_url: https://github.com/trallnag/prometheus-fastapi-instrumentator
stars: 1167
owner_login: trallnag
owner_html_url: https://github.com/trallnag
- name: fastapi_production_template
html_url: https://github.com/zhanymkanov/fastapi_production_template
stars: 1165
owner_login: zhanymkanov
owner_html_url: https://github.com/zhanymkanov
- name: bedrock-chat
html_url: https://github.com/aws-samples/bedrock-chat
stars: 1163
owner_login: aws-samples
owner_html_url: https://github.com/aws-samples
- name: langchain-extract
html_url: https://github.com/langchain-ai/langchain-extract
stars: 1110
stars: 1142
owner_login: langchain-ai
owner_html_url: https://github.com/langchain-ai
- name: odmantic
html_url: https://github.com/art049/odmantic
stars: 1104
stars: 1121
owner_login: art049
owner_html_url: https://github.com/art049
- name: fastapi_production_template
html_url: https://github.com/zhanymkanov/fastapi_production_template
stars: 1093
owner_login: zhanymkanov
owner_html_url: https://github.com/zhanymkanov
- name: SurfSense
html_url: https://github.com/MODSetter/SurfSense
stars: 1081
owner_login: MODSetter
owner_html_url: https://github.com/MODSetter
- name: fastapi_best_architecture
html_url: https://github.com/fastapi-practices/fastapi_best_architecture
stars: 1118
owner_login: fastapi-practices
owner_html_url: https://github.com/fastapi-practices
- name: fastapi-alembic-sqlmodel-async
html_url: https://github.com/jonra1993/fastapi-alembic-sqlmodel-async
stars: 1063
stars: 1116
owner_login: jonra1993
owner_html_url: https://github.com/jonra1993
- name: prometheus-fastapi-instrumentator
html_url: https://github.com/trallnag/prometheus-fastapi-instrumentator
stars: 1059
owner_login: trallnag
owner_html_url: https://github.com/trallnag
- name: bedrock-claude-chat
html_url: https://github.com/aws-samples/bedrock-claude-chat
stars: 1039
owner_login: aws-samples
owner_html_url: https://github.com/aws-samples
- name: FastAPI-boilerplate
html_url: https://github.com/benavlabs/FastAPI-boilerplate
stars: 1070
owner_login: benavlabs
owner_html_url: https://github.com/benavlabs
- name: restish
html_url: https://github.com/rest-sh/restish
stars: 1069
owner_login: rest-sh
owner_html_url: https://github.com/rest-sh
- name: runhouse
html_url: https://github.com/run-house/runhouse
stars: 1005
stars: 1037
owner_login: run-house
owner_html_url: https://github.com/run-house
- name: vue-fastapi-admin
html_url: https://github.com/mizhexiaoxiao/vue-fastapi-admin
stars: 987
owner_login: mizhexiaoxiao
owner_html_url: https://github.com/mizhexiaoxiao
- name: lanarky
html_url: https://github.com/ajndkr/lanarky
stars: 986
owner_login: ajndkr
owner_html_url: https://github.com/ajndkr
- name: autollm
html_url: https://github.com/viddexa/autollm
stars: 986
stars: 994
owner_login: viddexa
owner_html_url: https://github.com/viddexa
- name: restish
html_url: https://github.com/danielgtaylor/restish
stars: 984
owner_login: danielgtaylor
owner_html_url: https://github.com/danielgtaylor
- name: fastcrud
html_url: https://github.com/igorbenav/fastcrud
stars: 964
owner_login: igorbenav
owner_html_url: https://github.com/igorbenav
- name: lanarky
html_url: https://github.com/ajndkr/lanarky
stars: 992
owner_login: ajndkr
owner_html_url: https://github.com/ajndkr
- name: authx
html_url: https://github.com/yezz123/authx
stars: 953
owner_login: yezz123
owner_html_url: https://github.com/yezz123
- name: secure
html_url: https://github.com/TypeError/secure
stars: 928
stars: 941
owner_login: TypeError
owner_html_url: https://github.com/TypeError
- name: langcorn
html_url: https://github.com/msoedov/langcorn
stars: 916
owner_login: msoedov
owner_html_url: https://github.com/msoedov
- name: energy-forecasting
html_url: https://github.com/iusztinpaul/energy-forecasting
stars: 898
stars: 928
owner_login: iusztinpaul
owner_html_url: https://github.com/iusztinpaul
- name: authx
html_url: https://github.com/yezz123/authx
stars: 874
owner_login: yezz123
owner_html_url: https://github.com/yezz123
- name: langcorn
html_url: https://github.com/msoedov/langcorn
stars: 927
owner_login: msoedov
owner_html_url: https://github.com/msoedov
- name: titiler
html_url: https://github.com/developmentseed/titiler
stars: 841
stars: 901
owner_login: developmentseed
owner_html_url: https://github.com/developmentseed
- name: FastAPI-boilerplate
html_url: https://github.com/igorbenav/FastAPI-boilerplate
stars: 820
owner_login: igorbenav
owner_html_url: https://github.com/igorbenav
- name: flock
html_url: https://github.com/Onelevenvy/flock
stars: 896
owner_login: Onelevenvy
owner_html_url: https://github.com/Onelevenvy
- name: fastapi-langgraph-agent-production-ready-template
html_url: https://github.com/wassim249/fastapi-langgraph-agent-production-ready-template
stars: 896
owner_login: wassim249
owner_html_url: https://github.com/wassim249
- name: marker-api
html_url: https://github.com/adithya-s-k/marker-api
stars: 813
stars: 875
owner_login: adithya-s-k
owner_html_url: https://github.com/adithya-s-k
- name: fastapi_best_architecture
html_url: https://github.com/fastapi-practices/fastapi_best_architecture
stars: 802
owner_login: fastapi-practices
owner_html_url: https://github.com/fastapi-practices
- name: httpdbg
html_url: https://github.com/cle-b/httpdbg
stars: 870
owner_login: cle-b
owner_html_url: https://github.com/cle-b
- name: fastapi-do-zero
html_url: https://github.com/dunossauro/fastapi-do-zero
stars: 745
stars: 855
owner_login: dunossauro
owner_html_url: https://github.com/dunossauro
- name: fastapi-mail
html_url: https://github.com/sabuhish/fastapi-mail
stars: 744
owner_login: sabuhish
owner_html_url: https://github.com/sabuhish
- name: ludic
html_url: https://github.com/getludic/ludic
stars: 849
owner_login: getludic
owner_html_url: https://github.com/getludic
- name: fastapi-observability
html_url: https://github.com/blueswen/fastapi-observability
stars: 743
stars: 837
owner_login: blueswen
owner_html_url: https://github.com/blueswen
- name: lccn_predictor
html_url: https://github.com/baoliay2008/lccn_predictor
stars: 741
owner_login: baoliay2008
owner_html_url: https://github.com/baoliay2008
- name: annotated-py-projects
html_url: https://github.com/hhstore/annotated-py-projects
stars: 727
owner_login: hhstore
owner_html_url: https://github.com/hhstore
- name: learn-generative-ai
html_url: https://github.com/panaverse/learn-generative-ai
stars: 714
owner_login: panaverse
owner_html_url: https://github.com/panaverse
- name: fastapi-scaf
html_url: https://github.com/atpuxiner/fastapi-scaf
stars: 821
owner_login: atpuxiner
owner_html_url: https://github.com/atpuxiner
- name: starlette-admin
html_url: https://github.com/jowilf/starlette-admin
stars: 713
stars: 808
owner_login: jowilf
owner_html_url: https://github.com/jowilf
- name: chatGPT-web
html_url: https://github.com/mic1on/chatGPT-web
stars: 712
owner_login: mic1on
owner_html_url: https://github.com/mic1on
- name: FastAPI-Backend-Template
html_url: https://github.com/Aeternalis-Ingenium/FastAPI-Backend-Template
stars: 709
owner_login: Aeternalis-Ingenium
owner_html_url: https://github.com/Aeternalis-Ingenium
- name: linbing
html_url: https://github.com/taomujian/linbing
stars: 698
owner_login: taomujian
owner_html_url: https://github.com/taomujian
- name: KonomiTV
html_url: https://github.com/tsukumijima/KonomiTV
stars: 687
owner_login: tsukumijima
owner_html_url: https://github.com/tsukumijima
- name: fastapi-jwt-auth
html_url: https://github.com/IndominusByte/fastapi-jwt-auth
stars: 685
owner_login: IndominusByte
owner_html_url: https://github.com/IndominusByte
- name: pity
html_url: https://github.com/wuranxu/pity
stars: 667
owner_login: wuranxu
owner_html_url: https://github.com/wuranxu
- name: fastapi-mail
html_url: https://github.com/sabuhish/fastapi-mail
stars: 807
owner_login: sabuhish
owner_html_url: https://github.com/sabuhish
- name: aktools
html_url: https://github.com/akfamily/aktools
stars: 796
owner_login: akfamily
owner_html_url: https://github.com/akfamily
- name: RuoYi-Vue3-FastAPI
html_url: https://github.com/insistence/RuoYi-Vue3-FastAPI
stars: 782
owner_login: insistence
owner_html_url: https://github.com/insistence

393
docs/en/data/translation_reviewers.yml

@ -8,16 +8,16 @@ Xewus:
count: 140
avatarUrl: https://avatars.githubusercontent.com/u/85196001?u=f8e2dc7e5104f109cef944af79050ea8d1b8f914&v=4
url: https://github.com/Xewus
sodaMelon:
login: sodaMelon
count: 126
avatarUrl: https://avatars.githubusercontent.com/u/66295123?u=be939db90f1119efee9e6110cc05066ff1f40f00&v=4
url: https://github.com/sodaMelon
ceb10n:
login: ceb10n
count: 112
avatarUrl: https://avatars.githubusercontent.com/u/235213?u=edcce471814a1eba9f0cdaa4cd0de18921a940a6&v=4
url: https://github.com/ceb10n
sodaMelon:
login: sodaMelon
count: 111
avatarUrl: https://avatars.githubusercontent.com/u/66295123?u=be939db90f1119efee9e6110cc05066ff1f40f00&v=4
url: https://github.com/sodaMelon
tokusumi:
login: tokusumi
count: 104
@ -30,9 +30,14 @@ hasansezertasan:
url: https://github.com/hasansezertasan
hard-coders:
login: hard-coders
count: 92
count: 93
avatarUrl: https://avatars.githubusercontent.com/u/9651103?u=95db33927bbff1ed1c07efddeb97ac2ff33068ed&v=4
url: https://github.com/hard-coders
alv2017:
login: alv2017
count: 88
avatarUrl: https://avatars.githubusercontent.com/u/31544722?v=4
url: https://github.com/alv2017
nazarepiedady:
login: nazarepiedady
count: 83
@ -43,11 +48,6 @@ AlertRED:
count: 81
avatarUrl: https://avatars.githubusercontent.com/u/15695000?u=f5a4944c6df443030409c88da7d7fa0b7ead985c&v=4
url: https://github.com/AlertRED
alv2017:
login: alv2017
count: 81
avatarUrl: https://avatars.githubusercontent.com/u/31544722?v=4
url: https://github.com/alv2017
Alexandrhub:
login: Alexandrhub
count: 68
@ -65,12 +65,12 @@ cassiobotaro:
url: https://github.com/cassiobotaro
mattwang44:
login: mattwang44
count: 58
count: 59
avatarUrl: https://avatars.githubusercontent.com/u/24987826?u=58e37fb3927b9124b458945ac4c97aa0f1062d85&v=4
url: https://github.com/mattwang44
tiangolo:
login: tiangolo
count: 51
count: 53
avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=cb5d06e73a9e1998141b1641aa88e443c6717651&v=4
url: https://github.com/tiangolo
Laineyzhang55:
@ -88,16 +88,26 @@ komtaki:
count: 45
avatarUrl: https://avatars.githubusercontent.com/u/39375566?u=260ad6b1a4b34c07dbfa728da5e586f16f6d1824&v=4
url: https://github.com/komtaki
rostik1410:
login: rostik1410
count: 42
avatarUrl: https://avatars.githubusercontent.com/u/11443899?u=e26a635c2ba220467b308a326a579b8ccf4a8701&v=4
url: https://github.com/rostik1410
svlandeg:
login: svlandeg
count: 42
avatarUrl: https://avatars.githubusercontent.com/u/8796347?u=556c97650c27021911b0b9447ec55e75987b0e8a&v=4
url: https://github.com/svlandeg
alperiox:
login: alperiox
count: 42
avatarUrl: https://avatars.githubusercontent.com/u/34214152?u=2c5acad3461d4dbc2d48371ba86cac56ae9b25cc&v=4
url: https://github.com/alperiox
rostik1410:
login: rostik1410
count: 41
avatarUrl: https://avatars.githubusercontent.com/u/11443899?u=e26a635c2ba220467b308a326a579b8ccf4a8701&v=4
url: https://github.com/rostik1410
Rishat-F:
login: Rishat-F
count: 42
avatarUrl: https://avatars.githubusercontent.com/u/66554797?v=4
url: https://github.com/Rishat-F
Winand:
login: Winand
count: 40
@ -126,7 +136,7 @@ SwftAlpc:
alejsdev:
login: alejsdev
count: 36
avatarUrl: https://avatars.githubusercontent.com/u/90076947?u=356f39ff3f0211c720b06d3dbb060e98884085e3&v=4
avatarUrl: https://avatars.githubusercontent.com/u/90076947?u=638c65283ac9e9e2c3a0f9d1e3370db4b8a2c58d&v=4
url: https://github.com/alejsdev
timothy-jeong:
login: timothy-jeong
@ -138,16 +148,11 @@ nilslindemann:
count: 35
avatarUrl: https://avatars.githubusercontent.com/u/6892179?u=1dca6a22195d6cd1ab20737c0e19a4c55d639472&v=4
url: https://github.com/nilslindemann
svlandeg:
login: svlandeg
count: 35
avatarUrl: https://avatars.githubusercontent.com/u/8796347?u=556c97650c27021911b0b9447ec55e75987b0e8a&v=4
url: https://github.com/svlandeg
Rishat-F:
login: Rishat-F
mezgoodle:
login: mezgoodle
count: 35
avatarUrl: https://avatars.githubusercontent.com/u/66554797?v=4
url: https://github.com/Rishat-F
avatarUrl: https://avatars.githubusercontent.com/u/41520940?u=4a9c765af688389d54296845d18b8f6cd6ddf09a&v=4
url: https://github.com/mezgoodle
rjNemo:
login: rjNemo
count: 34
@ -168,16 +173,16 @@ romashevchenko:
count: 32
avatarUrl: https://avatars.githubusercontent.com/u/132477732?v=4
url: https://github.com/romashevchenko
wdh99:
login: wdh99
count: 31
avatarUrl: https://avatars.githubusercontent.com/u/108172295?u=8a8fb95d5afe3e0fa33257b2aecae88d436249eb&v=4
url: https://github.com/wdh99
LorhanSohaky:
login: LorhanSohaky
count: 30
avatarUrl: https://avatars.githubusercontent.com/u/16273730?u=095b66f243a2cd6a0aadba9a095009f8aaf18393&v=4
url: https://github.com/LorhanSohaky
Vincy1230:
login: Vincy1230
count: 30
avatarUrl: https://avatars.githubusercontent.com/u/81342412?u=ab5e256a4077a4a91f3f9cd2115ba80780454cbe&v=4
url: https://github.com/Vincy1230
black-redoc:
login: black-redoc
count: 29
@ -201,7 +206,7 @@ dedkot01:
hsuanchi:
login: hsuanchi
count: 28
avatarUrl: https://avatars.githubusercontent.com/u/24913710?u=0b094ae292292fee093818e37ceb645c114d2bff&v=4
avatarUrl: https://avatars.githubusercontent.com/u/24913710?u=7d25a398e478b6e63503bf6f26c54efa9e0da07b&v=4
url: https://github.com/hsuanchi
dpinezich:
login: dpinezich
@ -228,16 +233,6 @@ junah201:
count: 26
avatarUrl: https://avatars.githubusercontent.com/u/75025529?u=2451c256e888fa2a06bcfc0646d09b87ddb6a945&v=4
url: https://github.com/junah201
mezgoodle:
login: mezgoodle
count: 26
avatarUrl: https://avatars.githubusercontent.com/u/41520940?u=e871bc26734eb2436d98c19c3fb57a4773e13c24&v=4
url: https://github.com/mezgoodle
Vincy1230:
login: Vincy1230
count: 26
avatarUrl: https://avatars.githubusercontent.com/u/81342412?u=ab5e256a4077a4a91f3f9cd2115ba80780454cbe&v=4
url: https://github.com/Vincy1230
zy7y:
login: zy7y
count: 25
@ -248,11 +243,21 @@ mycaule:
count: 25
avatarUrl: https://avatars.githubusercontent.com/u/6161385?u=e3cec75bd6d938a0d73fae0dc5534d1ab2ed1b0e&v=4
url: https://github.com/mycaule
YuriiMotov:
login: YuriiMotov
count: 24
avatarUrl: https://avatars.githubusercontent.com/u/109919500?u=e83a39697a2d33ab2ec9bfbced794ee48bc29cec&v=4
url: https://github.com/YuriiMotov
Aruelius:
login: Aruelius
count: 24
avatarUrl: https://avatars.githubusercontent.com/u/25380989?u=574f8cfcda3ea77a3f81884f6b26a97068e36a9d&v=4
url: https://github.com/Aruelius
wisderfin:
login: wisderfin
count: 24
avatarUrl: https://avatars.githubusercontent.com/u/77553770?u=9a23740d520d65dc0051cdc1ecd87f31cb900313&v=4
url: https://github.com/wisderfin
OzgunCaglarArslan:
login: OzgunCaglarArslan
count: 24
@ -268,11 +273,11 @@ axel584:
count: 23
avatarUrl: https://avatars.githubusercontent.com/u/1334088?u=9667041f5b15dc002b6f9665fda8c0412933ac04&v=4
url: https://github.com/axel584
wisderfin:
login: wisderfin
DianaTrufanova:
login: DianaTrufanova
count: 23
avatarUrl: https://avatars.githubusercontent.com/u/77553770?u=f3b00a26736ba664e9927a1116c6e8088295e073&v=4
url: https://github.com/wisderfin
avatarUrl: https://avatars.githubusercontent.com/u/119067607?u=1cd55f841b68b4a187fa6d06a7dafa5f070195aa&v=4
url: https://github.com/DianaTrufanova
AGolicyn:
login: AGolicyn
count: 21
@ -328,6 +333,16 @@ ivan-abc:
count: 18
avatarUrl: https://avatars.githubusercontent.com/u/36765187?u=c6e0ba571c1ccb6db9d94e62e4b8b5eda811a870&v=4
url: https://github.com/ivan-abc
Limsunoh:
login: Limsunoh
count: 18
avatarUrl: https://avatars.githubusercontent.com/u/90311848?u=f456e0c5709fd50c8cd2898b551558eda14e5f21&v=4
url: https://github.com/Limsunoh
SofiiaTrufanova:
login: SofiiaTrufanova
count: 18
avatarUrl: https://avatars.githubusercontent.com/u/63260929?u=483e0b64fabc76343b3be39b7e1dcb930a95e1bb&v=4
url: https://github.com/SofiiaTrufanova
bezaca:
login: bezaca
count: 17
@ -353,11 +368,6 @@ jeison-araya:
count: 17
avatarUrl: https://avatars.githubusercontent.com/u/57369279?u=17001e68af7d8e5b8c343e5e9df4050f419998d5&v=4
url: https://github.com/jeison-araya
Limsunoh:
login: Limsunoh
count: 17
avatarUrl: https://avatars.githubusercontent.com/u/90311848?u=f456e0c5709fd50c8cd2898b551558eda14e5f21&v=4
url: https://github.com/Limsunoh
yanever:
login: yanever
count: 16
@ -376,7 +386,7 @@ Joao-Pedro-P-Holanda:
JaeHyuckSa:
login: JaeHyuckSa
count: 16
avatarUrl: https://avatars.githubusercontent.com/u/104830931?v=4
avatarUrl: https://avatars.githubusercontent.com/u/104830931?u=6e352201714a05154e5d0ccf91b4715a951c622e&v=4
url: https://github.com/JaeHyuckSa
Jedore:
login: Jedore
@ -398,11 +408,6 @@ dukkee:
count: 14
avatarUrl: https://avatars.githubusercontent.com/u/36825394?u=ccfd86e6a4f2d093dad6f7544cc875af67fa2df8&v=4
url: https://github.com/dukkee
mkdir700:
login: mkdir700
count: 14
avatarUrl: https://avatars.githubusercontent.com/u/56359329?u=3d6ea8714f5000829b60dcf7b13a75b1e73aaf47&v=4
url: https://github.com/mkdir700
BORA040126:
login: BORA040126
count: 14
@ -411,7 +416,7 @@ BORA040126:
mattkoehne:
login: mattkoehne
count: 14
avatarUrl: https://avatars.githubusercontent.com/u/80362153?u=6e1439582715693407b86182eb66263bb578a761&v=4
avatarUrl: https://avatars.githubusercontent.com/u/80362153?v=4
url: https://github.com/mattkoehne
jovicon:
login: jovicon
@ -453,16 +458,16 @@ oandersonmagalhaes:
count: 12
avatarUrl: https://avatars.githubusercontent.com/u/83456692?v=4
url: https://github.com/oandersonmagalhaes
mkdir700:
login: mkdir700
count: 12
avatarUrl: https://avatars.githubusercontent.com/u/56359329?u=3d6ea8714f5000829b60dcf7b13a75b1e73aaf47&v=4
url: https://github.com/mkdir700
batlopes:
login: batlopes
count: 12
avatarUrl: https://avatars.githubusercontent.com/u/33462923?u=0fb3d7acb316764616f11e4947faf080e49ad8d9&v=4
url: https://github.com/batlopes
Lenclove:
login: Lenclove
count: 12
avatarUrl: https://avatars.githubusercontent.com/u/32355298?u=d0065e01650c63c2b2413f42d983634b2ea85481&v=4
url: https://github.com/Lenclove
joonas-yoon:
login: joonas-yoon
count: 12
@ -483,6 +488,11 @@ andersonrocha0:
count: 12
avatarUrl: https://avatars.githubusercontent.com/u/22346169?u=93a1359c8c5461d894802c0cc65bcd09217e7a02&v=4
url: https://github.com/andersonrocha0
gitgernit:
login: gitgernit
count: 12
avatarUrl: https://avatars.githubusercontent.com/u/129539613?u=d04f10143ab32c93f563ea14bf242d1d2bc991b0&v=4
url: https://github.com/gitgernit
kwang1215:
login: kwang1215
count: 12
@ -528,16 +538,16 @@ Lufa1u:
count: 11
avatarUrl: https://avatars.githubusercontent.com/u/112495876?u=087658920ed9e74311597bdd921d8d2de939d276&v=4
url: https://github.com/Lufa1u
waketzheng:
login: waketzheng
count: 11
avatarUrl: https://avatars.githubusercontent.com/u/35413830?u=df19e4fd5bb928e7d086e053ef26a46aad23bf84&v=4
url: https://github.com/waketzheng
KNChiu:
login: KNChiu
count: 11
avatarUrl: https://avatars.githubusercontent.com/u/36751646?v=4
url: https://github.com/KNChiu
gitgernit:
login: gitgernit
count: 11
avatarUrl: https://avatars.githubusercontent.com/u/129539613?u=d04f10143ab32c93f563ea14bf242d1d2bc991b0&v=4
url: https://github.com/gitgernit
mariacamilagl:
login: mariacamilagl
count: 10
@ -593,16 +603,21 @@ nick-cjyx9:
count: 10
avatarUrl: https://avatars.githubusercontent.com/u/119087246?u=c35aab03f082430be8a1edd80f5625b44819a0d8&v=4
url: https://github.com/nick-cjyx9
waketzheng:
login: waketzheng
count: 10
avatarUrl: https://avatars.githubusercontent.com/u/35413830?u=df19e4fd5bb928e7d086e053ef26a46aad23bf84&v=4
url: https://github.com/waketzheng
lucasbalieiro:
login: lucasbalieiro
count: 10
avatarUrl: https://avatars.githubusercontent.com/u/37416577?u=eabaf4aebbaa88a94a4886273edba689012cee70&v=4
url: https://github.com/lucasbalieiro
maru0123-2004:
login: maru0123-2004
count: 10
avatarUrl: https://avatars.githubusercontent.com/u/43961566?u=16ed8603a4d6a4665cb6c53a7aece6f31379b769&v=4
url: https://github.com/maru0123-2004
Zhongheng-Cheng:
login: Zhongheng-Cheng
count: 10
avatarUrl: https://avatars.githubusercontent.com/u/95612344?u=a0f7730a3cc7486827965e01a119ad610bda4b0a&v=4
url: https://github.com/Zhongheng-Cheng
RunningIkkyu:
login: RunningIkkyu
count: 9
@ -616,18 +631,18 @@ JulianMaurin:
JeongHyeongKim:
login: JeongHyeongKim
count: 9
avatarUrl: https://avatars.githubusercontent.com/u/26577800?u=fe653349051c0acf62cd984e74c4ff60ca8d2cb6&v=4
avatarUrl: https://avatars.githubusercontent.com/u/26577800?u=77f060f4686f32c248907b81b16ee2b3177ca44c&v=4
url: https://github.com/JeongHyeongKim
arthurio:
login: arthurio
count: 9
avatarUrl: https://avatars.githubusercontent.com/u/950449?u=76b997138273ce5e1990b971c4f27c9aff979fd5&v=4
url: https://github.com/arthurio
mahone3297:
login: mahone3297
Lenclove:
login: Lenclove
count: 9
avatarUrl: https://avatars.githubusercontent.com/u/1701379?u=20588ff0e456d13e8017333eb237595d11410234&v=4
url: https://github.com/mahone3297
avatarUrl: https://avatars.githubusercontent.com/u/32355298?u=d0065e01650c63c2b2413f42d983634b2ea85481&v=4
url: https://github.com/Lenclove
eVery1337:
login: eVery1337
count: 9
@ -643,6 +658,11 @@ riroan:
count: 9
avatarUrl: https://avatars.githubusercontent.com/u/33053284?u=2d18e3771506ee874b66d6aa2b3b1107fd95c38f&v=4
url: https://github.com/riroan
MinLee0210:
login: MinLee0210
count: 9
avatarUrl: https://avatars.githubusercontent.com/u/57653278?u=8ca05a7efbc76048183da00da87d148b755a3ba8&v=4
url: https://github.com/MinLee0210
yodai-yodai:
login: yodai-yodai
count: 9
@ -658,11 +678,6 @@ JoaoGustavoRogel:
count: 9
avatarUrl: https://avatars.githubusercontent.com/u/29525510?u=a0a91251f5e43e132608d55d28ccb8645c5ea405&v=4
url: https://github.com/JoaoGustavoRogel
Zhongheng-Cheng:
login: Zhongheng-Cheng
count: 9
avatarUrl: https://avatars.githubusercontent.com/u/95612344?u=a0f7730a3cc7486827965e01a119ad610bda4b0a&v=4
url: https://github.com/Zhongheng-Cheng
Yarous:
login: Yarous
count: 9
@ -683,11 +698,6 @@ bnzone:
count: 8
avatarUrl: https://avatars.githubusercontent.com/u/39371503?u=c16f00c41d88479fa2d57b0d7d233b758eacce2d&v=4
url: https://github.com/bnzone
ChuyuChoyeon:
login: ChuyuChoyeon
count: 8
avatarUrl: https://avatars.githubusercontent.com/u/129537877?u=f0c76f3327817a8b86b422d62e04a34bf2827f2b&v=4
url: https://github.com/ChuyuChoyeon
shamosishen:
login: shamosishen
count: 8
@ -698,26 +708,31 @@ mertssmnoglu:
count: 8
avatarUrl: https://avatars.githubusercontent.com/u/61623638?u=59dd885b68ff1832f9ab3b4a4446896358c23442&v=4
url: https://github.com/mertssmnoglu
mahone3297:
login: mahone3297
count: 8
avatarUrl: https://avatars.githubusercontent.com/u/1701379?u=20588ff0e456d13e8017333eb237595d11410234&v=4
url: https://github.com/mahone3297
KimJoonSeo:
login: KimJoonSeo
count: 8
avatarUrl: https://avatars.githubusercontent.com/u/17760162?u=a58cdc77ae1c069a64166f7ecc4d42eecfd9a468&v=4
url: https://github.com/KimJoonSeo
MinLee0210:
login: MinLee0210
count: 8
avatarUrl: https://avatars.githubusercontent.com/u/57653278?u=7def7c0654ad82f43b46d6dfc3b51c4d2be15011&v=4
url: https://github.com/MinLee0210
camigomezdev:
login: camigomezdev
count: 8
avatarUrl: https://avatars.githubusercontent.com/u/16061815?u=25b5ebc042fff53fa03dc107ded10e36b1b7a5b9&v=4
url: https://github.com/camigomezdev
maru0123-2004:
login: maru0123-2004
minaton-ru:
login: minaton-ru
count: 8
avatarUrl: https://avatars.githubusercontent.com/u/43961566?u=16ed8603a4d6a4665cb6c53a7aece6f31379b769&v=4
url: https://github.com/maru0123-2004
avatarUrl: https://avatars.githubusercontent.com/u/53541518?u=67336ca11a85493f75031508aade588dad3b9910&v=4
url: https://github.com/minaton-ru
sungchan1:
login: sungchan1
count: 8
avatarUrl: https://avatars.githubusercontent.com/u/28076127?u=a816d86ef3e60450a7225f128caf9a394c9320f9&v=4
url: https://github.com/sungchan1
Serrones:
login: Serrones
count: 7
@ -738,6 +753,11 @@ anthonycepeda:
count: 7
avatarUrl: https://avatars.githubusercontent.com/u/72019805?u=60bdf46240cff8fca482ff0fc07d963fd5e1a27c&v=4
url: https://github.com/anthonycepeda
Muaytie666:
login: Muaytie666
count: 7
avatarUrl: https://avatars.githubusercontent.com/u/198508825?v=4
url: https://github.com/Muaytie666
fabioueno:
login: fabioueno
count: 7
@ -763,10 +783,20 @@ d2a-raudenaerde:
count: 7
avatarUrl: https://avatars.githubusercontent.com/u/5213150?v=4
url: https://github.com/d2a-raudenaerde
valentinDruzhinin:
login: valentinDruzhinin
count: 7
avatarUrl: https://avatars.githubusercontent.com/u/12831905?u=aae1ebc675c91e8fa582df4fcc4fc4128106344d&v=4
url: https://github.com/valentinDruzhinin
Zerohertz:
login: Zerohertz
count: 7
avatarUrl: https://avatars.githubusercontent.com/u/42334717?u=5ebf4d33e73b1ad373154f6cdee44f7cab4d05ba&v=4
url: https://github.com/Zerohertz
deniscapeto:
login: deniscapeto
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/12864353?u=dbc20c5c1171feab5df4db46488b675d53cb5b07&v=4
avatarUrl: https://avatars.githubusercontent.com/u/12864353?u=20c5b2300b264a585a8381acf3cef44bcfcc1ead&v=4
url: https://github.com/deniscapeto
bsab:
login: bsab
@ -838,11 +868,6 @@ Kirilex:
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/100281552?v=4
url: https://github.com/Kirilex
Mordson:
login: Mordson
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/39025897?u=b94ea96ef35bbe43bc85359cfb31d28ac16d470c&v=4
url: https://github.com/Mordson
arunppsg:
login: arunppsg
count: 6
@ -853,11 +878,6 @@ dimastbk:
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/3132181?u=66587398d43466a1dc75c238df5f048e0afc77ed&v=4
url: https://github.com/dimastbk
lordqyxz:
login: lordqyxz
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/31722468?u=974553c0ba53526d9be7e9876544283291be3b0d&v=4
url: https://github.com/lordqyxz
dudyaosuplayer:
login: dudyaosuplayer
count: 6
@ -873,16 +893,11 @@ bankofsardine:
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/44944207?u=0368e1b698ffab6bf29e202f9fd2dddd352429f1&v=4
url: https://github.com/bankofsardine
SofiiaTrufanova:
login: SofiiaTrufanova
Rekl0w:
login: Rekl0w
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/63260929?v=4
url: https://github.com/SofiiaTrufanova
DianaTrufanova:
login: DianaTrufanova
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/119067607?v=4
url: https://github.com/DianaTrufanova
avatarUrl: https://avatars.githubusercontent.com/u/91488737?u=3b62b04a3e6699eab9b1eea4e88c09a39b753a17&v=4
url: https://github.com/Rekl0w
rsip22:
login: rsip22
count: 5
@ -911,7 +926,7 @@ TemaSpb:
BugLight:
login: BugLight
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/13618366?u=57572e544e40c2a491db5bf7255bd24886d2cb09&v=4
avatarUrl: https://avatars.githubusercontent.com/u/13618366?u=7d733749f80e5f7e66a434cf42aedcfc60340f43&v=4
url: https://github.com/BugLight
0x4Dark:
login: 0x4Dark
@ -926,13 +941,18 @@ Wuerike:
jvmazagao:
login: jvmazagao
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/22477816?u=f3b2d503b53e6ec8c808f0601b756a063a07f06e&v=4
avatarUrl: https://avatars.githubusercontent.com/u/22477816?u=2b57addf5830906bf6ae5f25cd4c8c2fa5c2d68e&v=4
url: https://github.com/jvmazagao
cun3yt:
login: cun3yt
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/24409240?u=39f651cdcc4991fb9fef5bbd9e9503db2174ac13&v=4
avatarUrl: https://avatars.githubusercontent.com/u/24409240?u=06abfd77786db859b0602d5369d2ae18c932c17c&v=4
url: https://github.com/cun3yt
Mordson:
login: Mordson
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/39025897?u=b94ea96ef35bbe43bc85359cfb31d28ac16d470c&v=4
url: https://github.com/Mordson
aminkhani:
login: aminkhani
count: 5
@ -953,10 +973,15 @@ Chushine:
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/135534400?v=4
url: https://github.com/Chushine
ChuyuChoyeon:
login: ChuyuChoyeon
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/129537877?u=f0c76f3327817a8b86b422d62e04a34bf2827f2b&v=4
url: https://github.com/ChuyuChoyeon
frwl404:
login: frwl404
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/42642656?u=572a5a33762e07eaa6ebd58d9d773abdb1de41c3&v=4
avatarUrl: https://avatars.githubusercontent.com/u/42642656?u=8395a3d991d9fac86901277d76f0f70857b56ec5&v=4
url: https://github.com/frwl404
esrefzeki:
login: esrefzeki
@ -1033,6 +1058,11 @@ FelipeSilva93:
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/66804965?u=e7cb4b580e46f2e04ecb4cd4d7a12acdddd3c6c1&v=4
url: https://github.com/FelipeSilva93
peacekimjapan:
login: peacekimjapan
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/33534175?u=e4219bcebc3773a7068cc34c3eb268ef77cec31b&v=4
url: https://github.com/peacekimjapan
bas-baskara:
login: bas-baskara
count: 4
@ -1061,13 +1091,18 @@ aminalaee:
erfan-rfmhr:
login: erfan-rfmhr
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/98986056?u=6c4f9218fe5bb04780dd92bfced360c55e2009f0&v=4
avatarUrl: https://avatars.githubusercontent.com/u/98986056?u=0acda1ff1df0989f3f3eb79977baa35da4cb6c8c&v=4
url: https://github.com/erfan-rfmhr
Scorpionchiques:
login: Scorpionchiques
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/15703294?v=4
url: https://github.com/Scorpionchiques
lordqyxz:
login: lordqyxz
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/31722468?u=974553c0ba53526d9be7e9876544283291be3b0d&v=4
url: https://github.com/lordqyxz
heysaeid:
login: heysaeid
count: 4
@ -1123,11 +1158,11 @@ gerry-sabar:
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/1120123?v=4
url: https://github.com/gerry-sabar
valentinDruzhinin:
login: valentinDruzhinin
cookie-byte217:
login: cookie-byte217
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/12831905?u=aae1ebc675c91e8fa582df4fcc4fc4128106344d&v=4
url: https://github.com/valentinDruzhinin
avatarUrl: https://avatars.githubusercontent.com/u/57880178?v=4
url: https://github.com/cookie-byte217
tyronedamasceno:
login: tyronedamasceno
count: 3
@ -1206,7 +1241,7 @@ RuslanTer:
FedorGN:
login: FedorGN
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/66411909?u=1c6734e92f50c7d66f130ef7d394e72b53770fe6&v=4
avatarUrl: https://avatars.githubusercontent.com/u/66411909?u=22382380e7d66ee57ffbfc2ae6bd5efd0cdb672e&v=4
url: https://github.com/FedorGN
rafsaf:
login: rafsaf
@ -1308,6 +1343,11 @@ Sion99:
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/82511301?v=4
url: https://github.com/Sion99
nymous:
login: nymous
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/4216559?u=360a36fb602cded27273cbfc0afc296eece90662&v=4
url: https://github.com/nymous
EpsilonRationes:
login: EpsilonRationes
count: 3
@ -1328,6 +1368,11 @@ kohiry:
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/57669492?u=f6ab0a062740261e882879269a41a47788c84043&v=4
url: https://github.com/kohiry
ptt3199:
login: ptt3199
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/51350651?u=2c3d947a80283e32bf616d4c3af139a6be69680f&v=4
url: https://github.com/ptt3199
arynoot:
login: arynoot
count: 3
@ -1341,7 +1386,7 @@ GDemay:
maxscheijen:
login: maxscheijen
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/47034840?u=eb98f37882528ea349ca4e5255fa64ac3fef0294&v=4
avatarUrl: https://avatars.githubusercontent.com/u/47034840?v=4
url: https://github.com/maxscheijen
celestywang:
login: celestywang
@ -1353,16 +1398,21 @@ RyaWcksn:
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/42831964?u=0cb4265faf3e3425a89e59b6fddd3eb2de180af0&v=4
url: https://github.com/RyaWcksn
Zerohertz:
login: Zerohertz
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/42334717?u=c6acda352c866b1747921e0ff8782b58571d849e&v=4
url: https://github.com/Zerohertz
tienduong-21:
login: tienduong-21
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/80129618?v=4
url: https://github.com/tienduong-21
soroushgh1:
login: soroushgh1
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/178516095?u=5e26f6a5f66cdb32d7b56e6ab362bf18ba7858b9&v=4
url: https://github.com/soroushgh1
zbellos:
login: zbellos
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/204500646?v=4
url: https://github.com/zbellos
blaisep:
login: blaisep
count: 2
@ -1436,7 +1486,7 @@ TimorChow:
ataberkciftlikli:
login: ataberkciftlikli
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/64265169?v=4
avatarUrl: https://avatars.githubusercontent.com/u/64265169?u=ca7c1348242559f70bc1dc027a4be277c464676f&v=4
url: https://github.com/ataberkciftlikli
leandrodesouzadev:
login: leandrodesouzadev
@ -1468,26 +1518,21 @@ lindsayzhou:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/26602940?u=3c52ce6393bb547c97e6380ccdee03e0c64152c6&v=4
url: https://github.com/0xflotus
peacekimjapan:
login: peacekimjapan
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/33534175?u=e4219bcebc3773a7068cc34c3eb268ef77cec31b&v=4
url: https://github.com/peacekimjapan
jonatasoli:
login: jonatasoli
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/26334101?u=071c062d2861d3dd127f6b4a5258cd8ef55d4c50&v=4
avatarUrl: https://avatars.githubusercontent.com/u/26334101?u=f601c3f111f2148bd9244c2cb3ebbd57b592e674&v=4
url: https://github.com/jonatasoli
tyzh-dev:
login: tyzh-dev
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/51972581?u=ba3882da7c009918a8e2d6b9ead31c89f09c922d&v=4
url: https://github.com/tyzh-dev
WaFeeAL:
login: WaFeeAL
yurkevich-dev:
login: yurkevich-dev
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/45145188?u=db2de8c186073d95693279dcf085fcebffab57d0&v=4
url: https://github.com/WaFeeAL
url: https://github.com/yurkevich-dev
emp7yhead:
login: emp7yhead
count: 2
@ -1541,7 +1586,7 @@ raphaelauv:
Fahad-Md-Kamal:
login: Fahad-Md-Kamal
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/34704464?u=84abea85e59c30b2e3bc700ae42424f3fe704332&v=4
avatarUrl: https://avatars.githubusercontent.com/u/34704464?u=141086368c5557d5a1a533fe291f21f9fc584458&v=4
url: https://github.com/Fahad-Md-Kamal
zxcq544:
login: zxcq544
@ -1656,7 +1701,7 @@ zhiquanchi:
Jamim:
login: Jamim
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/5607572?u=0cf3027bec78ba4f0b89802430c136bc69847d7a&v=4
avatarUrl: https://avatars.githubusercontent.com/u/5607572?u=9ce0b6a6d1a5124e28b3c04d8d26827ca328713a&v=4
url: https://github.com/Jamim
alvinkhalil:
login: alvinkhalil
@ -1666,7 +1711,7 @@ alvinkhalil:
leylaeminova:
login: leylaeminova
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/100516839?u=35a9ce14bb86d7d7faa25d432f61dec2984cb818&v=4
avatarUrl: https://avatars.githubusercontent.com/u/100516839?u=0b0dab9e31742076b22812b14a39b4e6d8f6de4a&v=4
url: https://github.com/leylaeminova
UN-9BOT:
login: UN-9BOT
@ -1678,11 +1723,6 @@ flasonme:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/30571019?v=4
url: https://github.com/flasonme
ptt3199:
login: ptt3199
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/51350651?u=ccf51f8820787e17983954f26b06acf226cba293&v=4
url: https://github.com/ptt3199
gustavoprezoto:
login: gustavoprezoto
count: 2
@ -1706,13 +1746,18 @@ ZhibangYue:
saeye:
login: saeye
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/62229734?v=4
avatarUrl: https://avatars.githubusercontent.com/u/62229734?u=312d619db2588b60d5d5bde65260a2f44fdc6c76&v=4
url: https://github.com/saeye
Heumhub:
login: Heumhub
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/173761521?v=4
url: https://github.com/Heumhub
manumolina:
login: manumolina
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/2404208?u=fdc5502910f8dec814b2477f89587b9e45fac846&v=4
url: https://github.com/manumolina
logan2d5:
login: logan2d5
count: 2
@ -1728,8 +1773,48 @@ kiharito:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/38311245?v=4
url: https://github.com/kiharito
t4f1d:
login: t4f1d
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/4054172?u=463d5ce0ec8ad8582f6e9351bb8c9a5105b39bb7&v=4
url: https://github.com/t4f1d
J-Fuji:
login: J-Fuji
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/101452903?v=4
url: https://github.com/J-Fuji
MrL8199:
login: MrL8199
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/39489075?u=3fc4f89c86973e40b5970d838c801bdbc13ac828&v=4
url: https://github.com/MrL8199
ivintoiu:
login: ivintoiu
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/1853336?u=5e3d0977f44661fb9712fa297cc8f7608ea6ce48&v=4
url: https://github.com/ivintoiu
EgorOnishchuk:
login: EgorOnishchuk
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/120256301?v=4
url: https://github.com/EgorOnishchuk
iamantonreznik:
login: iamantonreznik
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/112612414?u=bf6de9a1ab17326fe14de0709719fff3826526d0&v=4
url: https://github.com/iamantonreznik
Azazul123:
login: Azazul123
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/102759111?u=b48ce6e30a81a23467cc30e0c011bcc57f0326ab&v=4
url: https://github.com/Azazul123
ykertytsky:
login: ykertytsky
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/83857001?u=1172902656ee604cf37f5e36abe938cd34a97a32&v=4
url: https://github.com/ykertytsky
NavesSapnis:
login: NavesSapnis
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/79222417?u=b5b10291b8e9130ca84fd20f0a641e04ed94b6b1&v=4
url: https://github.com/NavesSapnis

98
docs/en/data/translators.yml

@ -8,6 +8,11 @@ jaystone776:
count: 46
avatarUrl: https://avatars.githubusercontent.com/u/11191137?u=299205a95e9b6817a43144a48b643346a5aac5cc&v=4
url: https://github.com/jaystone776
valentinDruzhinin:
login: valentinDruzhinin
count: 29
avatarUrl: https://avatars.githubusercontent.com/u/12831905?u=aae1ebc675c91e8fa582df4fcc4fc4128106344d&v=4
url: https://github.com/valentinDruzhinin
ceb10n:
login: ceb10n
count: 27
@ -53,16 +58,16 @@ codingjenny:
count: 14
avatarUrl: https://avatars.githubusercontent.com/u/103817302?u=3a042740dc0ff58615da0d8679230966fd7693e8&v=4
url: https://github.com/codingjenny
valentinDruzhinin:
login: valentinDruzhinin
count: 14
avatarUrl: https://avatars.githubusercontent.com/u/12831905?u=aae1ebc675c91e8fa582df4fcc4fc4128106344d&v=4
url: https://github.com/valentinDruzhinin
Xewus:
login: Xewus
count: 13
avatarUrl: https://avatars.githubusercontent.com/u/85196001?u=f8e2dc7e5104f109cef944af79050ea8d1b8f914&v=4
url: https://github.com/Xewus
Zhongheng-Cheng:
login: Zhongheng-Cheng
count: 13
avatarUrl: https://avatars.githubusercontent.com/u/95612344?u=a0f7730a3cc7486827965e01a119ad610bda4b0a&v=4
url: https://github.com/Zhongheng-Cheng
Smlep:
login: Smlep
count: 11
@ -83,11 +88,6 @@ Vincy1230:
count: 9
avatarUrl: https://avatars.githubusercontent.com/u/81342412?u=ab5e256a4077a4a91f3f9cd2115ba80780454cbe&v=4
url: https://github.com/Vincy1230
Zhongheng-Cheng:
login: Zhongheng-Cheng
count: 9
avatarUrl: https://avatars.githubusercontent.com/u/95612344?u=a0f7730a3cc7486827965e01a119ad610bda4b0a&v=4
url: https://github.com/Zhongheng-Cheng
rjNemo:
login: rjNemo
count: 8
@ -103,6 +103,16 @@ pablocm83:
count: 8
avatarUrl: https://avatars.githubusercontent.com/u/28315068?u=3310fbb05bb8bfc50d2c48b6cb64ac9ee4a14549&v=4
url: https://github.com/pablocm83
ptt3199:
login: ptt3199
count: 7
avatarUrl: https://avatars.githubusercontent.com/u/51350651?u=2c3d947a80283e32bf616d4c3af139a6be69680f&v=4
url: https://github.com/ptt3199
NinaHwang:
login: NinaHwang
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/79563565?u=241f2cb6d38a2d379536608a8ea5a22ed4b1a3ea&v=4
url: https://github.com/NinaHwang
batlopes:
login: batlopes
count: 6
@ -118,11 +128,6 @@ Alexandrhub:
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/119126536?u=9fc0d48f3307817bafecc5861eb2168401a6cb04&v=4
url: https://github.com/Alexandrhub
ptt3199:
login: ptt3199
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/51350651?u=ccf51f8820787e17983954f26b06acf226cba293&v=4
url: https://github.com/ptt3199
Serrones:
login: Serrones
count: 5
@ -138,11 +143,6 @@ Attsun1031:
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/1175560?v=4
url: https://github.com/Attsun1031
NinaHwang:
login: NinaHwang
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/79563565?u=241f2cb6d38a2d379536608a8ea5a22ed4b1a3ea&v=4
url: https://github.com/NinaHwang
tiangolo:
login: tiangolo
count: 5
@ -203,6 +203,11 @@ kwang1215:
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/74170199?u=2a63ff6692119dde3f5e5693365b9fcd6f977b08&v=4
url: https://github.com/kwang1215
k94-ishi:
login: k94-ishi
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/32672580?u=bc7c5c07af0656be9fe4f1784a444af8d81ded89&v=4
url: https://github.com/k94-ishi
jfunez:
login: jfunez
count: 3
@ -248,11 +253,6 @@ Zssaer:
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/45691504?u=4c0c195f25cb5ac6af32acfb0ab35427682938d2&v=4
url: https://github.com/Zssaer
wdh99:
login: wdh99
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/108172295?u=8a8fb95d5afe3e0fa33257b2aecae88d436249eb&v=4
url: https://github.com/wdh99
ChuyuChoyeon:
login: ChuyuChoyeon
count: 3
@ -271,12 +271,12 @@ mojtabapaso:
hsuanchi:
login: hsuanchi
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/24913710?u=0b094ae292292fee093818e37ceb645c114d2bff&v=4
avatarUrl: https://avatars.githubusercontent.com/u/24913710?u=7d25a398e478b6e63503bf6f26c54efa9e0da07b&v=4
url: https://github.com/hsuanchi
alejsdev:
login: alejsdev
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/90076947?u=356f39ff3f0211c720b06d3dbb060e98884085e3&v=4
avatarUrl: https://avatars.githubusercontent.com/u/90076947?u=638c65283ac9e9e2c3a0f9d1e3370db4b8a2c58d&v=4
url: https://github.com/alejsdev
riroan:
login: riroan
@ -296,7 +296,7 @@ pe-brian:
maxscheijen:
login: maxscheijen
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/47034840?u=eb98f37882528ea349ca4e5255fa64ac3fef0294&v=4
avatarUrl: https://avatars.githubusercontent.com/u/47034840?v=4
url: https://github.com/maxscheijen
ilacftemp:
login: ilacftemp
@ -328,21 +328,26 @@ nahyunkeem:
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/174440096?u=e12401d492eee58570f8914d0872b52e421a776e&v=4
url: https://github.com/nahyunkeem
timothy-jeong:
login: timothy-jeong
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/53824764?u=db3d0cea2f5fab64d810113c5039a369699a2774&v=4
url: https://github.com/timothy-jeong
gerry-sabar:
login: gerry-sabar
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/1120123?v=4
url: https://github.com/gerry-sabar
k94-ishi:
login: k94-ishi
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/32672580?u=bc7c5c07af0656be9fe4f1784a444af8d81ded89&v=4
url: https://github.com/k94-ishi
Rishat-F:
login: Rishat-F
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/66554797?v=4
url: https://github.com/Rishat-F
ruzia:
login: ruzia
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/24503?v=4
url: https://github.com/ruzia
izaguerreiro:
login: izaguerreiro
count: 2
@ -473,6 +478,11 @@ imtiaz101325:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/54007087?u=194d972b501b9ea9d2ddeaed757c492936e0121a&v=4
url: https://github.com/imtiaz101325
fabianfalon:
login: fabianfalon
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/3700760?u=95f69e31280b17ac22299cdcd345323b142fe0af&v=4
url: https://github.com/fabianfalon
waketzheng:
login: waketzheng
count: 2
@ -501,15 +511,25 @@ andersonrocha0:
saeye:
login: saeye
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/62229734?v=4
avatarUrl: https://avatars.githubusercontent.com/u/62229734?u=312d619db2588b60d5d5bde65260a2f44fdc6c76&v=4
url: https://github.com/saeye
timothy-jeong:
login: timothy-jeong
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/53824764?u=db3d0cea2f5fab64d810113c5039a369699a2774&v=4
url: https://github.com/timothy-jeong
11kkw:
login: 11kkw
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/21125286?v=4
url: https://github.com/11kkw
yes0ng:
login: yes0ng
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/25501794?u=3aed18b0d491e0220a167a1e9e58bea3638c6707&v=4
url: https://github.com/yes0ng
EgorOnishchuk:
login: EgorOnishchuk
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/120256301?v=4
url: https://github.com/EgorOnishchuk
NavesSapnis:
login: NavesSapnis
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/79222417?u=b5b10291b8e9130ca84fd20f0a641e04ed94b6b1&v=4
url: https://github.com/NavesSapnis

4
docs/en/docs/advanced/generate-clients.md

@ -22,9 +22,9 @@ And it shows their true commitment to FastAPI and its **community** (you), as th
For example, you might want to try:
* <a href="https://speakeasy.com/?utm_source=fastapi+repo&utm_medium=github+sponsorship" class="external-link" target="_blank">Speakeasy</a>
* <a href="https://speakeasy.com/editor?utm_source=fastapi+repo&utm_medium=github+sponsorship" class="external-link" target="_blank">Speakeasy</a>
* <a href="https://www.stainlessapi.com/?utm_source=fastapi&utm_medium=referral" class="external-link" target="_blank">Stainless</a>
* <a href="https://developers.liblab.com/tutorials/sdk-for-fastapi/?utm_source=fastapi" class="external-link" target="_blank">liblab</a>
* <a href="https://developers.liblab.com/tutorials/sdk-for-fastapi?utm_source=fastapi" class="external-link" target="_blank">liblab</a>
There are also several other companies offering similar services that you can search and find online. 🤓

2
docs/en/docs/advanced/response-directly.md

@ -58,7 +58,7 @@ You could put your XML content in a string, put that in a `Response`, and return
## Notes
When you return a `Response` directly its data is not validated, converted (serialized), nor documented automatically.
When you return a `Response` directly its data is not validated, converted (serialized), or documented automatically.
But you can still document it as described in [Additional Responses in OpenAPI](additional-responses.md){.internal-link target=_blank}.

2
docs/en/docs/async.md

@ -40,7 +40,7 @@ def results():
---
If your application (somehow) doesn't have to communicate with anything else and wait for it to respond, use `async def`.
If your application (somehow) doesn't have to communicate with anything else and wait for it to respond, use `async def`, even if you don't need to use `await` inside.
---

22
docs/en/docs/contributing.md

@ -181,6 +181,28 @@ as Uvicorn by default will use the port `8000`, the documentation on port `8008`
### Translations
/// warning | Attention
**Update on Translations**
We're updating the way we handle documentation translations.
Until now, we invited community members to translate pages via pull requests, which were then reviewed by at least two native speakers. While this has helped bring FastAPI to many more users, we’ve also run into several challenges - some languages have only a few translated pages, others are outdated and hard to maintain over time.
To improve this, we’re working on automation tools 🤖 to manage translations more efficiently. Once ready, documentation will be machine-translated and still reviewed by at least two native speakers ✅ before publishing. This will allow us to keep translations up-to-date while reducing the review burden on maintainers.
What’s changing now:
* 🚫 We’re no longer accepting new community-submitted translation PRs.
* ⏳ Existing open PRs will be reviewed and can still be merged if completed within the next 3 weeks (since July 11 2025).
* 🌐 In the future, we will only support languages where at least three active native speakers are available to review and maintain translations.
This transition will help us keep translations more consistent and timely while better supporting our contributors 🙌. Thank you to everyone who has contributed so far — your help has been invaluable! 💖
///
Help with translations is VERY MUCH appreciated! And it can't be done without the help from the community. 🌎 🚀
Here are the steps to help with translations.

1
docs/en/docs/deployment/cloud.md

@ -14,5 +14,4 @@ You might want to try their services and follow their guides:
* <a href="https://docs.platform.sh/languages/python.html?utm_source=fastapi-signup&utm_medium=banner&utm_campaign=FastAPI-signup-June-2023" class="external-link" target="_blank">Platform.sh</a>
* <a href="https://docs.porter.run/language-specific-guides/fastapi" class="external-link" target="_blank">Porter</a>
* <a href="https://www.withcoherence.com/?utm_medium=advertising&utm_source=fastapi&utm_campaign=website" class="external-link" target="_blank">Coherence</a>
* <a href="https://docs.render.com/deploy-fastapi?utm_source=deploydoc&utm_medium=referral&utm_campaign=fastapi" class="external-link" target="_blank">Render</a>

4
docs/en/docs/deployment/concepts.md

@ -65,7 +65,7 @@ The word **program** is commonly used to describe many things:
* The **code** that you write, the **Python files**.
* The **file** that can be **executed** by the operating system, for example: `python`, `python.exe` or `uvicorn`.
* A particular program while it is **running** on the operating system, using the CPU, and storing things on memory. This is also called a **process**.
* A particular program while it is **running** on the operating system, using the CPU, and storing things in memory. This is also called a **process**.
### What is a Process
@ -216,7 +216,7 @@ This Manager Process would probably be the one listening on the **port** in the
Those worker processes would be the ones running your application, they would perform the main computations to receive a **request** and return a **response**, and they would load anything you put in variables in RAM.
<img src="/img/deployment/concepts/process-ram.svg">
<img src="/img/deployment/concepts/process-ram.drawio.svg">
And of course, the same machine would probably have **other processes** running as well, apart from your application.

18
docs/en/docs/deployment/https.md

@ -85,7 +85,7 @@ First, the browser would check with the **DNS servers** what is the **IP for the
The DNS servers would tell the browser to use some specific **IP address**. That would be the public IP address used by your server, that you configured in the DNS servers.
<img src="/img/deployment/https/https01.svg">
<img src="/img/deployment/https/https01.drawio.svg">
### TLS Handshake Start
@ -93,7 +93,7 @@ The browser would then communicate with that IP address on **port 443** (the HTT
The first part of the communication is just to establish the connection between the client and the server and to decide the cryptographic keys they will use, etc.
<img src="/img/deployment/https/https02.svg">
<img src="/img/deployment/https/https02.drawio.svg">
This interaction between the client and the server to establish the TLS connection is called the **TLS handshake**.
@ -111,7 +111,7 @@ Using the **SNI extension** discussed above, the TLS Termination Proxy would che
In this case, it would use the certificate for `someapp.example.com`.
<img src="/img/deployment/https/https03.svg">
<img src="/img/deployment/https/https03.drawio.svg">
The client already **trusts** the entity that generated that TLS certificate (in this case Let's Encrypt, but we'll see about that later), so it can **verify** that the certificate is valid.
@ -133,19 +133,19 @@ Now that the client and server (specifically the browser and the TLS Termination
So, the client sends an **HTTPS request**. This is just an HTTP request through an encrypted TLS connection.
<img src="/img/deployment/https/https04.svg">
<img src="/img/deployment/https/https04.drawio.svg">
### Decrypt the Request
The TLS Termination Proxy would use the encryption agreed to **decrypt the request**, and would transmit the **plain (decrypted) HTTP request** to the process running the application (for example a process with Uvicorn running the FastAPI application).
<img src="/img/deployment/https/https05.svg">
<img src="/img/deployment/https/https05.drawio.svg">
### HTTP Response
The application would process the request and send a **plain (unencrypted) HTTP response** to the TLS Termination Proxy.
<img src="/img/deployment/https/https06.svg">
<img src="/img/deployment/https/https06.drawio.svg">
### HTTPS Response
@ -153,7 +153,7 @@ The TLS Termination Proxy would then **encrypt the response** using the cryptogr
Next, the browser would verify that the response is valid and encrypted with the right cryptographic key, etc. It would then **decrypt the response** and process it.
<img src="/img/deployment/https/https07.svg">
<img src="/img/deployment/https/https07.drawio.svg">
The client (browser) will know that the response comes from the correct server because it is using the cryptography they agreed using the **HTTPS certificate** before.
@ -163,7 +163,7 @@ In the same server (or servers), there could be **multiple applications**, for e
Only one process can be handling the specific IP and port (the TLS Termination Proxy in our example) but the other applications/processes can be running on the server(s) too, as long as they don't try to use the same **combination of public IP and port**.
<img src="/img/deployment/https/https08.svg">
<img src="/img/deployment/https/https08.drawio.svg">
That way, the TLS Termination Proxy could handle HTTPS and certificates for **multiple domains**, for multiple applications, and then transmit the requests to the right application in each case.
@ -173,7 +173,7 @@ At some point in the future, each certificate would **expire** (about 3 months a
And then, there would be another program (in some cases it's another program, in some cases it could be the same TLS Termination Proxy) that would talk to Let's Encrypt, and renew the certificate(s).
<img src="/img/deployment/https/https.svg">
<img src="/img/deployment/https/https.drawio.svg">
The **TLS certificates** are **associated with a domain name**, not with an IP address.

15
docs/en/docs/help-fastapi.md

@ -249,20 +249,7 @@ On the other side, there are thousands of users in the chat systems, so there's
## Sponsor the author
You can also financially support the author (me) through <a href="https://github.com/sponsors/tiangolo" class="external-link" target="_blank">GitHub sponsors</a>.
There you could buy me a coffee ☕️ to say thanks. 😄
And you can also become a Silver or Gold sponsor for FastAPI. 🏅🎉
## Sponsor the tools that power FastAPI
As you have seen in the documentation, FastAPI stands on the shoulders of giants, Starlette and Pydantic.
You can also sponsor:
* <a href="https://github.com/sponsors/samuelcolvin" class="external-link" target="_blank">Samuel Colvin (Pydantic)</a>
* <a href="https://github.com/sponsors/encode" class="external-link" target="_blank">Encode (Starlette, Uvicorn)</a>
If your **product/company** depends on or is related to **FastAPI** and you want to reach its users, you can sponsor the author (me) through <a href="https://github.com/sponsors/tiangolo" class="external-link" target="_blank">GitHub sponsors</a>. Depending on the tier, you could get some extra benefits, like a badge in the docs. 🎁
---

12
docs/en/docs/how-to/custom-docs-ui-assets.md

@ -98,7 +98,7 @@ You can probably right-click each link and select an option similar to `Save lin
And **ReDoc** uses the file:
* <a href="https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js" class="external-link" target="_blank">`redoc.standalone.js`</a>
* <a href="https://cdn.jsdelivr.net/npm/redoc@2/bundles/redoc.standalone.js" class="external-link" target="_blank">`redoc.standalone.js`</a>
After that, your file structure could look like:
@ -129,14 +129,8 @@ You should see a very long JavaScript file for **ReDoc**.
It could start with something like:
```JavaScript
/*!
* ReDoc - OpenAPI/Swagger-generated API Reference Documentation
* -------------------------------------------------------------
* Version: "2.0.0-rc.18"
* Repo: https://github.com/Redocly/redoc
*/
!function(e,t){"object"==typeof exports&&"object"==typeof m
/*! For license information please see redoc.standalone.js.LICENSE.txt */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("null")):
...
```

106
docs/en/docs/img/deployment/concepts/process-ram.drawio

@ -1,106 +0,0 @@
<mxfile host="65bd71144e">
<diagram id="BkDNbdtn8_9fWQybnc8v" name="Page-1">
<mxGraphModel dx="741" dy="1167" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="420" y="280" width="920" height="670" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;font face=&quot;Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Server&lt;/span&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="755" y="290" width="300" height="80" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="1110" y="410" width="190" height="500" as="geometry"/>
</mxCell>
<mxCell id="7" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;RAM&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="1166.92" y="420" width="76.16" height="30" as="geometry"/>
</mxCell>
<mxCell id="9" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="470" y="410" width="250" height="500" as="geometry"/>
</mxCell>
<mxCell id="10" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;CPU&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="554.61" y="420" width="80.77" height="30" as="geometry"/>
</mxCell>
<mxCell id="14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" source="11" target="12" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="800" y="521"/>
<mxPoint x="800" y="560"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" source="11" target="13" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="820" y="525" as="sourcePoint"/>
<Array as="points">
<mxPoint x="800" y="680"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;endArrow=none;endFill=0;" parent="1" source="11" target="17" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="11" target="18" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="11" value="&lt;font face=&quot;roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Process&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Manager&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="780" y="420" width="250" height="100" as="geometry"/>
</mxCell>
<mxCell id="25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="12" target="23" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="12" value="&lt;font face=&quot;roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Worker Process&lt;/span&gt;&lt;/font&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="840" y="540" width="240" height="100" as="geometry"/>
</mxCell>
<mxCell id="26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="13" target="24" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="13" target="22" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="775" y="710"/>
<mxPoint x="775" y="688"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="13" value="&lt;font face=&quot;roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Worker Process&lt;/span&gt;&lt;/font&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="840" y="660" width="240" height="100" as="geometry"/>
</mxCell>
<mxCell id="28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="16" target="27" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="16" target="30" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="16" value="&lt;font face=&quot;roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Another Process&lt;/span&gt;&lt;/font&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="780" y="790" width="250" height="100" as="geometry"/>
</mxCell>
<mxCell id="17" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=3;fillColor=#d5e8d4;strokeColor=#82b366;dashed=1;" parent="1" vertex="1">
<mxGeometry x="480" y="458" width="230" height="40" as="geometry"/>
</mxCell>
<mxCell id="18" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=3;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="1130" y="460" width="150" height="20" as="geometry"/>
</mxCell>
<mxCell id="21" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=3;fillColor=#fff2cc;strokeColor=#d6b656;dashed=1;" parent="1" vertex="1">
<mxGeometry x="480" y="508" width="230" height="100" as="geometry"/>
</mxCell>
<mxCell id="22" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=3;fillColor=#e1d5e7;strokeColor=#9673a6;dashed=1;" parent="1" vertex="1">
<mxGeometry x="480" y="618" width="230" height="140" as="geometry"/>
</mxCell>
<mxCell id="23" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;1 GB&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=3;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="1130" y="490" width="150" height="150" as="geometry"/>
</mxCell>
<mxCell id="24" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;1 GB&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=3;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="1130" y="650" width="150" height="150" as="geometry"/>
</mxCell>
<mxCell id="27" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=3;dashed=1;" parent="1" vertex="1">
<mxGeometry x="480" y="768" width="230" height="50" as="geometry"/>
</mxCell>
<mxCell id="30" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="1130" y="810" width="150" height="50" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

297
docs/en/docs/img/deployment/concepts/process-ram.drawio.svg

@ -0,0 +1,297 @@
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="924px" height="674px" viewBox="-0.5 -0.5 924 674" content="&lt;mxfile&gt;&lt;diagram id=&quot;BkDNbdtn8_9fWQybnc8v&quot; name=&quot;Page-1&quot;&gt;7VvRkqI4FP0aH8eCAAEfHae792G7qmusqdl9jBCFHSRMiK3u128iQQzElm5B6C2fJJdAwj0nh3tvcGTN1rsnitLwmQQ4HgEj2I2sbyMAgON6/EdY9rnFhC7ILSsaBdJWGubRv1gaDWndRAHOlI6MkJhFqWr0SZJgnyk2RCnZqt2WJFZHTdEK1wxzH8V1688oYKG0ToBRnvgDR6uwGBoY8swaFb2lIQtRQLYnJuthZM0oISw/Wu9mOBbuKxyTX/d45uxxZhQnrMkF0vGvKN7Ih5PzYvviaSnZJAEW/Y2R9XUbRgzPU+SLs1sOMLeFbB3zlskPlyRhc3mtaGeMkl9HL9myxyNaR7FA/ztZEEb4eM8k4T8z4aLjUYaS7EuGabTkl9UfTD7rK6YM705M8kGfMFljRve8izxrF06XvAOebG9LEI8Yhif4QVcakSTO6njv0rX8QHpX72lL42kYM+GjFCWKy+HvjcD/4Kov2YH+U94B2Onu4IniPD9ayd+46C/4nINT9iu8XHFq7T5zTLk3i7vxB8pvqA7CzfmEC3OFLhwMpnIi58CMxIRyS0ISLOYaxXHFhOJolfCmzyHm07C+Cmgjvuym8sQ6CgIxjJaEKk1V3lnneNcFzVzHUWk2qdPMMjQ081pgGbz9ej4BcgSsAGFv6ddQ52eg7+HFslcFME1TlQDbrGNjTjTYOEYL4LhnJUCu3GYS0Nn6/z59vrD4F1QjB2rHzywHNyIhhOMJUHkI6jx04diEdSZaLRBxcleJt+IE97JIcEHoSCSKwQarErOXH3eV6JyEjmOPoXlRJDxj7LrdiIRp12DCAc+DZJNQFpIVSVD8UForDi37/ElIKpH9BzO2l0kd2nCHanA/xQDvIvaXuOHY4KqZt/8WvceGKZvfdnLAQ2MvGwHKwsNUim4vHB7uBkGTQ4e20c3IhvpFjlgkpoiu8DEPzG3CjW9ygOIYsehVTTd1WB4unVKK9icdUhIlLDu584swlNTyDFXfHDnCY9P+0KjwKJ9ByarjozQjmjMMoil8uTk3rE64UQcTVMF31FvkE5VXlShfSzLotUyayTBIg5NgKkpK5RuJWx4jMe9+NMZtm0dN3xfHktZNEbnk/+7f6RcR8fpCpJjN+VDyw0HgxZD0/CVXl7teKPFxxrUHorUI4pJFlqqxplqgejNWvXo2zyhBK6Vq1mj0ykrJQpSKwxDvEF8AvEt6EqxI6zF+AQ1SsmiHi9K5XrmqKZmDvcDWpWQeWFgQ9hoNu14lJdOEwtqUzGwjJQO9BCgDUzZQVzbQeszSWNl0+xYDq6b/JPSX0AWj1Ktr6ur9K8RyuQS+tmgTwAV0+lUIz67EtbZGIezOFALeFaLIYBSFsHuLRnvJDz4BIsOoQbiuuknmmpV96gv9oedV2HBlOvkJtmf/dy8UbPKg09W9UCbQtdCwXigQ3vSF4t3lq9j9UuSrt/KGZd4R0SFSbDX0kAToPnYYmGZPE8LCTy7ag8n6Xc2XNN1l/abuc40KHO/aJW+jBNPpHsU7tsir9RjHqyNjaZCx2wDGGyAwfX5PYlXA0EQqpm6ZgDYCFV2NuVMwGpQhBrpKHKPhKmknhNTVyDpFpkE8P1BkoNkUmTYE7I1vgT8eb3z0syDuKOOp8T7FzZfykHRVE35odfVovIok9p0kw68S1EgCnZuSpPsYdaCK7cKGit2Gm4v7dvkqHQ6FPd1H8frvXd/tWt4s/9yU12nLP4lZD/8B&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g>
<g>
<rect x="2" y="2" width="920" height="670" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="337" y="12" width="300" height="80" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 52px; margin-left: 338px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto&quot;, &quot;sans-serif&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Server
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="487" y="56" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto&quot;, &quot;sans-serif&quot;" font-size="12px" text-anchor="middle">
Server
</text>
</switch>
</g>
</g>
<g>
<rect x="692" y="132" width="190" height="500" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/>
</g>
<g>
<rect x="748.92" y="142" width="76.16" height="30" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 74px; height: 1px; padding-top: 157px; margin-left: 750px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px">
<font face="Roboto, sans-serif">
RAM
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="787" y="161" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;" font-size="12px" text-anchor="middle">
RAM
</text>
</switch>
</g>
</g>
<g>
<rect x="52" y="132" width="250" height="500" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/>
</g>
<g>
<rect x="136.61" y="142" width="80.77" height="30" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 79px; height: 1px; padding-top: 157px; margin-left: 138px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px">
<font face="Roboto, sans-serif">
CPU
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="177" y="161" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;" font-size="12px" text-anchor="middle">
CPU
</text>
</switch>
</g>
</g>
<g>
<path d="M 385 243 L 382 243 L 382 282 L 423.9 282" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 430.65 282 L 421.65 286.5 L 423.9 282 L 421.65 277.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 382 242 L 382 402 L 423.9 402" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 430.65 402 L 421.65 406.5 L 423.9 402 L 421.65 397.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 362 192 L 327 192 L 327 200 L 292 200" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 612 192 L 712 192" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 382 142 L 592 142 L 612 192 L 592 242 L 382 242 L 362 192 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 248px; height: 1px; padding-top: 192px; margin-left: 363px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font face="Roboto, sans-serif">
<font style="">
<span style="font-size: 24px;">
Process
</span>
</font>
<span style="font-size: 24px;">
Manager
</span>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="487" y="196" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;" font-size="12px" text-anchor="middle">
Process Manager
</text>
</switch>
</g>
</g>
<g>
<path d="M 662 312 L 687 312 L 687 287 L 712 287" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 442 262 L 642 262 L 662 312 L 642 362 L 442 362 L 422 312 Z" fill="#fff2cc" stroke="#d6b656" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(255, 242, 204), rgb(40, 29, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 312px; margin-left: 423px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Worker Process
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="542" y="316" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;" font-size="12px" text-anchor="middle">
Worker Process
</text>
</switch>
</g>
</g>
<g>
<path d="M 662 432 L 687 432 L 687 447 L 712 447" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 422 432 L 357 432 L 357 410 L 292 410" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 442 382 L 642 382 L 662 432 L 642 482 L 442 482 L 422 432 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 432px; margin-left: 423px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Worker Process
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="542" y="436" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;" font-size="12px" text-anchor="middle">
Worker Process
</text>
</switch>
</g>
</g>
<g>
<path d="M 362 562 L 327 562 L 327 515 L 292 515" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 612 562 L 662 562 L 662 557 L 712 557" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 382 512 L 592 512 L 612 562 L 592 612 L 382 612 L 362 562 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 248px; height: 1px; padding-top: 562px; margin-left: 363px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Another Process
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="487" y="566" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;" font-size="12px" text-anchor="middle">
Another Process
</text>
</switch>
</g>
</g>
<g>
<rect x="62" y="180" width="230" height="40" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-dasharray="9 9" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/>
</g>
<g>
<rect x="712" y="182" width="150" height="20" fill="#d5e8d4" stroke="#82b366" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/>
</g>
<g>
<rect x="62" y="230" width="230" height="100" fill="#fff2cc" stroke="#d6b656" stroke-width="3" stroke-dasharray="9 9" pointer-events="all" style="fill: light-dark(rgb(255, 242, 204), rgb(40, 29, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/>
</g>
<g>
<rect x="62" y="340" width="230" height="140" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-dasharray="9 9" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/>
</g>
<g>
<rect x="712" y="212" width="150" height="150" fill="#fff2cc" stroke="#d6b656" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(255, 242, 204), rgb(40, 29, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 287px; margin-left: 713px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
1 GB
</font>
</div>
</div>
</div>
</foreignObject>
<text x="787" y="291" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;" font-size="12px" text-anchor="middle">
1 GB
</text>
</switch>
</g>
</g>
<g>
<rect x="712" y="372" width="150" height="150" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 447px; margin-left: 713px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
1 GB
</font>
</div>
</div>
</div>
</foreignObject>
<text x="787" y="451" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;, &quot;sans-serif&quot;" font-size="12px" text-anchor="middle">
1 GB
</text>
</switch>
</g>
</g>
<g>
<rect x="62" y="490" width="230" height="50" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-dasharray="9 9" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="712" y="532" width="150" height="50" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
</g>
<switch>
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
<a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank">
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
Text is not SVG - cannot display
</text>
</a>
</switch>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

59
docs/en/docs/img/deployment/concepts/process-ram.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

277
docs/en/docs/img/deployment/https/https.drawio

@ -1,277 +0,0 @@
<mxfile host="65bd71144e">
<diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
<mxGraphModel dx="3321" dy="2867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" vertex="1" parent="1">
<mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;font face=&quot;Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Server(s)&lt;/span&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" vertex="1" parent="1">
<mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
</mxCell>
<mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" edge="1" parent="1" target="14">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="800" y="521"/>
<mxPoint x="800" y="560"/>
</Array>
<mxPoint x="803" y="521" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" edge="1" parent="1" target="17">
<mxGeometry relative="1" as="geometry">
<mxPoint x="800" y="520" as="sourcePoint"/>
<Array as="points">
<mxPoint x="800" y="680"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="33" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="29" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;https://someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" vertex="1" parent="33">
<mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
</mxCell>
<mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" vertex="1" parent="33">
<mxGeometry width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="101" target="32">
<mxGeometry relative="1" as="geometry">
<mxPoint x="390" y="-190" as="sourcePoint"/>
<Array as="points">
<mxPoint x="390" y="-132"/>
<mxPoint x="280" y="-132"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="34" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;DNS Servers&lt;/font&gt;" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
</mxCell>
<mxCell id="7" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;TLS Termination Proxy&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" vertex="1" parent="1">
<mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
</mxCell>
<mxCell id="56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;" edge="1" parent="1" source="55" target="49">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;startArrow=none;" edge="1" parent="1" source="102" target="57">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="400" as="targetPoint"/>
<mxPoint x="585" y="1050" as="sourcePoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="55" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt;Cert Renovation Program&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="515" y="780" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;strokeWidth=3;startArrow=none;" edge="1" parent="1" source="103" target="55">
<mxGeometry relative="1" as="geometry">
<mxPoint x="875" y="1030" as="sourcePoint"/>
<Array as="points">
<mxPoint x="790" y="930"/>
<mxPoint x="790" y="930"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="57" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;Let's Encrypt&lt;/font&gt;" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="500" y="1150" width="330" height="260" as="geometry"/>
</mxCell>
<mxCell id="73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="85" target="6">
<mxGeometry relative="1" as="geometry">
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="82" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="62" target="78">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="920" y="770"/>
<mxPoint x="920" y="770"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="62" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;FastAPI&lt;/font&gt;&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt; app for: someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="890" y="650" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="65" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt;Another app&lt;/font&gt;&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt;: another.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="890" y="50" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="66" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt;One more app&lt;/font&gt;&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt;: onemore.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="890" y="180" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="78" value="&lt;font face=&quot;Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px ; font-weight: 400&quot;&gt;A Database&lt;/span&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="890" y="780" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="80" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;strokeWidth=3;endArrow=none;" edge="1" parent="1" source="57" target="103">
<mxGeometry relative="1" as="geometry">
<mxPoint x="480" y="1090" as="sourcePoint"/>
<mxPoint x="875" y="1110" as="targetPoint"/>
<Array as="points">
<mxPoint x="915" y="1250"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="81" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;endArrow=none;" edge="1" parent="1" source="55" target="102">
<mxGeometry relative="1" as="geometry">
<mxPoint x="525" y="970" as="targetPoint"/>
<mxPoint x="550" y="880" as="sourcePoint"/>
<Array as="points">
<mxPoint x="525" y="930"/>
<mxPoint x="525" y="930"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="85" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Plain response from: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" vertex="1" parent="1">
<mxGeometry x="890" y="500" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="86" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="62" target="85">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1030.0000000000005" y="649.9999999999995" as="sourcePoint"/>
<mxPoint x="850" y="540.0000000000005" as="targetPoint"/>
<Array as="points">
<mxPoint x="1030" y="540"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="84" target="62">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1240" y="390"/>
<mxPoint x="1240" y="700"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" edge="1" parent="1" source="100" target="34">
<mxGeometry relative="1" as="geometry">
<mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" edge="1" parent="1" source="32" target="100">
<mxGeometry relative="1" as="geometry">
<mxPoint x="110" y="-75" as="sourcePoint"/>
<mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
<Array as="points">
<mxPoint x="-5" y="-80"/>
<mxPoint x="-5" y="-80"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="34" target="101">
<mxGeometry relative="1" as="geometry">
<mxPoint x="105" y="-280" as="sourcePoint"/>
<mxPoint x="390" y="-260" as="targetPoint"/>
<Array as="points">
<mxPoint x="390" y="-430"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="109" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="97" target="32">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="340" y="480"/>
<mxPoint x="340" y="480"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="36" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;Port 443 (HTTPS)&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
</mxCell>
<mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" edge="1" parent="1" source="96" target="36">
<mxGeometry relative="1" as="geometry">
<mxPoint x="50" y="500" as="sourcePoint"/>
<Array as="points">
<mxPoint x="50" y="740"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="32" target="96">
<mxGeometry relative="1" as="geometry">
<mxPoint x="300" y="350" as="sourcePoint"/>
<mxPoint x="55" y="330" as="targetPoint"/>
<Array as="points">
<mxPoint x="160" y="340"/>
<mxPoint x="160" y="340"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="96" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Encrypted request for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" vertex="1" parent="1">
<mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="100" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Who is: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="101" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34;&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
</mxCell>
<mxCell id="102" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Renew HTTPS cert for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="430" y="960" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="103" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;New HTTPS cert for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="750" y="1070" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" edge="1" parent="1" source="104" target="36">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-40" y="770"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="104" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;TLS Handshake&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
</mxCell>
<mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="32" target="104">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-40" y="275" as="sourcePoint"/>
<mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
<Array as="points">
<mxPoint x="-40" y="290"/>
<mxPoint x="-40" y="290"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="97" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Encrypted response from: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" vertex="1" parent="1">
<mxGeometry x="90" y="500" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="110" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="36" target="97">
<mxGeometry relative="1" as="geometry">
<mxPoint x="415" y="680" as="sourcePoint"/>
<mxPoint x="110" y="275" as="targetPoint"/>
<Array as="points">
<mxPoint x="245" y="710"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
</mxCell>
<mxCell id="50" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;HTTPS certificates&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" vertex="1" parent="1">
<mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
</mxCell>
<mxCell id="51" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;someapp.example.com&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="52" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;another.example.net&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" vertex="1" parent="1">
<mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="53" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;onemore.example.org&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" vertex="1" parent="1">
<mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="42" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
</mxCell>
<mxCell id="84" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Decrypted request for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" vertex="1" parent="1">
<mxGeometry x="885" y="350" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="111" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" edge="1" parent="1" source="6" target="84">
<mxGeometry relative="1" as="geometry">
<mxPoint x="850" y="390" as="sourcePoint"/>
<mxPoint x="1190" y="700" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

907
docs/en/docs/img/deployment/https/https.drawio.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 647 KiB

62
docs/en/docs/img/deployment/https/https.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 40 KiB

78
docs/en/docs/img/deployment/https/https01.drawio

@ -1,78 +0,0 @@
<mxfile host="65bd71144e">
<diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
<mxGraphModel dx="2738" dy="2173" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="800" y="521"/>
<mxPoint x="800" y="560"/>
</Array>
<mxPoint x="803" y="521" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="800" y="520" as="sourcePoint"/>
<Array as="points">
<mxPoint x="800" y="680"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="29" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;https://someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
<mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
</mxCell>
<mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
<mxGeometry width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="390" y="-190" as="sourcePoint"/>
<Array as="points">
<mxPoint x="390" y="-132"/>
<mxPoint x="280" y="-132"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="34" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;DNS Servers&lt;/font&gt;" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
</mxCell>
<mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="110" y="-75" as="sourcePoint"/>
<mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
<Array as="points">
<mxPoint x="-10" y="-120"/>
<mxPoint x="-10" y="-120"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="105" y="-280" as="sourcePoint"/>
<mxPoint x="390" y="-260" as="targetPoint"/>
<Array as="points">
<mxPoint x="390" y="-430"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="100" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Who is: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="101" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34;&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

131
docs/en/docs/img/deployment/https/https01.drawio.svg

@ -0,0 +1,131 @@
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="652px" height="817px" viewBox="-0.5 -0.5 652 817" content="&lt;mxfile&gt;&lt;diagram id=&quot;jyERGzDynktFHFRGN0ph&quot; name=&quot;Page-1&quot;&gt;1VnbkuI2EP0aHnH5jv04MDO7W7VJTYWHTR41trC1EZYjCzD5+kiW5DuDGWBmA0WBWq1Wq/uodSxmzmpbfqEgT38jMcQz24zLmfM4s+2FufD5l5AcpcT1XFdKEopiKbMawRr9C5XQVNIdimHRUWSEYIbyrjAiWQYj1pEBSsmhq7YhuDtrDhI4EKwjgIfSHyhmqZKGttl0fIUoSfXUtql6tkBrK0GRgpgcWiLnaeasKCFM/tqWK4hF+HRg5LjnE721ZxRmbMoAx5Yj9gDv1OqUY+yol5sTlDFIn/bcpoicNXOWtd8mb8SgSGGsGinbYqW0QRivCCa0suN4pnhzOQavEL+QAjFEMt4XQWGfd+whZYjH+XtP4ZUwRrYthQeMEtHBSM6lZMcwyuCqTreYBCiV2jh3ORcr2paJwKVBNhsUQSOGe/5VGBjk0lrBKPkbar8zkvFBy2FcVaiFR7BsiVScv0CyhYweuYrqnVuuSrrC/XzhyfahAZGnkZK28MMjp8CrgJvUxpvU8h8qu+OZDgZ5hTFHtWoSylKSkAzgp0a6pGSXxXVmG53vRESqyvFPyNhRbVGwY6SLABlLvUkcLoElYn8Kg4YZ2qr9l9A2TEs1H0s1YdU49kGm1V4gRTwKIreVwskUiXW+mSAKMWBo393dY7Guhj5QCo4thWp7FC3LL0LQ5D0wu2n31AzPU/V9s5dn6cGp0c7obLW7BdnRCKpRPfjUMZmEqPDXQFQHGB8FgglZNifF/Vo0+cEb6HhPUs3PyGonhwUDlD2Ic7qpv5XsGQm3ZWnIYq0RYVAUKJJCpTKOlJPgkLnRJENTCkATqCuw/TEocsLeEWGF94HRcCK1xFNVyQ7eHnA18Bx3hIn4mAkeQSpPNkDlyP9nJ/jR8g/CiQGZ2SuRQpAV84IfCZumvwNjLRTG5kUFxAeuYLt52R7hJ+L78fc171tDyo/3QrvBVyA9kTrDfYIxZ6CwRTUiTHZ8ectDihhc59L/A2cfYzWtxZTM6nUZhi8gIn4vlZ4mJi0i4jgjRMT2b0FEPomJ3KmoTDt+uhXGHKkw7sdUGN8zTC8IOKe0Q9eyFlYXCvbEY+sdGzwIRzb4Lw8EpXF7FOgjpQ2CGhn3RoFlnXgUOZP2gaG5a1Qw8t1FBSud5OaUCI2w9fJ688jVX32czfvrsfrPvRcOuJ5H6bL8uWi/hlhNhP40tLtjaP8gbm6ZXq/KBdOq3HnaNDgRbwTowUSuc1t81qVmhG8VOcgmc6eKNPXo0/XETdr5kRLhciGnK/j6QJ4bsATbHEMjItuT1KwWy7WcYGyap6XcZCJumpZ561JBSet7Bvs8k9ugEuoLywt3yyUXSf3iVd+MtgmcNULg+rh/D3+rt+1NmXo3cVcj8NtLpXACBlL8SkenuKNXlu0Ylu3yj8c//hn/zj1v/D/Ray/64A2H4LXdO4HXHiOhn/WUmTKWy9r2LCBwQXnrIaFLE85lmVvSrGOYZfdGNap/XeAGwwoVjD1ivuOumzebf0zkWdj88+Q8/Qc=&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g>
<g>
<rect x="0" y="466" width="500" height="350" fill="none" stroke="none" pointer-events="all"/>
<path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="all" style="fill: light-dark(rgb(80, 80, 80), rgb(168, 168, 168));"/>
</g>
<g>
<path d="M 530 331 L 530 409 L 420 409 L 420 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 420 462.65 L 415.5 453.65 L 420 455.9 L 424.5 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
DNS Servers
</font>
</div>
</div>
</div>
</foreignObject>
<text x="245" y="135" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
DNS Servers
</text>
</switch>
</g>
</g>
<g>
<path d="M 185.2 331 L 185.2 296.2 L 245.2 296.2 L 245.06 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 245.02 264.35 L 249.57 273.33 L 245.06 271.1 L 240.57 273.38 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 130 466 L 130 421 L 130 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 408.04 111 L 530 111 L 530 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Who is: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="185" y="375" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Who is: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font face="Roboto, sans-serif">
<span style="font-size: 24px;">
IP:
</span>
<br style=""/>
<span style="font-size: 24px;">
123.124.125.126
</span>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="530" y="295" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
IP:...
</text>
</switch>
</g>
</g>
<g>
<rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
https://someapp.example.com
</font>
</div>
</div>
</div>
</foreignObject>
<text x="250" y="622" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">
https://someapp.example.com
</text>
</switch>
</g>
</g>
</g>
<switch>
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
<a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank">
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
Text is not SVG - cannot display
</text>
</a>
</switch>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

57
docs/en/docs/img/deployment/https/https01.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 10 KiB

110
docs/en/docs/img/deployment/https/https02.drawio

@ -1,110 +0,0 @@
<mxfile host="65bd71144e">
<diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
<mxGraphModel dx="2481" dy="1867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;font face=&quot;Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Server(s)&lt;/span&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
</mxCell>
<mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="800" y="521"/>
<mxPoint x="800" y="560"/>
</Array>
<mxPoint x="803" y="521" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="800" y="520" as="sourcePoint"/>
<Array as="points">
<mxPoint x="800" y="680"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="29" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;https://someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
<mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
</mxCell>
<mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
<mxGeometry width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="390" y="-190" as="sourcePoint"/>
<Array as="points">
<mxPoint x="390" y="-132"/>
<mxPoint x="280" y="-132"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="34" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;DNS Servers&lt;/font&gt;" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
</mxCell>
<mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="110" y="-75" as="sourcePoint"/>
<mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
<Array as="points">
<mxPoint x="-5" y="-90"/>
<mxPoint x="-5" y="-90"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="105" y="-280" as="sourcePoint"/>
<mxPoint x="390" y="-260" as="targetPoint"/>
<Array as="points">
<mxPoint x="390" y="-430"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="36" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;Port 443 (HTTPS)&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
</mxCell>
<mxCell id="42" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
</mxCell>
<mxCell id="100" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Who is: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="101" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34;&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
</mxCell>
<mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-40" y="770"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="104" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;TLS Handshake&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
</mxCell>
<mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-40" y="275" as="sourcePoint"/>
<mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
<Array as="points">
<mxPoint x="-40" y="290"/>
<mxPoint x="-40" y="290"/>
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

245
docs/en/docs/img/deployment/https/https02.drawio.svg

@ -0,0 +1,245 @@
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1413px" height="1464px" viewBox="-0.5 -0.5 1413 1464" content="&lt;mxfile&gt;&lt;diagram id=&quot;jyERGzDynktFHFRGN0ph&quot; name=&quot;Page-1&quot;&gt;7Vpbj6s2EP41kU4fgriFkMfd7OZspT1V1Kx02kcvOMQ9BlNwdpP++tpgEzDOnVxO1axWgfH4wsznmc9Des44Xn3NQLr4RkKIe7YZrnrOU8+2B57psC8uWZcSZ+CPSkmUobCUWRvBDP0DhdAU0iUKYd5QpIRgitKmMCBJAgPakIEsI59NtTnBzVlTEMGWYBYA3JZ+RyFdCOnINjcNLxBFCzm1bYqWGEhtIcgXICSfNZHz3HPGGSG0vIpXY4i5+aRhyn6TLa3VyjKY0EM6OHbZ4wPgpXg6sTC6lo+bEpRQmD1/sDG55aye81it22Q3IcgXMBQ3CxpjoTRHGI8JJlkxjjMw+R+TY/AO8ZTkiCKSsLYA8vFZwwfMKGJ2flUU3gmlJK4pPGAU8QZKUiYlS4pRAseVu/kkQKhUg7Mlp/yJ4lXEcWmQ+RwF0AjhB/vKDQzScrScZuQHlOtOSMI6PbbtKkzNVwRXNZGw81dIYkizNVMRrX3LFU4XuO8PB+X95wZEA4mURQ0/zHICvAK4UTX4xrXsQnhX7+kDHJ2RZRJWjvxcIApnKQh46yczmeJcktCZ6GtVZpP7we3GZu5AMZm8r5nMtzUmGw07MJmjMZmHKX/YFCQN23l/L/mWLazSz4uI9cAUbDddFZaQ7ewqEt9Y6vMQVFp5o/c7YZgnPXvMZwFJ3s9hhubtcWYwY9b8kv8iB2TPVI7ZnIeJyzVLseJ65g/a9K92G9R3tBC19pm6R2MUhnwaLaCakGtiyBH2mYAYYQ4AaRTzG0mEbWJ+5TxO3tbF3o66gd3Q2g87R7dT/Q5Q57ecA0OWfsQtyeiCRCQB+HkjVcy40XklPKQV/vwLUroWuRQsKdF5u255uEL0Dz6gYY5scf8n1zZMS9w+rcSExc1azQZSbcqgy6zAwVEobHUQf86d7skgBhR9NNOwztZF14csA+uaQpHH8trIUy7YeN03m14fiBkmh+p7puLncgXbejva2arl5mSZBVD0UuBT2eQgRI3uA1ENYFwLBAd42TzI7ueiyfN3oOMUp5q38GrDhzkFGX3ghHqTDgrZBPFll6EhCaVGgEGeo6AUChU9UraCo/SNEJmS+4MsgpIq2ddBkTNSMoQ1ugyM2hOJR9wWlaoctKXD2cBz3K206HQ2cyCVavGfp99mrK1kQflWDqTuE4zZURHWzgQBJstwP+dtcqIe5wD8cxyGjzgxeCoNcTU8xNHwENvrgojciIlcKKgcln6aEcbURBj3OhHGGxjmwPfZ4c8euZY1tJpQsA9MWydscFmN2XVUvD8gCI3uUSBTSh0EFTIujQJLPYnImsEet7cG6rtGASPPHRawkk7eZImRMap9Bso85dOfnc76g+a0I3P3qneqn8+hZEi+LdLPIVUHwv4wpLs6pF+Jl1um4uvWYfpQqLcoUysbdgTm1kSu0y0+He+OqNaUIZs1ui47t5pfXt7eprPtVaetjOu+GFZFnpRDWp1gWUMNwbLU9HsKwXJ1NdmGe0NAQb/0ThY0XLaglL/teOCTlcbPjYiQCEOQotwISMzEQc5UJnO1fnapYmRn1dFfp4XCltJlKX7POp/Wsh3Dsl32P2D/3p4FbKm0tte1b3McVXa/8gaxlRDnme0NYusK8F3U3yuWdc8V+O8LXpFG5V5k6TRmGzA14ArEKYblPjyrMi+PqAs2ZMTfhj2mtXqqkFYlVns/guZoBeVL1SPJwjEvu1TiWr29rZ9dLQ1yuqihV6yl08x5oyinmeKCqzozCP4n0FtFrwq8I03Ycy8GXu+nP4UcmZCaVRfNMUQy4Ru/Iuorr/CHw24Jf/Xs95zx3l55zfUFJCHb3T/g//mtAKiOGOlKs91EiKEGJj95yDincKEt0V2pUKvGBPvUEp3jWobjD33X9Ia+w5DSLIgMVUrdVUlOXf++mtxu/bNjoK0rP9+q6NE8Zh/D7s855F3lt1V99UWh67cJuq+JYPYJP0djt5sfNZag2Pw41Hn+Fw==&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g>
<g>
<rect x="0" y="466" width="500" height="350" fill="none" stroke="none" pointer-events="all"/>
<path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="all" style="fill: light-dark(rgb(80, 80, 80), rgb(168, 168, 168));"/>
</g>
<g>
<rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Server(s)
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="1000" y="535" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;" font-size="12px" text-anchor="middle">
Server(s)
</text>
</switch>
</g>
</g>
<g>
<path d="M 529.86 331 L 529.86 408.86 L 419.86 408.86 L 419.86 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 419.86 462.65 L 415.36 453.65 L 419.86 455.9 L 424.36 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
DNS Servers
</font>
</div>
</div>
</div>
</foreignObject>
<text x="245" y="135" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
DNS Servers
</text>
</switch>
</g>
</g>
<g>
<path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 135 466 L 135 450.86 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 408.01 110.86 L 529.86 110.86 L 529.86 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<ellipse cx="555" cy="1281" rx="85" ry="60.00000000000001" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
Port 443 (HTTPS)
</font>
</div>
</div>
</div>
</foreignObject>
<text x="555" y="1285" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Port 443 (HTTPS)
</text>
</switch>
</g>
</g>
<g>
<rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<font face="Roboto, sans-serif">
<span style="font-size: 24px;">
IP:
</span>
<br/>
<span style="font-size: 24px;">
123.124.125.126
</span>
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="540" y="1180" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
IP:...
</text>
</switch>
</g>
</g>
<g>
<path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Who is: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="185" y="375" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Who is: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font face="Roboto, sans-serif">
<span style="font-size: 24px;">
IP:
</span>
<br style=""/>
<span style="font-size: 24px;">
123.124.125.126
</span>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="530" y="295" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
IP:...
</text>
</switch>
</g>
</g>
<g>
<path d="M 100.14 921 L 100.14 1310.86 L 481.27 1310.86" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
TLS Handshake
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="145" y="885" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
TLS Handshake
</text>
</switch>
</g>
</g>
<g>
<path d="M 100.14 816 L 100.14 830.86 L 100.14 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
https://someapp.example.com
</font>
</div>
</div>
</div>
</foreignObject>
<text x="250" y="622" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">
https://someapp.example.com
</text>
</switch>
</g>
</g>
</g>
<switch>
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
<a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank">
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
Text is not SVG - cannot display
</text>
</a>
</switch>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

57
docs/en/docs/img/deployment/https/https02.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 15 KiB

131
docs/en/docs/img/deployment/https/https03.drawio

@ -1,131 +0,0 @@
<mxfile host="65bd71144e">
<diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
<mxGraphModel dx="2481" dy="1867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;font face=&quot;Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Server(s)&lt;/span&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
</mxCell>
<mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="800" y="521"/>
<mxPoint x="800" y="560"/>
</Array>
<mxPoint x="803" y="521" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="800" y="520" as="sourcePoint"/>
<Array as="points">
<mxPoint x="800" y="680"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="29" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;https://someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
<mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
</mxCell>
<mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
<mxGeometry width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="390" y="-190" as="sourcePoint"/>
<Array as="points">
<mxPoint x="390" y="-132"/>
<mxPoint x="280" y="-132"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="34" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;DNS Servers&lt;/font&gt;" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
</mxCell>
<mxCell id="7" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;TLS Termination Proxy&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
</mxCell>
<mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="110" y="-75" as="sourcePoint"/>
<mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
<Array as="points">
<mxPoint x="-5" y="-90"/>
<mxPoint x="-5" y="-90"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="105" y="-280" as="sourcePoint"/>
<mxPoint x="390" y="-260" as="targetPoint"/>
<Array as="points">
<mxPoint x="390" y="-430"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="36" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;Port 443 (HTTPS)&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
</mxCell>
<mxCell id="100" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Who is: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="101" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34;&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
</mxCell>
<mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-40" y="770"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="104" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;TLS Handshake&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
</mxCell>
<mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-40" y="275" as="sourcePoint"/>
<mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
<Array as="points">
<mxPoint x="-40" y="290"/>
<mxPoint x="-40" y="290"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
</mxCell>
<mxCell id="50" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;HTTPS certificates&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
</mxCell>
<mxCell id="51" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;someapp.example.com&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="52" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;another.example.net&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="53" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;onemore.example.org&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="42" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

715
docs/en/docs/img/deployment/https/https03.drawio.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.2 MiB

62
docs/en/docs/img/deployment/https/https03.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 21 KiB

152
docs/en/docs/img/deployment/https/https04.drawio

@ -1,152 +0,0 @@
<mxfile host="65bd71144e">
<diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
<mxGraphModel dx="2312" dy="1667" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;font face=&quot;Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Server(s)&lt;/span&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
</mxCell>
<mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="800" y="521"/>
<mxPoint x="800" y="560"/>
</Array>
<mxPoint x="803" y="521" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="800" y="520" as="sourcePoint"/>
<Array as="points">
<mxPoint x="800" y="680"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="29" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;https://someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
<mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
</mxCell>
<mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
<mxGeometry width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="390" y="-190" as="sourcePoint"/>
<Array as="points">
<mxPoint x="390" y="-132"/>
<mxPoint x="280" y="-132"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="34" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;DNS Servers&lt;/font&gt;" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
</mxCell>
<mxCell id="7" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;TLS Termination Proxy&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
</mxCell>
<mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="110" y="-75" as="sourcePoint"/>
<mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
<Array as="points">
<mxPoint x="-5" y="-90"/>
<mxPoint x="-5" y="-90"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="105" y="-280" as="sourcePoint"/>
<mxPoint x="390" y="-260" as="targetPoint"/>
<Array as="points">
<mxPoint x="390" y="-430"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="36" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;Port 443 (HTTPS)&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
</mxCell>
<mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="96" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="50" y="500" as="sourcePoint"/>
<Array as="points">
<mxPoint x="50" y="740"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="96" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="300" y="350" as="sourcePoint"/>
<mxPoint x="55" y="330" as="targetPoint"/>
<Array as="points">
<mxPoint x="160" y="340"/>
<mxPoint x="160" y="340"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="96" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Encrypted request for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
<mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="100" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Who is: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="101" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34;&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
</mxCell>
<mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-40" y="770"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="104" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;TLS Handshake&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
</mxCell>
<mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-40" y="275" as="sourcePoint"/>
<mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
<Array as="points">
<mxPoint x="-40" y="290"/>
<mxPoint x="-40" y="290"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
</mxCell>
<mxCell id="50" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;HTTPS certificates&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
</mxCell>
<mxCell id="51" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;someapp.example.com&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="52" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;another.example.net&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="53" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;onemore.example.org&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="42" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

419
docs/en/docs/img/deployment/https/https04.drawio.svg

@ -0,0 +1,419 @@
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1413px" height="1464px" viewBox="-0.5 -0.5 1413 1464" content="&lt;mxfile&gt;&lt;diagram id=&quot;jyERGzDynktFHFRGN0ph&quot; name=&quot;Page-1&quot;&gt;7Vxfc6M2EP80nrk+2AMSYHhMcvFdZ66dTJOZax8VkG16gDiQE7ufvhIIDELYxJYdu40zic1qkcTuT/tPckbwLl5/yVC6/I0EOBoBI1iP4OcRALZjQPbGKZuSAm3XKymLLAxKmrklPIb/YEE0BHUVBjhvMVJCIhqmbaJPkgT7tEVDWUZe22xzErVHTdECdwiPPoq61O9hQJeC6gFj2/AVh4tlNTQwREuMKm5ByJcoIK8NErwfwbuMEFp+itd3OOLiqwRT3jfraa1nluGEDrkBgvKOFxStxNOJidFN9bgpCROKs/sX1ieXnDmCt/W8DXYRoHyJA3GxpHEkmOZhFN2RiGRFP9A2+A+jR+gZRw8kD2lIEtbmY94/a3jBGQ2ZnL9JDM+EUhI3GG6icMEbKEkZlaxoFCb4rlY3HwQJlrpzNuWUP1G8XnBcTsh8Hvp4EuAX9pZPIpSWveU0Iz9wNe+EJOym265chaj5jPC6QRJy/oJJjGm2YSyidWxaQukC9+OpXV6/bkFkV0hZNvDDJCfAK4C7qDvfqpZ9ENpVa3qAojOySoJaka/LkOLHFPm89ZWJTFIuSeijuNesxVatB0uPzCxbEll13RCZCxQi86YaRAYVInMiyh82RUlLds7PFV+yhVTGeWGxbhgDsNJ1IYmqnX1aiPeo4ucmqJTylu8PwjBPRuCOj4KSfJzjLJx3+3nEGZPmp/yXqkP2TGWf7XEYuZxzRZZUz/RB2/pVLoPmihakzjqT12gcBgEfRgmoNuTaGIJCPjMUhxEHQCUU4zeSCNnE/BO8nT1tirW90AO7qbkfdlC1Ul0NqHM7ysEBcz/ikmR0SRYkQdH9liqJccvzjXCTVujzb0zpRvhStKJEpe2m5PE6pH/yDieGB8T1X5x7Ypji8vNaDFhcbGRvULE9MOgyKXBwFAy9CuLPuVM9GY4QDV/ablgl6+LWmyxDmwZD4cfyRs8PnLDVumu0tW6LEWZD+R1D0nM5g767oXK0ero5WWU+FndJ8KllMghR3mUgqgWMc4FggJaNQXI/Fk2OuwMdhyjVeA+ttnSYU5TRGx5Qb91BQZuFfNqlaUiCisOPUJ6HfkkULGqk9IKj1I0gGVXsj7IFrkIlcB4UQU/yEKZ3Ghh1BxKP2GeVah/Uc8PRwINWb1h0eDQzMJTqxD+ff39kbWUUlPfGQPI6iSKWKuJGTuBHZBXsj3nbMdGIxwD89TYMvyFjcOQwxFLEIVARhwBHQyDiKPR82oxBShgDhN25r5K747v4ea4px/DslpQhUAjZtrtCtiwNQp7uW0wHLgxdCcbTN77AnnAWhwkq0nFgPGRkvdmTcDxnihRk56r8SEGaqLSBhErYRWVt6luo1JGCvFMOcqJwYljg2Y4tDEVsYZ0ntnDsiWG7LjM6wLNMc2q2nQAYGLAe4NqrOuwuk395QBAc+lFQBZNNENTIODUKTLkGUVUL96i909HYmhQwcqxpAatKydv40Jt4jZctjVM+/dGB7Lhtz8aesXvWO9mPz54qg/y+SD8mnRoI+2FIt1RIP1NGbhqSrjtltKFQ7yRLnThYE5g7A1lQLz6hKvh+ryTrgSGbNVoWZH8/fX16enjsrzf35lqXlVvV8ZRUnmnGV+ZUEV+Zsvs9JMDyrs7aaC7eeI4ivnLOY2+kPaV6y01z5UYaZmpp9mCq3anrwpRWD6aI1bwzAQpKpd7Ofu1Q/2X35HyavZcp1ZWgtTsW28N/PJT7nd3FbLTeJ362SSmDOofLzxXOi+64s7opoBhjlKYTvEZxGuGJT+Ijd2Sr0uSSdbngpyBu08Y+mqDWW2tgQPktXOPqMI3S4brgGTqOugYiFeZs7AaatvjHUp5jGYrym6lwxDr2Wuts7pKh933JC05hfuVI010c7yTI9fmw8yBHlUHqUbg2BP76UDD0wGBbqFUMccJZmQBOTGCxX5v9Onvmty/BuE70gqkMXq8L3rqWqx+8ztXHim/MDNvVXUW540TZx5vLZNIhwelUb6xVP/sle7xy0+krSgK2un/gD//WyjKaFkK1+avHQqg2Jq/cZGhOL+uldOr8UrYJ4NCtAGiZE+hOXctwpi5kSGnnm1P50Kyu0r88/321/938R9tAa8A212lPNsznc+ArTzYEzrNjO3pMiH1oagV11Djt/tTqMo42FIVsxuPz0wLz0EcU9x8h+jjVoAWRtjFpbz9aiqSNGaZJ1bfuow323rQtQBSNSyBmfgtYS0rTMgufCbXnkwUhi4gl5GFeZuIzP2css7ks2pNlU7pWg4a6wqFr5E229sz7RLa0T2Q53S/tANU+kY4voNjgA6xKsKKE0CXOarAmmF4HWJ3ipbbIUohg8x8hqwa9fJ0G3LZ1TnD3f73q/w1u5v5jkuEa3CRbfID7eHA74Izgti7Mcl9dSfqyas7/xcgGSGeYHFV9SfXdWh3rA6hS8Pc639RecG8JhE9bNNCg5LH8bSDL7ZYAVMfIwQHfOWeX2/9cUNZltv8BAt7/Cw==&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g>
<g>
<rect x="0" y="466" width="500" height="350" fill="none" stroke="none" pointer-events="all"/>
<path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="all" style="fill: light-dark(rgb(80, 80, 80), rgb(168, 168, 168));"/>
</g>
<g>
<rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Server(s)
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="1000" y="535" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;" font-size="12px" text-anchor="middle">
Server(s)
</text>
</switch>
</g>
</g>
<g>
<path d="M 529.86 331 L 529.86 408.86 L 419.86 408.86 L 419.86 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 419.86 462.65 L 415.36 453.65 L 419.86 455.9 L 424.36 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
DNS Servers
</font>
</div>
</div>
</div>
</foreignObject>
<text x="245" y="135" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
DNS Servers
</text>
</switch>
</g>
</g>
<g>
<rect x="635" y="861" width="355" height="440" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/>
</g>
<g>
<rect x="665" y="871" width="280" height="40" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 891px; margin-left: 666px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px">
<font face="Roboto, sans-serif">
TLS Termination Proxy
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="895" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;" font-size="12px" text-anchor="middle">
TLS Termination Proxy
</text>
</switch>
</g>
</g>
<g>
<path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 135 466 L 135 450.86 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 408.01 110.86 L 529.86 110.86 L 529.86 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<ellipse cx="555" cy="1281" rx="85" ry="60.00000000000001" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
Port 443 (HTTPS)
</font>
</div>
</div>
</div>
</foreignObject>
<text x="555" y="1285" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Port 443 (HTTPS)
</text>
</switch>
</g>
</g>
<g>
<path d="M 190.14 1021 L 190.14 1280.86 L 459.9 1280.86" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 466.65 1280.86 L 457.65 1285.36 L 459.9 1280.86 L 457.65 1276.36 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 300.14 816 L 300.14 880.86 L 300.14 941" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 150 941 L 420 941 L 440 981 L 420 1021 L 150 1021 L 130 981 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 981px; margin-left: 131px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Encrypted request for: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="285" y="985" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Encrypted request for: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Who is: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="185" y="375" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Who is: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font face="Roboto, sans-serif">
<span style="font-size: 24px;">
IP:
</span>
<br style=""/>
<span style="font-size: 24px;">
123.124.125.126
</span>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="530" y="295" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
IP:...
</text>
</switch>
</g>
</g>
<g>
<path d="M 100.14 921 L 100.14 1310.86 L 481.27 1310.86" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
TLS Handshake
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="145" y="885" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
TLS Handshake
</text>
</switch>
</g>
</g>
<g>
<path d="M 100.14 816 L 100.14 830.86 L 100.14 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="650" y="941" width="310" height="320" fill="#fff2cc" stroke="#d6b656" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(255, 242, 204), rgb(40, 29, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/>
</g>
<g>
<rect x="690.9" y="951" width="228.21" height="40" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 226px; height: 1px; padding-top: 971px; margin-left: 692px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px">
<font face="Roboto, sans-serif">
HTTPS certificates
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="975" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;" font-size="12px" text-anchor="middle">
HTTPS certificates
</text>
</switch>
</g>
</g>
<g>
<rect x="670" y="1006" width="270" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1041px; margin-left: 671px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
someapp.example.com
</font>
</span>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="1045" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<rect x="670" y="1086" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1121px; margin-left: 671px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
another.example.net
</font>
</span>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="1125" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
another.example.net
</text>
</switch>
</g>
</g>
<g>
<rect x="670" y="1166" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1201px; margin-left: 671px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
onemore.example.org
</font>
</span>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="1205" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
onemore.example.org
</text>
</switch>
</g>
</g>
<g>
<rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<font face="Roboto, sans-serif">
<span style="font-size: 24px;">
IP:
</span>
<br/>
<span style="font-size: 24px;">
123.124.125.126
</span>
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="540" y="1180" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
IP:...
</text>
</switch>
</g>
</g>
<g>
<rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
https://someapp.example.com
</font>
</div>
</div>
</div>
</foreignObject>
<text x="250" y="622" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">
https://someapp.example.com
</text>
</switch>
</g>
</g>
</g>
<switch>
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
<a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank">
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
Text is not SVG - cannot display
</text>
</a>
</switch>
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

62
docs/en/docs/img/deployment/https/https04.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

166
docs/en/docs/img/deployment/https/https05.drawio

@ -1,166 +0,0 @@
<mxfile host="65bd71144e">
<diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
<mxGraphModel dx="5190" dy="5090" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;font face=&quot;Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Server(s)&lt;/span&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
</mxCell>
<mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="800" y="521"/>
<mxPoint x="800" y="560"/>
</Array>
<mxPoint x="803" y="521" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="800" y="520" as="sourcePoint"/>
<Array as="points">
<mxPoint x="800" y="680"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="29" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;https://someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
<mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
</mxCell>
<mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
<mxGeometry width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="390" y="-190" as="sourcePoint"/>
<Array as="points">
<mxPoint x="390" y="-132"/>
<mxPoint x="280" y="-132"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="34" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;DNS Servers&lt;/font&gt;" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
</mxCell>
<mxCell id="7" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;TLS Termination Proxy&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
</mxCell>
<mxCell id="62" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;FastAPI&lt;/font&gt;&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt; app for: someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="895" y="640" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="6" target="62" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1240" y="390"/>
<mxPoint x="1240" y="700"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="84" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Decrypted request for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
<mxGeometry x="890" y="350" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="110" y="-75" as="sourcePoint"/>
<mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
<Array as="points">
<mxPoint x="-5" y="-80"/>
<mxPoint x="-5" y="-80"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="105" y="-280" as="sourcePoint"/>
<mxPoint x="390" y="-260" as="targetPoint"/>
<Array as="points">
<mxPoint x="390" y="-430"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="36" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;Port 443 (HTTPS)&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
</mxCell>
<mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="96" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="50" y="500" as="sourcePoint"/>
<Array as="points">
<mxPoint x="50" y="740"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="96" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="300" y="350" as="sourcePoint"/>
<mxPoint x="55" y="330" as="targetPoint"/>
<Array as="points">
<mxPoint x="160" y="340"/>
<mxPoint x="160" y="340"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="96" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Encrypted request for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
<mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="100" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Who is: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="101" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34;&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
</mxCell>
<mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-40" y="770"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="104" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;TLS Handshake&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
</mxCell>
<mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-40" y="275" as="sourcePoint"/>
<mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
<Array as="points">
<mxPoint x="-40" y="290"/>
<mxPoint x="-40" y="290"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
</mxCell>
<mxCell id="50" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;HTTPS certificates&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
</mxCell>
<mxCell id="51" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;someapp.example.com&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="52" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;another.example.net&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="53" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;onemore.example.org&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="42" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

641
docs/en/docs/img/deployment/https/https05.drawio.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 624 KiB

62
docs/en/docs/img/deployment/https/https05.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 26 KiB

183
docs/en/docs/img/deployment/https/https06.drawio

@ -1,183 +0,0 @@
<mxfile host="65bd71144e">
<diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
<mxGraphModel dx="3321" dy="2867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;font face=&quot;Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Server(s)&lt;/span&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
</mxCell>
<mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="800" y="521"/>
<mxPoint x="800" y="560"/>
</Array>
<mxPoint x="803" y="521" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="800" y="520" as="sourcePoint"/>
<Array as="points">
<mxPoint x="800" y="680"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="29" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;https://someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
<mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
</mxCell>
<mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
<mxGeometry width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="390" y="-190" as="sourcePoint"/>
<Array as="points">
<mxPoint x="390" y="-132"/>
<mxPoint x="280" y="-132"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="34" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;DNS Servers&lt;/font&gt;" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
</mxCell>
<mxCell id="7" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;TLS Termination Proxy&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
</mxCell>
<mxCell id="73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="85" target="6" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="62" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;FastAPI&lt;/font&gt;&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt; app for: someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="895" y="650" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="85" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Plain response from: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" parent="1" vertex="1">
<mxGeometry x="890" y="500" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="86" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="62" target="85" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1030.0000000000005" y="649.9999999999995" as="sourcePoint"/>
<mxPoint x="850" y="540.0000000000005" as="targetPoint"/>
<Array as="points">
<mxPoint x="1030" y="540"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="6" target="62" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1240" y="390"/>
<mxPoint x="1240" y="700"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="84" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Decrypted request for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
<mxGeometry x="890" y="350" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="110" y="-75" as="sourcePoint"/>
<mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
<Array as="points">
<mxPoint x="-5" y="-90"/>
<mxPoint x="-5" y="-90"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="105" y="-280" as="sourcePoint"/>
<mxPoint x="390" y="-260" as="targetPoint"/>
<Array as="points">
<mxPoint x="390" y="-430"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="36" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;Port 443 (HTTPS)&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
</mxCell>
<mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="96" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="50" y="500" as="sourcePoint"/>
<Array as="points">
<mxPoint x="50" y="740"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="96" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="300" y="350" as="sourcePoint"/>
<mxPoint x="55" y="330" as="targetPoint"/>
<Array as="points">
<mxPoint x="160" y="340"/>
<mxPoint x="160" y="340"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="96" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Encrypted request for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
<mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="100" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Who is: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="101" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34;&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
</mxCell>
<mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-40" y="770"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="104" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;TLS Handshake&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
</mxCell>
<mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-40" y="275" as="sourcePoint"/>
<mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
<Array as="points">
<mxPoint x="-40" y="290"/>
<mxPoint x="-40" y="290"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
</mxCell>
<mxCell id="50" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;HTTPS certificates&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
</mxCell>
<mxCell id="51" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;someapp.example.com&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="52" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;another.example.net&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="53" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;onemore.example.org&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="42" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

673
docs/en/docs/img/deployment/https/https06.drawio.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 627 KiB

62
docs/en/docs/img/deployment/https/https06.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 27 KiB

203
docs/en/docs/img/deployment/https/https07.drawio

@ -1,203 +0,0 @@
<mxfile host="65bd71144e">
<diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
<mxGraphModel dx="3321" dy="2867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;font face=&quot;Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Server(s)&lt;/span&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
</mxCell>
<mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="800" y="521"/>
<mxPoint x="800" y="560"/>
</Array>
<mxPoint x="803" y="521" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="800" y="520" as="sourcePoint"/>
<Array as="points">
<mxPoint x="800" y="680"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="29" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;https://someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
<mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
</mxCell>
<mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
<mxGeometry width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="390" y="-190" as="sourcePoint"/>
<Array as="points">
<mxPoint x="390" y="-132"/>
<mxPoint x="280" y="-132"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="34" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;DNS Servers&lt;/font&gt;" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
</mxCell>
<mxCell id="7" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;TLS Termination Proxy&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
</mxCell>
<mxCell id="73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="85" target="6" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="62" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;FastAPI&lt;/font&gt;&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt; app for: someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="895" y="650" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="85" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Plain response from: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" parent="1" vertex="1">
<mxGeometry x="890" y="500" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="86" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="62" target="85" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1030.0000000000005" y="649.9999999999995" as="sourcePoint"/>
<mxPoint x="850" y="540.0000000000005" as="targetPoint"/>
<Array as="points">
<mxPoint x="1030" y="540"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="6" target="62" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1240" y="390"/>
<mxPoint x="1240" y="700"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="84" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Decrypted request for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
<mxGeometry x="890" y="350" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="110" y="-75" as="sourcePoint"/>
<mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
<Array as="points">
<mxPoint x="-5" y="-90"/>
<mxPoint x="-5" y="-90"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="105" y="-280" as="sourcePoint"/>
<mxPoint x="390" y="-260" as="targetPoint"/>
<Array as="points">
<mxPoint x="390" y="-430"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="109" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="97" target="32" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="340" y="480"/>
<mxPoint x="340" y="480"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="36" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;Port 443 (HTTPS)&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
</mxCell>
<mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="96" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="50" y="500" as="sourcePoint"/>
<Array as="points">
<mxPoint x="50" y="740"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="96" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="300" y="350" as="sourcePoint"/>
<mxPoint x="55" y="330" as="targetPoint"/>
<Array as="points">
<mxPoint x="160" y="340"/>
<mxPoint x="160" y="340"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="96" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Encrypted request for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
<mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="100" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Who is: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="101" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34;&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
</mxCell>
<mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-40" y="770"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="104" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;TLS Handshake&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
</mxCell>
<mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-40" y="275" as="sourcePoint"/>
<mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
<Array as="points">
<mxPoint x="-40" y="290"/>
<mxPoint x="-40" y="290"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="97" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Encrypted response from: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" parent="1" vertex="1">
<mxGeometry x="90" y="500" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="110" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="36" target="97" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="415" y="680" as="sourcePoint"/>
<mxPoint x="110" y="275" as="targetPoint"/>
<Array as="points">
<mxPoint x="245" y="710"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
</mxCell>
<mxCell id="50" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;HTTPS certificates&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
</mxCell>
<mxCell id="51" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;someapp.example.com&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="52" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;another.example.net&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="53" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;onemore.example.org&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="42" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

540
docs/en/docs/img/deployment/https/https07.drawio.svg

@ -0,0 +1,540 @@
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1413px" height="1464px" viewBox="-0.5 -0.5 1413 1464" content="&lt;mxfile&gt;&lt;diagram id=&quot;jyERGzDynktFHFRGN0ph&quot; name=&quot;Page-1&quot;&gt;7VxZk6M2EP41rto82AWI83HO3a3apFyZqdrkUQOyTRYjFuQZO78+EggMQvgUPjb21MyYppFE96fuVrdgAB7my88pTGa/4wBFA0MLlgPwODAMy9YA/ccoq4ICLNcrKNM0DAqavia8hP8iTtQ4dREGKGswEowjEiZNoo/jGPmkQYNpij+abBMcNXtN4BS1CC8+jNrU72FAZpzqGdr6xBcUTmdl14bGz8xhyc0J2QwG+KNGAk8D8JBiTIpv8+UDipj4SsEU1z13nK1GlqKY7HIBMIor3mG04HfHB0ZW5e0mOIwJSp/eaZtMcvoA3Ffj1uhBALMZCvjBjMwjzjQJo+gBRzjN2wGWxn4oPYJvKBrjLCQhjuk5H7H26Yl3lJKQyvmbwPCGCcHzGsNdFE7ZCYITSsULEoUxeqjUzTqBnKVqnA45YXc0X04ZLkd4Mgl9NArQO/2XjSKYFK1lJMU/UDnuGMf0ovu2XLmo2YjQskbicv6M8ByRdEVZ+NmhbnKlc9wPHas4/liDyCqRMqvhh0qOg5cDd1o1vlYt/cK1K9f0DopO8SIOKkV+zEKCXhLos7MfVGSCcnFMXvi1eiW2cj6YamRmWoLIyuOayFxDIjLPUSAyIBGZHRF2swmMG7Kzfy7YlM2lMsxyi3VHGQwzWeaSKM/Tb1P+Pyr5mQkqpLzm+xNTzOOB8cB6gXE2zFAaTtrtvKCUSvNT9lvZIL2nos1mP5RcjLkkC6qn+iBN/UqnQX1Gc1JrnolzdB4GAetGCqgm5JoYAlw+z3AeRgwApVC033HMZTNn38D98+sqn9tTNbBz9O2wA7KZ6ipAndtSDgqo++GHOCUzPMUxjJ7WVEGMa55vmJm0XJ//IEJW3JfCBcEybdclj5Yh+Ys1ONI8gx//zbhHms4PH5e8w/xgJXqDkm1MoUulwMCRM3QqiN3nRvWkKIIkfG+6YZms80vv0hSuagy5H8tqLY8ZYa11V2tq3eI9PO/Kb2uCnosRdF0NpL1Vw83wIvURv0qATyWTnRDlXQaiGsA4FQh20LK2k9yPRZPtbkDHIUrVzqHVhg4zAlNyxwLqtTvIac8hG3ZhGuKg5PAjmGWhXxA5ixwpneAodMNJWhn7w3SKylDJOA2KgCd4CN3rB0btjvgtdlmlygd1XHA08IDZGRYdHs3sGEq14p/HP17ouSIKyjpjIHGeRBFdKqLamsCP8CLYHvM2Y6IBiwHYZz8M77FisMUwxJTEIUAShxi2gkDElui53xWDsGAMIHInvkzutu+it4miNYZnNaQMDImQLastZNNUIGRn22Q6cGKoWmC8fmMT7BWl8zCG+XLc0MYpXq62LDjeUskSZOOsvC1B6qi0DAGVoI3KytQ3UKkClOA8EeM5wwnXakcTdi/BRHcIcESMb8vyO2pMgNBOAAkcFjYo9RsNzghhGdg7dh/FZM9GU4ynEYJJmI18PKdkP6MszxNxQu0dCsiyKs8wI3fjr1tM0+Xdh5af+OCzmJ2KcTqHUUfqSINJkl+UFswZBQoljdASzpMIFQPclg7aaIt/Bb/uCn7d3jWJo2sqsjhW53y8mOThOIJhnJuvLMExDYhpWynLsx8Mqo05xjLYntEmpyyvf5/UMkOcWiWLjB2AFy5RWR6Shuee7QBoy716E5JIDyzkqAKekGHQJMDT+8oe7hC1X54v5xxKHHnpCeuOvJyNfacFdA1oI632EUyQ6Y282sdqtt+RMminloSqCF0Wyjotmy0EcXQmgt2b2K2AzOMSC65zBUhVHHXakqCznxTW3uo2hHJlmYnqQmXrAkdTjI/uxNPFuNRH5KerhFBAMv38XKCMHB2pXZhTdY03YO/kVKlLdQNFlWDRqQJZNNebUz1TTa4ny7RbIaaZa9fahqpMBPftVG1rpFmuS1VueKauO3oDCENjxwLOIRbH+4WDqf1RUBZX6iCokNF7aCXW5J0Do6ehOcphZJtODqtSyet6iRCk9RNODZuh4XCLd93Mfnw1sTTI50X6MeVFlWuI0rQ1kX6iCrUurBqGLR+2K9RbxcNWXUgRmFsdmUAtPnXtLJsYLqjc7TkSD3wZSwUgBP6mu9mWbeE/vkIty4Gcq0I9prCjJ00T0L+fvry+jl+6N+uJCK8K1ZdVmAZCJqDc21IPxnVHEozrYqx2SDTuXZ1rUm0KJFkD0E+tqjV3xdSTmCtXtO1F6MZRnGryZFt7rwtTSsMdSWDvnQhQQOtY2O8b7FgdBXPVaVBhUw4wNzu7LfzHQ7nb2V1MVuwpvmXFesmKDYVFsXnKUlO19L9k6H2fsd06YXblSFO9s7CVTakerjsNcmTpBrW7VY5G4NdxztABg/UuN0kXPY5KN8BIN0z6a9Ffe8v4ti0wrhO9hiOC12uDt6pGqQevffWx4p4rw2YpQJIb62n1sXdOVaxAOqqzUFdQgix27H6BcUBn9w9082+NVUbdQsh2zquxELJd3VduMhQvL6up1Pf6UrQJxqF1I2DqI+A6rqnZjgvWe4oEW6O8TiSOf1uhaDP/8evN7icWLsYENtebt82NCjc3nnNvY2XUb3a1EXU10nbOacyqqQtbGw+tUYqeumWfFdlRwxTsta7WLpo77BXpd1v9ZDIxfOm2+sB+sy1bjQGwDk05ARW1H0tmAS7pebm8wEd5fPYI2iT0IUHdz6XeHpVTgkhLGzX38JiSZBZ1QaOybdXPy1lb01l9P2ykOMukajYoiLMOnSN72doT188toX5u2u03QRmy+rmKtxpZxg2sUrDCGJMZSiuwxohcB1jt/LPLSmBisR8uqxq9+PQDbss8Jbi739n1/wY3df9znKIK3Did3sB9PLht44TgNi/Mcl9dqe6yanG/YmQj5odsWd5d9sJGFfPDkC3Bz7Xvsznh9gmE+00aKFDyUHzFlOm2UwCyd5MYB7zIlB6uX4db5GXWrxUGT/8B&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g>
<g>
<rect x="0" y="466" width="500" height="350" fill="none" stroke="none" pointer-events="all"/>
<path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="all" style="fill: light-dark(rgb(80, 80, 80), rgb(168, 168, 168));"/>
</g>
<g>
<rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Server(s)
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="1000" y="535" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;" font-size="12px" text-anchor="middle">
Server(s)
</text>
</switch>
</g>
</g>
<g>
<path d="M 529.86 331 L 529.86 408.86 L 419.86 408.86 L 419.86 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 419.86 462.65 L 415.36 453.65 L 419.86 455.9 L 424.36 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
DNS Servers
</font>
</div>
</div>
</div>
</foreignObject>
<text x="245" y="135" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
DNS Servers
</text>
</switch>
</g>
</g>
<g>
<rect x="635" y="861" width="355" height="440" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/>
</g>
<g>
<rect x="665" y="871" width="280" height="40" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 891px; margin-left: 666px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px">
<font face="Roboto, sans-serif">
TLS Termination Proxy
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="895" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;" font-size="12px" text-anchor="middle">
TLS Termination Proxy
</text>
</switch>
</g>
</g>
<g>
<path d="M 1030 1081 L 1000.1 1081" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 993.35 1081 L 1002.35 1076.5 L 1000.1 1081 L 1002.35 1085.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="1035" y="1191" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 1241px; margin-left: 1036px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
<font face="Roboto, sans-serif">
<font style="font-size: 24px;" data-font-src="https://fonts.googleapis.com/css?family=Roboto">
FastAPI
</font>
<font style="font-size: 24px; font-weight: normal;" data-font-src="https://fonts.googleapis.com/css?family=Roboto">
app for: someapp.example.com
</font>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="1185" y="1245" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">
FastAPI app for: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 1050 1041 L 1320 1041 L 1340 1081 L 1320 1121 L 1050 1121 L 1030 1081 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1081px; margin-left: 1031px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Plain response from: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="1185" y="1085" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Plain response from: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 1185 1191 L 1185 1121" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 990 930.86 L 1379.86 930.86 L 1379.86 1240.86 L 1345.1 1240.86" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 1338.35 1240.86 L 1347.35 1236.36 L 1345.1 1240.86 L 1347.35 1245.36 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 1050 891 L 1320 891 L 1340 931 L 1320 971 L 1050 971 L 1030 931 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 931px; margin-left: 1031px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Decrypted request for: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="1185" y="935" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Decrypted request for: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 135 466 L 135 450.86 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 408.01 110.86 L 529.86 110.86 L 529.86 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 479.86 1041 L 479.86 1020.86 L 479.86 826.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 479.86 819.35 L 484.36 828.35 L 479.86 826.1 L 475.36 828.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<ellipse cx="555" cy="1281" rx="85" ry="60.00000000000001" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
Port 443 (HTTPS)
</font>
</div>
</div>
</div>
</foreignObject>
<text x="555" y="1285" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Port 443 (HTTPS)
</text>
</switch>
</g>
</g>
<g>
<path d="M 190.14 1021 L 190.14 1280.86 L 459.9 1280.86" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 466.65 1280.86 L 457.65 1285.36 L 459.9 1280.86 L 457.65 1276.36 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 300.14 816 L 300.14 880.86 L 300.14 941" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 150 941 L 420 941 L 440 981 L 420 1021 L 150 1021 L 130 981 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 981px; margin-left: 131px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Encrypted request for: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="285" y="985" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Encrypted request for: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Who is: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="185" y="375" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Who is: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font face="Roboto, sans-serif">
<span style="font-size: 24px;">
IP:
</span>
<br style=""/>
<span style="font-size: 24px;">
123.124.125.126
</span>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="530" y="295" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
IP:...
</text>
</switch>
</g>
</g>
<g>
<path d="M 100.14 921 L 100.14 1310.86 L 481.27 1310.86" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
TLS Handshake
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="145" y="885" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
TLS Handshake
</text>
</switch>
</g>
</g>
<g>
<path d="M 100.14 816 L 100.14 830.86 L 100.14 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 250 1041 L 520 1041 L 540 1081 L 520 1121 L 250 1121 L 230 1081 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1081px; margin-left: 231px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Encrypted response from: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="385" y="1085" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Encrypted response from: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 481.51 1250.86 L 385 1250.86 L 385 1121" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="650" y="941" width="310" height="320" fill="#fff2cc" stroke="#d6b656" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(255, 242, 204), rgb(40, 29, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/>
</g>
<g>
<rect x="690.9" y="951" width="228.21" height="40" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 226px; height: 1px; padding-top: 971px; margin-left: 692px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px">
<font face="Roboto, sans-serif">
HTTPS certificates
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="975" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;" font-size="12px" text-anchor="middle">
HTTPS certificates
</text>
</switch>
</g>
</g>
<g>
<rect x="670" y="1006" width="270" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1041px; margin-left: 671px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
someapp.example.com
</font>
</span>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="1045" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<rect x="670" y="1086" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1121px; margin-left: 671px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
another.example.net
</font>
</span>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="1125" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
another.example.net
</text>
</switch>
</g>
</g>
<g>
<rect x="670" y="1166" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1201px; margin-left: 671px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
onemore.example.org
</font>
</span>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="1205" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
onemore.example.org
</text>
</switch>
</g>
</g>
<g>
<rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<font face="Roboto, sans-serif">
<span style="font-size: 24px;">
IP:
</span>
<br/>
<span style="font-size: 24px;">
123.124.125.126
</span>
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="540" y="1180" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
IP:...
</text>
</switch>
</g>
</g>
<g>
<rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
https://someapp.example.com
</font>
</div>
</div>
</div>
</foreignObject>
<text x="250" y="622" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">
https://someapp.example.com
</text>
</switch>
</g>
</g>
</g>
<switch>
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
<a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank">
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
Text is not SVG - cannot display
</text>
</a>
</switch>
</svg>

After

Width:  |  Height:  |  Size: 45 KiB

62
docs/en/docs/img/deployment/https/https07.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 29 KiB

217
docs/en/docs/img/deployment/https/https08.drawio

@ -1,217 +0,0 @@
<mxfile host="65bd71144e">
<diagram id="jyERGzDynktFHFRGN0ph" name="Page-1">
<mxGraphModel dx="3321" dy="2867" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="450" y="-50" width="820" height="970" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;font face=&quot;Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;Server(s)&lt;/span&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="710" y="-50" width="300" height="80" as="geometry"/>
</mxCell>
<mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;exitX=0.092;exitY=1.01;exitDx=0;exitDy=0;dashed=1;exitPerimeter=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="800" y="521"/>
<mxPoint x="800" y="560"/>
</Array>
<mxPoint x="803" y="521" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="800" y="520" as="sourcePoint"/>
<Array as="points">
<mxPoint x="800" y="680"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="33" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="-140" y="-75" width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="29" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;https://someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="33" vertex="1">
<mxGeometry x="60" y="27" width="380" height="250" as="geometry"/>
</mxCell>
<mxCell id="32" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.devices.laptop;strokeColor=none;" parent="33" vertex="1">
<mxGeometry width="500" height="350" as="geometry"/>
</mxCell>
<mxCell id="90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="101" target="32" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="390" y="-190" as="sourcePoint"/>
<Array as="points">
<mxPoint x="390" y="-132"/>
<mxPoint x="280" y="-132"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="34" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;DNS Servers&lt;/font&gt;" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-60" y="-540" width="330" height="260" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="495" y="320" width="355" height="440" as="geometry"/>
</mxCell>
<mxCell id="7" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;TLS Termination Proxy&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="525" y="330" width="280" height="40" as="geometry"/>
</mxCell>
<mxCell id="73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="85" target="6" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="82" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;entryX=0.073;entryY=0.01;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.075;exitY=0.998;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="62" target="78" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="917" y="754" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="62" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;FastAPI&lt;/font&gt;&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt; app for: someapp.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="895" y="650" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="65" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt;Another app&lt;/font&gt;&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt;: another.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="895" y="50" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="66" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt;One more app&lt;/font&gt;&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px ; font-weight: normal&quot;&gt;: onemore.example.com&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="895" y="180" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="78" value="&lt;font face=&quot;Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px ; font-weight: 400&quot;&gt;A Database&lt;/span&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="895" y="780" width="300" height="100" as="geometry"/>
</mxCell>
<mxCell id="85" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Plain response from: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" parent="1" vertex="1">
<mxGeometry x="890" y="500" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="86" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="62" target="85" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1030.0000000000005" y="649.9999999999995" as="sourcePoint"/>
<mxPoint x="850" y="540.0000000000005" as="targetPoint"/>
<Array as="points">
<mxPoint x="1030" y="540"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="6" target="62" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1240" y="390"/>
<mxPoint x="1240" y="700"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="84" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Decrypted request for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
<mxGeometry x="890" y="350" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="100" target="34" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="65.05882352941171" y="-220" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="89" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;dashed=1;" parent="1" source="32" target="100" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="110" y="-75" as="sourcePoint"/>
<mxPoint x="-4.941176470588289" y="-139.99999999999955" as="targetPoint"/>
<Array as="points">
<mxPoint x="-5" y="-90"/>
<mxPoint x="-5" y="-90"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="91" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="34" target="101" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="105" y="-280" as="sourcePoint"/>
<mxPoint x="390" y="-260" as="targetPoint"/>
<Array as="points">
<mxPoint x="390" y="-430"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="109" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="97" target="32" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="340" y="480"/>
<mxPoint x="340" y="480"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="36" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot; style=&quot;font-size: 24px&quot;&gt;Port 443 (HTTPS)&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="330" y="680" width="170" height="120" as="geometry"/>
</mxCell>
<mxCell id="92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=3;" parent="1" source="96" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="50" y="500" as="sourcePoint"/>
<Array as="points">
<mxPoint x="50" y="740"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="93" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="96" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="300" y="350" as="sourcePoint"/>
<mxPoint x="55" y="330" as="targetPoint"/>
<Array as="points">
<mxPoint x="160" y="340"/>
<mxPoint x="160" y="340"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="96" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Encrypted request for: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#82b366;strokeWidth=3;fillColor=#d5e8d4;" parent="1" vertex="1">
<mxGeometry x="-10" y="400" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="100" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Who is: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="-210" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="101" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34;&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="270" y="-290" width="240" height="80" as="geometry"/>
</mxCell>
<mxCell id="106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;strokeWidth=3;" parent="1" source="104" target="36" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="-40" y="770"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="104" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;TLS Handshake&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="-110" y="300" width="230" height="80" as="geometry"/>
</mxCell>
<mxCell id="107" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="32" target="104" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-40" y="275" as="sourcePoint"/>
<mxPoint x="341.38784067832285" y="770" as="targetPoint"/>
<Array as="points">
<mxPoint x="-40" y="290"/>
<mxPoint x="-40" y="290"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="97" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Encrypted response from: someapp.example.com&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeColor=#9673a6;strokeWidth=3;fillColor=#e1d5e7;" parent="1" vertex="1">
<mxGeometry x="90" y="500" width="310" height="80" as="geometry"/>
</mxCell>
<mxCell id="110" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=1;strokeWidth=3;" parent="1" source="36" target="97" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="415" y="680" as="sourcePoint"/>
<mxPoint x="110" y="275" as="targetPoint"/>
<Array as="points">
<mxPoint x="245" y="710"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
<mxGeometry x="510" y="400" width="310" height="320" as="geometry"/>
</mxCell>
<mxCell id="50" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;HTTPS certificates&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="550.9" y="410" width="228.21" height="40" as="geometry"/>
</mxCell>
<mxCell id="51" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;someapp.example.com&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="530" y="465" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="52" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;another.example.net&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="545" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="53" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;onemore.example.org&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#666666;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="530" y="625" width="270" height="70" as="geometry"/>
</mxCell>
<mxCell id="42" value="&lt;font face=&quot;Roboto&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Roboto&quot;&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;IP:&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size: 24px&quot;&gt;123.124.125.126&lt;/span&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="290" y="600" width="220" height="70" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

625
docs/en/docs/img/deployment/https/https08.drawio.svg

@ -0,0 +1,625 @@
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1412px" height="1464px" viewBox="-0.5 -0.5 1412 1464" content="&lt;mxfile&gt;&lt;diagram id=&quot;jyERGzDynktFHFRGN0ph&quot; name=&quot;Page-1&quot;&gt;7V1bc6s2EP41mWkfzADi+piTS09nTltPk5m2jwrINi1GLsiJ3V9fCQQGIWxsC19y7EwmZhES2v12tbtayB14mK9+SuFi9gsOUXxn6uHqDjzemaZtWID+YZR1QQGmrxeUaRqFBc3YEF6i/xAnls2WUYiyRkOCcUyiRZMY4CRBAWnQYJrij2azCY6boy7gFLUILwGM29Q/opDMONU39c2JryiazsqhTZ2fmcOyNSdkMxjijxoJPN2BhxRjUnybrx5QzNhXMqa47rnjbHVnKUpInwuAWVzxDuMlnx2/MbIup7vAUUJQ+vRO+2ScM+7Al+q+dXoQwmyGQn4wI/OYN5pEcfyAY5zm/QBbZz+UHsM3FI9xFpEIJ/RcgFj/9MQ7SklE+fxNaPCGCcHzWoP7OJqyEwQvKBUvSRwl6KESNxsE8iZV5/SWF2xG89WU4VLDk0kUIC1E7/RPpsVwUfSWkRT/g8r7TnBCL/rS5itnNbsjtKqROJ9/QniOSLqmTfjZkWFxoXPcj1y7OP7YgMgukTKr4YdyjoOXA3dadb4RLf3CpSuXdA9Bp3iZhJUgP2YRQS8LGLCzH5RlgnBxQl74tUbFtlIfLDU8s2yBZeVxjWWeKWGZ7ypgGZCwzIkJm+wCJg3eOf8umcrmXBllucW6pw1Ma7HKOVGep9+m/G9ctmcmqODypt3vmGIe35kPbBSYZKMMpdGk3c8LSik3f8h+LDukcyr6bI5DycU9l2RB9FQepClfqRrUNZqTWnom6ug8CkM2jBRQTcg1MQQ4f57hPIoZAEqm6L/ghPNmzr6BL8+v61y3p2pg5xq7YQdkmuopQJ3XEg4K6fLDD3FKZniKExg/bagCGzdtvmFm0nJ5/o0IWfO1FC4Jlkm7znm0isifrENN901+/BdrrekGP3xc8QHzg7W4GpTNxhS6lAsMHHmDTgGxeW4VT4piSKL35jIs43V+6X2awnWtQb6OZbWex4ywkbqnN6Vu8xGe+7Z3dEHOxR10XQ2ko1W3m+FlGiB+lQCfiie9EOVfBqIawDgVCHpIWe/F92PR5Hhb0HGIUPVzSLUhw4zAlNwzh3qzHOS054jddmEakrBsEcQwy6KgIPImcqR0gqOQDSfppe8P0ykqXSXzNCgCvrBCGP4wMGoPxKfYZZWqNajjgqOBB6xOt+hwb6anK9Xyfx5/faHnCi8o6/SBRD2JYxoqolpMEMR4Ge72eZs+0R3zAdhnPwzvETE4ohtiSfwQIPFDTEeBI+JI5DxsxCAEjCFE3iSQ8d0JPPQ2URRj+HaDy8CUMNm220y2LAVMdncp04GKoSrAeP3GFOwVpfMogXk4burjFK/WOwKOt1QSgmzVylsIUkelbQqoBG1UVqa+gUoVoATn8RjP6U54dtubcAZxJrpdgCN8fK9tnK9ZZFRS6ZqHn25F+KsgGOXxJgDNj9b1IzHqrMWzrl2LZ3XN972tAe1eMWwdUo7ZhpTrncZB9Q23YT9c2+rlnx4AvXKaSh1C6SoWQgJHxfKXBo0OZ4Sw5P89m0exzmTaFONpjOAiyrQAzyk5yGiT54loy/f2QmUJvWeYkfvxzztWxcubh56f+OALCDuV4HQOY+kkGXwWi/yitGicUaBQkoZWcL6IUXGDuzKRW92Az+BSeoJL6fTNHxq6Cr/d/g71cS8c3yeYzKgt53D+1CqbN4DFhG9qulVNT6ulsvD6pqW1afxG3UkWXqXo+1FU6kKzCd8UdauiGt4pNbV02VXsA7chYel6h6+lxhiwMR6pTrzBDB25SfwZoeSeFEpet2t2MSUF4xhGSR6AZgucMNDok5RV3xzs728FVZmCn9Eup6za58uiFmtzahV+mz2AF61QWTQmTdr7jgug04IkaEMSGaGNXFXAE/YddQnwDAnwlNQU9MjlX166iLdQkt6T5WJKbRw6F2PoQNf02keIDi1f82sfu1eipr3hLNRK2ZZ00LLbghFH70+yuYnDCsg8brvRc68AqYpz0U4bqyV+z1wjY5hCEWO5P92FytYFrq4YH93b0RezpD6iIF0vCAUkk8+/S5Tl3R2VRLuwRdUz34DTa1GlS6oXWsMsqkAWwg+2qJ6pUm8gy9SvPKtZgaO3DVVZHjL0ourYmm57HhW56VuG4RoNIIzMnmVdh1gc/xM7U/ujoCy5qoOgQsbgrpVYqese6D2NLC2HkWO5OaxKIW+qqAQnbRh3atR0DUc7VtftzY+vMSwN8nmRfkzRocoYojRtTaSfqG7VEKKGUWsN6wv1Vklhq1pMEZhbA1lALT4N/SylzRdUBOu7khX4MkIFIDj+lrfdlu1of3zd6hAbLoeW540p7OhJiz0Lqf/w9fV1/NL9CI+I8Kp89bLKVYGQCXAkqVXDlTjjhuirHeKN+1e3NKk2BZKsARimgq2lu2LqScyVKyqGF4ZxFaeafNkDf9eFKaXujsSx908EKKB3BPb7Ojt2Rxmt6jSoUKoPrO2L3Y72x0O5e7G7mKzYU3LLig2SFRsJQbF1yq2mKvS/ZOj9MWM1/FF25UhT/bxRK5tSvXLjNMiRpRvUlkQdjcCfx3mDDhhsnn2RDDHgXRkm0AzTor82/XV23N+uAOM60Wu6Inj9Nnir3Sj14HWu3lfcMzJsbgVIcmMDRR9751TFHUhXdRbqCrYgi+f4vsIkpNr9z7GVYNdpIVrrG5A4RqbseVo1FkL2rOeVmwzF4WWlSkPHl6JNMA/dNwKWoQHP9SzdcT2wqSkSbI3yfSLx/ndtFG1vf3y82f0c88WYwGa8eStuVFjceM7axsqo3+xqw+tqpO3c05hVyxBKGw/doxRX6pZ9VmRHTUuw14Zau2j1qBUZtqx+MpmYgbSsPnTeHNtRYwDsQ1NOQMXejy2zAJf0Fo18g4+2CdiLKSZRAAnqflvN7QUaShBp61qzhseSJLPoEqSVfat+i4a9M5019LNqirNMqrRBgZ91qI7sZWtPvH9uC/vnltN+P6wp2z9X8a5T27yBVQpW8dHpBJHrAKuTf/pEAhOb/XBe1ejFZxhw29Ypwd39Jt/vG9zi48Y4nd7AfTy4HfOE4LYuzHJf3VbdZe3FfUbPRswPObK8u+w17ir0w5SF4Oeq+2wq3D6O8LBJAwVCHokvnrW8dgpA9sZC84B/b0APN/8ko8jLbP7ZCHj6Hw==&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g>
<g>
<rect x="0" y="466" width="500" height="350" fill="none" stroke="none" pointer-events="all"/>
<path d="M 289.06 793.99 C 293.87 793.99 297.23 791.75 296.28 790.03 L 286.73 773.39 C 285.53 770.86 283.81 770.35 280.97 770.35 L 219.03 770.35 C 216.02 770.35 214.47 770.96 213.01 773.49 L 204.15 789.93 C 202.43 792.57 207.59 793.99 211.29 793.99 Z M 433.76 739.91 L 433.76 496.43 L 65.98 496.43 L 65.98 739.91 Z M 25.89 816 C 16.09 815.9 7.31 812.04 3.61 806.06 C 0 800.17 1.46 794.29 4.56 790.23 L 40.18 747.52 L 40.18 495.12 C 40.18 482.43 49.81 466 65.81 466 L 433.84 466 C 446.32 466 459.57 477.77 459.57 496.74 L 459.57 747.52 L 495.53 790.64 C 498.54 794.7 500 800.07 496.39 805.86 C 491.66 813.16 482.71 815.49 474.28 816 Z" fill="#505050" stroke="none" pointer-events="all" style="fill: light-dark(rgb(80, 80, 80), rgb(168, 168, 168));"/>
</g>
<g>
<rect x="590" y="491" width="820" height="970" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="850" y="491" width="300" height="80" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 531px; margin-left: 851px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Server(s)
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="1000" y="535" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;" font-size="12px" text-anchor="middle">
Server(s)
</text>
</switch>
</g>
</g>
<g>
<path d="M 530 331 L 530 409 L 420 409 L 420 455.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 420 462.65 L 415.5 453.65 L 420 455.9 L 424.5 453.65 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 162.5 66 C 96.5 66 80 131 132.8 144 C 80 172.6 139.4 235 182.3 209 C 212 261 311 261 344 209 C 410 209 410 157 368.75 131 C 410 79 344 27 286.25 53 C 245 14 179 14 162.5 66 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 328px; height: 1px; padding-top: 131px; margin-left: 81px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
DNS Servers
</font>
</div>
</div>
</div>
</foreignObject>
<text x="245" y="135" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
DNS Servers
</text>
</switch>
</g>
</g>
<g>
<rect x="635" y="861" width="355" height="440" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/>
</g>
<g>
<rect x="665" y="871" width="280" height="40" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 891px; margin-left: 666px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px">
<font face="Roboto, sans-serif">
TLS Termination Proxy
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="895" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;" font-size="12px" text-anchor="middle">
TLS Termination Proxy
</text>
</switch>
</g>
</g>
<g>
<path d="M 1030 1081 L 1000.1 1081" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 993.35 1081 L 1002.35 1076.5 L 1000.1 1081 L 1002.35 1085.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 1057.5 1290.8 L 1057.09 1311.9" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 1056.96 1318.65 L 1052.64 1309.56 L 1057.09 1311.9 L 1061.64 1309.73 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="1035" y="1191" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 1241px; margin-left: 1036px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
<font face="Roboto, sans-serif">
<font style="font-size: 24px;" data-font-src="https://fonts.googleapis.com/css?family=Roboto">
FastAPI
</font>
<font style="font-size: 24px; font-weight: normal;" data-font-src="https://fonts.googleapis.com/css?family=Roboto">
app for: someapp.example.com
</font>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="1185" y="1245" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">
FastAPI app for: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<rect x="1035" y="591" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 641px; margin-left: 1036px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
<font face="Roboto, sans-serif">
<font style="font-size: 24px; font-weight: normal;" data-font-src="https://fonts.googleapis.com/css?family=Roboto">
Another app
</font>
<font style="font-size: 24px; font-weight: normal;" data-font-src="https://fonts.googleapis.com/css?family=Roboto">
: another.example.com
</font>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="1185" y="645" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">
Another app: another.example.com
</text>
</switch>
</g>
</g>
<g>
<rect x="1035" y="721" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 771px; margin-left: 1036px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
<font face="Roboto, sans-serif">
<font style="font-size: 24px; font-weight: normal;" data-font-src="https://fonts.googleapis.com/css?family=Roboto">
One more app
</font>
<font style="font-size: 24px; font-weight: normal;" data-font-src="https://fonts.googleapis.com/css?family=Roboto">
: onemore.example.com
</font>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="1185" y="775" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">
One more app: onemore.example.com
</text>
</switch>
</g>
</g>
<g>
<rect x="1035" y="1321" width="300" height="100" fill="#dae8fc" stroke="#6c8ebf" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 1371px; margin-left: 1036px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px; font-weight: 400;">
<font face="Roboto, sans-serif">
A Database
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="1185" y="1375" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">
A Database
</text>
</switch>
</g>
</g>
<g>
<path d="M 1050 1041 L 1320 1041 L 1340 1081 L 1320 1121 L 1050 1121 L 1030 1081 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1081px; margin-left: 1031px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Plain response from: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="1185" y="1085" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Plain response from: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 1185 1191 L 1185 1121" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 990 931 L 1380 931 L 1380 1241 L 1345.1 1241" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 1338.35 1241 L 1347.35 1236.5 L 1345.1 1241 L 1347.35 1245.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 1050 891 L 1320 891 L 1340 931 L 1320 971 L 1050 971 L 1030 931 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 931px; margin-left: 1031px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Decrypted request for: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="1185" y="935" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Decrypted request for: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 185 331 L 185 296 L 245 296 L 245 271.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 245 264.35 L 249.5 273.35 L 245 271.1 L 240.5 273.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 135 466 L 135 451 L 135 411" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 408.04 111 L 530 111 L 530 251" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 480 1041 L 480 1021 L 480 826.1" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 480 819.35 L 484.5 828.35 L 480 826.1 L 475.5 828.35 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<ellipse cx="555" cy="1281" rx="85" ry="60" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 1281px; margin-left: 471px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
Port 443 (HTTPS)
</font>
</div>
</div>
</div>
</foreignObject>
<text x="555" y="1285" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Port 443 (HTTPS)
</text>
</switch>
</g>
</g>
<g>
<path d="M 190 1021 L 190 1281 L 459.9 1281" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 466.65 1281 L 457.65 1285.5 L 459.9 1281 L 457.65 1276.5 Z" fill="#000000" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 300 816 L 300 881 L 300 941" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 150 941 L 420 941 L 440 981 L 420 1021 L 150 1021 L 130 981 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 981px; margin-left: 131px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Encrypted request for: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="285" y="985" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Encrypted request for: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 50 331 L 320 331 L 340 371 L 320 411 L 50 411 L 30 371 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 371px; margin-left: 31px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Who is: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="185" y="375" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Who is: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 430 251 L 630 251 L 650 291 L 630 331 L 430 331 L 410 291 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 291px; margin-left: 411px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font face="Roboto, sans-serif">
<span style="font-size: 24px;">
IP:
</span>
<br style=""/>
<span style="font-size: 24px;">
123.124.125.126
</span>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="530" y="295" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
IP:...
</text>
</switch>
</g>
</g>
<g>
<path d="M 100 921 L 100 1311 L 481.39 1311" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 50 841 L 240 841 L 260 881 L 240 921 L 50 921 L 30 881 Z" fill="#ffffff" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 881px; margin-left: 31px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
TLS Handshake
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="145" y="885" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
TLS Handshake
</text>
</switch>
</g>
</g>
<g>
<path d="M 100 816 L 100 831 L 100 841" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 250 1041 L 520 1041 L 540 1081 L 520 1121 L 250 1121 L 230 1081 Z" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 1081px; margin-left: 231px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
Encrypted response from: someapp.example.com
</font>
</span>
</div>
</div>
</div>
</foreignObject>
<text x="385" y="1085" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
Encrypted response from: someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<path d="M 481.39 1251 L 385 1251 L 385 1121" fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="650" y="941" width="310" height="320" fill="#fff2cc" stroke="#d6b656" stroke-width="4" pointer-events="all" style="fill: light-dark(rgb(255, 242, 204), rgb(40, 29, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/>
</g>
<g>
<rect x="690.9" y="951" width="228.21" height="40" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 226px; height: 1px; padding-top: 971px; margin-left: 692px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Roboto Mono&quot;, &quot;mono&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px">
<font face="Roboto, sans-serif">
HTTPS certificates
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="975" fill="light-dark(#000000, #ffffff)" font-family="&quot;Roboto Mono&quot;, &quot;mono&quot;" font-size="12px" text-anchor="middle">
HTTPS certificates
</text>
</switch>
</g>
</g>
<g>
<rect x="670" y="1006" width="270" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1041px; margin-left: 671px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
someapp.example.com
</font>
</span>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="1045" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
someapp.example.com
</text>
</switch>
</g>
</g>
<g>
<rect x="670" y="1086" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1121px; margin-left: 671px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
another.example.net
</font>
</span>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="1125" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
another.example.net
</text>
</switch>
</g>
</g>
<g>
<rect x="670" y="1166" width="270" height="70" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 268px; height: 1px; padding-top: 1201px; margin-left: 671px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<span style="font-size: 24px;">
<font face="Roboto, sans-serif">
onemore.example.org
</font>
</span>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="805" y="1205" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
onemore.example.org
</text>
</switch>
</g>
</g>
<g>
<rect x="430" y="1141" width="220" height="70" fill="#ffffff" stroke="#000000" stroke-width="3" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1176px; margin-left: 431px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<font data-font-src="https://fonts.googleapis.com/css?family=Roboto">
<font face="Roboto, sans-serif">
<span style="font-size: 24px;">
IP:
</span>
<br/>
<span style="font-size: 24px;">
123.124.125.126
</span>
</font>
<br/>
</font>
</div>
</div>
</div>
</foreignObject>
<text x="540" y="1180" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
IP:...
</text>
</switch>
</g>
</g>
<g>
<rect x="60" y="493" width="380" height="250" fill="#ffffff" stroke="#000000" stroke-width="4" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 378px; height: 1px; padding-top: 618px; margin-left: 61px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
<font style="font-size: 24px" face="Roboto, sans-serif">
https://someapp.example.com
</font>
</div>
</div>
</div>
</foreignObject>
<text x="250" y="622" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">
https://someapp.example.com
</text>
</switch>
</g>
</g>
</g>
<switch>
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
<a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank">
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
Text is not SVG - cannot display
</text>
</a>
</switch>
</svg>

After

Width:  |  Height:  |  Size: 52 KiB

62
docs/en/docs/img/deployment/https/https08.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 33 KiB

BIN
docs/en/docs/img/sponsors/dribia.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
docs/en/docs/img/sponsors/interviewpal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

133
docs/en/docs/img/sponsors/subtotal-banner.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 24 KiB

31
docs/en/docs/img/sponsors/subtotal.svg

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="240px" height="100px" viewBox="0 0 240 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>sponsorship-badge</title>
<g id="sponsorship-badge" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect fill="#21002A" x="0" y="0" width="240" height="100"></rect>
<g id="Logo-Color-White" transform="translate(25.3346, 37.0438)" fill-rule="nonzero">
<g id="subtotal-white" transform="translate(-0, 0)">
<path d="M35.4635593,9.25233359 L35.4547458,22.6797912 C35.4547458,22.6797912 28.9172881,15.7964014 23.7327119,13.7252149 L23.7327119,20.903859 C23.7283051,24.4006387 20.7845763,26.1236895 17.7328814,26.0972488 C11.6030508,26.0972488 2.38186441,19.5553844 -3.13120528e-15,16.8474183 L0.00661016949,3.4221641 C0.00661016949,3.4221641 6.5440678,10.3011472 11.7286441,12.3723336 L11.7330508,5.19368953 C11.7330508,1.69690986 14.6767797,-0.026140983 17.7328814,0.00029969496 C23.8583051,0.00029969496 33.0794915,6.5421641 35.4613559,9.2501302" id="Path" fill="#DE4AE4"></path>
<path d="M49.5233898,23.034537 L49.5233898,17.6164014 C51.5857627,19.1257234 53.9301695,20.0797912 55.9947458,20.0797912 C58.059322,20.0797912 59.1081356,19.1257234 59.1081356,17.9557234 C59.1081356,14.7233505 49.1223729,16.0475878 49.1223729,8.44148614 C49.1223729,4.13165563 52.1740678,1.60657088 56.8849153,1.60657088 C59.1323729,1.60657088 61.6001695,2.22131664 63.3232203,3.29877427 L63.3232203,8.62436749 C61.7522034,7.3001302 59.5311864,6.50029969 57.5613559,6.50029969 C55.8052542,6.50029969 54.4457627,7.20979122 54.4457627,8.34674037 C54.4457627,11.5791133 64.4315254,10.254876 64.4315254,17.8609777 C64.4315254,22.1708082 61.2255932,25.0043675 56.329661,25.0043675 C53.8354237,25.0043675 51.2133898,24.3279268 49.5211864,23.034537" id="Path" fill="#FFFFFF"></path>
<path d="M66.8045763,2.09792681 L72.1015254,2.09792681 L72.1015254,16.0013166 C72.1015254,18.8018251 73.399322,20.0797912 75.2457627,20.0797912 C77.0922034,20.0797912 78.3591525,18.7599607 78.3591525,16.0013166 L78.3591525,2.09792681 L83.6538983,2.09792681 L83.6538983,15.9175878 C83.6538983,22.0980963 80.0469492,25.0043675 75.1818644,25.0043675 C70.3167797,25.0043675 66.8023729,22.0364014 66.8023729,15.9175878 L66.8023729,2.09792681 L66.8045763,2.09792681 Z" id="Path" fill="#FFFFFF"></path>
<path d="M86.919322,2.1001302 L94.2037288,2.1001302 C100.320339,2.1001302 102.45322,4.55911325 102.466441,8.04046919 C102.473051,10.124876 101.571864,11.4579268 100.287288,12.3304692 C102.444407,13.6789438 103.98678,15.5892827 103.98678,18.3413166 C103.98678,22.0364014 101.759153,24.5130116 96.2440678,24.5130116 L86.9215254,24.5130116 L86.9215254,2.1001302 L86.919322,2.1001302 Z M95.0961017,6.62368953 L92.2140678,6.62368953 L92.2140678,11.8236895 C92.2140678,11.8236895 97.5727119,10.9070794 97.5727119,8.48114715 C97.5727119,7.18114715 96.5789831,6.62368953 95.0961017,6.62368953 Z M96.8433898,14.4589438 C96.8433898,14.4589438 94.1045763,15.5297912 92.2118644,15.9991133 L92.2118644,19.9872488 L95.4288136,19.9872488 C97.7005085,19.9872488 98.7581356,19.0750455 98.7581356,17.5018251 C98.7581356,16.0608082 97.8811864,15.1530116 96.8411864,14.4589438 L96.8433898,14.4589438 Z" id="Shape" fill="#FFFFFF"></path>
<polygon id="Path" fill="#FFFFFF" points="109.312373 6.62589292 104.171864 6.62589292 104.171864 2.1001302 119.657288 2.1001302 119.657288 6.62589292 114.607119 6.62589292 114.607119 24.5130116 109.312373 24.5130116"></polygon>
<path d="M120.452712,13.3065709 C120.452712,5.91640139 124.055254,1.60657088 130.182881,1.60657088 C136.310508,1.60657088 139.910847,5.91640139 139.910847,13.3065709 C139.910847,20.6967404 136.308305,25.0065709 130.182881,25.0065709 C124.057458,25.0065709 120.452712,20.6967404 120.452712,13.3065709 M134.552203,13.3065709 C134.552203,8.96589292 133.042881,6.53335054 130.180678,6.53335054 C127.318475,6.53335054 125.809153,8.96589292 125.809153,13.3065709 C125.809153,17.6472488 127.318475,20.0797912 130.180678,20.0797912 C133.042881,20.0797912 134.552203,17.6472488 134.552203,13.3065709" id="Shape" fill="#FFFFFF"></path>
<polygon id="Path" fill="#FFFFFF" points="145.84678 6.62589292 140.706271 6.62589292 140.706271 2.1001302 156.191695 2.1001302 156.191695 6.62589292 151.141525 6.62589292 151.141525 24.5130116 145.84678 24.5130116"></polygon>
<polygon id="Path" fill="#FFFFFF" points="176.211695 2.1001302 181.506441 2.1001302 181.506441 19.9872488 188.62339 19.9872488 188.62339 24.5130116 176.211695 24.5130116"></polygon>
<path d="M168.312542,24.5130116 L173.609492,24.5130116 C173.609492,15.6928421 171.194576,7.33758783 167.605254,2.09792681 L161.955763,2.09792681 C158.366441,7.33538444 155.951525,15.6928421 155.951525,24.5130116 L161.248475,24.5130116 C161.248475,22.9243675 161.318983,21.3467404 161.457797,19.784537 L168.10322,19.784537 C168.242034,21.3489438 168.312542,22.9265709 168.312542,24.5130116 Z M162.039492,15.4130116 C162.61678,12.1982658 163.517966,9.07385902 164.780508,6.09046919 C166.043051,9.07385902 166.944237,12.1982658 167.521525,15.4130116 L162.041695,15.4130116 L162.039492,15.4130116 Z" id="Shape" fill="#FFFFFF"></path>
</g>
<g id="subtotal-white" transform="translate(-0, 0)">
<path d="M35.4635593,9.25233359 L35.4547458,22.6797912 C35.4547458,22.6797912 28.9172881,15.7964014 23.7327119,13.7252149 L23.7327119,20.903859 C23.7283051,24.4006387 20.7845763,26.1236895 17.7328814,26.0972488 C11.6030508,26.0972488 2.38186441,19.5553844 -3.13120528e-15,16.8474183 L0.00661016949,3.4221641 C0.00661016949,3.4221641 6.5440678,10.3011472 11.7286441,12.3723336 L11.7330508,5.19368953 C11.7330508,1.69690986 14.6767797,-0.026140983 17.7328814,0.00029969496 C23.8583051,0.00029969496 33.0794915,6.5421641 35.4613559,9.2501302" id="Path" fill="#DE4AE4"></path>
<path d="M49.5233898,23.034537 L49.5233898,17.6164014 C51.5857627,19.1257234 53.9301695,20.0797912 55.9947458,20.0797912 C58.059322,20.0797912 59.1081356,19.1257234 59.1081356,17.9557234 C59.1081356,14.7233505 49.1223729,16.0475878 49.1223729,8.44148614 C49.1223729,4.13165563 52.1740678,1.60657088 56.8849153,1.60657088 C59.1323729,1.60657088 61.6001695,2.22131664 63.3232203,3.29877427 L63.3232203,8.62436749 C61.7522034,7.3001302 59.5311864,6.50029969 57.5613559,6.50029969 C55.8052542,6.50029969 54.4457627,7.20979122 54.4457627,8.34674037 C54.4457627,11.5791133 64.4315254,10.254876 64.4315254,17.8609777 C64.4315254,22.1708082 61.2255932,25.0043675 56.329661,25.0043675 C53.8354237,25.0043675 51.2133898,24.3279268 49.5211864,23.034537" id="Path" fill="#FFFFFF"></path>
<path d="M66.8045763,2.09792681 L72.1015254,2.09792681 L72.1015254,16.0013166 C72.1015254,18.8018251 73.399322,20.0797912 75.2457627,20.0797912 C77.0922034,20.0797912 78.3591525,18.7599607 78.3591525,16.0013166 L78.3591525,2.09792681 L83.6538983,2.09792681 L83.6538983,15.9175878 C83.6538983,22.0980963 80.0469492,25.0043675 75.1818644,25.0043675 C70.3167797,25.0043675 66.8023729,22.0364014 66.8023729,15.9175878 L66.8023729,2.09792681 L66.8045763,2.09792681 Z" id="Path" fill="#FFFFFF"></path>
<path d="M86.919322,2.1001302 L94.2037288,2.1001302 C100.320339,2.1001302 102.45322,4.55911325 102.466441,8.04046919 C102.473051,10.124876 101.571864,11.4579268 100.287288,12.3304692 C102.444407,13.6789438 103.98678,15.5892827 103.98678,18.3413166 C103.98678,22.0364014 101.759153,24.5130116 96.2440678,24.5130116 L86.9215254,24.5130116 L86.9215254,2.1001302 L86.919322,2.1001302 Z M95.0961017,6.62368953 L92.2140678,6.62368953 L92.2140678,11.8236895 C92.2140678,11.8236895 97.5727119,10.9070794 97.5727119,8.48114715 C97.5727119,7.18114715 96.5789831,6.62368953 95.0961017,6.62368953 Z M96.8433898,14.4589438 C96.8433898,14.4589438 94.1045763,15.5297912 92.2118644,15.9991133 L92.2118644,19.9872488 L95.4288136,19.9872488 C97.7005085,19.9872488 98.7581356,19.0750455 98.7581356,17.5018251 C98.7581356,16.0608082 97.8811864,15.1530116 96.8411864,14.4589438 L96.8433898,14.4589438 Z" id="Shape" fill="#FFFFFF"></path>
<polygon id="Path" fill="#FFFFFF" points="109.312373 6.62589292 104.171864 6.62589292 104.171864 2.1001302 119.657288 2.1001302 119.657288 6.62589292 114.607119 6.62589292 114.607119 24.5130116 109.312373 24.5130116"></polygon>
<path d="M120.452712,13.3065709 C120.452712,5.91640139 124.055254,1.60657088 130.182881,1.60657088 C136.310508,1.60657088 139.910847,5.91640139 139.910847,13.3065709 C139.910847,20.6967404 136.308305,25.0065709 130.182881,25.0065709 C124.057458,25.0065709 120.452712,20.6967404 120.452712,13.3065709 M134.552203,13.3065709 C134.552203,8.96589292 133.042881,6.53335054 130.180678,6.53335054 C127.318475,6.53335054 125.809153,8.96589292 125.809153,13.3065709 C125.809153,17.6472488 127.318475,20.0797912 130.180678,20.0797912 C133.042881,20.0797912 134.552203,17.6472488 134.552203,13.3065709" id="Shape" fill="#FFFFFF"></path>
<polygon id="Path" fill="#FFFFFF" points="145.84678 6.62589292 140.706271 6.62589292 140.706271 2.1001302 156.191695 2.1001302 156.191695 6.62589292 151.141525 6.62589292 151.141525 24.5130116 145.84678 24.5130116"></polygon>
<polygon id="Path" fill="#FFFFFF" points="176.211695 2.1001302 181.506441 2.1001302 181.506441 19.9872488 188.62339 19.9872488 188.62339 24.5130116 176.211695 24.5130116"></polygon>
<path d="M168.312542,24.5130116 L173.609492,24.5130116 C173.609492,15.6928421 171.194576,7.33758783 167.605254,2.09792681 L161.955763,2.09792681 C158.366441,7.33538444 155.951525,15.6928421 155.951525,24.5130116 L161.248475,24.5130116 C161.248475,22.9243675 161.318983,21.3467404 161.457797,19.784537 L168.10322,19.784537 C168.242034,21.3489438 168.312542,22.9265709 168.312542,24.5130116 Z M162.039492,15.4130116 C162.61678,12.1982658 163.517966,9.07385902 164.780508,6.09046919 C166.043051,9.07385902 166.944237,12.1982658 167.521525,15.4130116 L162.041695,15.4130116 L162.039492,15.4130116 Z" id="Shape" fill="#FFFFFF"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

BIN
docs/en/docs/img/sponsors/zuplo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

43
docs/en/docs/img/tutorial/bigger-applications/package.drawio

@ -1,43 +0,0 @@
<mxfile host="65bd71144e" modified="2020-11-28T18:13:19.199Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.51.1 Chrome/83.0.4103.122 Electron/9.3.3 Safari/537.36" etag="KPHuXUeExV3PdWouu_3U" version="13.6.5">
<diagram id="zB4-QXJZ7ScUzHSLnJ1i" name="Page-1">
<mxGraphModel dx="1154" dy="780" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1920" pageHeight="1200" math="0" shadow="0" extFonts="Roboto^https://fonts.googleapis.com/css?family=Roboto|Roboto Mono, mono^https://fonts.googleapis.com/css?family=Roboto+Mono%2C+mono">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="110" y="280" width="1350" height="620" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;Package app&lt;br&gt;app/__init__.py&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="635" y="310" width="300" height="80" as="geometry"/>
</mxCell>
<mxCell id="15" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Module app.main&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;app/main.py&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="140" y="430" width="360" height="100" as="geometry"/>
</mxCell>
<mxCell id="16" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Module app.dependencies&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;app/dependencies.py&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="130" y="565" width="370" height="100" as="geometry"/>
</mxCell>
<mxCell id="5" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="1030" y="430" width="400" height="260" as="geometry"/>
</mxCell>
<mxCell id="8" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;Subpackage app.internal&lt;br&gt;&lt;/font&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;app/internal/__init__.py&lt;/span&gt;&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="1083.8438461538462" y="460" width="292.3076923076923" height="80" as="geometry"/>
</mxCell>
<mxCell id="19" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Module app.internal.admin&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;app/internal/admin.py&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="1050" y="570" width="360" height="100" as="geometry"/>
</mxCell>
<mxCell id="4" value="" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="540" y="430" width="440" height="410" as="geometry"/>
</mxCell>
<mxCell id="7" value="&lt;font style=&quot;font-size: 24px&quot; face=&quot;Roboto&quot;&gt;Subpackage app.routers&lt;br&gt;app/routers/__init__.py&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=3;fontFamily=Roboto Mono, mono;FType=g;" parent="1" vertex="1">
<mxGeometry x="599.2307692307693" y="460" width="321.53846153846155" height="80" as="geometry"/>
</mxCell>
<mxCell id="17" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Module app.routers.items&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;app/routers/items.py&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="580" y="570" width="360" height="100" as="geometry"/>
</mxCell>
<mxCell id="18" value="&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;Module app.routers.users&lt;/span&gt;&lt;br style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#34;roboto&amp;#34; ; font-size: 24px&quot;&gt;app/routers/users.py&lt;/span&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="580" y="700" width="360" height="100" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

420
docs/en/docs/img/tutorial/bigger-applications/package.drawio.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 604 KiB

1
docs/en/docs/img/tutorial/bigger-applications/package.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 14 KiB

11
docs/en/docs/index.md

@ -146,7 +146,7 @@ $ pip install "fastapi[standard]"
### Create it
* Create a file `main.py` with:
Create a file `main.py` with:
```Python
from typing import Union
@ -468,15 +468,20 @@ Used by Starlette:
* <a href="https://jinja.palletsprojects.com" target="_blank"><code>jinja2</code></a> - Required if you want to use the default template configuration.
* <a href="https://github.com/Kludex/python-multipart" target="_blank"><code>python-multipart</code></a> - Required if you want to support form <abbr title="converting the string that comes from an HTTP request into Python data">"parsing"</abbr>, with `request.form()`.
Used by FastAPI / Starlette:
Used by FastAPI:
* <a href="https://www.uvicorn.org" target="_blank"><code>uvicorn</code></a> - for the server that loads and serves your application. This includes `uvicorn[standard]`, which includes some dependencies (e.g. `uvloop`) needed for high performance serving.
* `fastapi-cli` - to provide the `fastapi` command.
* `fastapi-cli[standard]` - to provide the `fastapi` command.
* This includes `fastapi-cloud-cli`, which allows you to deploy your FastAPI application to <a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a>.
### Without `standard` Dependencies
If you don't want to include the `standard` optional dependencies, you can install with `pip install fastapi` instead of `pip install "fastapi[standard]"`.
### Without `fastapi-cloud-cli`
If you want to install FastAPI with the standard dependencies but without the `fastapi-cloud-cli`, you can install with `pip install "fastapi[standard-no-fastapi-cloud-cli]"`.
### Additional Optional Dependencies
There are some additional dependencies you might want to install.

166
docs/en/docs/release-notes.md

@ -7,16 +7,182 @@ hide:
## Latest Changes
### Translations
* 🌐 Add Bangali translation for `docs/bn/about/index.md`. PR [#13882](https://github.com/fastapi/fastapi/pull/13882) by [@sajjadrahman56](https://github.com/sajjadrahman56).
### Internal
* 👥 Update FastAPI People - Experts. PR [#13889](https://github.com/fastapi/fastapi/pull/13889) by [@tiangolo](https://github.com/tiangolo).
* 🔨 Update FastAPI People sleep interval, use external settings. PR [#13888](https://github.com/fastapi/fastapi/pull/13888) by [@tiangolo](https://github.com/tiangolo).
## 0.116.1
### Upgrades
* ⬆️ Upgrade Starlette supported version range to `>=0.40.0,<0.48.0`. PR [#13884](https://github.com/fastapi/fastapi/pull/13884) by [@tiangolo](https://github.com/tiangolo).
### Docs
* 📝 Add notification about impending changes in Translations to `docs/en/docs/contributing.md`. PR [#13886](https://github.com/fastapi/fastapi/pull/13886) by [@YuriiMotov](https://github.com/YuriiMotov).
### Internal
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13871](https://github.com/fastapi/fastapi/pull/13871) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
## 0.116.0
### Features
* ✨ Add support for deploying to FastAPI Cloud with `fastapi deploy`. PR [#13870](https://github.com/fastapi/fastapi/pull/13870) by [@tiangolo](https://github.com/tiangolo).
Installing `fastapi[standard]` now includes `fastapi-cloud-cli`.
This will allow you to deploy to [FastAPI Cloud](https://fastapicloud.com) with the `fastapi deploy` command.
If you want to install `fastapi` with the standard dependencies but without `fastapi-cloud-cli`, you can install instead `fastapi[standard-no-fastapi-cloud-cli]`.
### Translations
* 🌐 Add Russian translation for `docs/ru/docs/advanced/response-directly.md`. PR [#13801](https://github.com/fastapi/fastapi/pull/13801) by [@NavesSapnis](https://github.com/NavesSapnis).
* 🌐 Add Russian translation for `docs/ru/docs/advanced/additional-status-codes.md`. PR [#13799](https://github.com/fastapi/fastapi/pull/13799) by [@NavesSapnis](https://github.com/NavesSapnis).
* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/body-updates.md`. PR [#13804](https://github.com/fastapi/fastapi/pull/13804) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
### Internal
* ⬆ Bump pillow from 11.1.0 to 11.3.0. PR [#13852](https://github.com/fastapi/fastapi/pull/13852) by [@dependabot[bot]](https://github.com/apps/dependabot).
* 👥 Update FastAPI People - Sponsors. PR [#13846](https://github.com/fastapi/fastapi/pull/13846) by [@tiangolo](https://github.com/tiangolo).
* 👥 Update FastAPI GitHub topic repositories. PR [#13848](https://github.com/fastapi/fastapi/pull/13848) by [@tiangolo](https://github.com/tiangolo).
* ⬆ Bump mkdocs-material from 9.6.1 to 9.6.15. PR [#13849](https://github.com/fastapi/fastapi/pull/13849) by [@dependabot[bot]](https://github.com/apps/dependabot).
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13843](https://github.com/fastapi/fastapi/pull/13843) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
* 👥 Update FastAPI People - Contributors and Translators. PR [#13845](https://github.com/fastapi/fastapi/pull/13845) by [@tiangolo](https://github.com/tiangolo).
## 0.115.14
### Fixes
* 🐛 Fix support for unions when using `Form`. PR [#13827](https://github.com/fastapi/fastapi/pull/13827) by [@patrick91](https://github.com/patrick91).
### Docs
* ✏️ Fix grammar mistake in `docs/en/docs/advanced/response-directly.md`. PR [#13800](https://github.com/fastapi/fastapi/pull/13800) by [@NavesSapnis](https://github.com/NavesSapnis).
* 📝 Update Speakeasy URL to Speakeasy Sandbox. PR [#13697](https://github.com/fastapi/fastapi/pull/13697) by [@ndimares](https://github.com/ndimares).
### Translations
* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/response-model.md`. PR [#13792](https://github.com/fastapi/fastapi/pull/13792) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/security/index.md`. PR [#13805](https://github.com/fastapi/fastapi/pull/13805) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
* ✏️ Fix typo in `docs/ja/docs/tutorial/encoder.md`. PR [#13815](https://github.com/fastapi/fastapi/pull/13815) by [@ruzia](https://github.com/ruzia).
* ✏️ Fix typo in `docs/ja/docs/tutorial/handling-errors.md`. PR [#13814](https://github.com/fastapi/fastapi/pull/13814) by [@ruzia](https://github.com/ruzia).
* ✏️ Fix typo in `docs/ja/docs/tutorial/body-fields.md`. PR [#13802](https://github.com/fastapi/fastapi/pull/13802) by [@ruzia](https://github.com/ruzia).
* 🌐 Add Russian translation for `docs/ru/docs/advanced/index.md`. PR [#13797](https://github.com/fastapi/fastapi/pull/13797) by [@NavesSapnis](https://github.com/NavesSapnis).
### Internal
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13823](https://github.com/fastapi/fastapi/pull/13823) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
## 0.115.13
### Fixes
* 🐛 Fix truncating the model's description with form feed (`\f`) character for Pydantic V2. PR [#13698](https://github.com/fastapi/fastapi/pull/13698) by [@YuriiMotov](https://github.com/YuriiMotov).
### Refactors
* ✨ Add `refreshUrl` parameter in `OAuth2PasswordBearer`. PR [#11460](https://github.com/fastapi/fastapi/pull/11460) by [@snosratiershad](https://github.com/snosratiershad).
* 🚸 Set format to password for fields `password` and `client_secret` in `OAuth2PasswordRequestForm`, make docs show password fields for passwords. PR [#11032](https://github.com/fastapi/fastapi/pull/11032) by [@Thodoris1999](https://github.com/Thodoris1999).
* ✅ Simplify tests for `settings`. PR [#13505](https://github.com/fastapi/fastapi/pull/13505) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
* ✅ Simplify tests for `validate_response_recursive`. PR [#13507](https://github.com/fastapi/fastapi/pull/13507) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
### Upgrades
* ⬆️ Update ReDoc to version 2.x. PR [#9700](https://github.com/fastapi/fastapi/pull/9700) by [@joakimnordling](https://github.com/joakimnordling).
### Docs
* 📝 Add annotations to HTTP middleware example. PR [#11530](https://github.com/fastapi/fastapi/pull/11530) by [@Kilo59](https://github.com/Kilo59).
* 📝 Clarify in CORS docs that wildcards and credentials are mutually exclusive. PR [#9829](https://github.com/fastapi/fastapi/pull/9829) by [@dfioravanti](https://github.com/dfioravanti).
* ✏️ Fix typo in docstring. PR [#13532](https://github.com/fastapi/fastapi/pull/13532) by [@comp64](https://github.com/comp64).
* 📝 Clarify guidance on using `async def` without `await`. PR [#13642](https://github.com/fastapi/fastapi/pull/13642) by [@swastikpradhan1999](https://github.com/swastikpradhan1999).
* 📝 Update exclude-parameters-from-openapi documentation links. PR [#13600](https://github.com/fastapi/fastapi/pull/13600) by [@timonrieger](https://github.com/timonrieger).
* 📝 Clarify the middleware execution order in docs. PR [#13699](https://github.com/fastapi/fastapi/pull/13699) by [@YuriiMotov](https://github.com/YuriiMotov).
* 🍱 Update Drawio diagrams SVGs, single file per diagram, sans-serif font. PR [#13706](https://github.com/fastapi/fastapi/pull/13706) by [@tiangolo](https://github.com/tiangolo).
* 📝 Update docs for "Help FastAPI", simplify and reduce "sponsor" section. PR [#13670](https://github.com/fastapi/fastapi/pull/13670) by [@tiangolo](https://github.com/tiangolo).
* 📝 Remove unnecessary bullet from docs. PR [#13641](https://github.com/fastapi/fastapi/pull/13641) by [@Adamowoc](https://github.com/Adamowoc).
* ✏️ Fix syntax error in `docs/en/docs/tutorial/handling-errors.md`. PR [#13623](https://github.com/fastapi/fastapi/pull/13623) by [@gsheni](https://github.com/gsheni).
* 📝 Fix typo in documentation. PR [#13599](https://github.com/fastapi/fastapi/pull/13599) by [@Taoup](https://github.com/Taoup).
* 📝 Fix liblab client generation doc link. PR [#13571](https://github.com/fastapi/fastapi/pull/13571) by [@EFord36](https://github.com/EFord36).
* ✏️ Fix talk information typo. PR [#13544](https://github.com/fastapi/fastapi/pull/13544) by [@blueswen](https://github.com/blueswen).
* 📝 Add External Link: Taiwanese talk on FastAPI with observability . PR [#13527](https://github.com/fastapi/fastapi/pull/13527) by [@blueswen](https://github.com/blueswen).
### Translations
* 🌐 Add Russian Translation for `docs/ru/docs/advanced/response-change-status-code.md`. PR [#13791](https://github.com/fastapi/fastapi/pull/13791) by [@NavesSapnis](https://github.com/NavesSapnis).
* 🌐 Add Persian translation for `docs/fa/docs/learn/index.md`. PR [#13518](https://github.com/fastapi/fastapi/pull/13518) by [@Mohammad222PR](https://github.com/Mohammad222PR).
* 🌐 Add Korean translation for `docs/ko/docs/advanced/sub-applications.md`. PR [#4543](https://github.com/fastapi/fastapi/pull/4543) by [@NinaHwang](https://github.com/NinaHwang).
* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/schema-extra-example.md`. PR [#13769](https://github.com/fastapi/fastapi/pull/13769) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
* ✏️ Remove redundant words in docs/zh/docs/python-types.md. PR [#13774](https://github.com/fastapi/fastapi/pull/13774) by [@CharleeWa](https://github.com/CharleeWa).
* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/query-param-models.md`. PR [#13748](https://github.com/fastapi/fastapi/pull/13748) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
* 🌐 Add Bengali translation for `docs/bn/docs/environment-variables.md`. PR [#13629](https://github.com/fastapi/fastapi/pull/13629) by [@SakibSibly](https://github.com/SakibSibly).
* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/query-params-str-validations.md` page. PR [#13546](https://github.com/fastapi/fastapi/pull/13546) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
* 🌐 Add Russian translation for `docs/ru/docs/tutorial/cookie-param-models.md`. PR [#13616](https://github.com/fastapi/fastapi/pull/13616) by [@EgorOnishchuk](https://github.com/EgorOnishchuk).
* 🌐 Add Korean translation for `docs/ko/docs/tutorial/extra-models.md`. PR [#13063](https://github.com/fastapi/fastapi/pull/13063) by [@timothy-jeong](https://github.com/timothy-jeong).
* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/path-params-numeric-validations.md` page. PR [#13548](https://github.com/fastapi/fastapi/pull/13548) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/middleware.md` page. PR [#13520](https://github.com/fastapi/fastapi/pull/13520) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/background-tasks.md` page. PR [#13502](https://github.com/fastapi/fastapi/pull/13502) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/cors.md` page. PR [#13519](https://github.com/fastapi/fastapi/pull/13519) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
* 🌐 Update Korean translation for `docs/ko/docs/advanced/events.md`. PR [#13487](https://github.com/fastapi/fastapi/pull/13487) by [@bom1215](https://github.com/bom1215).
* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/handling-errors.md` page. PR [#13420](https://github.com/fastapi/fastapi/pull/13420) by [@valentinDruzhinin](https://github.com/valentinDruzhinin).
* 🌐 Add Russian translation for `docs/ru/docs/tutorial/request-form-models.md`. PR [#13552](https://github.com/fastapi/fastapi/pull/13552) by [@EgorOnishchuk](https://github.com/EgorOnishchuk).
* 📝 Fix internal anchor link in Spanish deployment docs. PR [#13737](https://github.com/fastapi/fastapi/pull/13737) by [@fabianfalon](https://github.com/fabianfalon).
* 🌐 Update Korean translation for `docs/ko/docs/virtual-environments.md`. PR [#13630](https://github.com/fastapi/fastapi/pull/13630) by [@sungchan1](https://github.com/sungchan1).
* 🌐 Add Russian translation for `docs/ru/docs/tutorial/header-param-models.md`. PR [#13526](https://github.com/fastapi/fastapi/pull/13526) by [@minaton-ru](https://github.com/minaton-ru).
* 🌐 Update Chinese translation for `docs/zh/docs/tutorial/index.md`. PR [#13374](https://github.com/fastapi/fastapi/pull/13374) by [@Zhongheng-Cheng](https://github.com/Zhongheng-Cheng).
* 🌐 Update Chinese translation for `docs/zh/docs/deployment/manually.md`. PR [#13324](https://github.com/fastapi/fastapi/pull/13324) by [@Zhongheng-Cheng](https://github.com/Zhongheng-Cheng).
* 🌐 Update Chinese translation for `docs/zh/docs/deployment/server-workers.md`. PR [#13292](https://github.com/fastapi/fastapi/pull/13292) by [@Zhongheng-Cheng](https://github.com/Zhongheng-Cheng).
* 🌐 Update Chinese translation for `docs/zh/docs/tutorial/first-steps.md`. PR [#13348](https://github.com/fastapi/fastapi/pull/13348) by [@Zhongheng-Cheng](https://github.com/Zhongheng-Cheng).
### Internal
* 🔨 Resolve Pydantic deprecation warnings in internal script. PR [#13696](https://github.com/fastapi/fastapi/pull/13696) by [@emmanuel-ferdman](https://github.com/emmanuel-ferdman).
* 🔧 Update sponsors: remove Porter. PR [#13783](https://github.com/fastapi/fastapi/pull/13783) by [@tiangolo](https://github.com/tiangolo).
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13781](https://github.com/fastapi/fastapi/pull/13781) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13757](https://github.com/fastapi/fastapi/pull/13757) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
* ⬆ Bump griffe-typingdoc from 0.2.7 to 0.2.8. PR [#13751](https://github.com/fastapi/fastapi/pull/13751) by [@dependabot[bot]](https://github.com/apps/dependabot).
* 🍱 Update sponsors: Dribia badge size. PR [#13773](https://github.com/fastapi/fastapi/pull/13773) by [@tiangolo](https://github.com/tiangolo).
* 🔧 Update sponsors: add Dribia. PR [#13771](https://github.com/fastapi/fastapi/pull/13771) by [@tiangolo](https://github.com/tiangolo).
* ⬆ Bump typer from 0.15.3 to 0.16.0. PR [#13752](https://github.com/fastapi/fastapi/pull/13752) by [@dependabot[bot]](https://github.com/apps/dependabot).
* 👥 Update FastAPI GitHub topic repositories. PR [#13754](https://github.com/fastapi/fastapi/pull/13754) by [@tiangolo](https://github.com/tiangolo).
* 👥 Update FastAPI People - Sponsors. PR [#13750](https://github.com/fastapi/fastapi/pull/13750) by [@tiangolo](https://github.com/tiangolo).
* 👥 Update FastAPI People - Contributors and Translators. PR [#13749](https://github.com/fastapi/fastapi/pull/13749) by [@tiangolo](https://github.com/tiangolo).
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13736](https://github.com/fastapi/fastapi/pull/13736) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
* 🔧 Update sponsors: Add InterviewPal. PR [#13728](https://github.com/fastapi/fastapi/pull/13728) by [@tiangolo](https://github.com/tiangolo).
* 🔧 Remove Google Analytics. PR [#13727](https://github.com/fastapi/fastapi/pull/13727) by [@tiangolo](https://github.com/tiangolo).
* 🔧 Update sponsors: remove MongoDB. PR [#13725](https://github.com/fastapi/fastapi/pull/13725) by [@tiangolo](https://github.com/tiangolo).
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13711](https://github.com/fastapi/fastapi/pull/13711) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
* 🔧 Update sponsors: add Subtotal. PR [#13701](https://github.com/fastapi/fastapi/pull/13701) by [@tiangolo](https://github.com/tiangolo).
* 🔧 Update sponsors: remove deepset / Haystack. PR [#13700](https://github.com/fastapi/fastapi/pull/13700) by [@tiangolo](https://github.com/tiangolo).
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13688](https://github.com/fastapi/fastapi/pull/13688) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
* 👥 Update FastAPI People - Experts. PR [#13671](https://github.com/fastapi/fastapi/pull/13671) by [@tiangolo](https://github.com/tiangolo).
* ⬆ Bump typer from 0.12.5 to 0.15.3. PR [#13666](https://github.com/fastapi/fastapi/pull/13666) by [@dependabot[bot]](https://github.com/apps/dependabot).
* ⬆ Bump sqlmodel from 0.0.23 to 0.0.24. PR [#13665](https://github.com/fastapi/fastapi/pull/13665) by [@dependabot[bot]](https://github.com/apps/dependabot).
* 🔧 Update Sponsors: Zuplo logo and alt text. PR [#13645](https://github.com/fastapi/fastapi/pull/13645) by [@martyndavies](https://github.com/martyndavies).
* 👥 Update FastAPI GitHub topic repositories. PR [#13667](https://github.com/fastapi/fastapi/pull/13667) by [@tiangolo](https://github.com/tiangolo).
* 🔧 Update links for LinkedIn and bottom. PR [#13669](https://github.com/fastapi/fastapi/pull/13669) by [@tiangolo](https://github.com/tiangolo).
* 🔧 Update sponsors: remove Bump.sh and Coherence. PR [#13668](https://github.com/fastapi/fastapi/pull/13668) by [@tiangolo](https://github.com/tiangolo).
* 👥 Update FastAPI People - Sponsors. PR [#13664](https://github.com/fastapi/fastapi/pull/13664) by [@tiangolo](https://github.com/tiangolo).
* 👥 Update FastAPI People - Contributors and Translators. PR [#13662](https://github.com/fastapi/fastapi/pull/13662) by [@tiangolo](https://github.com/tiangolo).
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13656](https://github.com/fastapi/fastapi/pull/13656) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
* ✅ Use `inline-snapshot` to support different Pydantic versions in the test suite. PR [#12534](https://github.com/fastapi/fastapi/pull/12534) by [@15r10nk](https://github.com/15r10nk).
* ⬆ Bump astral-sh/setup-uv from 5 to 6. PR [#13648](https://github.com/fastapi/fastapi/pull/13648) by [@dependabot[bot]](https://github.com/apps/dependabot).
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13634](https://github.com/fastapi/fastapi/pull/13634) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13619](https://github.com/fastapi/fastapi/pull/13619) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#13594](https://github.com/fastapi/fastapi/pull/13594) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
* 👥 Update FastAPI People - Experts. PR [#13568](https://github.com/fastapi/fastapi/pull/13568) by [@tiangolo](https://github.com/tiangolo).
* 👥 Update FastAPI GitHub topic repositories. PR [#13565](https://github.com/fastapi/fastapi/pull/13565) by [@tiangolo](https://github.com/tiangolo).
* 👥 Update FastAPI People - Sponsors. PR [#13559](https://github.com/fastapi/fastapi/pull/13559) by [@tiangolo](https://github.com/tiangolo).
* 👥 Update FastAPI People - Contributors and Translators. PR [#13558](https://github.com/fastapi/fastapi/pull/13558) by [@tiangolo](https://github.com/tiangolo).
* ⬆ Bump dirty-equals from 0.8.0 to 0.9.0. PR [#13561](https://github.com/fastapi/fastapi/pull/13561) by [@dependabot[bot]](https://github.com/apps/dependabot).
* 🔧 Clean up `docs/en/mkdocs.yml` configuration file. PR [#13542](https://github.com/fastapi/fastapi/pull/13542) by [@svlandeg](https://github.com/svlandeg).
* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#12986](https://github.com/fastapi/fastapi/pull/12986) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).

4
docs/en/docs/tutorial/bigger-applications.md

@ -52,7 +52,7 @@ from app.routers import items
* There's also a subdirectory `app/internal/` with another file `__init__.py`, so it's another "Python subpackage": `app.internal`.
* And the file `app/internal/admin.py` is another submodule: `app.internal.admin`.
<img src="/img/tutorial/bigger-applications/package.svg">
<img src="/img/tutorial/bigger-applications/package.drawio.svg">
The same file structure with comments:
@ -270,7 +270,7 @@ But that file doesn't exist, our dependencies are in a file at `app/dependencies
Remember how our app/file structure looks like:
<img src="/img/tutorial/bigger-applications/package.svg">
<img src="/img/tutorial/bigger-applications/package.drawio.svg">
---

5
docs/en/docs/tutorial/cors.md

@ -57,7 +57,10 @@ The following arguments are supported:
* `allow_origin_regex` - A regex string to match against origins that should be permitted to make cross-origin requests. e.g. `'https://.*\.example\.org'`.
* `allow_methods` - A list of HTTP methods that should be allowed for cross-origin requests. Defaults to `['GET']`. You can use `['*']` to allow all standard methods.
* `allow_headers` - A list of HTTP request headers that should be supported for cross-origin requests. Defaults to `[]`. You can use `['*']` to allow all headers. The `Accept`, `Accept-Language`, `Content-Language` and `Content-Type` headers are always allowed for <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests" class="external-link" rel="noopener" target="_blank">simple CORS requests</a>.
* `allow_credentials` - Indicate that cookies should be supported for cross-origin requests. Defaults to `False`. Also, `allow_origins` cannot be set to `['*']` for credentials to be allowed, origins must be specified.
* `allow_credentials` - Indicate that cookies should be supported for cross-origin requests. Defaults to `False`.
None of `allow_origins`, `allow_methods` and `allow_headers` can be set to `['*']` if `allow_credentials` is set to `True`. All of them must be <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#credentialed_requests_and_wildcards" class="external-link" rel="noopener" target="_blank">explicitly specified</a>.
* `expose_headers` - Indicate any response headers that should be made accessible to the browser. Defaults to `[]`.
* `max_age` - Sets a maximum time in seconds for browsers to cache CORS responses. Defaults to `600`.

4
docs/en/docs/tutorial/handling-errors.md

@ -35,7 +35,7 @@ Because it's a Python exception, you don't `return` it, you `raise` it.
This also means that if you are inside a utility function that you are calling inside of your *path operation function*, and you raise the `HTTPException` from inside of that utility function, it won't run the rest of the code in the *path operation function*, it will terminate that request right away and send the HTTP error from the `HTTPException` to the client.
The benefit of raising an exception over `return`ing a value will be more evident in the section about Dependencies and Security.
The benefit of raising an exception over returning a value will be more evident in the section about Dependencies and Security.
In this example, when the client requests an item by an ID that doesn't exist, raise an exception with a status code of `404`:
@ -252,4 +252,4 @@ If you want to use the exception along with the same default exception handlers
{* ../../docs_src/handling_errors/tutorial006.py hl[2:5,15,21] *}
In this example you are just `print`ing the error with a very expressive message, but you get the idea. You can use the exception and then just reuse the default exception handlers.
In this example you are just printing the error with a very expressive message, but you get the idea. You can use the exception and then just reuse the default exception handlers.

4
docs/en/docs/tutorial/index.md

@ -76,10 +76,12 @@ $ pip install "fastapi[standard]"
/// note
When you install with `pip install "fastapi[standard]"` it comes with some default optional standard dependencies.
When you install with `pip install "fastapi[standard]"` it comes with some default optional standard dependencies, including `fastapi-cloud-cli`, which allows you to deploy to <a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a>.
If you don't want to have those optional dependencies, you can instead install `pip install fastapi`.
If you want to install the standard dependencies but without the `fastapi-cloud-cli`, you can install with `pip install "fastapi[standard-no-fastapi-cloud-cli]"`.
///
## Advanced User Guide

23
docs/en/docs/tutorial/middleware.md

@ -65,6 +65,29 @@ Here we use <a href="https://docs.python.org/3/library/time.html#time.perf_count
///
## Multiple middleware execution order
When you add multiple middlewares using either `@app.middleware()` decorator or `app.add_middleware()` method, each new middleware wraps the application, forming a stack. The last middleware added is the *outermost*, and the first is the *innermost*.
On the request path, the *outermost* middleware runs first.
On the response path, it runs last.
For example:
```Python
app.add_middleware(MiddlewareA)
app.add_middleware(MiddlewareB)
```
This results in the following execution order:
* **Request**: MiddlewareB → MiddlewareA → route
* **Response**: route → MiddlewareA → MiddlewareB
This stacking behavior ensures that middlewares are executed in a predictable and controllable order.
## Other middlewares
You can later read more about other middlewares in the [Advanced User Guide: Advanced Middleware](../advanced/middleware.md){.internal-link target=_blank}.

20
docs/en/mkdocs.yml

@ -289,20 +289,6 @@ markdown_extensions:
mdx_include: null
markdown_include_variants: null
extra:
analytics:
provider: google
property: G-YNEVN69SC3
feedback:
title: Was this page helpful?
ratings:
- icon: material/emoticon-happy-outline
name: This page was helpful
data: 1
note: Thanks for your feedback!
- icon: material/emoticon-sad-outline
name: This page could be improved
data: 0
note: Thanks for your feedback!
social:
- icon: fontawesome/brands/github-alt
link: https://github.com/fastapi/fastapi
@ -311,11 +297,7 @@ extra:
- icon: fontawesome/brands/twitter
link: https://twitter.com/fastapi
- icon: fontawesome/brands/linkedin
link: https://www.linkedin.com/in/tiangolo
- icon: fontawesome/brands/dev
link: https://dev.to/tiangolo
- icon: fontawesome/brands/medium
link: https://medium.com/@tiangolo
link: https://www.linkedin.com/company/fastapi
- icon: fontawesome/solid/globe
link: https://tiangolo.com
alternate:

40
docs/en/overrides/main.html

@ -10,6 +10,13 @@
</span> Follow <strong>@fastapi</strong> on <strong>Twitter</strong> to stay updated
</a>
</div>
<div class="item">
<a class="announce-link" href="https://www.linkedin.com/company/fastapi" target="_blank">
<span class="twemoji linkedin">
{% include ".icons/fontawesome/brands/linkedin.svg" %}
</span> Follow <strong>FastAPI</strong> on <strong>LinkedIn</strong> to stay updated
</a>
</div>
<div class="item">
<a class="announce-link" href="https://fastapi.tiangolo.com/newsletter/">
<span class="twemoji">
@ -17,9 +24,6 @@
</span> Subscribe to the <strong>FastAPI and friends</strong> newsletter 🎉
</a>
</div>
<div class="item">
<iframe style="display: inline-block; vertical-align: middle; border: none; margin-right: 0.5rem;" src="https://github.com/sponsors/tiangolo/button" title="Sponsor tiangolo" height="35" width="116" style="border: 0;"></iframe> <a class="announce-link" target="_blank" href="https://github.com/sponsors/tiangolo">You can now sponsor <strong>FastAPI</strong> 🍰</a>
</div>
</div>
<div id="announce-right" style="position: relative;">
<div class="item">
@ -34,18 +38,6 @@
<img class="sponsor-image" src="/img/sponsors/platform-sh-banner.png" />
</a>
</div>
<div class="item">
<a title="Deploy FastAPI on AWS with a few clicks" style="display: block; position: relative;" href="https://www.porter.run" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/porter-banner.png" />
</a>
</div>
<div class="item">
<a title="Automate FastAPI documentation generation with Bump.sh" style="display: block; position: relative;" href="https://bump.sh/fastapi?utm_source=fastapi&utm_medium=referral&utm_campaign=sponsor" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/bump-sh-banner.svg" />
</a>
</div>
<div class="item">
<a title="Scalar: Beautiful Open-Source API References from Swagger/OpenAPI files" style="display: block; position: relative;" href="https://github.com/scalar/scalar/?utm_source=fastapi&utm_medium=website&utm_campaign=top-banner" target="_blank">
<span class="sponsor-badge">sponsor</span>
@ -58,18 +50,6 @@
<img class="sponsor-image" src="/img/sponsors/propelauth-banner.png" />
</a>
</div>
<div class="item">
<a title="Coherence" style="display: block; position: relative;" href="https://www.withcoherence.com/?utm_medium=advertising&utm_source=fastapi&utm_campaign=website" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/coherence-banner.png" />
</a>
</div>
<div class="item">
<a title="Build your next app with FastAPI and MongoDB" style="display: block; position: relative;" href="https://www.mongodb.com/developer/languages/python/python-quickstart-fastapi/?utm_campaign=fastapi_framework&utm_source=fastapi_sponsorship&utm_medium=web_referral" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/mongodb-banner.png" />
</a>
</div>
<div class="item">
<a title="Zuplo: Scale, Protect, Document, and Monetize your FastAPI" style="display: block; position: relative;" href="https://zuplo.link/fastapi-web" target="_blank">
<span class="sponsor-badge">sponsor</span>
@ -94,6 +74,12 @@
<img class="sponsor-image" src="/img/sponsors/coderabbit-banner.png" />
</a>
</div>
<div class="item">
<a title="Making Retail Purchases Actionable for Brands and Developers" style="display: block; position: relative;" href="https://subtotal.com/?utm_source=fastapi&utm_medium=sponsorship&utm_campaign=open-source" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/subtotal-banner.svg" />
</a>
</div>
</div>
</div>
{% endblock %}

2
docs/es/docs/advanced/generate-clients.md

@ -22,7 +22,7 @@ Y muestra su verdadero compromiso con FastAPI y su **comunidad** (tú), ya que n
Por ejemplo, podrías querer probar:
* <a href="https://speakeasy.com/?utm_source=fastapi+repo&utm_medium=github+sponsorship" class="external-link" target="_blank">Speakeasy</a>
* <a href="https://speakeasy.com/editor?utm_source=fastapi+repo&utm_medium=github+sponsorship" class="external-link" target="_blank">Speakeasy</a>
* <a href="https://www.stainlessapi.com/?utm_source=fastapi&utm_medium=referral" class="external-link" target="_blank">Stainless</a>
* <a href="https://developers.liblab.com/tutorials/sdk-for-fastapi/?utm_source=fastapi" class="external-link" target="_blank">liblab</a>

2
docs/es/docs/deployment/concepts.md

@ -216,7 +216,7 @@ Este Proceso Administrador probablemente sería el que escuche en el **puerto**
Esos worker processes serían los que ejecutan tu aplicación, realizarían los cálculos principales para recibir un **request** y devolver un **response**, y cargarían cualquier cosa que pongas en variables en RAM.
<img src="/img/deployment/concepts/process-ram.svg">
<img src="/img/deployment/concepts/process-ram.drawio.svg">
Y por supuesto, la misma máquina probablemente tendría **otros procesos** ejecutándose también, aparte de tu aplicación.

2
docs/es/docs/deployment/docker.md

@ -6,7 +6,7 @@ Usar contenedores de Linux tiene varias ventajas, incluyendo **seguridad**, **re
/// tip | Consejo
¿Tienes prisa y ya conoces esto? Salta al [`Dockerfile` más abajo 👇](#build-a-docker-image-for-fastapi).
¿Tienes prisa y ya conoces esto? Salta al [`Dockerfile` más abajo 👇](#construir-una-imagen-de-docker-para-fastapi).
///

18
docs/es/docs/deployment/https.md

@ -85,7 +85,7 @@ Primero, el navegador consultaría con los **servidores DNS** cuál es la **IP d
Los servidores DNS le dirían al navegador que use una **dirección IP** específica. Esa sería la dirección IP pública utilizada por tu servidor, que configuraste en los servidores DNS.
<img src="/img/deployment/https/https01.svg">
<img src="/img/deployment/https/https01.drawio.svg">
### Inicio del Handshake TLS
@ -93,7 +93,7 @@ El navegador luego se comunicaría con esa dirección IP en el **puerto 443** (e
La primera parte de la comunicación es solo para establecer la conexión entre el cliente y el servidor y decidir las claves criptográficas que usarán, etc.
<img src="/img/deployment/https/https02.svg">
<img src="/img/deployment/https/https02.drawio.svg">
Esta interacción entre el cliente y el servidor para establecer la conexión TLS se llama **handshake TLS**.
@ -111,7 +111,7 @@ Usando la **extensión SNI** discutida anteriormente, el TLS Termination Proxy v
En este caso, usaría el certificado para `someapp.example.com`.
<img src="/img/deployment/https/https03.svg">
<img src="/img/deployment/https/https03.drawio.svg">
El cliente ya **confía** en la entidad que generó ese certificado TLS (en este caso Let's Encrypt, pero lo veremos más adelante), por lo que puede **verificar** que el certificado sea válido.
@ -133,19 +133,19 @@ Ahora que el cliente y el servidor (específicamente el navegador y el TLS Termi
Así que, el cliente envía un **request HTTPS**. Esto es simplemente un request HTTP a través de una conexión TLS encriptada.
<img src="/img/deployment/https/https04.svg">
<img src="/img/deployment/https/https04.drawio.svg">
### Desencriptar el Request
El TLS Termination Proxy usaría la encriptación acordada para **desencriptar el request**, y transmitiría el **request HTTP simple (desencriptado)** al proceso que ejecuta la aplicación (por ejemplo, un proceso con Uvicorn ejecutando la aplicación FastAPI).
<img src="/img/deployment/https/https05.svg">
<img src="/img/deployment/https/https05.drawio.svg">
### Response HTTP
La aplicación procesaría el request y enviaría un **response HTTP simple (sin encriptar)** al TLS Termination Proxy.
<img src="/img/deployment/https/https06.svg">
<img src="/img/deployment/https/https06.drawio.svg">
### Response HTTPS
@ -153,7 +153,7 @@ El TLS Termination Proxy entonces **encriptaría el response** usando la criptog
Luego, el navegador verificaría que el response sea válido y encriptado con la clave criptográfica correcta, etc. Entonces **desencriptaría el response** y lo procesaría.
<img src="/img/deployment/https/https07.svg">
<img src="/img/deployment/https/https07.drawio.svg">
El cliente (navegador) sabrá que el response proviene del servidor correcto porque está utilizando la criptografía que acordaron usando el **certificado HTTPS** anteriormente.
@ -163,7 +163,7 @@ En el mismo servidor (o servidores), podrían haber **múltiples aplicaciones**,
Solo un proceso puede estar gestionando la IP y puerto específica (el TLS Termination Proxy en nuestro ejemplo) pero las otras aplicaciones/procesos pueden estar ejecutándose en el/los servidor(es) también, siempre y cuando no intenten usar la misma **combinación de IP pública y puerto**.
<img src="/img/deployment/https/https08.svg">
<img src="/img/deployment/https/https08.drawio.svg">
De esa manera, el TLS Termination Proxy podría gestionar HTTPS y certificados para **múltiples dominios**, para múltiples aplicaciones, y luego transmitir los requests a la aplicación correcta en cada caso.
@ -173,7 +173,7 @@ En algún momento en el futuro, cada certificado **expiraría** (alrededor de 3
Y entonces, habría otro programa (en algunos casos es otro programa, en algunos casos podría ser el mismo TLS Termination Proxy) que hablaría con Let's Encrypt y renovaría el/los certificado(s).
<img src="/img/deployment/https/https.svg">
<img src="/img/deployment/https/https.drawio.svg">
Los **certificados TLS** están **asociados con un nombre de dominio**, no con una dirección IP.

12
docs/es/docs/how-to/custom-docs-ui-assets.md

@ -98,7 +98,7 @@ Probablemente puedas hacer clic derecho en cada enlace y seleccionar una opción
Y **ReDoc** utiliza el archivo:
* <a href="https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js" class="external-link" target="_blank">`redoc.standalone.js`</a>
* <a href="https://cdn.jsdelivr.net/npm/redoc@2/bundles/redoc.standalone.js" class="external-link" target="_blank">`redoc.standalone.js`</a>
Después de eso, tu estructura de archivos podría verse así:
@ -129,14 +129,8 @@ Deberías ver un archivo JavaScript muy largo de **ReDoc**.
Podría comenzar con algo como:
```JavaScript
/*!
* ReDoc - OpenAPI/Swagger-generated API Reference Documentation
* -------------------------------------------------------------
* Version: "2.0.0-rc.18"
* Repo: https://github.com/Redocly/redoc
*/
!function(e,t){"object"==typeof exports&&"object"==typeof m
/*! For license information please see redoc.standalone.js.LICENSE.txt */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("null")):
...
```

4
docs/es/docs/tutorial/bigger-applications.md

@ -52,7 +52,7 @@ from app.routers import items
* También hay un subdirectorio `app/internal/` con otro archivo `__init__.py`, por lo que es otro "subpaquete de Python": `app.internal`.
* Y el archivo `app/internal/admin.py` es otro submódulo: `app.internal.admin`.
<img src="/img/tutorial/bigger-applications/package.svg">
<img src="/img/tutorial/bigger-applications/package.drawio.svg">
La misma estructura de archivos con comentarios:
@ -270,7 +270,7 @@ Pero ese archivo no existe, nuestras dependencias están en un archivo en `app/d
Recuerda cómo se ve nuestra estructura de aplicación/archivo:
<img src="/img/tutorial/bigger-applications/package.svg">
<img src="/img/tutorial/bigger-applications/package.drawio.svg">
---

5
docs/fa/docs/learn/index.md

@ -0,0 +1,5 @@
# یادگیری
اینجا بخش‌های مقدماتی و آموزش‌هایی هستن که برای یادگیری **FastAPI** بهت کمک می‌کنن.
می‌تونی اینو یه **کتاب**، یه **دوره آموزشی**، یا راه **رسمی** و پیشنهادی برای یادگیری FastAPI در نظر بگیری. 😎

2
docs/ja/docs/deployment/concepts.md

@ -219,7 +219,7 @@ FastAPI アプリケーションでは、Uvicorn のようなサーバープロ
これらのワーカー・プロセスは、アプリケーションを実行するものであり、**リクエスト**を受けて**レスポンス**を返すための主要な計算を行い、あなたが変数に入れたものは何でもRAMにロードします。
<img src="/img/deployment/concepts/process-ram.svg">
<img src="/img/deployment/concepts/process-ram.drawio.svg">
そしてもちろん、同じマシンでは、あなたのアプリケーションとは別に、**他のプロセス**も実行されているでしょう。

18
docs/ja/docs/deployment/https.md

@ -92,7 +92,7 @@ DNSサーバーでは、**取得したドメイン**をあなたのサーバー
DNSサーバーは、ブラウザに特定の**IPアドレス**を使用するように指示します。このIPアドレスは、DNSサーバーで設定した、あなたのサーバーが使用するパブリックIPアドレスになります。
<img src="/img/deployment/https/https01.svg">
<img src="/img/deployment/https/https01.drawio.svg">
### TLS Handshake の開始
@ -100,7 +100,7 @@ DNSサーバーは、ブラウザに特定の**IPアドレス**を使用する
通信の最初の部分は、クライアントとサーバー間の接続を確立し、使用する暗号鍵などを決めるだけです。
<img src="/img/deployment/https/https02.svg">
<img src="/img/deployment/https/https02.drawio.svg">
TLS接続を確立するためのクライアントとサーバー間のこのやりとりは、**TLSハンドシェイク**と呼ばれます。
@ -120,7 +120,7 @@ TLS Termination Proxyは、1つ以上の**TLS証明書**(HTTPS証明書)に
今回は、`someapp.example.com`の証明書を使うことになります。
<img src="/img/deployment/https/https03.svg">
<img src="/img/deployment/https/https03.drawio.svg">
クライアントは、そのTLS証明書を生成したエンティティ(この場合はLet's Encryptですが、これについては後述します)をすでに**信頼**しているため、その証明書が有効であることを**検証**することができます。
@ -142,19 +142,19 @@ TLS Termination Proxyは、1つ以上の**TLS証明書**(HTTPS証明書)に
そこで、クライアントは**HTTPSリクエスト**を送信します。これは、暗号化されたTLSコネクションを介した単なるHTTPリクエストです。
<img src="/img/deployment/https/https04.svg">
<img src="/img/deployment/https/https04.drawio.svg">
### リクエストの復号化
TLS Termination Proxy は、合意が取れている暗号化を使用して、**リクエストを復号化**し、**プレーン (復号化された) HTTP リクエスト** をアプリケーションを実行しているプロセス (例えば、FastAPI アプリケーションを実行している Uvicorn を持つプロセス) に送信します。
<img src="/img/deployment/https/https05.svg">
<img src="/img/deployment/https/https05.drawio.svg">
### HTTP レスポンス
アプリケーションはリクエストを処理し、**プレーン(暗号化されていない)HTTPレスポンス** をTLS Termination Proxyに送信します。
<img src="/img/deployment/https/https06.svg">
<img src="/img/deployment/https/https06.drawio.svg">
### HTTPS レスポンス
@ -162,7 +162,7 @@ TLS Termination Proxyは次に、事前に合意が取れている暗号(`someap
その後ブラウザでは、レスポンスが有効で正しい暗号キーで暗号化されていることなどを検証します。そして、ブラウザはレスポンスを**復号化**して処理します。
<img src="/img/deployment/https/https07.svg">
<img src="/img/deployment/https/https07.drawio.svg">
クライアント(ブラウザ)は、レスポンスが正しいサーバーから来たことを知ることができます。 なぜなら、そのサーバーは、以前に**HTTPS証明書**を使って合意した暗号を使っているからです。
@ -172,7 +172,7 @@ TLS Termination Proxyは次に、事前に合意が取れている暗号(`someap
特定のIPとポート(この例ではTLS Termination Proxy)を扱うことができるのは1つのプロセスだけですが、他のアプリケーション/プロセスも、同じ**パブリックIPとポート**の組み合わせを使用しようとしない限り、サーバー上で実行することができます。
<img src="/img/deployment/https/https08.svg">
<img src="/img/deployment/https/https08.drawio.svg">
そうすれば、TLS Termination Proxy は、**複数のドメイン**や複数のアプリケーションのHTTPSと証明書を処理し、それぞれのケースで適切なアプリケーションにリクエストを送信することができます。
@ -182,7 +182,7 @@ TLS Termination Proxyは次に、事前に合意が取れている暗号(`someap
その後、Let's Encryptと通信する別のプログラム(別のプログラムである場合もあれば、同じTLS Termination Proxyである場合もある)によって、証明書を更新します。
<img src="/img/deployment/https/https.svg">
<img src="/img/deployment/https/https.drawio.svg">
**TLS証明書**は、IPアドレスではなく、**ドメイン名に関連付けられて**います。

2
docs/ja/docs/tutorial/body-fields.md

@ -44,7 +44,7 @@
追加情報は`Field`や`Query`、`Body`などで宣言することができます。そしてそれは生成されたJSONスキーマに含まれます。
後に例を用いて宣言を学ぶ際に、追加情報を句悪方法を学べます。
後に例を用いて宣言を学ぶ際に、追加情報を追加する方法を学べます。
## まとめ

2
docs/ja/docs/tutorial/encoder.md

@ -8,7 +8,7 @@
## `jsonable_encoder`の使用
JSON互換のデータのみを受信するデータベース`fase_db`があるとしましょう。
JSON互換のデータのみを受信するデータベース`fake_db`があるとしましょう。
例えば、`datetime`オブジェクトはJSONと互換性がないので、このデーターベースには受け取られません。

2
docs/ja/docs/tutorial/handling-errors.md

@ -63,7 +63,7 @@ Pythonの例外なので、`return`ではなく、`raise`です。
`HTTPException`を発生させる際には、`str`だけでなく、JSONに変換できる任意の値を`detail`パラメータとして渡すことができます。
`dist`や`list`などを渡すことができます。
`dict`や`list`などを渡すことができます。
これらは **FastAPI** によって自動的に処理され、JSONに変換されます。

146
docs/ko/docs/advanced/events.md

@ -1,53 +1,165 @@
# 이벤트: startup과 shutdown
# Lifespan 이벤트
필요에 따라 응용 프로그램이 시작되기 전이나 종료될 때 실행되는 이벤트 핸들러(함수)를 정의할 수 있습니다.
애플리케이션 **시작 전**에 실행되어야 하는 로직(코드)을 정의할 수 있습니다. 이는 이 코드가 **한 번**만 실행되며, **애플리케이션이 요청을 받기 시작하기 전**에 실행된다는 의미입니다.
이 함수들은 `async def` 또는 평범하게 `def`으로 선언할 수 있습니다.
마찬가지로, 애플리케이션이 **종료될 때** 실행되어야 하는 로직(코드)을 정의할 수 있습니다. 이 경우, 이 코드는 **한 번**만 실행되며, **여러 요청을 처리한 후**에 실행됩니다.
이 코드가 애플리케이션이 **요청을 받기 시작하기 전에** 실행되고, 요청 처리가 끝난 후 **종료 직전에** 실행되기 때문에 전체 애플리케이션의 **수명(Lifespan)**을 다룹니다. (잠시 후 "수명"이라는 단어가 중요해집니다 😉)
이 방법은 전체 애플리케이션에서 사용해야 하는 **자원**을 설정하거나 요청 간에 **공유되는** 자원을 설정하고, 또는 그 후에 **정리**하는 데 매우 유용할 수 있습니다. 예를 들어, 데이터베이스 연결 풀 또는 공유되는 머신러닝 모델을 로드하는 경우입니다.
## 사용 사례
먼저 **사용 사례**를 예로 들어보고, 이를 어떻게 해결할 수 있는지 살펴보겠습니다.
우리가 요청을 처리하기 위해 사용하고 싶은 **머신러닝 모델**이 있다고 상상해 봅시다. 🤖
이 모델들은 요청 간에 공유되므로, 요청마다 모델이 하나씩 있는 것이 아니라, 여러 요청에서 동일한 모델을 사용합니다.
모델을 로드하는 데 **상당한 시간이 걸린다고 상상해 봅시다**, 왜냐하면 모델이 **디스크에서 많은 데이터를 읽어야** 하기 때문입니다. 따라서 모든 요청에 대해 모델을 매번 로드하고 싶지 않습니다.
모듈/파일의 최상위에서 모델을 로드할 수도 있지만, 그러면 **모델을 로드하는데** 시간이 걸리기 때문에, 단순한 자동화된 테스트를 실행할 때도 모델이 로드될 때까지 기다려야 해서 **테스트 속도가 느려집니다**.
이 문제를 해결하려고 하는 것입니다. 요청을 처리하기 전에 모델을 로드하되, 애플리케이션이 요청을 받기 시작하기 직전에만 로드하고, 코드가 로드되는 동안은 로드하지 않도록 하겠습니다.
## Lifespan
`FastAPI` 애플리케이션의 `lifespan` 매개변수와 "컨텍스트 매니저"를 사용하여 *시작*과 *종료* 로직을 정의할 수 있습니다. (컨텍스트 매니저가 무엇인지 잠시 후에 설명드리겠습니다.)
예제를 통해 시작하고, 그 후에 자세히 살펴보겠습니다.
우리는 `yield`를 사용하여 비동기 함수 `lifespan()`을 다음과 같이 생성합니다:
{* ../../docs_src/events/tutorial003.py hl[16,19] *}
여기서 우리는 모델을 로드하는 비싼 *시작* 작업을 시뮬레이션하고 있습니다. `yield` 앞에서 (가짜) 모델 함수를 머신러닝 모델이 담긴 딕셔너리에 넣습니다. 이 코드는 **애플리케이션이 요청을 받기 시작하기 전**, *시작* 동안에 실행됩니다.
그리고 `yield` 직후에는 모델을 언로드합니다. 이 코드는 **애플리케이션이 요청 처리 완료 후**, *종료* 직전에 실행됩니다. 예를 들어, 메모리나 GPU와 같은 자원을 해제하는 작업을 할 수 있습니다.
/// tip | 팁
`shutdown`은 애플리케이션을 **종료**할 때 발생합니다.
새로운 버전을 시작해야 하거나, 그냥 실행을 멈추고 싶을 수도 있습니다. 🤷
///
### Lifespan 함수
먼저 주목할 점은, `yield`를 사용하여 비동기 함수(async function)를 정의하고 있다는 것입니다. 이는 `yield`를 사용한 의존성과 매우 유사합니다.
{* ../../docs_src/events/tutorial003.py hl[14:19] *}
함수의 첫 번째 부분, 즉 `yield` 이전의 코드는 애플리케이션이 시작되기 **전에** 실행됩니다.
그리고 `yield` 이후의 부분은 애플리케이션이 완료된 후 **나중에** 실행됩니다.
### 비동기 컨텍스트 매니저
함수를 확인해보면, `@asynccontextmanager`로 장식되어 있습니다.
이것은 함수를 "**비동기 컨텍스트 매니저**"라고 불리는 것으로 변환시킵니다.
{* ../../docs_src/events/tutorial003.py hl[1,13] *}
파이썬에서 **컨텍스트 매니저**는 `with` 문에서 사용할 수 있는 것입니다. 예를 들어, `open()`은 컨텍스트 매니저로 사용할 수 있습니다:
```Python
with open("file.txt") as file:
file.read()
```
최근 버전의 파이썬에서는 **비동기 컨텍스트 매니저**도 있습니다. 이를 `async with`와 함께 사용합니다:
```Python
async with lifespan(app):
await do_stuff()
```
컨텍스트 매니저나 위와 같은 비동기 컨텍스트 매니저를 만들면, `with` 블록에 들어가기 전에 `yield` 이전의 코드가 실행되고, `with` 블록을 벗어난 후에는 `yield` 이후의 코드가 실행됩니다.
위의 코드 예제에서는 직접 사용하지 않고, FastAPI에 전달하여 사용하도록 합니다.
`FastAPI` 애플리케이션의 `lifespan` 매개변수는 **비동기 컨텍스트 매니저**를 받기 때문에, 새로운 `lifespan` 비동기 컨텍스트 매니저를 FastAPI에 전달할 수 있습니다.
{* ../../docs_src/events/tutorial003.py hl[22] *}
## 대체 이벤트 (사용 중단)
/// warning | 경고
이벤트 핸들러는 주 응용 프로그램에서만 작동합니다. [하위 응용 프로그램 - 마운트](./sub-applications.md){.internal-link target=_blank}에서는 작동하지 않습니다.
*시작*과 *종료*를 처리하는 권장 방법은 위에서 설명한 대로 `FastAPI` 애플리케이션의 `lifespan` 매개변수를 사용하는 것입니다. `lifespan` 매개변수를 제공하면 `startup``shutdown` 이벤트 핸들러는 더 이상 호출되지 않습니다. `lifespan`을 사용할지, 모든 이벤트를 사용할지 선택해야 하며 둘 다 사용할 수는 없습니다.
이 부분은 건너뛰셔도 좋습니다.
///
## `startup` 이벤트
*시작*과 *종료* 동안 실행될 이 로직을 정의하는 대체 방법이 있습니다.
애플리케이션이 시작되기 전에 또는 종료될 때 실행해야 하는 이벤트 핸들러(함수)를 정의할 수 있습니다.
응용 프로그램을 시작하기 전에 실행하려는 함수를 "startup" 이벤트로 선언합니다:
이 함수들은 `async def` 또는 일반 `def`로 선언할 수 있습니다.
### `startup` 이벤트
애플리케이션이 시작되기 전에 실행되어야 하는 함수를 추가하려면, `"startup"` 이벤트로 선언합니다:
{* ../../docs_src/events/tutorial001.py hl[8] *}
이 경우 `startup` 이벤트 핸들러 함수는 단순히 몇 가지 값으로 구성된 `dict` 형식의 "데이터베이스"를 초기화합니다.
이 경우, `startup` 이벤트 핸들러 함수는 "database"라는 항목(단지 `dict`)을 일부 값으로 초기화합니다.
하나 이상의 이벤트 핸들러 함수를 추가할 수도 있습니다.
여러 개의 이벤트 핸들러 함수를 추가할 수 있습니다.
그리고 응용 프로그램은 모든 `startup` 이벤트 핸들러가 완료될 때까지 요청을 받지 않습니다.
애플리케이션은 모든 `startup` 이벤트 핸들러가 완료될 때까지 요청을 받기 시작하지 않습니다.
## `shutdown` 이벤트
### `shutdown` 이벤트
응용 프로그램이 종료될 때 실행하려는 함수를 추가하려면 `"shutdown"` 이벤트로 선언합니다:
애플리케이션이 종료될 때 실행되어야 하는 함수를 추가하려면, `"shutdown"` 이벤트로 선언합니다:
{* ../../docs_src/events/tutorial002.py hl[6] *}
이 예제에서 `shutdown` 이벤트 핸들러 함수는 `"Application shutdown"`이라는 텍스트가 적힌 `log.txt` 파일을 추가할 것입니다.
여기서, `shutdown` 이벤트 핸들러 함수는 `"Application shutdown"`이라는 텍스트`log.txt` 파일에 기록합니다.
/// info | 정보
`open()` 함수에서 `mode="a"`는 "추가"를 의미합니다. 따라서 이미 존재하는 파일의 내용을 덮어쓰지 않고 새로운 줄을 추가합니다.
`open()` 함수에서 `mode="a"`는 "추가"를 의미하므로, 파일에 있는 기존 내용은 덮어쓰지 않고 새로운 줄이 추가됩니다.
///
/// tip | 팁
이 예제에서는 파일과 상호작용 하기 위해 파이썬 표준 함수인 `open()`을 사용하고 있습니다.
경우, 우리는 표준 파이썬 `open()` 함수를 사용하여 파일과 상호작용하고 있습니다.
따라서 디스크에 데이터를 쓰기 위해 "대기"가 필요한 I/O (입력/출력) 작업을 수행합니다.
따라서 I/O(입출력) 작업이 포함되어 있어 디스크에 기록되는 것을 "기다리는" 과정이 필요합니다.
그러나 `open()``async``await`을 사용하지 않기 때문에 이벤트 핸들러 함수는 `async def`가 아닌 표준 `def`로 선언하고 있습니다.
하지만 `open()``async``await`를 사용하지 않습니다.
그래서 우리는 이벤트 핸들러 함수를 `async def` 대신 일반 `def`로 선언합니다.
///
### `startup``shutdown`을 함께 사용
*시작*과 *종료* 로직이 연결될 가능성이 높습니다. 예를 들어, 무언가를 시작한 후 끝내거나, 자원을 획득한 후 해제하는 등의 작업을 할 수 있습니다.
이러한 작업을 별도의 함수로 처리하면 서로 로직이나 변수를 공유하지 않기 때문에 더 어려워집니다. 값들을 전역 변수에 저장하거나 비슷한 트릭을 사용해야 할 수 있습니다.
그렇기 때문에 위에서 설명한 대로 `lifespan`을 사용하는 것이 권장됩니다.
## 기술적 세부사항
호기심 많은 분들을 위한 기술적인 세부사항입니다. 🤓
ASGI 기술 사양에 따르면, 이는 <a href="https://asgi.readthedocs.io/en/latest/specs/lifespan.html" class="external-link" target="_blank">Lifespan Protocol</a>의 일부이며, `startup``shutdown`이라는 이벤트를 정의합니다.
/// info | 정보
이벤트 핸들러에 관한 내용은 <a href="https://www.starlette.io/events/" class="external-link" target="_blank">Starlette 이벤트 문서</a>에서 추가로 확인할 수 있습니다.
Starlette의 `lifespan` 핸들러에 대해 더 읽고 싶다면 <a href="https://www.starlette.io/lifespan/" class="external-link" target="_blank">Starlette의 Lifespan 문서</a>에서 확인할 수 있습니다.
이 문서에는 코드의 다른 영역에서 사용할 수 있는 lifespan 상태를 처리하는 방법도 포함되어 있습니다.
///
## 서브 애플리케이션
🚨 이 lifespan 이벤트(`startup`과 `shutdown`)는 메인 애플리케이션에 대해서만 실행되며, [서브 애플리케이션 - Mounts](sub-applications.md){.internal-link target=_blank}에는 실행되지 않음을 유의하세요.

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save