Usva is a feature-rich file cloud with a modern REST API. Privacy, accessibility and efficiency will always come first, thus usva is built to be highly reliable and easy to set up for anybody.
If you have any questions or comments about usva's security practices, you can open an issue.
- TLS support
- Ability to set certain limits to file upload (for example: maximum file size, maximum file size for encrypted files)
- Easy, straightforward and documented setup
- Source code is always free to download.
- Option for disabling all request logging to enhance privacy on client
- Ratelimits
- Dockerized environment
- Files can be locked with a password
- Files can be encrypted
- Endpoint for viewing file's information, such as
- View count
- Size
- Encryption status
- Date uploaded
- Downloading a file
Installation is done in 3 steps: downloading source, installing dependencies and compiling it.
Docker setup is recommended because it's easy, straightforward and Docker makes sure Usva cannot elevate it's privileges to the host system if an unknown vulnerability is exploited!
% git clone https://github.com/romeq/usva && cd usva
% cp config-example.toml config.toml
% $EDITOR config.toml
% make run-docker- IMPORTANT
database.hostmust be equal to"db", which is the database's container name indocker-compose.yml server.addresshas to be0.0.0.0so that the server can be accessed from outside- if
SVPORTenvironment variable is set,server.porthas to be equal to it database.porthas to be 5432 or same asDB_PORTdatabase.userhas to be same asDB_USERNAMEdatabase.passwordhas to be same asDB_PASSWORDdatabase.databasehas to be same asDB_NAME
git clone https://github.com/romeq/usva && cd usva
# setup database user
# this step expects that you use "postgres" as the administrator user, if your system diverges from that just specify your system's one
export DB_HOST="127.0.0.1"
export DB_PORT=5432
export DB_OWNER=usva
createuser $DB_OWNER -PU postgres
# create database
DB_USERNAME=postgres \
DB_PASSWORD=postgres \
DB_OWNER=$DB_OWNER \
make db-create
# configure server
cp config-example.toml config.toml
$EDITOR config.toml
# replace "dbownerpassword" with password you provided earlier on the createuser part
DB_USERNAME=$DB_OWNER \
DB_PASSWORD=dbownerpassword \
make migrateup setup build runDocker image uses config.toml for the server's configuration. By default this file is shared between the host and the container for easy reconfiguration.
Full configuration can be found in config-example.toml, and we suggest for you to use a modified copy of that file as server's configuration.
Most up-to-date API specification can be found in APISPEC.md