Top Related Projects
:cloud: ownCloud web server core (Files, DAV, etc.)
Future-proof content collaboration platform
Simple, Versatile, Yours
Open Source Continuous File Synchronization
Quick Overview
Nextcloud is an open-source, self-hosted file sharing and collaboration platform. It provides a secure and private alternative to cloud storage services like Dropbox or Google Drive, allowing users to host their own data on their own servers or cloud infrastructure.
Pros
- Self-hosted and privacy-focused: Nextcloud allows users to host their data on their own servers, giving them full control and ownership over their information.
- Extensive feature set: Nextcloud offers a wide range of features, including file storage, document editing, calendar, contacts, and more, making it a comprehensive collaboration platform.
- Active community and development: Nextcloud has a large and active community of contributors, ensuring regular updates, bug fixes, and new feature additions.
- Scalable and customizable: Nextcloud can be scaled to accommodate the needs of individuals, small businesses, and large enterprises, and can be customized to fit specific requirements.
Cons
- Complexity of setup: Nextcloud requires more technical expertise to set up and maintain compared to cloud-based solutions, which may be a barrier for some users.
- Resource requirements: Hosting Nextcloud requires dedicated server infrastructure, which can be more resource-intensive and costly than using a cloud-based service.
- Limited mobile app functionality: While Nextcloud has mobile apps, they may not offer the same level of functionality as the web-based interface.
- Potential vendor lock-in: Users who heavily invest in the Nextcloud ecosystem may face challenges in migrating to other platforms in the future.
Getting Started
To get started with Nextcloud, you can follow these steps:
- Download the latest Nextcloud server package from the official website: https://nextcloud.com/install/
- Set up a web server (e.g., Apache or Nginx) and a database (e.g., MySQL or PostgreSQL) to host Nextcloud.
- Extract the Nextcloud package and copy the files to your web server's document root.
- Run the Nextcloud installer by accessing the Nextcloud URL in your web browser.
- Follow the on-screen instructions to complete the installation process, including setting up an admin account and configuring the database connection.
- Once installed, you can start using Nextcloud to manage your files, collaborate with others, and take advantage of the various built-in apps and features.
For more detailed instructions and documentation, please refer to the Nextcloud installation guide: https://docs.nextcloud.com/server/latest/admin_manual/installation/index.html
Competitor Comparisons
:cloud: ownCloud web server core (Files, DAV, etc.)
Pros of ownCloud
- More enterprise-focused with additional business features
- Longer history and established presence in the market
- Stronger emphasis on compliance and regulatory requirements
Cons of ownCloud
- Slower release cycle and feature updates
- Less active community contribution compared to Nextcloud
- More restrictive licensing model
Code Comparison
ownCloud (from core/lib/private/Files/Node/File.php
):
public function getContent() {
$handle = $this->fopen('r');
$content = stream_get_contents($handle);
fclose($handle);
return $content;
}
Nextcloud (from server/lib/private/Files/Node/File.php
):
public function getContent() {
$content = $this->storage->file_get_contents($this->path);
if ($content === false) {
throw new GenericFileException('Could not get content of file');
}
return $content;
}
Both projects share similar core functionality, but Nextcloud's implementation appears more concise and includes error handling. ownCloud's approach uses file handles directly, while Nextcloud utilizes a storage abstraction layer.
Overall, ownCloud tends to cater more to enterprise needs, while Nextcloud focuses on rapid development and community-driven features. The choice between the two often depends on specific requirements and preferences regarding licensing, support, and feature sets.
Future-proof content collaboration platform
Pros of Cells
- Built with Go, offering better performance and scalability
- Modern, microservices-based architecture
- Advanced enterprise features like data governance and compliance tools
Cons of Cells
- Smaller community and ecosystem compared to Nextcloud
- Less extensive app marketplace and third-party integrations
- Steeper learning curve for administrators due to its architecture
Code Comparison
Cells (Go):
func (s *SharesHandler) PutShare(req *restful.Request, rsp *restful.Response) {
ctx := req.Request.Context()
var share *shares.Share
if err := req.ReadEntity(&share); err != nil {
service.RestError500(req, rsp, err)
return
}
// ... (additional logic)
}
Nextcloud (PHP):
public function createShare(IShare $share) {
$this->validateShare($share);
$this->pathToId($share);
$this->lock($share->getNodeId());
try {
$share = $this->createShareObject($share);
// ... (additional logic)
} finally {
$this->unlock($share->getNodeId());
}
}
Both repositories offer self-hosted file sync and share solutions, but with different approaches. Cells focuses on enterprise features and modern architecture, while Nextcloud provides a more extensive ecosystem and user-friendly experience. The code snippets showcase the language differences (Go vs PHP) and architectural approaches in handling share creation.
Simple, Versatile, Yours
Pros of Cozy Stack
- Written in Go, potentially offering better performance and resource efficiency
- More focused on personal data management and privacy
- Modular architecture allows for easier customization and extension
Cons of Cozy Stack
- Smaller community and ecosystem compared to Nextcloud
- Less mature and fewer features out of the box
- Limited enterprise-focused functionality
Code Comparison
Cozy Stack (Go):
func (i *Instance) Scheme() string {
if i.Dev {
return "http"
}
return "https"
}
Nextcloud Server (PHP):
public function getAbsoluteURL($url) {
$base = $this->getBaseUrl();
if ($base === '') {
return $url;
}
return $base . '/' . $url;
}
Both projects implement core functionality for their respective platforms. Cozy Stack's code tends to be more concise due to Go's nature, while Nextcloud Server's PHP code is more verbose but potentially more readable for web developers.
Cozy Stack focuses on providing a solid foundation for personal cloud services, emphasizing data ownership and privacy. Nextcloud Server offers a more comprehensive solution with a wider range of built-in applications and integrations, making it suitable for both personal and enterprise use.
Open Source Continuous File Synchronization
Pros of Syncthing
- Lightweight and decentralized, requiring no central server
- Direct peer-to-peer synchronization for enhanced privacy and security
- Cross-platform support with clients for various operating systems
Cons of Syncthing
- Lacks built-in file sharing and collaboration features
- No web interface for remote access to files
- Limited user management and access control options
Code Comparison
Syncthing (Go):
func (m *Model) Index(deviceID protocol.DeviceID, folder string, files []protocol.FileInfo) {
m.fmut.Lock()
defer m.fmut.Unlock()
m.indexBatcher.Batch(deviceID, folder, files)
}
Nextcloud (PHP):
public function index(string $userId, int $fileId): array {
$file = $this->getFileById($fileId);
$this->validateFile($file, $userId);
return $this->formatFile($file);
}
Both projects use different programming languages and have distinct architectures. Syncthing focuses on efficient file synchronization, while Nextcloud provides a more comprehensive file hosting and collaboration platform. The code snippets demonstrate their different approaches to handling file indexing and retrieval.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Nextcloud Server â
A safe home for all your data.
Why is this so awesome? ð¤©
- ð Access your Data You can store your files, contacts, calendars, and more on a server of your choosing.
- ð Sync your Data You keep your files, contacts, calendars, and more synchronized amongst your devices.
- ð Share your Data â¦by giving others access to the stuff you want them to see or to collaborate with.
- ð Expandable with hundreds of Apps ...like Calendar, Contacts, Mail, Video Chat and all those you can discover in our App Store
- ð Security with our encryption mechanisms, HackerOne bounty program and two-factor authentication.
Do you want to learn more about how you can use Nextcloud to access, share, and protect your files, calendars, contacts, communication & more at home and in your organization? Learn about all our Features.
Get your Nextcloud ð
- âï¸ Simply sign up at one of our providers either through our website or through the apps directly.
- ð¥ Install a server by yourself on your hardware or by using one of our ready-to-use appliances
- ð¦ Buy one of the awesome devices coming with a preinstalled Nextcloud
- ð¢ Find a service provider who hosts Nextcloud for you or your company
Enterprise? Public Sector or Education user? You may want to have a look into Nextcloud Enterprise provided by Nextcloud GmbH.
Get in touch ð¬
You can also get support for Nextcloud!
Join the team ðª
There are many ways to contribute, of which development is only one! Find out how to get involved, including as a translator, designer, tester, helping others, and much more! ð
Development setup ð©âð»
- ð Set up your local development environment
- ð Pick a good first issue
- ð©âð§ Create a branch and make your changes. Remember to sign off your commits using
git commit -sm "Your commit message"
- ⬠Create a pull request and
@mention
the people from the issue to review - ð Fix things that come up during a review
- ð Wait for it to get merged!
Third-party components are handled as git submodules which have to be initialized first. So aside from the regular git checkout invoking git submodule update --init
or a similar command is needed, for details see Git documentation.
Several apps that are included by default in regular releases such as First run wizard or Activity are missing in master
and have to be installed manually by cloning them into the apps
subfolder.
Otherwise, git checkouts can be handled the same as release archives, by using the stable*
branches. Note they should never be used on production systems.
Tools we use ð
- ð BrowserStack for cross-browser testing
- ð WAVE for accessibility testing
- ð¨ Lighthouse for testing performance, accessibility, and more
Helpful bots at GitHub :robot:
- Comment on a pull request with
/update-3rdparty
to update the 3rd party submodule. It will update to the last commit of the 3rd party branch named like the PR target.
Ignore code style updates in git blame
git config blame.ignoreRevsFile .git-blame-ignore-revs
Contribution guidelines ð
All contributions to this repository from June 16, 2016, and onward are considered to be licensed under the AGPLv3 or any later version.
Nextcloud doesn't require a CLA (Contributor License Agreement). The copyright belongs to all the individual contributors. Therefore we recommend that every contributor adds the following line to the AUTHORS file if they made substantial changes to the code:
- <your name> <your email address>
Please read the Code of Conduct. This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere and to explain how together we can strengthen and support each other.
Please review the guidelines for contributing to this repository.
More information on how to contribute: https://nextcloud.com/contribute/
Top Related Projects
:cloud: ownCloud web server core (Files, DAV, etc.)
Future-proof content collaboration platform
Simple, Versatile, Yours
Open Source Continuous File Synchronization
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot