v0.12.0 是一个巨大的突破性变化。如果您部署了包含您关心的数据的 SyncParty 实例,请确保在拉取新版本之前将以下文件复制到其他目录:
server/db
(数据库)server/uploads
(所有上传的文件)server/persistence.json
(每个项目、每个用户的当前播放位置)拉取当前版本后,在第一层创建一个data
目录。
设置完成后(见下文),将两个文件以及uploads
文件夹复制回data
。如果您现在运行npm run prod:deploy
,应用程序应该像以前一样工作。手指交叉?
与朋友同步观看视频或听音乐。想象一下在一个非常酷的城市中共享公寓的虚拟客厅。
演示视频:https://www.youtube.com/watch?v=6t5-cAwSfjk
.mp4
、 .mp3
、 .m4a
、 .flac
等)由于此应用程序是自托管的,因此您和您朋友的数据将保持私密性,因为您的服务器是安全的。该项目是完全开源的,不涉及任何跟踪。但是,如果您在 YouTube 或类似网站上观看内容,则会发生第 3 方通常的跟踪。
npm ci
.env.example
复制到新的.env
.env
文件:NODE_ENV=production
3000
和4000
就可以了;它们也用在下面的 nginx 示例中。authbind
这样的工具在没有 root 的情况下运行 pm2;请参阅https://pm2.keymetrics.io/docs/usage/specials/#listening-on-port-80-wo-rootnpm run prod:deploy
server_name syncparty.YOURSITE.xyz;
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /socket.io/ {
proxy_pass http://localhost:4000/socket.io/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
location /peerjs/ {
proxy_pass http://localhost:3000/peerjs/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
client_max_body_size 2048M;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/syncparty.YOURSITE.xyz/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/syncparty.YOURSITE.xyz/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
如果您发现错误或想要做出贡献,请随时创建问题。
npm ci
.env.example
复制到新的.env
.env
文件:NODE_ENV=development
(默认)3000
和4000
。npm run dev:server
npm run dev:client
https://localhost:3000
访问SyncParty 是用 TypeScript 编写的,使用 ES 模块。
服务器是用 Express、Sequelize、sqlite、express-session 构建的。基于 Cookie 的身份验证:Passport.js。
客户端是 TypeScript 中的 React 应用程序。
通过Socket.io实现实时通信。通过 PeerJS 进行视频聊天。
构建的客户端应用程序通过应用程序服务器交付。如果运行npm run prod:deploy
,构建的文件将被复制到构建文件夹的public
目录中。 index.html
静态地响应所有请求,路由到/api/...
的请求除外。使用HTTPS需要像nginx这样的反向代理。您可以在上面找到示例配置。
必须先构建应用程序,然后才能创建用户。
npm run dev:server
npm run prod:server:build
或运行npm run prod:deploy
至少一次您可以运行以下命令并在前面加上空格,以防止密码写入您的 bash 历史记录中。 [TODO 更好的 CLI]
[SPACE] npm run cli create-user <USERNAME> <PASSWORD> admin
[SPACE] npm run cli create-user <USERNAME> <PASSWORD>
[SPACE TO BYPASS BASH HISTORY] npm run cli
+
create-user <USERNAME> <PASSWORD> [admin]
list-users
delete-user <USERNAME>
delete-all-users
change-password <USERNAME> <NEW PASSWORD>