linux-conf-au-2019-epaper-badge icon indicating copy to clipboard operation
linux-conf-au-2019-epaper-badge copied to clipboard

My IoT badge for lca2019

linux.conf.au 2019 ePaper Badge

Building

To cross-compile for the Raspberry Pi you will need an arm-unknown-linux-gnueabihf GCC toolchain and Rust component installed. On Arch Linux I built arm-linux-gnueabihf-gcc from the AUR. Add the Rust target with rustup target add arm-unknown-linux-gnueabihf. Then you can cross-compile with cargo:

cargo build --release --target arm-unknown-linux-gnueabihf

After it is built copy target/arm-unknown-linux-gnueabihf/release/lca2019 to the Raspberry Pi.

Running

View the options with ./lca2019 -h. By default it will try to bind the webserver to port 80. You can give a regular user the permission to do this with:

sudo setcap cap_net_bind_service=ep lca2019

Alternatively use -p to set the port to a non-privileged one.

Systemd Service

Copy lca2019.service to /etc/systemd/system/.

sudo systemctl daemon-reload
sudo setcap cap_net_bind_service=ep lca2019
sudo systemctl enable --now lca2019

Development

Auto-reloading server

To run the server during development and have it rebuild and restart when source files are changed I use watchexec:

watchexec -w src -w templates -s SIGINT -r 'cargo run -- -n -p 8080'

License

This project is dual licenced under:

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)