A self-hosted cloud storage solution.
5.5K
Self-hosted cloud storage built with Rust and React.
Single-binary delivery, Alpine container support, storage policies, WebDAV, sharing, version history, trash, thumbnails, and four upload modes.
rust-embeddirect, chunked, presigned, and presigned_multipart, negotiated by policy and file sizegit clone https://github.com/AptS-1547/AsterDrive.git
cd AsterDrive
cd frontend-panel
bun install
bun run build
cd ..
cargo run
On first startup, AsterDrive will automatically:
data/config.toml under the current working directory if it does not existsystem_configDefault address:
http://127.0.0.1:3000
The first registered user becomes admin.
Do not expose :3000 directly to the public Internet in production. Put AsterDrive behind a reverse proxy and let the proxy handle HTTPS, page-level Content-Security-Policy and related security headers, upload limits, and WebDAV / WOPI passthrough. Do not replace the whole site's CSP with sandbox; script-capable inline file responses are sandboxed separately by the app.
# Build image
docker build -t asterdrive .
# Run container
docker run -d \
--name asterdrive \
-p 3000:3000 \
-e ASTER__SERVER__HOST=0.0.0.0 \
-e "ASTER__DATABASE__URL=sqlite:///data/asterdrive.db?mode=rwc" \
-v asterdrive-data:/data \
asterdrive
# Or use Compose
docker compose up -d
The current container image is an Alpine runtime image that runs as a non-root user and includes a /health/ready health check. The recommended persistent volume is /data.
Default SQLite search acceleration now depends on FTS5 + trigram tokenizer support. After deployment, run ./aster_drive doctor at least once and make sure the SQLite search acceleration check reports ok.
See docker-compose.yml and docs/deployment/docker.md for a complete deployment example.
If you need offline deployment checks, runtime-config changes from the command line, or cross-database migration from SQLite to PostgreSQL / MySQL, start with docs/deployment/ops-cli.md.
relative_path auto-folder creationrelay_stream and presigned/s/:token/health, /health/ready, optional /health/memory (debug_assertions + openapi), /health/metrics (metrics feature)system_configopenapi feature, plus static OpenAPI export via cargo test --features openapi --test generate_openapi1.91.1+24+ for the current Docker frontend build stage# Backend
cargo run
cargo check
cargo test
cargo test --features openapi --test generate_openapi
# Frontend
cd frontend-panel
bun install
bun run dev
bun run build
bun run check
tsgo, not tscbiome, not ESLintenum is not allowed; use as const objectsimport typeStatic configuration is loaded with this priority:
Environment variables > data/config.toml > built-in defaults
Examples:
ASTER__SERVER__HOST=0.0.0.0
ASTER__SERVER__PORT=3000
ASTER__DATABASE__URL="postgres://aster:[email protected]:5432/asterdrive"
ASTER__WEBDAV__PREFIX="/webdav"
Runtime configuration is stored in the database and can be updated from the admin API / admin panel.
src/ Rust backend
migration/ Sea-ORM migrations
frontend-panel/ React admin/file panel
docs/ Deployment and end-user documentation
developer-docs/ API and architecture docs for contributors
tests/ Integration tests
MIT - Copyright (c) 2026 AptS-1547
Content type
Image
Digest
sha256:bbac77ea8…
Size
249 Bytes
Last updated
1 day ago
docker pull e1saps/asterdrive:sha256-03329f7764291b917039508c6b366dc1a78b06442067f9e3582645ac77d7fb66.sig