Set up a domain for it — either a free subdomain or a separate domain. Pick one option:
' +
+ '';
+ } else {
+ introHtml =
+ '
To enable ' + escHtml(feat.name) + ', it needs its own domain from Njal.la. ' +
+ 'In your Njal.la account, set up a domain for it — either a free subdomain or a separate domain. Pick one option:
Purchase a new domain on Njal.la, or create a subdomain from a domain you already own. Tip: Subdomains are free to create — you only need to purchase one domain, and you can add as many subdomains as you need at no extra cost.
' +
- '
In the Njal.la web interface, create a Dynamic record pointing to this machine\'s external IP address: ' +
- '' + escHtml(externalIp) + '
' +
- '
Njal.la will give you a curl command like: ' +
- 'curl "https://njal.la/update/?h=sub.domain.com&k=abc123&auto"
' +
- '
Enter the subdomain and paste that curl command below
In Njal.la, open a domain you own and click "Add record".
' +
+ '
Set record type to Dynamic.
' +
+ '
In the Name field, type ONLY the host part — the word before your domain. ' +
+ '(Example only, your choice — for "call.yourdomain.com" you'd type just: call) ' +
+ '⚠ Do NOT type the full domain here — Njal.la adds it automatically.
' +
+ '
A Dynamic record has NO IP field — the IP auto-fills after the rebuild/reboot.
' +
'' +
+ '' +
+ '' +
+ 'Option B — Separate / new domain' +
+ '' +
+ '
In Njal.la, buy the domain you want.
' +
+ '
Add a Dynamic record as in Option A. If this domain is dedicated to the service, leave the Name field blank or use @.
' +
+ '
Copy the curl command Njal.la gives you.
' +
+ '' +
+ '' +
+ '
Below, enter the full domain for this service — a subdomain (e.g. call.yourdomain.com) or a separate domain (e.g. call.com) — and paste its curl command.
' +
'
' +
- '' +
+ '' +
'
ℹ Paste the full curl command from your Njal.la dashboard\'s Dynamic record
' +
npubField +
'';
@@ -103,7 +128,7 @@ function openDomainSetupModal(feat, onSaved) {
ddnsUrl = ddnsUrl.trim();
npub = npub.trim();
- if (!subdomain) { alert("Please enter a subdomain."); return; }
+ if (!subdomain) { alert("Please enter a domain."); return; }
if (feat.id === "haven" && !npub) { alert("Please enter your Nostr public key."); return; }
var saveBtn = document.getElementById("domain-setup-save-btn");
@@ -159,14 +184,14 @@ function openDomainReconfigureModal(feat, existingDomain, onSaved) {
'
Find the DNS record for ' + escHtml(currentDomain || "your domain") + '
' +
+ '
Find the DNS record for ' + escHtml(currentDomain || "your domain") + '. In Njal.la\'s Name field, note that only the host part is stored (the word before the domain) — not the full domain.
' +
'
Verify it has a Dynamic record pointing to your current external IP: ' +
'' + escHtml(externalIp) + '
' +
'
If the IP is wrong or the record is missing, update it
' +
'
If you changed the DDNS curl command, paste the updated one below
' +
'' +
'' +
- '' +
+ '' +
'
ℹ Paste the full curl command from your Njal.la dashboard\'s Dynamic record
' +
npubField +
'';
diff --git a/app/sovran_systemsos_web/static/onboarding.js b/app/sovran_systemsos_web/static/onboarding.js
index c103d50..2a23aa2 100644
--- a/app/sovran_systemsos_web/static/onboarding.js
+++ b/app/sovran_systemsos_web/static/onboarding.js
@@ -333,8 +333,6 @@ async function loadStep3() {
return;
}
- var externalIp = (networkData && networkData.external_ip) || "Unknown (could not retrieve)";
-
// Build set of enabled service units
var enabledUnits = new Set();
(_servicesData || []).forEach(function(svc) {
@@ -352,18 +350,24 @@ async function loadStep3() {
html += '
No domain-based services are enabled for your role. You can skip this step.
';
} else {
html += '
'
- + 'Before you continue:'
+ + '
Sovran_SystemsOS uses Njal.la for domains and Dynamic DNS.
Purchase a new domain on Njal.la, or create a subdomain from a domain you already own. Tip: Subdomains are free to create — you only need to purchase one domain, and you can add as many subdomains as you like.
'
- + '
In the Njal.la web interface, create a Dynamic record pointing to this machine\'s external IP address: '
- + '' + escHtml(externalIp) + '
'
- + '
Njal.la will give you a curl command like: '
- + 'curl "https://njal.la/update/?h=sub.domain.com&k=abc123&auto"
'
- + '
Enter the subdomain and paste that curl command below for each service
Buy at least one domain. Each service below needs its own domain — you can either give each service its own subdomain of a single domain you buy (subdomains are free, and one domain can have many), OR use a separate domain for each. Your choice.
'
+ + '
For each service, add a Dynamic record in Njal.la:'
+ + '
'
+ + '
In the Njal.la Name field, type ONLY the host part — the word before your domain. '
+ + '(Example only, your choice — for "call.yourdomain.com" you'd type just: call.) '
+ + 'If you bought a whole separate domain just for this service, leave Name blank or use @. '
+ + '⚠ Do NOT type the full domain in the Name field — Njal.la adds it automatically.
'
+ + '
A Dynamic record has NO IP field. You don't enter an IP anywhere — it auto-fills once Sovran_SystemsOS updates it (on save, and again after reboot).
'
+ + '
'
+ + '
'
+ + '
Njal.la gives you a curl command like: '
+ + 'curl "https://njal.la/update/?h=call.yourdomain.com&k=abc123&auto"
'
+ ''
+ '
';
- html += '
Enter each fully-qualified subdomain (e.g. matrix.yourdomain.com) and its Njal.la DDNS curl command.
';
+ html += '
Enter each service\'s full domain — a subdomain (e.g. call.yourdomain.com) or a separate domain (e.g. call.com) — and its Njal.la DDNS curl command.
';
relevantDomains.forEach(function(d) {
var currentVal = (_domainsData && _domainsData[d.name]) || "";
html += '
Sovran_SystemsOS uses Njal.la for domains and Dynamic DNS.
- First, create an account at Njal.la and purchase a new domain, or create a subdomain from a domain you already own. Tip: Subdomains are free to create — you only need to purchase one domain, and you can add as many subdomains as you need at no extra cost.
- Then, in the Njal.la web interface, create a Dynamic record pointing to this machine's external IP address (shown below).
- Finally, paste the DDNS curl command from your Njal.la dashboard for each service below.
+ Create an account at Njal.la, then for each service below, add a Dynamic record — no IP needed, it auto-populates once the DDNS curl command runs.
+ Paste the curl command from your Njal.la dashboard for each service.