Git Product home page Git Product logo

spacebarchat's Introduction

Spacebar

Spacebar is a free, opensource selfhostable discord-compatible chat, voice and video platform.

  • Discord-compatible (Use all your custom clients/bots with minimal changes)
  • Selfhostable (Server)
  • Open Source (GitHub Organization)
  • Configurable (Configure every aspect and limits to your needs)
  • Decentralized (no abuse of power and doesn't have a single point of failure)
  • Extendable (secure and cross-platform plugin system)
  • Themeable (cross-platform theme system with design editor)
  • Secure (publicly audited and hosted FOSS software for transparent foundation in terms of security)

Logo by @ItsRealmy. Original logo by @nwlandas.

Usage and Support

You can find setup guides and lots of other information in our Documentation
For any kind of support regarding Spacebar, feel free to ask questions in our Discord guild.

Repositories

Repo name Brief description
Server Spacebar API + Gateway + CDN Server + WebRTC + Admin Dashboard
Client Spacebar Client compatible with Spacebar-server and discord.com
Docs Documentation of Spacebar
Landing page Our Homepage

Contribute

This project is only possible by volunteers like you your contribution is very much appreciated.
You can find information about how to contribute here.
We also mark issues as "Good first issues" if you're looking for things to get you started.

License

Copyright (C) 2021-2024 Spacebar and Spacebar Contributors This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation version 3 of the License

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.de.html

spacebarchat's People

Contributors

actions-user avatar asdfugil avatar bigweldindustries avatar brgustavoribeiro avatar chrischrome avatar dependabot[bot] avatar diegomagdaleno avatar erkinalp avatar felix-d1strict avatar fsg-cat avatar hugohead avatar imaaronfr avatar intevel avatar itsnewe avatar itsrealmy avatar josedefreitas avatar krvaibhaw avatar logkos avatar lokerhp avatar maddyunderstars avatar mafineeek avatar pedrexdev avatar samuelscheit avatar stilic avatar technologyclassroom avatar thearcanebrony avatar timh04 avatar veeback avatar xnacly avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spacebarchat's Issues

Unable to change profile banner

So I just tried dev.fosscord.com/app (its amazing mostly for the free nitro lol) but the problem is that my profile banner won't change, I tried 3 gifs. I have a decent internet connection (⬇ 93.7 Mbps and ⬆ 84.2 Mbps) and live in India so I don't think that matters.

LICENSE text

I see the LICENSE file contains a license header for AGPL-3.0-only. I would recommend that text be moved to a License subheading in the README file at least and the LICENSE file should contain the entirety of the AGPLv3 license. The benefit of this change is that LICENSE would be more obvious and displayed in the first page view of the GitHub project.

I would be happy to make a PR for this change.

Add issue templates to repositories

Recently I saw several invalid-labeled issues and premade templates could be good a solution to decrase number of them and make It easier for people to ask, suggest, report and answer. For now templates for 4 actions specified above might be enough.

Patreon/Funding

Donation page to maintain server costs and other expenses

Support database encryption

Data protection law requires personally identifying data should not be accessible to service operators in plain form unless absolutely required. Hence, the database should be made to allow at-rest symmetric and/or end-to-end public key homomorphic encryption.

How to contribute?

Have a look at http://docs.fosscord.com/ to get an overview about the project.
Read the documentation and setup the development environment.
You should be familiar with the discord api or read more about it in the docs.

Then create feature request issue in one our repos or comment on an existing one.
Or just write us on our development server.

Repos list

After making an issue, wait for message from one of our staff.
You will get informations about your feature.
Then, you can Pull Request that, and wait for review.

Unable to recursively clone repo due to missing fosscord/fosscord.js-collection

(crossposted from Fosscord Discord: https://discord.com/channels/806142446094385153/806142446529806367/862297976613240842 )

Hi, I've been looking at testing out Fosscord locally and am currently following the steps in https://docs.fosscord.com/contributing.html

When I run the first command $ git clone --recurse-submodules -j8 https://github.com/fosscord/fosscord, Git seems to hang indefinitely at cloning https://github.com/fosscord/fosscord.js-collection so I disabled parallel clone (the -j8 flag) and tried again. It then asked me to enter my GitHub username and password twice, to which it informed that cloning failed (both times) for that particular submodule so the cloning of the main project failed. Upon inspection, https://github.com/fosscord/fosscord.js-collection returns a 404 when I try to visit it.

My question: is it expected for this particular submodule to fail during cloning and can I safely work on the project in the absence of this submodule?


In case this is relevant, I'm performing the clone on a CentOS 8 Stream system.

MongoError (selfhost)

image

MongoError: BSON field 'update.updates.u' is the wrong type 'array', expected type 'object'
    at MessageStream.messageHandler (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/mongoose/node_modules/mongodb/lib/cmap/connection.js:272:20)
    at MessageStream.emit (events.js:400:28)
    at processIncomingData (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/mongoose/node_modules/mongodb/lib/cmap/message_stream.js:144:12)
    at MessageStream._write (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/mongoose/node_modules/mongodb/lib/cmap/message_stream.js:42:5)
    at writeOrBuffer (internal/streams/writable.js:358:12)
    at MessageStream.Writable.write (internal/streams/writable.js:303:10)
    at Socket.ondata (internal/streams/readable.js:726:22)
    at Socket.emit (events.js:400:28)
    at addChunk (internal/streams/readable.js:290:12)
    at readableAddChunk (internal/streams/readable.js:265:9)
    at Socket.Readable.push (internal/streams/readable.js:204:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
  operationTime: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1628571804 },
  ok: 0,
  code: 14,
  codeName: 'TypeMismatch',
  '$clusterTime': {
    clusterTime: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1628571804 },
    signature: { hash: [Binary], keyId: 0 }
  }
}
MongoError: BSON field 'update.updates.u' is the wrong type 'array', expected type 'object'
    at MessageStream.messageHandler (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/mongoose/node_modules/mongodb/lib/cmap/connection.js:272:20)
    at MessageStream.emit (events.js:400:28)
    at processIncomingData (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/mongoose/node_modules/mongodb/lib/cmap/message_stream.js:144:12)
    at MessageStream._write (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/mongoose/node_modules/mongodb/lib/cmap/message_stream.js:42:5)
    at writeOrBuffer (internal/streams/writable.js:358:12)
    at MessageStream.Writable.write (internal/streams/writable.js:303:10)
    at Socket.ondata (internal/streams/readable.js:726:22)
    at Socket.emit (events.js:400:28)
    at addChunk (internal/streams/readable.js:290:12)
    at readableAddChunk (internal/streams/readable.js:265:9)
    at Socket.Readable.push (internal/streams/readable.js:204:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
  operationTime: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1628571804 },
  ok: 0,
  code: 14,
  codeName: 'TypeMismatch',
  '$clusterTime': {
    clusterTime: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1628571804 },
    signature: { hash: [Binary], keyId: 0 }
  }
} Promise {
  <rejected> MongoError: BSON field 'update.updates.u' is the wrong type 'array', expected type 'object'
      at MessageStream.messageHandler (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/mongoose/node_modules/mongodb/lib/cmap/connection.js:272:20)
      at MessageStream.emit (events.js:400:28)
      at processIncomingData (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/mongoose/node_modules/mongodb/lib/cmap/message_stream.js:144:12)
      at MessageStream._write (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/mongoose/node_modules/mongodb/lib/cmap/message_stream.js:42:5)
      at writeOrBuffer (internal/streams/writable.js:358:12)
      at MessageStream.Writable.write (internal/streams/writable.js:303:10)
      at Socket.ondata (internal/streams/readable.js:726:22)
      at Socket.emit (events.js:400:28)
      at addChunk (internal/streams/readable.js:290:12)
      at readableAddChunk (internal/streams/readable.js:265:9)
      at Socket.Readable.push (internal/streams/readable.js:204:10)
      at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
    operationTime: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1628571804 },
    ok: 0,
    code: 14,
    codeName: 'TypeMismatch',
    '$clusterTime': { clusterTime: [Timestamp], signature: [Object] }
  }
}
register [email protected] ThatOneCalculator 
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:561:11)
    at ServerResponse.header (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/express/lib/response.js:771:10)
    at ServerResponse.send (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/express/lib/response.js:170:12)
    at ServerResponse.json (/home/the1calc/fosscord_clone/scripts/setup/fosscord/api/node_modules/express/lib/response.js:267:15)
    at /home/the1calc/fosscord_clone/scripts/setup/fosscord/api/dist/routes/auth/register.js:247:16
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)

