storage/README.md
2025-04-21 11:42:32 -05:00

2.3 KiB

storage-app

(needs a better name)

Overview

This project takes heavily inspiration from Seafile in its functionality and UI design. File hosting service with performance, ease of use, and being lightweight.

Notice: Project is under heavy active development

Key features include:

  • Web UI for managing files, with minimal/no client-side javascript
  • Multiple storage backends supported (local filesystem, S3, etc)
  • Multiple libraries per user, each with configurable storage backends
  • WebDAV (soon)

screenshot of files screen The current files list when logged in

Getting Started

Prerequisites

  • Rust 1.86+ (stable) and Cargo
  • PostgreSQL 13+ database
  • 512MB RAM minimum

Installing

# Clone the repository
git clone https://github.com/jackzmc/storage.git
cd storage

# Copy the sample config
cp config.sample.toml config.toml
# Edit the config.toml or provide the equivalant settings with env
# ex: [auth.oidc]  ---> STORAGE_auth.oidc.issuer__url
#     issuer-url
# Configure your database (requires to be set by env for now)
echo "DATABASE_URL=postgres://username:password@localhost" > .env

# Build the project
cargo build --release

# Run database migrations
#cargo run --bin migrate --features migrations

# Run the server
cargo run --release

Roadmap

Rough roadmap in a rough order of priority

  • WebDAV Support
  • Email support (for password resets, user invites)
    • Email sender utility
    • Individual email actions
  • SSO Support (openid)
    • Basic implementation
    • User mapping
    • User creation
    • User logout
  • Normal user registration (email/username+pass)
  • S3 backend support
  • Administration panel
    • Add storage backends
    • Manage users
    • Change app settings

Documentation

Todo, will be available at https://git.jackz.me/jackz/storage/wiki

Development

The server is written in Rust, using the Rocket framework and handlebars for HTML templating. The frontend is just HTML and CSS, using the Bulma CSS framework. As little javascript as possible should be done for frontend work.

Contributions are welcome

License

Available under the AGPL-3.0 license. LICENSE