diff --git a/src/app/docs/desktop-app/page.tsx b/src/app/docs/desktop-app/page.tsx new file mode 100644 index 0000000..de073c9 --- /dev/null +++ b/src/app/docs/desktop-app/page.tsx @@ -0,0 +1,244 @@ +import Navbar from '@/components/Navbar'; +import Footer from '@/components/Footer'; +import DocsLayout from '@/components/docs/DocsLayout'; + +export default function DocsDesktopAppPage() { + return ( +
+ Grab the installer for your platform from the{' '} + + download page + + : +
+dashcaddy-installer-win-x64.exe (recommended; adds Start Menu and
+ desktop shortcuts) or dashcaddy-installer-win-x64-portable.exe (single file, no install)
+ dashcaddy-installer-mac.dmg (drag-install disk
+ image, Apple Silicon build) or dashcaddy-installer-mac-arm64.zip
+ dashcaddy-installer-mac-x64.zip
+ dashcaddy-installer-linux-x64.AppImage or{' '}
+ dashcaddy-installer-linux-x64.deb (Debian/Ubuntu)
+
+ Every release has a SHA256SUMS.txt alongside the files at{' '}
+
+ get.dashcaddy.net/release/SHA256SUMS.txt
+
+ . Verify your download against it before running anything — with clear limits on what that check does and doesn't prove (see{' '}
+ below).
+
++ ++ The desktop app is a window, not a second server. It connects to + your DashCaddy host over the network — all your services, data, and configuration stay on the server where + you installed DashCaddy. Nothing is duplicated on your desktop. +
+
+ Because the installers are not code-signed yet (see{' '} + below), checksum + verification is the strongest check you can do before running one. It confirms the file you downloaded is + byte-for-byte the file that was published: +
+{`# from your Downloads folder
+curl -O https://get.dashcaddy.net/release/SHA256SUMS.txt
+grep -E "dashcaddy-installer-mac\\.dmg$" SHA256SUMS.txt | shasum -a 256 -c -
+# (\$ anchors the filename at end of line, so exactly one manifest entry is
+# selected. Should print: dashcaddy-installer-mac.dmg: OK)`}
+ {`# from your Downloads folder
+Invoke-WebRequest https://get.dashcaddy.net/release/SHA256SUMS.txt -OutFile SHA256SUMS.txt
+Get-FileHash dashcaddy-installer-win-x64.exe -Algorithm SHA256
+# compare the hash to the matching line in SHA256SUMS.txt`}
+ + If a hash doesn't match, don't run the file — re-download it first, and if it still mismatches, + don't assume your machine is at fault: the published manifest itself could be stale or wrong. Report it + instead. +
+ +dashcaddy-installer-win-x64.exe and run it.dashcaddy-installer-mac.dmg and double-click to mount it.-arm64.zip for Apple Silicon,{' '}
+ -x64.zip for Intel).+ Because the app isn't notarized yet, macOS Gatekeeper will stop it the first time. That's a + one-time step — macOS remembers your choice: +
++ On newer macOS versions the right-click route may be hidden. Instead:{' '} + System Settings → Privacy & Security, scroll to the Security section, + find the message saying “DashCaddy Installer was blocked”, click{' '} + Open Anyway, authenticate with your password or Touch ID, then click Open in + the final confirmation dialog. +
+ ++ Windows SmartScreen and macOS Gatekeeper aren't a single check — they combine developer-identity + requirements (on Windows, a paid code-signing certificate; on macOS, Developer ID signing{' '} + plus Apple's notarization scan — the ticket Apple attaches isn't itself a signature, + it's Apple's verdict that the signed app passed a malware check) with reputation and other + security signals. DashCaddy currently has none of these, so the OS treats it as unverified. +
++ Unverified is not the same as malicious — plenty of legitimate open-source software ships + unsigned — but it does mean the OS's automated vetting doesn't apply to it. +
++ Verifying the SHA256 checksum against the published manifest gives you a limited integrity + check: it confirms the file you downloaded matches, byte for byte, what the release server published + — so it detects a truncated or corrupted download, or tampering in transit. It does not{' '} + prove the software itself is safe: the manifest lives on the same server as the binaries, so a compromised + server could replace both. Checksum comparison is a useful habit, not a substitute for code signing — and + signing/notarization is exactly what's on the roadmap to close that gap. In the meantime: +
+get.dashcaddy.net (HTTPS) — not from mirrors, chat links,
+ or third-party sites.
+ + What fixes the warnings takes more than a certificate, and differs by platform: on macOS, + Developer ID signing plus notarization makes Gatekeeper open the app normally. On{' '} + Windows, code signing removes the unidentified-publisher state, but SmartScreen can still + warn until the binary builds up download reputation over time. Both are on the roadmap. +
+ +https://dashcaddy.example.com).
+
+ The app needs to reach the same hostname as your browser. If you use a custom TLD (like{' '}
+ dashcaddy.home), make sure the machine running the desktop app also has DashCaddy's root
+ certificate installed (see the{' '}
+
+ Installation Guide
+
+ ).
+
| Symptom | +Likely cause | +Fix | +
|---|---|---|
| Mac: “can't be opened” again on a later launch | +Quarantine flag re-applied after the app file was replaced or moved | +Right-click → Open once more, or System Settings → Privacy & Security → Open Anyway | +
| Windows: SmartScreen blocks the portable exe | +Unsigned binary with no download reputation yet | +More info → Run anyway (after verifying the checksum) | +
| Checksum doesn't match | +Incomplete download, or the file was modified in transit | +Re-download from get.dashcaddy.net and verify again before running | +
| App opens but shows “connection refused” | +Wrong URL, or the DashCaddy host is down | +Check the URL in a browser first. If the browser works, re-type it in the app. | +
| Certificate warning inside the app | +Custom-TLD install without the root cert on this machine | +Install the DashCA root certificate on the computer running the app | +
| Login works in browser but not the app | +Stale cached session after a server restart | +Log out inside the app, then log back in | +
+ With the app connected, head to{' '} + + Deploy Your First Service + {' '} + to add your first application through the App Selector. +
+