No description
  • Rust 60%
  • HTML 27.1%
  • JavaScript 12.9%
Find a file
malled 0dad52b22d
All checks were successful
CI - Rust Check and Test / check-and-test (push) Successful in 4m8s
Build and Release for Raspberry Pi / build (push) Successful in 10m51s
use rust-cross docker image
2026-05-15 19:07:38 +02:00
.cargo switch form glibc to musl 2026-05-15 17:52:56 +02:00
.forgejo/workflows use rust-cross docker image 2026-05-15 19:07:38 +02:00
dev-config/mosquitto Add mosquitto.conf 2026-02-17 22:48:27 +01:00
src remove rocket_dyn_templates 2026-05-11 18:36:00 +02:00
static remove rocket_dyn_templates 2026-05-11 18:36:00 +02:00
.gitignore Add project readme (AI generated) and adjust the toml example 2026-02-11 01:27:09 +01:00
Cargo.toml switch form glibc to musl 2026-05-15 17:52:56 +02:00
compose.yml Add README and compose file 2026-02-11 01:44:37 +01:00
einstellungen.toml.example Build CSP dynamically 2026-03-01 16:11:49 +00:00
flipdoor.service always restart systemd unit 2026-03-01 15:16:15 +01:00
README.md switch form glibc to musl 2026-05-15 17:52:56 +02:00

Flipdoor

A door control system with Web and SSH interfaces.

Setup for Local Development

To run the project locally, you need a few configuration files and dependencies.

1. Configuration File

Copy the example configuration and fill in the required values:

cp einstellungen.toml.example einstellungen.toml

Specifically, ensure web.secret_key is a 64-character hex string. You can generate one using:

openssl rand -hex 32

2. SSH Key

The SSH server component requires a private key file named key in the root directory:

ssh-keygen -t ed25519 -f key -N ""

3. External Dependencies

  • MQTT Broker: By default, the app tries to connect to an MQTT broker at localhost:1883. The application will currently panic if the broker is not reachable.
    • Inspect mqtt messages with: mosquitto_sub -t '#' -v
  • OIDC Provider: The web interface expects a working OIDC provider for authentication.

4. Running the Application

Once the configuration is set up, you can run the application with:

RUST_LOG=flipdoor_rs=info cargo run

For Raspberry Pi with I2C support:

cargo run --features pi

ARMv7 musl build

With Podman/Docker:

podman run --rm -v "$PWD":/home/rust/src ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf cargo build --release --target armv7-unknown-linux-musleabihf --features pi

This creates:

target/armv7-unknown-linux-musleabihf/release/flipdoor-rs

Project Structure

  • src/: Rust source code.
  • static/: Static assets for the web interface.
  • templates/: HTML templates (Tera).