demo: "Try it" is its own page on the .com, in the landing page's style (#117)

Captain Bob, 2026-11-06: "I want the try it as it's very own page and
use the landing page we designed earlier ... as a baseline."

The landing page is the .com's Main.WebHome. The Try-it page follows
it: a floating box -- Your Machine, in place of Quick Facts -- a linked
title, == sections, {{info}} and {{warning}}. It goes at TryIt on the
.com (/bin/view/TryIt/), with the console embedded and links back to
the landing page and the source.

The page is on the .com now, so apache-demo.conf lets the .com frame
the console (frame-ancestors), and the demo's host is
try.starshipos-f18.com.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
This commit is contained in:
rajames
2026-11-06 20:47:35 +00:00
co-authored by Claude Opus 5.5
parent 672d275f5c
commit 475dac67ef
3 changed files with 68 additions and 25 deletions
+3 -3
View File
@@ -21,8 +21,8 @@ XWiki "Try it" page (iframe) -> Apache: TLS, websocket -> ttyd -> start-session.
| `console.py` | Joins the visitor's terminal to the machine only once it runs, discarding keys typed while it loads |
| `qemu-args.sh` | The machine, shared by the two above: a resumed machine must match the saved one exactly |
| `starshipos-demo.service` | ttyd as a systemd service, on localhost, at most 3 sessions (#114) |
| `apache-demo.conf` | Example vhost: TLS, the websocket, framing allowed for the XWiki only (#115) |
| `xwiki-try-it.xwiki` | The XWiki "Try it" page, with the console embedded (XWiki 2.1 syntax) |
| `apache-demo.conf` | Example vhost: TLS, the websocket, framing allowed for the `.com` only (#115) |
| `xwiki-try-it.xwiki` | The "Try it" page, its own page on the `.com` XWiki (`TryIt`), in the landing page's style |
## What a visitor cannot do
@@ -45,7 +45,7 @@ DEMO_PROMPT='[zuse@Hera]' demo/make-snapshot.sh /tmp/StarshipOS.iso /var/lib/sta
```
Then install `starshipos-demo.service` and `apache-demo.conf` (their headers say how), and paste
`xwiki-try-it.xwiki` into a page on the XWiki. The `{{html}}` macro there needs a page author
`xwiki-try-it.xwiki` into the page `TryIt` on the `.com` XWiki. The `{{html}}` macro there needs a page author
with script rights.
A new image means re-running `build-iso.sh` and `make-snapshot.sh`: the saved machine belongs to
+5 -5
View File
@@ -2,14 +2,14 @@
# name, the certificate paths and the XWiki allowed to embed it are Captain Bob's to set.
# a2enmod proxy proxy_http proxy_wstunnel headers ssl rewrite
<VirtualHost *:443>
ServerName try.strshipos.com
ServerName try.starshipos-f18.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/try.strshipos.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/try.strshipos.com/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/try.starshipos-f18.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/try.starshipos-f18.com/privkey.pem
# The terminal may be framed by the XWiki's "Try it" page, and by nothing else.
# The terminal may be framed by the "Try it" page on the .com (TryIt), and by nothing else.
Header always unset X-Frame-Options
Header always set Content-Security-Policy "frame-ancestors https://www.starshipos-f18.org https://starshipos-f18.org"
Header always set Content-Security-Policy "frame-ancestors https://starshipos-f18.com https://www.starshipos-f18.com"
ProxyPreserveHost On
RewriteEngine On
+60 -17
View File
@@ -1,28 +1,71 @@
= Try StarshipOS =
{{box cssClass="floatinginfobox" title="**Your Machine**"}}
* **System**: StarshipOS -- LithosAnanke v2.1.0, StarForth v4 (the F18 engine)
* **Architecture**: amd64, emulated
* **Build**: the latest that passed acceptance on all three architectures
* **Logged in as**: Zuse, the superuser -- of this machine only
* **Network**: none
* **Lasts**: up to 30 minutes, then it is gone
{{/box}}
This is StarshipOS, running. Below is the console of a real StarshipOS machine -- the amd64 build
from the latest version that passed its acceptance tests -- started just for you. You are logged
in as Zuse, the superuser, of a machine that exists only for your session: there is nothing to
= [[Try StarshipOS>>https://starshipos-f18.com/bin/view/TryIt/]] =
This is a real StarshipOS machine, started just for you and already at its prompt. It is not a
simulation of StarshipOS and not a recording: the console below is the serial console of an
amd64 machine running the same image the project publishes every night. You are logged in as
**Zuse**, the superuser -- of a machine that exists only for your session. There is nothing to
break, and nothing you do is kept. Close the page and it is gone.
{{html clean="false"}}
<iframe src="https://try.strshipos.com/" title="StarshipOS console"
<iframe src="https://try.starshipos-f18.com/" title="StarshipOS console"
style="width:100%; height:34em; border:1px solid #888; border-radius:6px; background:#000;"></iframe>
{{/html}}
== Things to try ==
{{info}}
If the console does not connect, every machine we run is in use -- try again in a few minutes.
{{/info}}
StarshipOS speaks FORTH. Type a line and press Enter; ##ok## means it was done.
----
|=You type|=It answers
|##3 4 + .##|##7 ok## -- numbers go on a stack, ##+## adds the top two, ##.## prints the result
|##: SQUARE DUP * ;##|##ok## -- you have just defined a new word
|##7 SQUARE .##|##49 ok## -- and used it
== Things to Try ==
== What you are looking at ==
StarshipOS speaks **FORTH**. Type a line and press Enter; ##ok## means it was done.
* A machine of your own, booted from the same image the project publishes every night, resumed at
its prompt so you do not wait for it to boot.
* It runs in an emulator on our server. It has no network, and it lasts at most 30 minutes.
* If the console does not connect, the few machines we run are all in use -- try again in a few
minutes.
|=You type|=It answers|=What happened
|##3 4 + .##|##7 ok##|Numbers go on a stack; ##+## adds the top two; ##.## prints the result
|##: SQUARE DUP * ;##|##ok##|You defined a new word, ##SQUARE##
|##7 SQUARE .##|##49 ok##|...and used it, as if it had always been there
----
== What You Are Looking At ==
=== A Machine of Your Own ===
Each visitor gets a separate machine, resumed at its prompt from one that booted, passed its
power-on self-test (538 checks) and logged Zuse in -- so you do not wait for it to boot. When you
leave, or after 30 minutes, it is stopped and discarded; the next visitor starts from the same
clean state.
=== The Build ===
The demo always runs the most recent build that passed the project's **acceptance protocol**:
booting on amd64, aarch64 and riscv64, the PC stick loaded the way a PC loads it, and the 32-bit
build's tests -- the same checks every change must pass before it reaches the main line.
=== Zuse ===
**Zuse** is StarshipOS's superuser: whoever holds Zuse's identity drive. Here that drive is a
demo Zuse minted for this page alone, attached to every session with its writes thrown away --
not anyone's real identity.
{{warning}}
The demo runs in an emulator on a small server: it is slower than StarshipOS on real hardware,
and only a few people can use it at once.
{{/warning}}
----
== Find Out More ==
* [[StarshipOS>>https://starshipos-f18.com/bin/view/Main/]] -- what StarshipOS is, and how it is built
* [[The source>>https://gitea.starshipos-f18.org/rajames/LithosAnanke]] -- the kernel, StarForth, and this demo (##demo/##)