OpenCloud is a fork of opencloud-eu/opencloud, a cloud-native content collaboration platform.
OpenCloud provides a modern, scalable platform for file sync and share, built on top of open standards and protocols.
- Go 1.21 or later
- Docker (for containerized development)
buf(for protobuf generation)bingo(for Go tool management)
This project uses bingo to manage Go-based development tools.
# Install bingo
go install github.com/bwplotka/bingo@latest
# Install all project tools
bingo getmake buildmake test# Useful for quick iteration during development
make build && ./bin/opencloud servermake generateopencloud/
βββ .bingo/ # Go tool version management
βββ Makefile # Build and development targets
βββ README.md # This file
- Fork the repository
- Create a feature branch (
git checkout -b feat/my-feature) - Commit your changes following Conventional Commits
- Push to your branch and open a Pull Request
This project uses automated backporting via .backportrc.json. To backport a merged PR, add the appropriate backport/<branch> label.
This is my personal fork used for learning and experimentation. Changes here are not intended for upstream. See the original repo for the canonical source.
Dev tip: I run the local server with
OPENCLOUD_LOG_LEVEL=debugset in my environment to get verbose output while experimenting.Dev tip: When iterating on storage changes, I also set
OPENCLOUD_STORAGE_HOME_DRIVER=ocisexplicitly to avoid surprises from environment defaults on my machine.Dev tip: I keep a local
.envrc(via direnv) in the repo root with all the above vars so I don't have to set them manually each session. Add.envrcto your global gitignore to avoid accidentally committing it.Dev tip: Running
make testcan be slow on the full suite. Usego test ./path/to/package/...to target just the package you're working on for faster feedback loops.Dev tip: If the local server port conflicts with something else on my machine, set
OPENCLOUD_HTTP_ADDR=0.0.0.0:9200(or another free port) to override the default.Dev tip: To wipe local state and start fresh (useful after storage driver experiments), remove the
~/.openclouddata directory:rm -rf ~/.opencloud. Don't do this on anything you care about keeping.Dev tip: When debugging HTTP requests,
OPENCLOUD_LOG_PRETTY=truemakes the JSON log output human-readable in the terminal β much easier to read than minified JSON. Pair it withOPENCLOUD_LOG_LEVEL=debugfor maximum verbosity.Dev tip: For a quick sanity check that the server is up,
curl -s http://localhost:9200/statusreturns a JSON health response without needing auth.