Custom feature tiers

Reuse Nitro classic and Nitro flags as feature tier flags in a binary fashion:

00: base
01: premium 1
10: premium 2
11: premium 3

Add native support for bridging to Matrix

About this issue

Support for bridging to Matrix should be an first-class feature, either through an built-in feature or adding backwards-compatible Matrix AS API.

Any possible roadblocks

Since the Matrix spec is not yet an official spec at IETF, like ActivityPub, and as per the docs, writing Matrix homeservers are magnitudes harder than writing bridges, bots, or clients.

Matrix Bridge

It would be nice if fosscord supported the Matrix API, so that it could connect people from it's environment too.

I recon that implementing the Matrix API in the server could be too much; in that case, making it easy to make a bridge between fosscord and matrix could be a more feasible idea.

In any case, considering this option from the beginning should ease future attempts to interconnect both.

Bug Reports

  • external website & client integration
  • create issues for each report in this repo

Use the boomerang logo

The boomerang logo, unlike game controller logo, cannot be confused with Discord Inc.'s logo.

Server

The server opens and says wait a little time and then it simply crashes

Blocked

My school's blocking system is blocking dev.fosscord.com for "Unknown Proxy" I know it isn't my administrator, it's just the page. Please fix this, my school uses this as a substitute since discord is blocked through our Securely.

