Версия 0.12.0 — это масштабное изменение. Если у вас есть экземпляр SyncParty, развернутый с нужными вам данными, обязательно скопируйте следующие файлы в другой каталог, прежде чем скачивать новую версию:
server/db
(база данных)server/uploads
(все загруженные файлы)server/persistence.json
(текущая игровая позиция для каждого элемента для каждого пользователя) После извлечения текущей версии создайте каталог data
на 1-м уровне.
После настройки (см. ниже) скопируйте оба файла, а также папку uploads
обратно в data
. Если вы сейчас запустите npm run prod:deploy
, приложение должно работать так же, как и раньше. Пальцы скрещены?
Смотрите видео или слушайте музыку синхронно с друзьями. Представьте себе виртуальную гостиную коммунальной квартиры в ужасно прохладном городе.
Демонстрационное видео: 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 без root; см. https://pm2.keymetrics.io/docs/usage/specifics/#listening-on-port-80-wo-root.npm 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.
Клиент представляет собой приложение React на TypeScript.
Связь в реальном времени осуществляется с помощью 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. [СДЕЛАТЬ лучший 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>