Duple Documentation and Tutorials
Q: What is Duple?

A: Duple is an app that gives you your own private cloud at home in one click. Store, Sync, Backup, Share and Access your files from anywhere. Private and simple, that's how it should be.
It’s plug and play. Just download the app on your devices, plug your USB key (any USB) to your internet router, and that's it! You've got your own private Dropbox at home.

What makes Duple awesome?

-It’s private: Your files are not stored on someone else’s data center, but on your storage.
-You own your data: Nobody can access your files except you and the people you choose.
-It’s simple: Anyone can use it. Just download the app on your devices, plug any USB to your router, and you're good to go! No complicated installation. Plug and play.
-It’s flexible: Since you use your own storage, that means you have full control over the size of your cloud. From 1Gb to 10TB (or more), you decide.
-It’s safe: Files are End-to-End Encrypted: it’s ultra secure.

Q: Are my files accessible from anywhere? Both inside and outside my home?

A: You have access to your cloud everywhere, anywhere in the world, so inside and outside your home. It works like a full Dropbox.

Q: Does Duple require a server?

A: Duple doesn't require a server, just the client app and a storage (e.g. your USB connected to your router).

Q: What if I don't want to use my router?

A: No problem! For those who want full control over their data, and don’t want to use a router, Duple works with any file storage. Whether it’s a NAS, Raspberry Pi, Amazon S3, or your own custom configuration: you can choose whichever storage you want for your private cloud with the “advanced mode configuration”.

Since the technology can convert any file storage into a full private cloud, without needing a server, there’s no limit.

Q: Do you provide any hardware? Or just software?

A: There is no hardware, we only offer an app that can convert any file storage system into a private cloud. You use your own storage.

Q: What functionalities does Duple offer?

A: Functionalities include: File Storing, File Synchronization, Access From Anywhere, Self Hosted, File Sharing, File Versioning, Restoring Deleted Files, File Conflict Resolution, Backup (data at least in 2 places), Collaborative folders.
It gives you the functionalities of a full private Dropbox.

Q: Can I use the app now?

A: Duple is currently in beta, you can download it and already use it if you're interested! Since it's a beta, please note that there might still be a few bugs, and not all functionalities are available yet. The sharing features are coming soon. Fortunately, you can already have collaborative folders by creating another private cloud and sharing the access to it with other people.

The beta is available for free. Once it's out of beta Duple will charge a monthly subscription.

Feel free to try out Duple beta and give us your feedback!

Q: Why use Duple over the likes of Dropbox, Box and Google Drive?

A: The likes of Dropbox and Google Drive have got at least one thing right: they're simple and easy to use, with great functionalities. That's important, and that is what we aim to do with Duple. However, they are not private. By using their services your data is being stored on their datacenters ("somewhere in the cloud"). This creates serious problems: you don't have privacy, you don't own your data. You don't really know where your files are. You don't know what happens with your data. Where exactly are they stored? Who exactly has access to them? What makes you think you can trust them with your personal data? Will you get notified if someone hacks into your account?
There's no privacy, no respect of privacy, no ownership of data.

With Duple, you own your data. You're the one hosting your cloud. Your data is on your storage and your devices, rather than floating somewhere in the cloud. You have full control over your files. You know where your data is. And you choose where it goes.
And since you use your own storage with Duple, that means you have full control over the size of your cloud. From 1Gb to 10TB (or more), you decide.

Q: What makes Duple different from other current solutions available on the private cloud market (e.g. Nextcloud, ownCloud)?

A: By "private cloud”, we mean that the user’s data is stored on their own hardware, instead of relying on external providers.

As Greg gave up Dropbox and other similar solutions for reasons mentioned above, he started looking for an alternative in the private cloud market, that would give him the privacy and ownership of data he was looking for, while still maintaining the ease of use he loved from Dropbox.
However, as he started using different private cloud solutions, he quickly understood why most people don’t use them and experienced a lot of pain points.

A quick look at their website is enough to understand the problem. These solutions are an enormous pain to install. They require significant efforts, IT expertise and time to set up, as well as servers.

A list of more detailed comparisons with other solutions can be found here.

That is when he decided to develop the product he was so desperately looking for but could not find himself. And Duple was born: a full private cloud experience that anyone can use. Plug and play, and private.

Q: How is it different from a NAS?

