A modern, S3-compatible document storage and management system built with Rust
Overview • Components • Features • Getting Started • Deployment • OCI Support • Contributing • License
RustDok is a comprehensive document storage and management system that provides an S3-compatible API for storing, retrieving, and managing documents. Built with Rust for the backend and Next.js for the frontend, RustDok offers a modern, secure, and efficient solution for document management.
The project is designed to be deployed in Kubernetes environments and includes a Helm chart for easy deployment. It can use any S3-compatible storage backend, with primary testing done on Rook Ceph.
RustDok consists of three main components, each with its own repository:
The backend server component built with Rust. It provides a RESTful API for managing buckets and objects in an S3-compatible storage backend.
Key Technologies:
- Rust
- Actix Web
- AWS SDK for Rust
- Tokio
The frontend web interface built with Next.js. It provides a user-friendly interface for interacting with the RustDok server.
Key Technologies:
- Next.js 15
- Material UI 6
- Tailwind CSS 4
- React Hooks
The Kubernetes Helm chart for deploying RustDok in a Kubernetes environment. It includes comprehensive configuration options for both the server and WebUI components.
- S3 Compatibility: Works with S3-compatible storage backends
- Bucket Management: Create, list, and delete buckets
- Object Operations: Upload, download, view, list, and delete objects
- Folder Support: Create and navigate folder-like structures
- Modern API: RESTful API with JSON responses
- CORS Support: Built-in CORS configuration for web applications
- Health Checks: Built-in health check endpoints for container orchestration
- Bucket Management: Create, list, and delete buckets through a user-friendly interface
- Object Operations: Upload, download, view, list, and delete objects
- Folder Navigation: Browse through folder-like structures
- Objects Preview: Built-in viewer for PDF, images, and other file types
- Responsive Design: Works on desktop and mobile devices
- Modern UI: Built with Material UI and Tailwind CSS
- Kubernetes Support: Designed for deployment in Kubernetes environments
- Helm Chart: Comprehensive Helm chart with detailed configuration options
- Docker Support: Multi-architecture Docker images (AMD64/ARM64)
- Proxy Architecture: Server-side proxy architecture for secure communication
- Kubernetes 1.19+
- Helm 3.2.0+ (Helm 3.8.0+ for OCI registry support)
- An S3-compatible storage service (primarily tested with Rook Ceph)
-
Add the RustDok Helm repository:
helm repo add rustdok https://stathis-ditc.github.io/rustdok-helm-chart helm repo update
Alternatively, you can use the OCI-compliant Helm chart:
# For Helm version 3.8.0 or later helm install rustdok oci://ghcr.io/devs-in-the-cloud/charts/rustdok --version VERSION
-
Create a values file (
my-values.yaml
) with your S3 configuration:server: storage: s3: endpointUrl: "https://your-s3-endpoint.com" region: "eu-central-1" accessKey: "your-access-key" secretKey: "your-secret-key"
-
Install the chart:
helm install rustdok rustdok/rustdok -f my-values.yaml
-
Access the WebUI:
kubectl port-forward svc/rustdok-webui 3000:3000
Then open your browser and navigate to
http://localhost:3000
.
helm install rustdok rustdok/rustdok \
--set server.storage.s3.endpointUrl=https://s3.example.com \
--set server.storage.s3.region=eu-central-1 \
--set server.storage.s3.accessKey=myaccesskey \
--set server.storage.s3.secretKey=mysecretkey
helm install rustdok rustdok/rustdok \
--set server.storage.rookCeph.enabled=true \
--set server.storage.rookCeph.s3.objectStoreUser.secretName=ceph-objectstore-user-secret
helm install rustdok rustdok/rustdok --set webui.enabled=false
RustDok provides full OCI (Open Container Initiative) support for both container images and Helm charts.
The RustDok images are published as OCI-compliant artifacts to the GitHub Container Registry:
# Pull the server image
docker pull ghcr.io/devs-in-the-cloud/rustdok-server:latest
# Pull the webui image
docker pull ghcr.io/devs-in-the-cloud/rustdok-webui:latest
These images include OCI-specific annotations and are built with OCI media types for better compatibility with OCI-compliant container registries.
Each component has its own detailed documentation:
The Helm chart's values.yaml
file includes comprehensive descriptions for all configuration parameters, making it easier to understand and configure your deployment.
NO WARRANTY: RustDok is provided "as is" without warranty of any kind, express or implied. The authors and contributors make no representations or warranties of any kind concerning the software, express or implied, including, without limitation, warranties of merchantability, fitness for a particular purpose, or non-infringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
Use at your own risk.
Contributions are welcome! Please feel free to submit a Pull Request to any of the component repositories.