User / Player
Visit any instance using your WebXR compatible VR headset. If you are insure you can start from the test instance https://biggu.benetou.fr
Guardian / Parent / Teacher
As users visit https://biggu.benetou.fr ideally on your VR headset.
Administrator / Developer
You can tinker with the instance listed above. Consider setting up your own by cloning this repository then either
- directly starting the service using
npm i# install backend dependenciesnpm run generate_certificate# generate self-signed certificates for local testing onlynpm run get_and_install_assets# get assets, e.g. 3D models of hands, animated model and frontend dependenciesnpm run start# start the backend- follow instructions from the terminal (typically open http://localhost:8080 but be mindful of other instructions)
- try
npm run [TAB]for more helpful commands, e.g.server_and_domain_testandserver_test - to enable HTTPS for local testing in XR using
HTTPS=true npm start
- relying on a container with the provided
Dockerfile- same process but within a container
This is highly experimental so please read through #20 and if you want to federate, between your own instances or the test one also go through #21
Opening https://localhost:8080/commands should give you a JSON. You might have to rewrite paths manually or via your reverse proxy.
Setup for fully offline workshop
Once you have cloned the repository 2 steps are expected to be done online, namely
npm inpm run get_and_install_assets
You can also do so manually by
- copying the node_module directory of a working setup to the project root directory
- download assets https://biggu.benetou.fr/assets.tar then unpacking them in the pages/ directory
Before running the workshop it is strongly recommended to do a mock test with the browser console open. You can then inspect via the networking tab that all content, in particular dynamically loaded assets, do genuinely originate from your configured device. This is crucial as once the workshop starts and is offline anything else will be unavailable and might break content.
Running behind a reverse proxy
This is the expected way. The certificate is then handled by the reverse proxy.
nginx example
server {
server_name biggu.benetou.fr; # managed by Certbot
client_max_body_size 10M; # important for screenshots, 3D model uploads, etc
add_header 'Access-Control-Allow-Origin' '*' always; # suggested for easier federation but consider limiting only to trusted instances
location / {
proxy_pass http://localhost:8080;
}
listen 443 ssl; # managed by Certbot
# ... # managed by Certbot
}
SSL Certificates for HTTPS
- self-signed certificate that you can generate (
npm run generate_certificates) but it is not recommended because it will not work in XR and some part of federation will fail due to insecure certificate, this is only for testing or offline workshop - reverse proxy which handles the certificate (typically certbot for LetsEncrypt) which is the recommended way, except for offline workshops
Building a custom client
Refer to the API documented at #55
It is recommended to first build a console client (i.e. testing via fetch() in the browser console) then an XR client once this is validated.
Contributor
Note that due to the risk of spam this repository is closed to external contributor. If you want to contribute you are invited to clone this repository, modify whatever you want then contact https://git.benetou.fr/utopiah via email or otherwise to discuss. I would happily create an account for you on this instance after.
Consider also that the core of this project is remixing directly in XR. Everything else might be important but remains secondary.