La v0.12.0 est un changement radical. Si vous avez déployé une instance de SyncParty avec des données qui vous intéressent, assurez-vous de copier les fichiers suivants dans un autre répertoire avant d'extraire la nouvelle version :
server/db
(la base de données)server/uploads
(tous les fichiers téléchargés)server/persistence.json
(position de jeu actuelle pour chaque élément, pour chaque utilisateur) Après avoir extrait la version actuelle, créez un répertoire data
au 1er niveau.
Après la configuration (voir ci-dessous), copiez les deux fichiers ainsi que le dossier uploads
dans data
. Si vous exécutez npm run prod:deploy
maintenant, l'application devrait fonctionner de la même manière qu'avant. On croise les doigts ?
Regardez des vidéos ou écoutez de la musique de manière synchrone avec vos amis. Imaginez le salon virtuel d’un appartement partagé dans une ville terriblement cool.
Vidéo de démonstration : https://www.youtube.com/watch?v=6t5-cAwSfjk
.mp4
, .mp3
, .m4a
, .flac
etc.)Comme cette application est auto-hébergée, vos données et celles de vos amis restent aussi privées que votre serveur est sécurisé. Ce projet est entièrement open source et aucun suivi n’est impliqué. Cependant, si vous regardez du contenu sur YouTube ou des sites similaires, le suivi habituel par un tiers aura lieu.
npm ci
.env.example
dans un nouveau .env
.env
:NODE_ENV=production
3000
et 4000
fonctionnent très bien ; ils sont également utilisés dans l'exemple nginx ci-dessous.authbind
pour exécuter pm2 sans root ; voir 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
Si vous repérez un bug ou souhaitez contribuer, n'hésitez pas à créer un problème.
npm ci
.env.example
dans un nouveau .env
.env
:NODE_ENV=development
(par défaut)3000
et 4000
sont par défaut.npm run dev:server
npm run dev:client
https://localhost:3000
SyncParty est écrit en TypeScript, à l'aide de modules ES.
Le serveur est construit avec Express, Sequelize, sqlite, express-session. Authentification basée sur les cookies : Passport.js.
Le client est une application React en TypeScript.
La communication en temps réel est réalisée avec Socket.io. Chat vidéo via PeerJS.
L'application client construite est livrée via le serveur d'applications. Si vous exécutez npm run prod:deploy
, les fichiers construits sont copiés dans le répertoire public
du dossier build. Un index.html
est servi de manière statique pour répondre à toutes les demandes, à l'exception de celles acheminées vers /api/...
. Un proxy inverse comme nginx est nécessaire pour utiliser HTTPS. Vous pouvez trouver un exemple de configuration ci-dessus.
L'application doit être créée avant de pouvoir créer des utilisateurs.
npm run dev:server
npm run prod:server:build
ou avoir exécuté npm run prod:deploy
au moins une foisVous pouvez exécuter les commandes suivantes en les précédant d'un espace , empêchant ainsi l'écriture des mots de passe dans votre historique bash. [TODO meilleure 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>