No free software license

Currently this project can't be called Open Source or free software since it doesn't have a license that meets any of the 2 criteria (or even at all).

Just in case, if you want a recommendation, I'd recommend AGPL-3.0-or-later for the server and GPL-3.0-or-later for the client. If you want extensions to be able to remain proprietary, then LGPL-3.0-or-later is fine for the client, too. These would ensure that the project remains free software.

By the way, all contributors would need to agree to licensing their existing contributions under whatever license you choose. (This step doesn't need to be done in the future thanks to GitHub's ToS.)

(IANAL, this is not legal advice.)

Cross-Instance communication

Just a way for a self-hosted server could communicate with another one so for example a guy on one server can chat with another guy on a completely different server.

Matrix channel?

I've been recently banned from discord for using a 3rd party client (as expected), and i wanted to continue to see the evolution of the project, maybe consider creating a matrix channel? (With bridging)

Can't sign up

When I try to sign up, the submit button change to a infinite loading button.
So, I can't sign up.
Anybody can fix this issue, please?

Setup Scripts

/setup

  • allow to install multiple repos in one installation or all of them
  • make the scripts OS independent
  • ?add script cli-arguments REF
  • finish:
    IF ERRORLEVEL ==A GOTO ALL
    IF ERRORLEVEL ==1 GOTO 
    IF ERRORLEVEL ==2
    IF ERRORLEVEL ==3
    IF ERRORLEVEL ==4
    IF ERRORLEVEL ==5
    IF ERRORLEVEL ==6
    IF ERRORLEVEL ==7
    ---
    (L.19-26)

Running Fosscord without Internet access

I'd like to run my Fosscord instance with no internet access, but as soon as I cut the connection to the outside Internet, I can't do much with it, as it loses connection with some sort of service. How can I do it so Fosscord doesn't use any services using Internet access, or at least make it so Internet access isn't required?

Discord TOS

Even if this is a really early state and nobody knows how Discord will handle this (I hope to not see u in front of the judge), but myb it would make sense to implement a way to login without the discord account to be safe that you can use fosscord without getting eventually banned from discord.

"Cannot read property 'merge' of undefined" when starting both HTTP API server and gateway

I'm following the contributing guide to try to get a local Fosscord server running and when I do npm start in both the HTTP API server api/ and the gateway gateway/, I get the following type error after attempting to connect to the local MongoDB instance:

TypeError: Cannot read property 'merge' of undefined
    at Object.init (/home/dsleung/fosscord/api/node_modules/@fosscord/server-util/dist/util/Config.js:35:37)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async FosscordServer.start (/home/dsleung/fosscord/api/dist/Server.js:68:9)

The full output of npm start for the API server:

> @fosscord/[email protected] start /home/dsleung/fosscord/api
> npm run build && node dist/start


> @fosscord/[email protected] build /home/dsleung/fosscord/api
> tsc -b .

[DB] connect: mongodb://localhost:27017/fosscord?readPreference=secondaryPreferred
[DB] connected
TypeError: Cannot read property 'merge' of undefined
    at Object.init (/home/dsleung/fosscord/api/node_modules/@fosscord/server-util/dist/util/Config.js:35:37)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async FosscordServer.start (/home/dsleung/fosscord/api/dist/Server.js:68:9)

And for the gateway:

> @fosscord/[email protected] start /home/dsleung/fosscord/gateway
> npm run build && node dist/start.js


> @fosscord/[email protected] build /home/dsleung/fosscord/gateway
> npx tsc -b .

[DB] connect: mongodb://localhost:27017/fosscord?readPreference=secondaryPreferred
TypeError: Cannot read property 'merge' of undefined
    at Object.init (/home/dsleung/fosscord/gateway/node_modules/@fosscord/server-util/dist/util/Config.js:35:37)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async Server.listen (/home/dsleung/fosscord/gateway/dist/Server.js:35:9) Promise {
  <rejected> TypeError: Cannot read property 'merge' of undefined
      at Object.init (/home/dsleung/fosscord/gateway/node_modules/@fosscord/server-util/dist/util/Config.js:35:37)
      at processTicksAndRejections (internal/process/task_queues.js:95:5)
      at async Server.listen (/home/dsleung/fosscord/gateway/dist/Server.js:35:9)
}

