diff --git a/peach-web/README.md b/peach-web/README.md index 860b124..df23000 100644 --- a/peach-web/README.md +++ b/peach-web/README.md @@ -1,6 +1,6 @@ # peach-web -![Generic badge](https://img.shields.io/badge/version-0.6.0-.svg) +![Generic badge](https://img.shields.io/badge/version-0.6.18-.svg) ## Web Interface for PeachCloud @@ -17,7 +17,7 @@ The web interface is primarily designed as a means of managing a Scuttlebutt pub Additional features are focused on administration of the device itself. This includes networking functionality and device statistics. -The peach-web stack currently consists of [Rouille](https://crates.io/crates/rouille) (Rust web framework), [Maud](https://maud.lambda.xyz/) (Rust template engine), HTML and CSS. Scuttlebutt functionality is provided by [golgi](http://golgi.mycelial.technology). +The peach-web stack currently consists of [Rouille](https://crates.io/crates/rouille) (Rust web framework), [Maud](https://maud.lambda.xyz/) (Rust template engine), HTML, CSS and a tiny bit of JS. Scuttlebutt functionality is provided by [golgi](http://golgi.mycelial.technology). _Note: This is a work-in-progress._ @@ -36,11 +36,46 @@ Run the binary: `../target/release/peach-web` -## Environment +## Development Setup + +In order to test `peach-web` on a development machine you will need to have a running instance of `go-sbot` (please see the [go-sbot README](https://github.com/cryptoscope/ssb) for installation details). The `GO_SBOT_DATADIR` environment variable or corresponding config variable must be set to `/home//.ssb-go` and the `PEACH_HOMEDIR` variable must be set to `/home/`. See the Configuration section below for more details. + +The `go-sbot` process must be managed by `systemd` in order for it to be controlled via the `peach-web` web interface. Here is a basic `go-sbot.service` file: + +``` +[Unit] +Description=GoSSB server. + +[Service] +ExecStart=/usr/bin/go-sbot +Environment="LIBRARIAN_WRITEALL=0" +Restart=always + +[Install] +WantedBy=multi-user.target +``` + +And a `sudoers` rule must be created to allow the `go-sbot.service` state to be modified without requiring a password. Here is an example `/etc/sudoers.d/peach-web` file: + +``` +# Control go-sbot service without sudo passworkd + + ALL=(ALL) NOPASSWD: /bin/systemctl start go-sbot.service, /bin/systemctl restart go-sbot.service, /bin/systemctl stop go-sbot.service, /bin/systemctl enable go-sbot.service, /bin/systemctl disable go-sbot.service +``` + +## Configuration + +By default, configuration variables are stored in `/var/lib/peachcloud/config.yml`. The variables in the file are updated by `peach-web` when changes are made to configurations via the web interface. Since `peach-web` has no database, all configurations are stored in this file. + +A non-default configuration directory can be defined via the `PEACH_CONFIGDIR` environment variable or corresponding key in the `config.yml` file. ### Configuration Mode -The web application can be run with a minimal set of routes and functionality (PeachPub - a simple sbot manager) or with the full-suite of capabilities, including network management and access to device statistics (PeachCloud). The mode is enabled by default (as defined in `Rocket.toml`) but can be overwritten using the `STANDALONE_MODE` environment variable: `true` or `false`. If the variable is unset or the value is incorrectly set, the application defaults to standalone mode. +The web application can be run with a minimal set of routes and functionality (PeachPub - a simple sbot manager) or with the full-suite of capabilities, including network management and access to device statistics (PeachCloud). + +The application runs in PeachPub mode by default. The complete PeachCloud mode will be available once a large refactor is complete; it is not currently in working order so it's best to stick with PeachPub for now. + +The running mode can be defined by setting the `STANDALONE_MODE` environment variable (`true` for PeachPub or `false` for PeachCloud). Alternatively, the desired mode can be set by modifying the PeachCloud configuration file. ### Authentication @@ -56,6 +91,14 @@ Logging is made available with `env_logger`: Other logging levels include `debug`, `warn` and `error`. +### Dynamic DNS Configuration + +Most users will want to use the default PeachCloud dynamic dns server. +If the config dyn_use_custom_server=false, then default values will be used. +If the config dyn_use_custom_server=true, then a value must also be set for dyn_dns_server_address (e.g. "http://peachdynserver.commoninternet.net"). +This value is the URL of the instance of peach-dyndns-server that requests will be sent to for domain registration. +Using a custom value can here can be useful for testing. + ## Debian Packaging A `systemd` service file and Debian maintainer scripts are included in the `debian` directory, allowing `peach-web` to be easily bundled as a Debian package (`.deb`). The `cargo-deb` [crate](https://crates.io/crates/cargo-deb) can be used to achieve this. @@ -88,20 +131,6 @@ Remove configuration files (not removed with `apt-get remove`): `sudo apt-get purge peach-web` -## Configuration - -Configuration variables are stored in /var/lib/peachcloud/config.yml. -Peach-web also updates this file when changes are made to configurations via -the web interface. peach-web has no database, so all configurations are stored in this file. - -### Dynamic DNS Configuration - -Most users will want to use the default PeachCloud dynamic dns server. -If the config dyn_use_custom_server=false, then default values will be used. -If the config dyn_use_custom_server=true, then a value must also be set for dyn_dns_server_address (e.g. "http://peachdynserver.commoninternet.net"). -This value is the URL of the instance of peach-dyndns-server that requests will be sent to for domain registration. -Using a custom value can here can be useful for testing. - ## Design `peach-web` has been designed with simplicity and resource minimalism in mind. Both the dependencies used by the project, as well as the code itself, reflect these design priorities. The Rouille micro-web-framework and Maud templating engine have been used to present a web interface for interacting with the device. HTML is rendered server-side and request handlers call `peach-` libraries and serve HTML and assets. The optimised binary for `peach-web` can be compiled on a RPi 3 B+ in approximately 30 minutes.