From 5accbb42833339a3e6b96c6e49ce4e6792f11454 Mon Sep 17 00:00:00 2001 From: thiloho <123883702+thiloho@users.noreply.github.com> Date: Sun, 18 Aug 2024 13:48:36 +0200 Subject: [PATCH] Enable wildcard domains for published websites --- nix/module.nix | 20 ++++++++++++++++++- .../[websiteId]/publish/+page.server.ts | 16 ++++----------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/nix/module.nix b/nix/module.nix index 8b0b634..19d1801 100644 --- a/nix/module.nix +++ b/nix/module.nix @@ -130,7 +130,7 @@ in virtualHosts = { "demo.archtika.com" = { - enableACME = true; + useACMEHost = "demo.archtika.com"; forceSSL = true; locations = { "/" = { @@ -156,12 +156,30 @@ in }; }; }; + "~^(?.+)\\.demo\\.archtika\\.com$" = { + useACMEHost = "demo.archtika.com"; + forceSSL = true; + locations = { + "/" = { + alias = "/var/www/archtika-websites/$subdomain/"; + index = "index.html"; + tryFiles = "$uri $uri/ $uri/index.html =404"; + }; + }; + }; }; }; security.acme = { acceptTerms = true; defaults.email = "thilo.hohlt@tutanota.com"; + certs."demo.archtika.com" = { + domain = "demo.archtika.com"; + extraDomainNames = ["*.demo.archtika.com"]; + dnsProvider = "porkbun"; + environmentFile = /var/lib/porkbun.env; + group = config.services.nginx.group; + }; }; }; } diff --git a/web-app/src/routes/(authenticated)/website/[websiteId]/publish/+page.server.ts b/web-app/src/routes/(authenticated)/website/[websiteId]/publish/+page.server.ts index b170c82..db094c2 100644 --- a/web-app/src/routes/(authenticated)/website/[websiteId]/publish/+page.server.ts +++ b/web-app/src/routes/(authenticated)/website/[websiteId]/publish/+page.server.ts @@ -24,7 +24,7 @@ export const load: PageServerLoad = async ({ params, fetch, cookies }) => { generateStaticFiles(websiteOverview); - const websitePreviewUrl = `${NGINX_BASE_PREFIX}/previews/${websiteOverview.user_id}/${websiteOverview.id}/index.html`; + const websitePreviewUrl = `${NGINX_BASE_PREFIX}/previews/${websiteOverview.id}/index.html`; return { websiteOverview, @@ -60,17 +60,9 @@ const generateStaticFiles = async (websiteData: any, isPreview: boolean = true) let uploadDir = ""; if (isPreview) { - uploadDir = join( - "/", - "var", - "www", - "archtika-websites", - "previews", - websiteData.user_id, - websiteData.id - ); + uploadDir = join("/", "var", "www", "archtika-websites", "previews", websiteData.id); } else { - uploadDir = join("/", "var", "www", "archtika-websites", websiteData.user_id, websiteData.id); + uploadDir = join("/", "var", "www", "archtika-websites", websiteData.id); } await mkdir(uploadDir, { recursive: true }); @@ -86,7 +78,7 @@ const generateStaticFiles = async (websiteData: any, isPreview: boolean = true) logoType: websiteData.logo_type, logo: websiteData.logo_text, coverImage: article.cover_image - ? `${API_BASE_PREFIX}/rpc/retrieve_file?id=${article.cover_image}` + ? `${API_BASE_PREFIX === "/api" ? "https://demo.archtika.com/api" : API_BASE_PREFIX}/rpc/retrieve_file?id=${article.cover_image}` : "", publicationDate: article.publication_date, mainContent: md.render(article.main_content ?? ""),