Furumi-ng

Remote filesystem over gRPC. Mount a directory from a remote server as a local folder via FUSE.

Designed for streaming media (video, music) over the network.

Architecture

furumi-server (gRPC)  ←→  furumi-client-core (library)  ←→  furumi-mount-linux (FUSE)
  • furumi-server — exposes a directory over gRPC with optional Bearer token auth and Prometheus metrics
  • furumi-client-core — cross-platform gRPC client library with attribute caching
  • furumi-mount-linux — mounts the remote directory locally via FUSE (read-only)

Quick Start

# Build
cargo build --release --workspace

# Server
./target/release/furumi-server \
  --root /path/to/media \
  --bind 0.0.0.0:50051 \
  --token mysecrettoken

# Client (on another machine)
mkdir -p /mnt/remote
./target/release/furumi-mount-linux \
  --server http://server-ip:50051 \
  --token mysecrettoken \
  --mount /mnt/remote

# Use it
ls /mnt/remote
mpv /mnt/remote/video.mkv

Configuration

All options can be set via CLI flags or environment variables.

Server

Flag Env Default Description
--bind FURUMI_BIND [::1]:50051 gRPC listen address
--root FURUMI_ROOT . Directory to expose
--token FURUMI_TOKEN (empty, auth off) Bearer token
--metrics-bind FURUMI_METRICS_BIND 0.0.0.0:9090 Prometheus metrics endpoint

Client

Flag Env Default Description
--server FURUMI_SERVER http://[::1]:50051 Server address
--token FURUMI_TOKEN (empty) Bearer token
--mount FURUMI_MOUNT Mount point directory

Requirements

  • Linux with libfuse3-dev (for client)
  • Rust 2024 edition

License

MIT

Description
No description provided
Readme 1.3 MiB
Languages
Rust 58.6%
HTML 30.1%
TypeScript 8.1%
CSS 2.7%
Dockerfile 0.2%
Other 0.3%