A: A NAS is a very expensive piece of hardware. Spending at least several hundred dollars up to more than a thousand dollars on a cloud service is a big pain point for most users, and that's completely understandable. Since it’s hardware based, that means the user depends on that specific piece of hardware, which also means a lock-in problem.
Finally, these solutions require configuration, they’re not plug and play products, which is a big turn off for non-tech users.

For those already owning a NAS, you can of course use it as your storage for Duple. You can use any file storage, plugged anywhere.

Q: "Just like a cloud, your data is always duplicated on at least two different locations, so you can't lose it." Where's the second location?

A: Your files are always stored on at least two different locations at all times: on your storage (the "repository") and on the device where you downloaded the app. You can’t lose your data.
For instance, say you plug your USB into your router. Your data will always be at least on 1) your USB plugged into your router and 2) your computer’s hard drive where you downloaded the app.

We even went the extra mile and added parity features and health check to protect you from data corruption. It means even if your USB hard drive malfunctions, Duple can recover your files.

Older file versions and deleted files are only stored in one place, in the USB storage (the Duple repository folder). In the future we will add a functionality to duplicate this data on the client side if needed, and RAID 0, 1 and 5/6 for the repository folder.

Q: Can it run on a Raspberry Pi or NAS?

A: Yes of course! Whether it’s a NAS, Raspberry Pi, Amazon S3, or your own custom configuration: you can choose whichever storage you want for your private cloud with the “advanced mode configuration”.

Since the technology can convert any file storage into a full private cloud, without needing a server, there’s no limit. Right now internally our private cloud is made of a USB hard drive from Western Digital plugged to a Raspberry Pi.

The idea is to be able to make a cloud without requiring to buy something. So the simplest way is to use the router. But the basis of the technology is that you can use any file storage, plugged anywhere.

Q: Is there any centralised server component required to run?

A: No, there is no server app required. However you need to be able to access your storage, so it is better to have a NAS or a USB hard drive connected to your network. But it also works with a local USB storage or mounted shared folder.

Q: Do you plan to open-source it?

A: We'll open source everything (server, interface, etc...), except from the C Library. Reason being that the library is what gives us our technical competitive advantage (being that you get the full private cloud experience with no need for a server). It's also important to note that you can't patent your code/algorithm in Europe, so there's no other way to protect it. But everything else expect from the library will be open-source.

Q: I have three Macs, can one of them be the “storage,” and it syncs to the other two Macs plus mobile devices?

A: Just to clarify, Duple doesn't require a server. You need only 2 things: the app and a shared folder. The cloud is contained inside the shared folder. The client is "connected to the cloud" when it can access the folder. You can use one of your Macs as the "storage", yes, but in that case your Mac would need to stay turned on. That is why it's better to use a NAS, Raspberry pi or Router for example.

Q: Can you explain the backup feature? “Never lose anything again” and “You can’t lose it.” are bold claims. What if my house burns down together with all my devices?

A: Your data is always at least in two places at the same time: inside the Duple folder, present on every desktop device where the app is installed (e.g. your computer) and in the repository folder (e.g. your USB hard drive, plugged to your router).

Assuming you store your repository in your house, then you might be concerned about losing your data to, say, a potential fire in your house, or your devices and storage being stolen at the same time. And that's a fair concern! Good news: Duple has an answer for this. :-)

If you're particularly afraid of such a scenario, you can always store the "repository" in another physical location, or even on an Amazon S3.

The cool thing with Duple is that you have complete flexibility, it's super easy to have another backup. It works with any storage. You just need the login/password/ip of your storage and that's it!

Q: Why do I receive a message that my country is blocked when trying to download the app?

A: We have blocked access to the beta page (where you download the app) to some countries, as it was advised by our lawyers to do so before we can get an official green light to grant access to them. We apologize for this. As it is considered "cryptographic exportation", we need to make sure we have an authorisation to export (sell) the software to specific countries. Sorry about this, it is a little bit frustrating with these (many) legal barriers, especially since we're bootstrapped, but we're working on it! At the moment we've allowed access to the following countries: all EU countries, USA, Switzerland, Norway, Canada, Australia, Japan, New Zealand. More will come.

You should still have access to the website and the documentation. In the meantime feel free to follow us on Twitter or Linkedin so that you'll be updated once you'll be able to download it from your country.

Q: On a mobile device, will it download the entirety of your cloud storage to the device? Or will it just display a file list and download the files you select?

