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>