Bienvenido a quack : aplicación de chat privado.
Bienvenido a quack , una aplicación de chat gratuita y de código abierto diseñada para uso privado. quack ofrece una interfaz fácil de usar y una integración perfecta con los navegadores web, lo que la convierte en una aplicación web progresiva accesible desde cualquier plataforma con un navegador web, como Chrome.
Inspirado en Slack pero más asequible para uso privado, quack combina las mejores funciones de otros comunicadores al tiempo que prioriza la privacidad y la seguridad. Los usuarios pueden alojar su propia aplicación, asegurando un control total sobre sus datos.
La forma más rápida de comenzar es utilizar Docker Compose. El uso del siguiente comando iniciará la aplicación con la configuración predeterminada en poco tiempo.
docker compose up -d
navegue hasta http://localhost:8080 y use las credenciales predeterminadas para iniciar sesión en admin / 123
.
Para anular la configuración predeterminada, se puede crear el archivo chat.config.ts
en el directorio raíz del proyecto. Puede utilizar chat.config.example.ts
como plantilla. El archivo debe exportar el siguiente objeto:
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
[cadena] - (opcional) cuando se utiliza el método de almacenamiento gcs
Para iniciar el servidor:
cd ./deno/server
deno task dev
Instale dependencias e inicie la aplicación React:
cd ./app
npm install
npm run dev
Para comenzar el libro de cuentos:
cd ./app
npm install
npm run storybook
Actualmente es compatible con Google Cloud Storage. Para habilitarlo, configure fileStorage
en el archivo de configuración para gcs
especifique gcsBucket
y configure la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
.
Estamos utilizando una instancia de MongoDB sin servidor debido a su confiabilidad y rentabilidad: solo pagamos por lo que usamos. La opción más barata disponible en Mongo Atlas es suficiente para la aplicación, ya que no requerimos ninguna funcionalidad interna de publicación/suscripción.
Sería bueno tener una solución sin servidor, pero por ahora, la opción más barata es utilizar GCE. No tengo idea de cómo propagar mensajes a otras instancias sin servidor sin un servicio de publicación/suscripción alojado. MongoDB, Redis y Postgres deben estar alojados para detectar mensajes. ¿Quizás Google Cloud Pub/Sub sería una buena opción?
El chat tiene sistema de complementos. El complemento de ejemplo se puede encontrar en plugins/example
. Cómo utilizar complementos y puntos de enlace de complementos por determinar.
admin / 123
Se pueden invitar nuevos usuarios con el comando /invite
que generará un enlace de un solo uso para el registro de usuarios.
Las contribuciones son bienvenidas. Para cambios importantes, primero abra un problema para discutir lo que le gustaría cambiar. Asegúrese de actualizar las pruebas según corresponda.
Licencia MIT
Copyright (c) 2023 CodeCat