.. | ||
debian | ||
docs | ||
src | ||
static | ||
templates | ||
.gitignore | ||
.travis.yml | ||
Cargo.toml | ||
README.md | ||
Rocket.toml |
peach-web
Web Interface for PeachCloud
peach-web provides a web interface for the PeachCloud device.
Initial development is focused on administration of the device itself, beginning with networking functionality, with SSB-related administration to be integrated at a later stage.
The peach-web stack currently consists of Rocket (Rust web framework), Tera (Rust template engine), HTML and CSS.
Note: This is a work-in-progress.
Setup
Clone the peach-workspace
repo:
git clone https://git.coopcloud.tech/PeachCloud/peach-workspace
Move into the repo and compile:
cd peach-workspace/peach-web
cargo build --release
Run the tests:
cargo test
Move back to the peach-workspace
directory:
cd ..
Run the binary:
./target/release/peach-web
Note: Networking functionality requires peach-network microservice to be running.
Environment
Deployment Mode
The web application deployment mode is configured with the ROCKET_ENV
environment variable:
export ROCKET_ENV=stage
Other deployment modes are dev
and prod
. Read the Rocket Environment Configurations docs for further information.
Authentication
Authentication is disabled in development
mode and enabled by default when running the application in production
mode. It can be disabled by setting the ROCKET_DISABLE_AUTH
environment variable to true
:
export ROCKET_DISABLE_AUTH=true
Logging
Logging is made available with env_logger
:
export RUST_LOG=info
Other logging levels include debug
, warn
and error
.
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 can be used to achieve this.
Install cargo-deb
:
cargo install cargo-deb
Move into the repo:
cd peach-web
Build the package:
cargo deb
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 apt-get remove
):
sudo apt-get purge peach-web
Design
peach-web
is built on the Rocket webserver and Tera templating engine. It presents a web interface for interacting with the device. HTML is rendered server-side. Request handlers call peach-
libraries and serve HTML and assets. Each Tera template is passed a context object. In the case of Rust, this object is a struct
and must implement Serialize
. The fields of the context object are available in the context of the template to be rendered.
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.
Licensing
AGPL-3.0