Skip to content

Quickly sync text, images and files across devices

License

Notifications You must be signed in to change notification settings

zhutaoos/synclink-rust

 
 

Repository files navigation

Cedasync

Cedasync 是一个设计用于运行在 NAS、软路由等类似设备上的程序,目的是⽤于多个设备间的⽂本、图像和⽂件临时存储和共享。

screenshots

功能

  • 文件共享:支持文本、图像、音频等文件粘贴复制以及拖拽,方便用户在不同设备上共享。
  • 实时更新:基于 SSE,用户能够接收到列表的实时变化。
  • 本地 Hash 计算:所有上传的文件都会在本地计算 SHA-256 值再与服务端进行比较以去除上传重复的内容,其中对于小于 2 MB 的文件将使用浏览器 API 计算,大于等于 2MB 的文件将使用 Worker 计算。
  • 分片上传:对于 2 MB 将会无痕上传,对于大于 100 MB 的文件将开启分片上传,并且支持断点续传
  • 基于流传输:所有的文件都以流的形式返回或写入,服务端支持 http range 请求
  • 本地存储:该项目采用 TOML 格式存储文件索引方便可读、迁移和修改
  • 模拟目录:采用 Tar 文件模拟目录,实现上传/下载目录(需要 Chrome)
  • 点对点传输:支持两个设备点对点传输文件,基于 WebRTC 和 WebSocket

注意:本项目依赖浏览器一些特性,因此需要使用 HTTPS 环境上使用,建议使用 Nginx 转发

使用 Docker 安装使用

创建 data、logs 和 config 目录 和 配置文件

mv <CUSTOM_DIR>
mkdir data
mkdir config
mkdir logs
echo "" > ./config/cedasync.conf

配置文件参考 cedasync-config.toml

docker run -d \
        --name cedasync \
        --network ptdg-network \
        --restart always \
        -v /<CUSTOM_DIR>/data:/app/storage \
        -v /<CUSTOM_DIR>/config/cedasync.conf:/etc/cedasync/config.toml \
        -v /<CUSTOM_DIR>/logs:/var/log/cedasync \
        ghcr.io/tonitrnel/cedasync:0.3.0

Nginx 配置参考

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      "";
}
server {
    listen 80;
    listen 443 ssl;
    http2 on;
    server_name <YOUR_DOMAIN>;

    ssl_certificate <YOUR_CERT_PATH>;
    ssl_certificate_key <YOUR_CERT_KEY_PATH>;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";

    client_max_body_size 1g;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        proxy_intercept_errors on;
        proxy_connect_timeout       777;
        proxy_send_timeout          777;
        proxy_read_timeout          777;
        send_timeout                777;
        
        proxy_intercept_errors on;
        
        proxy_pass http://127.0.0.1:8080;
    }
}

本地运行

技术栈

快速开始

以下是快速启动项目的步骤

  1. 克隆项目代码
git clone https://github.com/tonitrnel/cedasync
  1. 安装依赖
# 进入 server 目录
cd server
cargo build
# back project dir
cd ../
# 进入 WASM 目录
cd wasm/sha256
wasm-pack build
# back project dir
cd ../../ 
cd wasm/tar
wasm-pack build
cd ../../
# 进入 web 目录
cd ../../web
npm install
  1. 启动服务
# 启动前端开发服务器
cd web
npm run dev
# 启动后端服务
cd server
cargo run
  1. 在浏览器访问

http://localhost:8081

配置

应用程序的配置位于 config/cedasync-config.toml 文件中。您可以根据需要修改其参数

贡献

欢迎贡献代码,您可以通过以下步骤参与贡献:

  1. Fork 本仓库
  2. 创建您的分支:git checkout -b feature/YourFeature
  3. 提交您的更改:git commit -am 'feat: added feature'
  4. 推送到分支:git push origin feature/YourFeature
  5. 提交 Pull Request

许可证

这个项目使用 MIT 许可证。更多信息请参阅 LICENSE 文件。

About

Quickly sync text, images and files across devices

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 61.4%
  • Rust 35.1%
  • Less 1.2%
  • CSS 1.1%
  • Dockerfile 0.4%
  • JavaScript 0.4%
  • Other 0.4%