v0.12.0 هو تغيير جذري هائل. إذا كان لديك مثيل من SyncParty تم نشره مع البيانات التي تهمك، فيرجى التأكد من نسخ الملفات التالية إلى دليل مختلف قبل سحب الإصدار الجديد:
server/db
(قاعدة البيانات)server/uploads
(جميع الملفات التي تم تحميلها)server/persistence.json
(وضع التشغيل الحالي لكل عنصر، لكل مستخدم) بعد سحب الإصدار الحالي، قم بإنشاء دليل data
في المستوى الأول.
بعد الإعداد (انظر أدناه)، انسخ كلا الملفين بالإضافة إلى مجلد uploads
مرة أخرى إلى data
. إذا قمت بتشغيل npm run prod:deploy
now، فيجب أن يعمل التطبيق كما كان من قبل. عبرت الأصابع؟
شاهد مقاطع الفيديو أو استمع إلى الموسيقى بشكل متزامن مع أصدقائك. تخيل غرفة معيشة افتراضية في شقة مشتركة في مدينة رائعة جدًا.
الفيديو التجريبي: https://www.youtube.com/watch?v=6t5-cAwSfjk
.mp4
، .mp3
، .m4a
، .flac
وما إلى ذلك)نظرًا لأن هذا التطبيق مستضاف ذاتيًا، فإن بياناتك وبيانات أصدقائك تظل خاصة بقدر ما يكون خادمك آمنًا. هذا المشروع مفتوح المصدر تمامًا ولا يوجد أي تتبع. ومع ذلك، إذا كنت تشاهد محتوى على YouTube أو مواقع مشابهة، فسيتم التتبع المعتاد من قبل الطرف الثالث.
npm ci
.env.example
إلى .env
جديد.env
:NODE_ENV=production
3000
و 4000
يعملان بشكل جيد؛ يتم استخدامها أيضًا في مثال nginx أدناه.authbind
لتشغيل PM2 بدون الجذر؛ راجع https://pm2.keymetrics.io/docs/usage/profiles/#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. المصادقة المستندة إلى ملفات تعريف الارتباط: Passport.js.
العميل هو تطبيق React في TypeScript.
يتم تحقيق الاتصال في الوقت الفعلي باستخدام Jack.io. دردشة فيديو عبر PeerJS.
يتم تسليم تطبيق العميل المدمج عبر خادم التطبيق. إذا قمت بتشغيل npm run prod:deploy
، فسيتم نسخ الملفات المضمنة إلى الدليل public
لمجلد البناء. يتم تقديم ملف index.html
بشكل ثابت للاستجابة لجميع الطلبات، باستثناء تلك الموجهة إلى /api/...
. هناك حاجة إلى وكيل عكسي مثل nginx لاستخدام HTTPS. يمكنك العثور على مثال للتكوين أعلاه.
يجب إنشاء التطبيق قبل أن تتمكن من إنشاء المستخدمين.
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>