From 32d6ee195e4b9d83aa7fb148997828883e6f4599 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 24 Sep 2026 11:36:53 +0000 Subject: [PATCH] :wrench: Expand link preview crawler detection Add the User-Agent values used by Mattermost, OpenGraph.xyz and the Twitter Card Validator to the production and development link-preview routing maps. This lets those crawlers reach the dynamic Open Graph response instead of receiving the generic Penpot preview. AI-assisted-by: space-bunny-free --- docker/devenv/files/nginx.conf | 2 +- docker/images/files/nginx.conf.template | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/devenv/files/nginx.conf b/docker/devenv/files/nginx.conf index 9105cee436..5a0a81f091 100644 --- a/docker/devenv/files/nginx.conf +++ b/docker/devenv/files/nginx.conf @@ -62,7 +62,7 @@ http { # are served with dynamic Open Graph metadata from the backend. map $http_user_agent $penpot_link_preview_agent { default 0; - ~*(slackbot|discordbot|twitterbot|facebookexternalhit|facebookcatalog|whatsapp|telegrambot|linkedinbot|skypeuripreview|pinterestbot|redditbot|embedly|iframely|mastodon|bluesky|applebot|googlebot|bingbot|bingpreview|duckduckbot) 1; + "~*(slackbot|discordbot|twitterbot|facebookexternalhit|facebookcatalog|whatsapp|telegrambot|linkedinbot|skypeuripreview|pinterestbot|redditbot|embedly|iframely|mastodon|bluesky|applebot|googlebot|bingbot|bingpreview|duckduckbot|mattermost-bot|opengraph[.]xyz|twitter card validator)" 1; } proxy_cache_path /tmp/cache/ levels=2:2 keys_zone=penpot:20m; diff --git a/docker/images/files/nginx.conf.template b/docker/images/files/nginx.conf.template index 3a07c16214..0451e7a24a 100644 --- a/docker/images/files/nginx.conf.template +++ b/docker/images/files/nginx.conf.template @@ -71,7 +71,7 @@ http { # are served with dynamic Open Graph metadata from the backend. map $http_user_agent $penpot_link_preview_agent { default 0; - ~*(slackbot|discordbot|twitterbot|facebookexternalhit|facebookcatalog|whatsapp|telegrambot|linkedinbot|skypeuripreview|pinterestbot|redditbot|embedly|iframely|mastodon|bluesky|applebot|googlebot|bingbot|bingpreview|duckduckbot) 1; + "~*(slackbot|discordbot|twitterbot|facebookexternalhit|facebookcatalog|whatsapp|telegrambot|linkedinbot|skypeuripreview|pinterestbot|redditbot|embedly|iframely|mastodon|bluesky|applebot|googlebot|bingbot|bingpreview|duckduckbot|mattermost-bot|opengraph[.]xyz|twitter card validator)" 1; } proxy_cache_path /tmp/cache/ levels=2:2 keys_zone=penpot:20m;