{{ websiteMode ? 'Publish a website' : 'Allow external connections' }}
{{ websiteMode ? 'Create a website on your node and choose where people can find it.' : 'Choose how people will connect to selected services on your node.' }}
{{ error }}
{{ message }}
@@ -342,9 +346,9 @@ onMounted(refresh)Blossom is installed. You can skip installation.
Save your edits before storing this version in Blossom.
Verified local snapshot: {{ current.local_archive.size }} bytes · {{ new Date(current.local_archive.created_at).toLocaleString() }} · SHA-256 {{ current.local_archive.sha256 }}
This stores the saved draft shown below. Later edits need another explicit store. Local files require node login; this does not create a public Blossom endpoint.
@@ -363,31 +367,33 @@ onMounted(refresh)Continue from AIUI
Create a new project from the HTML you selected in AIUI. Existing projects remain unchanged.
- - +{{ projects.length ? 'Your websites' : 'Start with an idea' }}
Ask AIUI to make a simple HTML website. When its preview is ready, choose “Continue to website setup” to bring it here.
-Or give your website a name and start with a blank page below.
Describe and preview
-In AIUI, use “Continue to website setup” on your HTML preview to bring it back here for review.
Generate with a model on this node
Use an installed Ollama model to create a draft locally.
- +Edit or paste HTML
Your preview
Private previewYour preview stays private. This first version supports static pages; scripts and external resources are blocked.
- +Keep a signed copy in local Blossom
Local website files
@@ -403,9 +409,9 @@ onMounted(refresh)Blossom is installed. You can skip installation.
Save your edits before storing this version in Blossom.
Verified local snapshot: {{ current.local_archive.size }} bytes · {{ new Date(current.local_archive.created_at).toLocaleString() }} · SHA-256 {{ current.local_archive.sha256 }}
This stores the saved draft shown below. Later edits need another explicit store. Local files require node login; this does not create a public Blossom endpoint.
@@ -421,15 +427,15 @@ onMounted(refresh)Saved revisions
-Your domain
Use a domain you own, or buy one with Bitcoin or Lightning. FIPS and Tor addresses do not need a domain purchase.
- Buy a domain through Mynymbox ↗ + Buy a domain through Mynymbox ↗Mynymbox is the registrant of record; you retain contractual control and transfer rights. Complete checkout yourself, then return here. No hosting purchase is needed.
@@ -445,11 +451,11 @@ onMounted(refresh)Point the domain’s DNS at your proxy’s public address. Request a certificate in the proxy’s SSL tab and enable Force SSL. Then open the HTTPS address from a device outside your home network.
The proxy terminates HTTPS and can read the public page. Removing the upstream publication also disconnects this proxy route.
- +Verified https://{{ httpsCheck.hostname }}/ at {{ new Date(httpsCheck.checked_at).toLocaleString() }}: valid TLS and exact published content. Checked from this node; also test from an outside device.
Public HTTPS has not been verified for these saved settings.
In Mynymbox, open Domains → DNS Management → your domain → Manage records → Add Record.
| Type | Name | Value | TTL |
|---|---|---|---|
| {{ record.record_type }} | {{ record.name }} | {{ record.value }} | {{ record.ttl }} |
Existing app access
-This inventory shows existing access policies. Local-only APIs are excluded. A local listener does not prove external reachability.
-- {{ app.name }} · {{ app.port }}{{ app.listener_claimed ? 'Local proxy listening' : 'Listener not confirmed' }} · {{ app.authentication === 'node-session' ? 'Node login required' : 'App access policy' }}
Grant access to an app
-No installed apps currently offer guest sharing. Supported apps appear here when their catalogue policy enables it.
Give someone access to one application without sharing your dashboard login. Only apps that explicitly support guest sharing are offered. Their own account permissions still apply.
+No installed apps currently support guest sharing.
Give someone access to one application without sharing your dashboard login. Only apps that explicitly support guest sharing are offered. Their own account permissions still apply.
- + + +Choose a supported app from the suggestions to continue.
+For your public reverse proxy, use the FIPS address above as its forward host and port {{ guestTarget.port }}, with upstream scheme HTTP. Keep the app gate enabled. Configure the application's public URL if it requires one.
This creates permission to use the app. A reachable FIPS connection, onion service or configured public proxy is also needed.
Copy this token and share it privately with the intended guest. It is shown once and is never posted to Nostr or another service.
{{ issuedAccess.token }}
The guest opens the app address and chooses “Have an app-only access token?”. API clients can use it as an Authorization Bearer token. It cannot log in to the dashboard.
- +{{ grant.label }} · {{ grant.apps.join(', ') }} · {{ grant.expires_at ? new Date(grant.expires_at * 1000).toLocaleString() : 'No expiry' }}
- +Publish from your node
Visitors on FIPS can read this page. If you chose public web, your domain’s proxy uses this same publication.
- - +{{ listener?.listening ? 'Local FIPS listener is ready.' : 'FIPS listener is not confirmed yet. Reload to check.' }}
{{ listener.error }}
{{ listener.address }}
Open this address from another FIPS device to check visitor access.
- +Connection details
Website port {{ current.fips_publication.port }}. A local listener does not confirm access from another device.
Publish the saved version on Tor
Share an onion address without buying a domain. Anyone who knows the address can read the page in Tor Browser. Your node keeps the address keys when you unpublish.
- - +{{ onion.error }}
http://{{ onion.onion_address }}/
@@ -531,13 +540,13 @@ onMounted(refresh)Publish a named nsite
Upload a public static copy to a Blossom server, then announce it on your chosen Nostr relays. Your saved source stays on your node. A compatible nsite gateway can give it a browser address without buying a domain.
- +The node's operational identity is excluded. Your private key stays in the existing signer.
Choose servers you trust or host your own. The Blossom server must allow browser uploads and reads. Paid storage requires a separate arrangement; this flow never pays automatically.
- +Review exactly what will leave your node
Signing identity: {{ nsiteReview.identity.name }} {{ nsiteReview.identity.nostr_pubkey }}
@@ -551,15 +560,17 @@ onMounted(refresh){{ current.nsite_receipt.deletion_requested ? 'Deletion requested; copies may remain.' : current.nsite_receipt.accepted_relays.length ? 'Relay delivery recorded; gateway access not verified.' : 'Signed manifest retained; relay delivery is pending.' }}
Review retained manifest for retry or removal
{{ JSON.stringify(current.nsite_receipt.event, null, 2) }}Retry destinations: {{ relays }}. Removal also contacts relays that previously accepted this manifest: {{ current.nsite_receipt.accepted_relays.join(', ') || 'none recorded' }}.
- - +