From 6d447d2fe6a1f564fceb61073793979c09afc765 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Sun, 22 Jun 2025 18:49:54 +0100 Subject: [PATCH 1/3] add v4 tag to playwright extension --- docs/config/extensions/playwright.mdx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/config/extensions/playwright.mdx b/docs/config/extensions/playwright.mdx index 6924f22b56..0a6dce2bf5 100644 --- a/docs/config/extensions/playwright.mdx +++ b/docs/config/extensions/playwright.mdx @@ -2,8 +2,13 @@ title: "Playwright" sidebarTitle: "playwright" description: "Use the playwright build extension to use Playwright with Trigger.dev" +tag: "v4" --- +import UpgradeToV4Note from "/snippets/upgrade-to-v4-note.mdx"; + + + If you are using [Playwright](https://playwright.dev/), you should use the Playwright build extension. - Automatically installs Playwright and required browser dependencies From 2c3c21013e207903f78c3a8a03009b29ba47a069 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Sun, 22 Jun 2025 19:12:26 +0100 Subject: [PATCH 2/3] add self-hosting architecture section --- docs/self-hosting/architecture.png | Bin 0 -> 47329 bytes docs/self-hosting/overview.mdx | 9 ++++++++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 docs/self-hosting/architecture.png diff --git a/docs/self-hosting/architecture.png b/docs/self-hosting/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..35d91acab43373f4353287646f576ad91c4396b8 GIT binary patch literal 47329 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 E098p>EdT%j literal 0 HcmV?d00001 diff --git a/docs/self-hosting/overview.mdx b/docs/self-hosting/overview.mdx index 184ff1bcba..59f53ed50b 100644 --- a/docs/self-hosting/overview.mdx +++ b/docs/self-hosting/overview.mdx @@ -19,7 +19,14 @@ Because we don't manage self-hosted instances, we cannot guarantee how Trigger.d For more details, carry on reading and follow our guides for instructions on setting up a self-hosted Trigger.dev instance. If you prefer a managed experience, you can [sign up](https://cloud.trigger.dev/login) for our Cloud offering instead - we have a generous [free tier](https://trigger.dev/pricing) for you to try it out. -{/* TODO: Architecture section with updated diagram */} +## Architecture + +The self-hosted version is a set of containers running on your own infrastructure. It's split into two parts that can be scaled independently: + +- **Webapp**: includes the dashboard and other services like Redis and Postgres. +- **Worker**: includes the supervisor and the runners that execute your tasks. + +![Self-hosting architecture](./architecture.png) ## Feature comparison From ee0b315d9bf6ba651320daee5f84656ddc1e7847 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Sun, 22 Jun 2025 19:16:27 +0100 Subject: [PATCH 3/3] add v4-beta tag warning --- docs/self-hosting/docker.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/self-hosting/docker.mdx b/docs/self-hosting/docker.mdx index dee37b8d87..7acc9cefd7 100644 --- a/docs/self-hosting/docker.mdx +++ b/docs/self-hosting/docker.mdx @@ -105,6 +105,10 @@ docker compose logs -f webapp npx trigger.dev@v4-beta init -p -a http://localhost:8030 ``` + +The commands displayed in the webapp are incorrect while v4 is in beta. You should always use the `v4-beta` tag and not `latest`. + + {/* 7. Bonus: Add traefik as a reverse proxy ```bash