||4 months ago|
|src||4 months ago|
|Cargo.toml||5 months ago|
Web Interface for PeachCloud
peach-web provides a web interface for the PeachCloud device.
The web interface is primarily designed as a means of managing a Scuttlebutt pub. As such, it exposes the following features:
- Create a Scuttlebutt profile
- Follow, unfollow, block and unblock peers
- Generate pub invite codes
- Configure the sbot (hops, log directory, LAN discovery etc.)
- Send private messages
- Stop, start and restart the sbot
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 (Rust web framework), Maud (Rust template engine), HTML, CSS and a tiny bit of JS. Scuttlebutt functionality is provided by golgi.
Note: This is a work-in-progress.
git clone https://git.coopcloud.tech/PeachCloud/peach-workspace
Move into the repo and compile:
cargo build --release
Run the binary:
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 for installation details). The
GO_SBOT_DATADIR environment variable or corresponding config variable must be set to
/home/<user>/.ssb-go and the
PEACH_HOMEDIR variable must be set to
/home/<user>. See the Configuration section below for more details.
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
[Unit] Description=GoSSB server. [Service] ExecStart=/usr/bin/go-sbot Environment="LIBRARIAN_WRITEALL=0" Restart=always [Install] WantedBy=multi-user.target
sudoers rule must be created to allow the
go-sbot.service state to be modified without requiring a password. Here is an example
# Control go-sbot service without sudo passworkd <user> 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
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
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 is enabled by default when running the application. It can be disabled by setting the
DISABLE_AUTH environment variable to
Logging is made available with
Other logging levels include
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.
systemd service file and Debian maintainer scripts are included in the
debian directory, allowing
peach-web to be easily bundled as a Debian package (
cargo-deb crate can be used to achieve this.
cargo install cargo-deb
Move into the repo:
Build the package:
The output will be written to
target/debian/peach-web_0.3.0_arm64.deb (or similar).
Install the package as follows:
sudo dpkg -i target/debian/peach-web_0.3.0_arm64.deb
The service will be automatically enabled and started.
Uninstall the service:
sudo apt-get remove peach-web
Remove configuration files (not removed with
sudo apt-get purge peach-web
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.