xrsh/README.md
Leon van Kammen 37fa95666f
Some checks failed
/ mirror_to_github (push) Failing after 1m34s
/ test (push) Successful in 12s
wip
2025-01-21 15:05:16 +01:00

162 lines
5.6 KiB
Markdown

# xrsh
<img src='xrsh.svg' width="25%"/>
## [click here for the website / hosted repo](https://xrsh.isvery.ninja)
## XRSH Manual
Documentation for XRSH users can be found [here](https://forgejo.isvery.ninja/xrsh/xrsh-buildroot/src/branch/main/buildroot-v86/board/v86/rootfs_overlay/root/manual.md)
> TIP: this is also available by typing `ctrl/cmd+a+0` or `man xrsh` inside XRSH
## Wiki / Roadmap
See [the wiki here](https://forgejo.isvery.ninja/xrsh/xrsh/wiki/Home#milestones)
## Install
> NOTE: installation is optional: just surf to the public version [here](https://xrsh.isvery.ninja)
<details>
<summary>run standalone binary</summary>
1. Download [xrsh.com](https://forgejo.isvery.ninja/xrsh/xrsh/raw/branch/main/xrsh.com)
2. optional: run `unzip xrsh.com` to verify repository contents
3. run `chmod +x xrsh.com` in your console (only linux/mac)
4. run `./xrsh.com` in (any) shell
5. Profit! ✔
</details>
<details>
<summary>install using nixos</summary>
[NIX](https://nixos.org/) is a convenient way to install or develop xrsh:
1. `nix-shell -p xrsh thttpd`
2. `thttpd -p 8080 -d /nix/store/5q4vd50gmh52jh48z62ln1j05xzfh1fz-xrsh-0.142`
3. point your browser to `localhost:8080`
4. profit!
</details>
<details>
<summary>run OCI container [podman/docker]</summary>
1. `$(which podman || which docker) run -p 8080:8080 docker.io/coderofsalvation/xrsh`
2. point your browser to `localhost:8080`
3. profit!
> NOTE 1: to add files use the `-D <dir>` overlay webroot parameter.
> NOTE 2: to enable SSL and add (iso)file try something like this:
```
$ mkdir data
$ cp ../xrsh.iso data/. # copy custom iso
$ $(which podman || which docker) run -p 8080:8080 -v data/cert:etc/cert -v data:/data docker.io/coderofsalvation/xrsh /xrsh.com -D /data -c 0 -C /etc/cert/cert.pem -K /etc/cert/key.pem
```
> or as an exercise in constructive laziness setup a reverse proxy like [zoraxy](https://github.com/tobychui/zoraxy), [go-proxy](https://github.com/yusing/go-proxy), [droxy], caddy or nginx-reverse-proxymanager.
</details>
<details>
<summary>run from codeberg.org (nonprofit-backed forgejo instance)</summary>
<br>
1. create a `pages` branchclone
2. push it to the codeberg repository
3. profit! it is now live
> more info: https://docs.codeberg.org/codeberg-pages/
</details>
<details>
<summary>run from selfhosted [forgejo](https://forgejo.org)/gitea codeforge-instance</summary>
<br>
1. clone the xrsh repository locally
2. create a repo on your forgejo instance
3. `git push` the xrsh to it
4. in your forgejo (docker/nix)-instance symlink it to the public folder (*)
5. point your browser to `https://yourforgejo.org/assets/xrsh`
> \* = for example: `ln -f git/repositories/yourusername/xrsh gitea/public/assets/.`
> optionally customize the [xrsh yunohost package](https://forgejo.isvery.ninja/xrsh/xrsh_ynh) with your own ISO
</details>
<details>
<summary>install in [yunohost](https://yunohost.org)</summary>
<br>
1. search for xrsh in the application catalog
2. click install
3. profit!
> optionally customize the [xrsh yunohost package](https://forgejo.isvery.ninja/xrsh/xrsh_ynh) with your own ISO
</details>
<details>
The browser auto-launches `https://localhost:8080` on most platforms
> pass `-p XXXX` to specify port (default:8080)
## Developers
Make sure to clone the repo including submodules (the [xrsh-com](https://forgejo.isvery.ninja/xrsh/xrsh-com) repo)
```
$ git clone --recurse-submodules https://forgejo.isvery.ninja/xrsh/xrsh
$ cd xrsh
$ nix-shell # optional but adviced (to get up and running instantly)
```
> Now serve the repo from a HTTPS webserver (for example run `./make dev`)
<details>
<summary>build using shellscript</summary>
1. Run `./make standalone` to package everything into `xrsh.com`
</details>
<details>
<summary>build using nix</summary>
1. `nix-build -E "with import <nixpkgs> { }; callPackage ./nix/xrsh-package.nix"`
2. optionally see the other nix-files in `nix`-folder
</details>
<details>
<summary>launch different .iso / modify files</summary>
You can specify a different `.iso` file in various ways:
1. open the `xrsh.com` as a zip (drag-drop into a zip-manager, or add `.zip` extension)
2. method 1: overwrite `xrsh.iso`
3. method 2: open `src/index.html` and change `isoterminal="iso: ./../xrsh.iso"` to another file/URL
> see developer-section below on building your own iso
</details>
* development of components (`src/com`) takes places [in this git submodule](https://forgejo.isvery.ninja/xrsh/xrsh-com)
* development of `xrsh.iso` takes places [in this gitsubmodule](https://forgejo.isvery.ninja/xrsh/xrsh-buildroot)
## Funding
This project is funded through [NGI0 Entrust](https://nlnet.nl/entrust), a fund established by [NLnet](https://nlnet.nl) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu) program. Learn more at the [NLnet project page](https://nlnet.nl/project/xrsh).
[<img src="https://nlnet.nl/logo/banner.png" alt="NLnet foundation logo" width="20%" />](https://nlnet.nl)
[<img src="https://nlnet.nl/image/logos/NGI0_tag.svg" alt="NGI Zero Logo" width="20%" />](https://nlnet.nl/entrust)
## Inspired by
* [mimetype hooks](https://forgejo.isvery.ninja/xrsh/xrsh-buildroot/src/branch/main/buildroot-v86/board/v86/rootfs_overlay/root/hook.d/mimetype): [Future of Text's](https://github.com/TheElectronicLiteratureLab/spasca-fsbased-interrop-companion/)
* [xterm](https://invisible-island.net/xterm/)
* [xr-terminal](https://github.com/RangerMauve/xr-terminal) of Mauve (an amazingly talented dev)
* [Fabien Beneout's PIM](https://fabien.benetou.fr/) (the WIKI containing all secrets & ideas in life)