A simpler alternative to Nextcloud and ownCloud, built with TypeScript and Deno using Fresh. 🦕 🍋 https://bewcloud.com/
Find a file
2025-12-29 11:12:36 +00:00
.github Update all dependencies 2025-09-27 19:39:09 +01:00
.vscode Make it public! 2024-03-16 08:40:24 +00:00
components Remove all uses of Google Services (#133) 2025-12-15 14:29:16 +00:00
crons Update all dependencies 2025-09-27 19:39:09 +01:00
db-migrations Public File Sharing (#72) 2025-06-20 12:04:16 +01:00
islands Support downloading directories as a zip archive (#106) 2025-10-08 14:32:45 +01:00
lib Fix minor errors and update default install version 2025-12-20 12:01:16 +00:00
radicale-config Add CardDav and CalDav servers (#80) 2025-07-20 10:35:32 +01:00
routes Migrate from sharp to jimp 2025-12-12 16:03:16 +00:00
static Support downloading directories as a zip archive (#106) 2025-10-08 14:32:45 +01:00
.dockerignore Implement a more robust Config (#60) 2025-05-25 15:48:53 +01:00
.dvmrc Update Deno version 2025-11-08 10:59:55 +00:00
.env.sample Expose new tlsMode and tlsVerify options for connecting to the mail submission agent (#134) 2025-12-20 11:50:15 +00:00
.gitignore Add CardDav and CalDav servers (#80) 2025-07-20 10:35:32 +01:00
bewcloud.config.sample.ts Expose new tlsMode and tlsVerify options for connecting to the mail submission agent (#134) 2025-12-20 11:50:15 +00:00
deno.json Declare deno task run-with-perms task specifying all the permissions actually needed and alias all other tasks through that (#136) 2025-12-29 11:07:42 +00:00
deno.lock Migrate from sharp to jimp 2025-12-12 16:03:16 +00:00
dev.ts Update all dependencies 2025-09-27 19:39:09 +01:00
docker-compose.dev.yml Improve App Selection 2025-12-01 12:25:21 +00:00
docker-compose.yml Update default release in docker 2025-12-29 11:12:36 +00:00
Dockerfile Declare deno task run-with-perms task specifying all the permissions actually needed and alias all other tasks through that (#136) 2025-12-29 11:07:42 +00:00
FAQ.md Misc fixes for file shares 2025-12-08 09:17:42 +00:00
fresh.config.ts Implement a more robust Config (#60) 2025-05-25 15:48:53 +01:00
fresh.gen.ts Support downloading directories as a zip archive (#106) 2025-10-08 14:32:45 +01:00
LICENSE Make it public! 2024-03-16 08:40:24 +00:00
main.ts Update all dependencies 2025-09-27 19:39:09 +01:00
main_test.ts Update all dependencies 2025-09-27 19:39:09 +01:00
Makefile Declare deno task run-with-perms task specifying all the permissions actually needed and alias all other tasks through that (#136) 2025-12-29 11:07:42 +00:00
migrate-db.ts Update all dependencies 2025-09-27 19:39:09 +01:00
README.md Declare deno task run-with-perms task specifying all the permissions actually needed and alias all other tasks through that (#136) 2025-12-29 11:07:42 +00:00
tailwind.config.ts Make it public! 2024-03-16 08:40:24 +00:00

bewCloud

This is the bewCloud app built using Fresh and deployed using docker compose.

If you're looking for the desktop sync app, it's at bewcloud-desktop.

If you're looking for the mobile app, it's at bewcloud-mobile.

Self-host it!

Buy managed cloud (1 year)

Buy managed cloud (1 month)

Or, to run on your own machine, start with these commands:

mkdir data-files data-radicale radicale-config # local directories for storing user-uploaded files, radicale data, and radicale config (these last two are necessary only if you're using CalDav/CardDav/Contacts)

Now, download/copy the following configuration files (and tweak their contents as necessary, though no changes should yield a working — but very unsafe — setup):

Finally, run these commands:

docker compose up -d # makes the app available at http://localhost:8000
docker compose run --rm website bash -c "cd /app && make migrate-db" # initializes/updates the database (only needs to be executed the first time and on any data updates)

Note

If you run into permission issues, you can try running sudo chown -R 1993:1993 data-files to fix them.

1993:1993 above comes from deno's docker image where 1993 is the default user id in it. It might change in the future since I don't control it.

If you're interested in building/contributing (or just running the app locally), check the Development section below.

See the Community Links section for alternative ways of running bewCloud yourself.

Important

Even with signups disabled (config.auth.allowSignups=false), the first signup will work and become an admin.

Sponsors

These are the amazing entities or individuals who are sponsoring this project for this current month. If you'd like to show up here, check the GitHub Sponsors page or make a donation above $50 ($100 to show up on the website)!

NLnet Foundation

Development

Requirements

Important

Don't forget to set up your .env file based on .env.sample. Don't forget to set up your bewcloud.config.ts file based on bewcloud.config.sample.ts.

  • This was tested with Deno's version stated in the .dvmrc file, though other versions may work.
  • For the postgres dependency (used when running locally or in CI), you should have Docker and docker compose installed.

Commands

docker compose -f docker-compose.dev.yml up # (optional) runs docker with postgres, locally
make migrate-db # runs any missing database migrations
make start # runs the app in development mode (watches for file changes and recompiles the app)
make format # (optional) formats the code (if you're interested in contributing)
make test # (optional) runs tests (if you're interested in contributing)

Other less-used commands (mostly for development)

make preview # runs the app in production mode (serves the app from the built files)
make exec-db # runs psql inside the postgres container, useful for running direct development queries like `DROP DATABASE "bewcloud"; CREATE DATABASE "bewcloud";`
make build # generates all static files for production deploy

File/Directory Structure

  • Routes are defined at routes/.
  • Static files are defined at static/.
  • Frontend-only components are defined at components/.
  • Isomorphic components are defined at islands/.
  • Cron jobs are defined at crons/.
  • Reusable bits of code are defined at lib/.
  • Database migrations are defined at db-migrations/.

Deployment

Just push to the main branch.

FAQ (Frequently Asked Questions)

Check the FAQ for answers to common questions, like private calendar and file sharing, or .env-based configuration.

How does it look?

Check the website for screenshots or the YouTube channel for 1-minute demos.

These are not officially endorsed, but are alternative ways of running bewCloud.

  • bewcloud-nixos by @ntninja exposes bewCloud as a NixOS integration as an alternative to using Docker or running the app locally.
    • For installation and known limitations, please see its README.