A: It will not use the device storage unless you explicitly say so, and you will be able to select which files you want offline. The mobile app is coming soon.

Q: How reliable is the connection if you're hosting the cloud yourself?

A: When you're at home the connection is very reliable because you use your own local network, so it works better than a normal Dropbox. When you're outside it depends on the internet connection you're using. If you live in a city you should normally have a good internet connection so you won't see the difference between using Dropbox or Duple in terms of connection reliability.

Q: Can you elaborate on the security you are using to ensure user data remains private, both when connected to a host device (e.g. smart TV) and during network transit?

A: During network transit we use SSH (one of the safest protocols around), and regarding host device we will have End-to-End Encryption, nobody will be able to read your data expect you (and the people you choose).

Q: What does "Duple" mean?

A: Duple is a synonym of "double", to have something in two. Just like the private cloud data, which is duplicated in two places at the same time. In the same image, our logo is 4 D joined together.

Technical FAQs... for those more curious!
Q: What is Duple? How does it work?

A: Duple is a private cloud with a Client/Storage architecture, you just need the client app and a storage endpoint. It is like having a Dropbox client connected to a git repository. No Client/Server/Storage or Peer to Peer structure, just Client/Storage structure. It can be a simple USB hard drive, FTP, S3, etc... If you can access your repository folder, you can access your private cloud.

Our repository folder works like a git repository (meaning it is a content addressable storage using blob, tree and commits), but it is not compatible with git and has nothing to do with the git software. Everything was built from scratch. We didn't use the git repository format because it was not made to handle big files, but source code.

Q: How can you do it?

A: We’ve got a technology that does everything on the client side in the app, so the app handles everything from doing the commits, synchronising with all the other devices, making sure nobody writes to the Duple repository at the same time, etc. We’ve built a Dropbox without server, just plug any storage and it works.

This technology is made of 13K lines of code, test covered at 90%, regrouped in a C 89 library. To achieve this, we had to solve a lot of technical problems that nobody did before (e.g. locking mechanism without server that can handle 25 simultaneous connections without breaking).

Q: Can you explain a bit more?

A: You have one repository folder and one folder Duple on each device where you can access your cloud. This Duple folder works like a Dropbox folder, and everything is synchronized in multidirectional way between all the devices (all the Duple folders) and the repository folder which contains the totality of the private cloud. On each device (where the app client is installed), you have to tell it how to connect to the repository folder (the beta supports 2 protocols: local file system and SFTP, but others will be added later). You can tell the app multiple ways to connect to the repository folder, so if one doesn't work, it will try another one until it succeeds. This allows it to be very flexible, wherever you are (local network, outside your home, storage plugged in USB, etc...).

However there is only one repository folder, which represents the private cloud, and one Duple folder per device which works like a Dropbox folder. The private cloud data is in totality in the repository folder and partially or totally in each Duple folder depending on your device configuration. There is no server app, just a client app.

We're offering a private cloud. That means all the functionalities available in the beta are: file versioning, restoring deleted files, multi-directional file synchronization across all devices and shared collaborative folders.
Duple is not P2P: your devices are connected to your repository, which means each device synchronises with it. So you won't lose your data, there's always a backup.

There is no server, just storage endpoints. We do not have peers or servers. Our model is Client/Storage, the client app is connected directly to a Duple repository containing the entirety of your cloud.

Q: Does it need your servers to function?

A: There is no data passing through our server, the app is directly connected to your storage, without going through us.

Q: Doesn't the app rely on your server to "register" the location of my "private cloud"?

