v0.12.0 é uma grande mudança significativa. Se você tiver uma instância do SyncParty implantada com dados de seu interesse, certifique-se de copiar os seguintes arquivos para um diretório diferente antes de obter a nova versão:
server/db
(o banco de dados)server/uploads
(todos os arquivos enviados)server/persistence.json
(posição atual de jogo para cada item, para cada usuário) Após extrair a versão atual, crie um diretório data
no 1º nível.
Após a configuração (veja abaixo), copie os dois arquivos e a pasta uploads
de volta para data
. Se você executar npm run prod:deploy
agora, o aplicativo deverá funcionar da mesma forma que antes. Dedos cruzados?
Assista a vídeos ou ouça música em sincronia com seus amigos. Imagine uma sala de estar virtual de um apartamento compartilhado em uma cidade muito legal.
Vídeo de demonstração: https://www.youtube.com/watch?v=6t5-cAwSfjk
.mp4
, .mp3
, .m4a
, .flac
etc.)Como este aplicativo é auto-hospedado, os dados seus e dos seus amigos permanecem tão privados quanto o seu servidor é seguro. Este projeto é totalmente de código aberto e não há rastreamento envolvido. No entanto, se você estiver assistindo conteúdo no YouTube ou em sites semelhantes, o rastreamento normal de terceiros acontecerá.
npm ci
.env.example
para um novo .env
.env
:NODE_ENV=production
3000
e 4000
funcionam perfeitamente; eles também são usados no exemplo nginx abaixo.authbind
para executar o pm2 sem root; consulte https://pm2.keymetrics.io/docs/usage/specifics/#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
Se você detectar um bug ou quiser contribuir, sinta-se à vontade para criar um problema.
npm ci
.env.example
para um novo .env
.env
:NODE_ENV=development
(padrão)3000
e 4000
são padrão.npm run dev:server
npm run dev:client
https://localhost:3000
SyncParty é escrito em TypeScript, usando módulos ES.
O servidor é construído com Express, Sequelize, sqlite, express-session. Autenticação baseada em cookies: Passport.js.
O cliente é um aplicativo React em TypeScript.
A comunicação em tempo real é realizada com Socket.io. Bate-papo por vídeo via PeerJS.
O aplicativo cliente construído é entregue por meio do servidor de aplicativos. Se você executar npm run prod:deploy
, os arquivos compilados serão copiados para o diretório public
da pasta de compilação. Um index.html
é servido estaticamente para responder a todas as solicitações, exceto aquelas roteadas para /api/...
. Um proxy reverso como o nginx é necessário para usar HTTPS. Você pode encontrar um exemplo de configuração acima.
O aplicativo deve ser construído antes que você possa criar usuários.
npm run dev:server
npm run prod:server:build
ou executar npm run prod:deploy
pelo menos uma vezVocê pode executar os seguintes comandos com um espaço anterior , evitando que as senhas sejam gravadas em seu histórico do bash. [TODO melhor 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>