Current state is beta. It has most of the functionality in place. You should expect bugs and breaking changes (requiring rebuilding the DB) until this leaves beta.
- Accounts with permission system
- Upload files
- List files
- Delete files
- Manage accounts
- Upload files
- Optional password lock
- Optional expiery date
- Works fine without JavaScript enabled, progressively enhanced with JS enabled
- Files get uploaded in chunks (requires JavaScript)
- Retries up to 5 times if errors occur
- Current progress indicator
You can view the current progress towards 1.0 full release here
| Homepage | Upload files page |
|
|
| Files list page | Profile page (WIP) |
|
|
In development
cargo runInitialise database (this may change in the future)
cargo install sqlx
sqlx database create
sqlx migrate runCompile typescript
npm i -g typescript # first time only
tsc --watch # compiles on saveCompile for production
tsc
cargo build --production # optimises performanceRun in production
./target/release/filesharingAlternatively you can use Docker. To set that up, create a compose.yaml file in the parent directory of this project with this content:
version: '3.9'
services:
filehost:
container_name: fileshare
build: ./Fileshare
restart: unless-stopped
env_file:
- .env
volumes:
- ./Fileshare/files:/usr/src/fileshare/files
- ./Fileshare/db:/usr/src/fileshare/db
- ./Fileshare/assets:/usr/src/fileshare/assets
- ./Fileshare/target/release:/usr/src/fileshare/release
user: 1000:1000
ports:
- '3000:3000' # remove this if you're using Caddy/NginxPut the .env file next to the .compose.yaml file and run
# Prepare the binary
cd Fileshare
cargo build --release
tsc # assumes you've already installed typescript globally with npm
cd ..
# Build and run the docker container
docker compose build
docker compose upThe code is licensed under the AGPLv3 license. The icons in the assets folder are all public domain icons, some of which I've modified. All icons should be treated as being public domain.