I've tried updating @fosscord/server-util to the latest version under api/ (successfully), but to no avail - the issue still persists:

$ npm i @fosscord/[email protected]

Environment details:

  • OS: CentOS 8 Stream
  • Node version: 14.17.3
  • npm version: 6.14.13

RPC for developers

it would be great if someone makes a RPC script for the devs that displays all useful information about this project to reach more devs to work on this, thank you :)

Problem with creating channels (voice and text)

when I try to create a channel, I have an eternal loading, only reloading the page helps, here is a screenshot
image

Here logs

TypeError: Cannot read property 'id' of _undefined
at WebSocket.<anonymous> (/home/user/Discord/fosscord-server/bundle/dist/gateway/src/listener/listener.js:133:39)
at Generator.next (<anonymous>)
at /home/user/Discord/fosscord-server/bundle/dist/gateway/src/listener/listener.js:8:71
at new Promise (<anonymous>)
at __awaiter (/home/user/Discord/fosscord-server/bundle/dist/gateway/src/listener/listener.js:4:12)
at WebSocket.consume (/home/user/Discord/fosscord-server/bundle/dist/gateway/src/listener/listener.js:97:12)
at EventEmitter.<anonymous> (/home/user/Discord/fosscord-server/bundle/dist/util/src/util/Event.js:62:57)
at EventEmitter.emit (events.js:400:28)
at /home/user/Discord/fosscord-server/bundle/dist/util/src/util/Event.js:34:28
at Generator.next (<anonymous>) Promise {
<rejected> TypeError: Cannot read property 'id' of undefined
  at WebSocket.<anonymous> (/home/user/Discord/fosscord-server/bundle/dist/gateway/src/listener/listener.js:133:39)
  at Generator.next (<anonymous>)
  at /home/user/Discord/fosscord-server/bundle/dist/gateway/src/listener/listener.js:8:71
  at new Promise (<anonymous>)
  at __awaiter (/home/user/Discord/fosscord-server/bundle/dist/gateway/src/listener/listener.js:4:12)
  at WebSocket.consume (/home/user/Discord/fosscord-server/bundle/dist/gateway/src/listener/listener.js:97:12)
  at EventEmitter.<anonymous> (/home/user/Discord/fosscord-server/bundle/dist/util/src/util/Event.js:62:57)
  at EventEmitter.emit (events.js:400:28)
  at /home/user/Discord/fosscord-server/bundle/dist/util/src/util/Event.js:34:28
  at Generator.next (<anonymous>)

}

Help!

I can't join any servers or add any friends!

Cannot access http://localhost:3001 when using Docker

Following the setup outlined in https://docs.fosscord.com/contributing.html , I executed the following commands on Ubuntu 20.04 server with Docker installed and running and the current user added to the docker group (so no sudo is required):

$ git clone --recurse-submodules -j8 https://github.com/fosscord/fosscord
$ cd fosscord
$ git submodule foreach "git checkout master && git pull origin master"
$ docker-compose up

After waiting for a few minutes to stabilize, running $ docker container ls gives me the following output indicating the services are up and running:

CONTAINER ID   IMAGE                       COMMAND                  CREATED         STATUS         PORTS                      NAMES
c8ba84cffee1   fosscord_fosscord-api       "docker-entrypoint.s…"   7 minutes ago   Up 7 minutes   0.0.0.0:3001->3001/tcp     api
ede3cc550fe7   fosscord_fosscord-gateway   "docker-entrypoint.s…"   7 minutes ago   Up 7 minutes   0.0.0.0:3002->3002/tcp     gateway
463773e75603   mongo                       "docker-entrypoint.s…"   7 minutes ago   Up 7 minutes   0.0.0.0:27017->27017/tcp   mongo

However, when I try to access http://localhost:3001 using curl, I get (same for port 3002):

$ curl http://localhost:3001
curl: (56) Recv failure: Connection reset by peer

https://serverfault.com/a/769583 suggested that this error may be due to the service listening to a port other than 3001, so I peered inside both containers from the fosscord_fosscord-api and fosscord_fosscord-gateway images and get:

$ docker container exec -it c8ba84cffee1 /bin/sh
# netstat -an | grep LISTEN
tcp        0      0 127.0.0.11:37439        0.0.0.0:*               LISTEN      
$ docker container exec -it ede3cc550fe7 /bin/sh
# netstat -an | grep LISTEN
tcp        0      0 127.0.0.11:34517        0.0.0.0:*               LISTEN      

So it seems that the API server and gateway are listening to random high-numbered ports instead of the intended ports 3001-3002. Or am I mistaken?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.