Добро пожаловать в приложение для приватного чата quack .
Добро пожаловать в quack , бесплатное приложение для чата с открытым исходным кодом, предназначенное для частного использования. quack предлагает простой в использовании интерфейс и полную интеграцию с веб-браузерами, что делает его прогрессивным веб-приложением, доступным с любой платформы с веб-браузером, например Chrome.
Вдохновленный Slack, но более доступный для частного использования, quack сочетает в себе лучшие функции других коммуникаторов, уделяя при этом приоритет конфиденциальности и безопасности. Пользователи могут разместить собственное приложение, гарантируя полный контроль над своими данными.
Самый быстрый способ начать — использовать композицию Docker. Использование следующей команды мгновенно запустит приложение с настройками по умолчанию.
docker compose up -d
перейдите по адресу http://localhost:8080 и используйте учетные данные по умолчанию для входа в систему admin / 123
.
Чтобы переопределить настройки по умолчанию, chat.config.ts
можно создать в корневом каталоге проекта. Вы можете использовать chat.config.example.ts
в качестве шаблона. Файл должен экспортировать следующий объект:
type Config = {
port ?: number // default `PORT` env otherwise `8080`
sessionSecret ?: string // auto generated on first run to `secrets.json` but can be overwritten here
trustProxy ?: bool | string | number // default `uniquelocal` ref: https://expressjs.com/en/guide/behind-proxies.html
vapid ?: { // auto generated on first run to `secrets.json` but can be overwritten here
publicKey : string
secretKey : string
} ,
databaseUrl ?: string // default `DATABASE_URL` env
cors ?: string [ ] // by default [ 'https?://localhost(:[0-9]{,4})' ],
storage ?: { // Where uploaded files should be stored
type : 'memory' | 'gcs' | 'fs' // default `fs` / `memory` in tests
directory : string // where to save files when type `fs`
bucket : string // bucket name for `gcs`
}
apiUrl ?: string // default 'http://localhost:8080' url of api
appUrl ?: string // default 'http://localhost:8081' url for frontend app
} ;
GOOGLE_APPLICATION_CREDENTIALS
[строка] — (необязательно), если используется метод хранения gcs.
Чтобы запустить сервер:
cd ./deno/server
deno task dev
Установите зависимости и запустите приложение React:
cd ./app
npm install
npm run dev
Чтобы начать сборник рассказов:
cd ./app
npm install
npm run storybook
В настоящее время поддерживается Google Cloud Storage. Чтобы включить его, установите для fileStorage
в файле конфигурации значение gcs
, укажите gcsBucket
и установите переменную среды GOOGLE_APPLICATION_CREDENTIALS
.
Мы используем бессерверный экземпляр MongoDB из-за его надежности и экономичности — мы платим только за то, что используем. Для приложения достаточно самого дешевого варианта, доступного в Mongo Atlas, поскольку нам не требуются какие-либо внутренние функции публикации/подписки.
Было бы неплохо иметь бессерверное решение, но на данный момент самым дешевым вариантом является использование GCE. Я понятия не имею, как распространять сообщения на другие бессерверные экземпляры без размещенной службы публикации/подписки. MongoDB, Redis и Postgres должны быть размещены на хосте для отслеживания сообщений. Возможно, Google Cloud Pub/Sub будет хорошим вариантом?
Чат имеет систему плагинов. Пример плагина можно найти в plugins/example
. Как использовать плагины и точки подключения плагинов, будет объявлено позднее.
admin / 123
Новых пользователей можно пригласить с помощью команды /invite
, которая создаст одноразовую ссылку для регистрации пользователя.
Взносы приветствуются. Если вы хотите внести существенные изменения, пожалуйста, сначала откройте вопрос, чтобы обсудить, что вы хотели бы изменить. Обязательно обновляйте тесты по мере необходимости.
Лицензия MIT
Авторские права (c) 2023 CodeCat