Server Setup
Spacebar-server setup ranges in difficulty depending on how you want to configure your system. This page provides a minimal setup guide to get you up and running, you should check out the other pages on this site to take your instance to the next level.
For this guide, we assume you're familar with the terminal.
We do not recommend or support running Spacebar using services such as Ngrok or Heroku.
You must have access to a terminal for this guide.
We do not recommend using Windows to run Spacebar.
Dependencies
- Git
- NodeJS. Version 18+ (for
npm
,node
commands) (NOTE: Ubuntu and Debian based systems often ship with an outdated version of NodeJS, so you can use NodeSource to install a newer version) - Python. Version 3.10 or later. Make sure this is executable via
python
in your terminal.
(See:python-is-python3
package) - On Linux:
gcc
/g++
. Packaged withbuild-essential
on Debian/Ubuntu andbase-devel
on Arch. - On Windows: Visual Studio (NOT VSCode) with the
Desktop development with C++
package. You do not need the full Visual Studio install, the build tools are fine.
Setup
In your terminal:
# Download Spacebar
git clone https://github.com/spacebarchat/server.git
# Navigate to project root
cd server
# Install javascript packages
npm i
# Build and generate schema. Separately, they are `build` and `generate:schema`.
npm run setup
# Start the bundle server ( API, CDN, Gateway in one )
npm run start
If all went according to plan, you can now access your new Spacebar instance at http://localhost:3001! Congrats!
If you set up your server remotely, you can use curl http://localhost:3001/api/ping
to verify the server is up and running
(you should set up a reverse proxy, next!).
Connecting from remote machines
For your server to be a bit more useful to those not on the same machine, you'll need to do a bit more configuration.
The official Spacebar client does automatic discovery of the endpoints it uses to communicate with the server, but it needs to retrieve those from somewhere, that being the API server.
If you don't tell the API server where to find the other services, the official Spacebar client wont be able to connect. Other clients which don't do automatic discovery will be, but that's because your users will need to provide the locations manually.
We'll be doing some server configuration in this step, which is stored in your servers database by default.
By default, Spacebar uses an SQLite database in the project root called database.db
, but you might not want to use that for production.
If you're going to switch databases, do it now.
Once you've opened your database, navigate to the config
table. You'll see 2 columns named key
and value
.
You'll want to set the value
of the rows with the following keys to the correct values.
key | value |
---|---|
api_endpointPublic |
Your API endpoint. Likely "https://DOMAIN_NAME/api/v9" |
cdn_endpointPublic |
Your CDN endpoint. Likely "https://DOMAIN_NAME" |
gateway_endpointPublic |
Your Gateway endpoint. Likely "wss://DOMAIN_NAME" |
You must wrap these value
s in doublequotes as they are parsed as JSON!
If you're in the CLI for this, heres some template SQL:
update config
set value = '"HTTPS_OR_WSS://SERVER_ADDRESS"'
where key = "THE_SERVICE_NAME_endpointPublic";
Now what?
Well, now you can configure Spacebar to your liking!