diff --git a/conf/front.env b/conf/front.env
index 2cd37e2..e869e1f 100644
--- a/conf/front.env
+++ b/conf/front.env
@@ -1,3 +1,4 @@
NEXT_PUBLIC_API_URL=https://__DOMAIN__/api/
NEXT_TELEMETRY_DISABLED=1
NODE_ENV=production
+NEXT_PUBLIC_DOMAIN_URL=__DOMAIN__
diff --git a/sources/patches/custom_url.patch b/sources/patches/custom_url.patch
new file mode 100644
index 0000000..63a20b7
--- /dev/null
+++ b/sources/patches/custom_url.patch
@@ -0,0 +1,73 @@
+diff --git a/frontend/.env.local b/frontend/.env.local
+index ee43468..f862dac 100644
+--- a/frontend/.env.local
++++ b/frontend/.env.local
+@@ -1,4 +1,5 @@
+ NEXT_PUBLIC_API_URL="http://127.0.0.1:3000"
++NEXT_PUBLIC_DOMAIN_BASE="crab.fit"
+
+ # Google auth for calendar syncing, feature will be disabled if these aren't set
+ # NEXT_PUBLIC_GOOGLE_CLIENT_ID=""
+diff --git a/frontend/src/app/[id]/page.tsx b/frontend/src/app/[id]/page.tsx
+index a3af022..b807f1c 100644
+--- a/frontend/src/app/[id]/page.tsx
++++ b/frontend/src/app/[id]/page.tsx
+@@ -6,6 +6,7 @@ import { Temporal } from '@js-temporal/polyfill'
+
+ import Content from '/src/components/Content/Content'
+ import Copyable from '/src/components/Copyable/Copyable'
++import DOMAIN_URL from '/src/components/Copyable/Copyable'
+ import { getEvent } from '/src/config/api'
+ import { useTranslation } from '/src/i18n/server'
+ import { makeClass, relativeTimeFormat } from '/src/utils'
+@@ -49,10 +50,10 @@ const Page = async ({ params }: PageProps) => {
+ >{t('common:created', { date: relativeTimeFormat(Temporal.Instant.fromEpochSeconds(event.created_at), i18n.language) })}
+
+