A: No, the app doesn't rely on servers to register the location of your private cloud. It doesn't communicate with our servers for anything (we don't have servers to do that anyway). You are 100 % autonomous, and also responsible for your infrastructure and storage. You add ways to connect to your storage into the app, and the app checks which one works and uses it.

Q: Is there a central service that handles anything?

A: There is no central service, clients only connect to a same shared folder. An internal algorithm handles the orchestration. If interested here's some documentation on it.

Q: What kind of encryption does it use?

A: The scheme we're thinking of using is End-to-End Encryption using Serpent for file encryption and chacha20 for the generation of the keys (one per element). This can evolve in the future.

Q: Do you have per-file encryption at rest? Meaning you don't have a giant sparse file container for the repository, but rather each file is transformed into an encrypted file.

A: Yes, the repository folder works like a blob storage, so each blob has its own key.

Q: How does the encryption work? If I backup to a little duple server at a friend’s house, would the files on their server be encrypted? If I then lost my computer would I be able to redownload those files remotely, or would it have to be physically connected to that server? And if I then get those encrypted files back, how does it get decrypted?

A: The encryption is end to end using a key file stored in the repository folder and in all the devices. This key file is protected by your password. There is no server. The files stored on the storage (in your friend’s house or elsewhere) are always end to end encrypted.
If you lose your computer, you can reconnect to your cloud and download your files again (they will be decrypted automatically on your new device) by (1) going physically to your storage at your friend's house (2) depending on how you configured your storage, you may just connect to it from distance using your user/password (3) if you enable the “easy connect” service (which will be implemented in a few months), you can reconnect to your cloud from anywhere, just with your user/password.

(Please note: E2EE is not yet implemented with the beta, it will be implemented soon)

Q: How does it manage encryption keys? Rotation? Invalidation? Re-encryption of files? Where does it reuse keys? Does each device have its own keychain? How are new devices added? How are files distributed securely?

A: The scheme (may be evolving in the future) is to use a lazy revocation key management. There is one key per element in the repository folder generated using chacha20. Each device has its own certificate, when you add one device the master certificate has to validate the new device's certificate and then send the encrypted encryption key using this certificate. Since it's E2EE, the file are distributed safely. We will release the encryption documentation when the feature is ready to explain in details how it works.

Q: What's the security like?

A: Security is SSH protocol + End-to-End Encryption (E2EE not in beta, it will be implemented soon).

Q: How can we be sure it's not opening our files to anyone who scans our network?

A: Because your files are only accessible via SSH, one of the safest protocols around.

Q: How do I connect to the storage if I have a dynamic IP?

A: You can configure a dynamic DNS name like dyndns. You can add as many ways to connect to your storage as you need, the app will try each one until it finds one configuration that works. You can have one config with your local IP, another with your external IP, another with your dynamic DNS name, etc... We will have in the future our own dynamic DNS name service that will be included in the app price, so people don't have to pay for it with another company if they don't want to.

Q: Can you have multiple remote servers? or is each "node" equivalent?

A: Just to clarify, there is no server, just storage endpoints. At the moment only one storage endpoint per cloud is available. In the future we will have RAID functionalities that allows you to have multiple storage endpoints per cloud.

Q: Will the product support multiple storage points for both RAID and/or multiple folders?

A: Yes, but in the future, not right now.

Q: How will the files be accessed outside the local network?

A: From a user experience perspective, it doesn't change anything to be inside or outside your network. From a technical point of view, it depends how you configure your storage endpoint into the app. So you can have multiple connections: one when you are inside your local network, one when you are outside your local network, etc. You tell the app how to connect to the storage endpoint in the different cases. In the future we will have automatic configuration for the storage plug to the router, so configuring manually the connection will not be required anymore.

Q: Connections to what, exactly?

A: Connections to your storage endpoints. No need for server.

Q: But whatever connects to the repository is the server and needs to be always available and running, otherwise you have no cloud mechanism?

A: No, because you don’t have a server, you just have clients. You don’t need any one of them to be up for the other ones to access the cloud. They just need to be able to access the storage endpoints.

Q: Are all the nodes that sync peers? None of the nodes is a server as such?

A: We do not have peers or servers. Our model is Client/Storage, the client app is connected directly to a Duple repository containing the entirety of your cloud.

Q: What protocols are needed for connectivity between nodes?

A: There are no nodes, just clients connected to a shared folder. The clients can use SFTP or a locally mounted folder. More protocols will be added in the future.

Q: How do I access my data from my workstation when it's a USB connected to my router?

A: Because your router is connected to internet, the app uses SSH to connect to it (so it's safe) and SSH is available on both sides of the router (local network and internet interface). From a user experience point of view, it's the same as Dropbox.

Q: How does the USB reach the outside world since the router is running its own locked down software?

A: You connect to the USB key via SFTP. And every router runs on Linux where SSH is available.

Q: Does this work with a vps?

A: Yes it does. Works everywhere you can have SSH (SFTP) access.

Q: Does it make off site backups at a friendly/secure location (ie. crashplan's P2P backup). Does this do this? Can you store the "repository" on another computer hosted by a friend (and vice versa)?

A: Yes.