Skip to content
m8kePublic

About

AirCloud (beta) is a decentralized (P2P) application for end-to-end encrypted file sharing. Secure way to transfer files across devices. We never upload, store, or track files.

Topics

Resources

Stars

11 stars

Watchers

2 watching

Forks

Latest commit

 

History

133 Commits

Folders and files

Repository files navigation

AirCloud

AirCloud is a decentralized web-based application for end-to-end encrypted file sharing built on top of WebRTC. Secure way to transfer files across devices. We never upload, store, or track files.


aircloud-cover.png

Features

back to top

Feature Description
Cross-device Use any device with a WebRTC supported browser
Peer-to-peer Direct connection and file transfer between peers without a central server or third-party storage
Bypass NATs and strict firewalls Works behind strict firewalls or NATs
Auto-discover peers Detect other peers on the same network (including VPN, LAN, public Wi-Fi)
Manual connection Connect using a 6-digit code or QR code for peers outside the same network
No limitations Send as many or large files as you want, everything depends on WebRTC capabilities, and network speed of peers
No sign-up or ads You don't see annoying ads, or need to sign-up after few transfers
End-to-end encryption File transfers are always encrypted
Session-based All data will be deleted if you close the tab or browser
PWA Progressive web application
Self-hosted Host AirCloud on your own cloud server or homelab
Anonymity Never upload, store, or track files, IPs etc
Open source Review the source code, contribute, or share ideas to improve the project

Roadmap

back to top

Feature Milestone Description
Local storage v1 Receive and store files decentralized on local machine
Synchronization v1 Sync locally stored files across authorized devices (peer-to-peer)
Resume transfers v1 Transfers will continue after reconnection
Metadata sanitization v1 Sanitize metadata from images, videos, etc.
Custom STUN/TURN v1 Use your preferred STUN/TURN servers
Localization v1 Translate into multiple languages
Desktop app v2 Desktop application for MacOS, Windows, and Linux
Mobile app - Mobile application for iOS and Android
TV app - TV application for tvOS and Android TV

Platforms

back to top

Browser Desktop app Mobile app TV app
Status Beta Planned Planned Planned

Technology stack

back to top

Technology Scope Description
Spring Boot Server Server-side application built in Java
WebSocket Server Signaling service to establish a WebRTC connection between peers
Coturn Server Facilitate communication between devices that may be behind firewalls or NATs (optional)
Angular Client Client-side application built in TypeScript
WebRTC Client Establish P2P connection between peers
Zip.js Client Zip files on the client-side to send as a bundle

Getting started

back to top

Docker Compose

services:
  server:
    image: ghcr.io/m8ke/aircloud/server:${AIRCLOUD_VERSION:-latest}
    restart: unless-stopped
    container_name: aircloud-server
    environment:
      PORT: ${SERVER_PORT:-8000}
      DOMAIN: ${DOMAIN}
      TURN_SECRET: ${TURN_SECRET}   # optional
      STUN_IP: stun:${DOMAIN}:3478  # optional
      TURN_IP: turns:${DOMAIN}:5349 # optional
    ports:
      - "${SERVER_PORT:-8000}:${SERVER_PORT:-8000}"

  client:
    image: ghcr.io/m8ke/aircloud/client:${AIRCLOUD_VERSION:-latest}
    restart: unless-stopped
    container_name: aircloud-client
    environment:
      PORT: ${CLIENT_PORT:-4000}
    ports:
      - "${CLIENT_PORT:-4000}:${CLIENT_PORT:-4000}"
    depends_on:
      - server

Development

PORT=8001 ./gradlew bootRun --args='--spring.profiles.active=dev'
SERVER_PORT=8001 npm start

TURN server

In case you need to facilitate communication between devices that may be behind firewalls or NATs, you should consider using TURN server. Coturn server minimum requirements should be 2 CPU machine with 4 GB of RAM.

coturn:
  image: coturn/coturn:4.7.0-alpine
  container_name: coturn
  network_mode: host
  restart: unless-stopped
  command:
    - --realm=turn.${DOMAIN}
    - --server-name=turn.${DOMAIN}
    - --use-auth-secret
    - --static-auth-secret=${TURN_SECRET}
    - --listening-ip=0.0.0.0
    - --listening-port=3478
    - --tls-listening-port=5349
    - --min-port=10000
    - --max-port=20000
    - --cert=/certs/fullchain.pem
    - --pkey=/certs/privkey.pem
    - --verbose
    - --fingerprint
    - --no-rfc5780
    - --no-tlsv1_2
    - --no-cli
    - --no-multicast-peers
    - --no-software-attribute
    - --check-origin-consistency
    - --log-file=-

Recommendations

back to top

Although AirCloud prioritizes privacy when sharing files between peers, for additional security you should consider using a (self-hosted) VPN. Since we haven't implemented metadata removal, we recommend to sanitize files, images etc., before sending.

Support

back to top

Feel free to open an issue, submit a pull request, or simply give the project a star to show your support. You are welcome to the Discord server.


Thank you!
www.aircloud.sh

About

AirCloud (beta) is a decentralized (P2P) application for end-to-end encrypted file sharing. Secure way to transfer files across devices. We never upload, store, or track files.

Topics

Resources

Stars

11 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages