This branch hosts the source for Slowcord. It is vastly different than standard Fosscord, with many new features, bug fixes and improvements.
If you would like to host Slowcord yourself, you should know:
- You will not receive support. I am a university student, who works on this in my free time because it's fun. What is not fun is helping people with the same 5 problems.
- Slowcord is configured in a very specific way. There exists parts of the codebase which assume things about your system's configuration which may not be documented here. You will need to edit things here to get them to work.
- There is no voice/video server, and no admin dashboard yet. There do not exist on any Fosscord instance.
Alright, now onto the guide.
The guide assumes:
- You're using Ubuntu
- You've got a domain name, and you are NOT using ngrok, cloudflare tunnels, hamachi.
- With said domain name, you've got DNS records pointing it to your server
Haydaralqassam has created an automatic install script, which basically performs the below guide for you, available here, or by running the below command
wget -qO- https://gist.githubusercontent.com/haydaralqassam/abdfe619b812d88186cd77802280731e/raw/292fdc8e486d8ef0d5763b89fa03e9c6a907b3a7/install.sh | bash
I, personally, make no guarantees that the above method will work for every user or setup. If you run into issues, you may want to manually go through the below guide instead.
# deps make, git, gcc, g++, etc
sudo apt install build-essential
# deps for canvas npm package
sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
You also need Node, at least version 16. Just go with the latest. It's easiest if you use node version manager.
Now to install Slowcord:
# TODO: once `slowcord-refactor` has been merged into `slowcord`, replace this line.
git clone -b slowcord-refactor https://github.com/MaddyUnderStars/fosscord-server.git
cd fosscord-server
npm i
npm run build
# you may now use this last command to start the server
npm run start
You should probably run the start command in a screen
, or with systemd, instead.
sudo apt install nginx certbot python3-certbot-nginx
Copy the file at fosscord-server/src-slowcord/nginx/fosscord
to /etc/nginx/sites-enabled/fosscord
and edit it how you see fit. That is:
- Edit the
server_name
- If you're not using the Slowcord login server, remove the
location
block related to it - Remove the Slowcord SSL cert stuff, you'll generate your own later.
- Also edit the
$host = whatever
line at the bottom., and the server name in that block.
Now, generate an SSL cert with certbot:
certbot --nginx
It'll ask you a bunch of questions, generate a cert, and edit your config to match. Afterwards run a sudo nginx -t
to check you haven't typoed.
You may need to run sudo systemctl restart nginx
. If nginx is already running you can also do sudo nginx -s reload
to reload config without a full restart.
At this point, you can probably start Slowcord using npm run start
in the project root.
Almost all config is done through the config
table of your database. The values are either self explainatory, or have documentation on https://docs.fosscord.com. Slowcord's config provides sane defaults for most things, but you may want to edit:
cdn_endpointPublic
: The CDN url given to clients. Change this to your domain. Protocol ishttps
, assuming you've got SSL.gateway_endpointPublic
See above, but for the gateway. Protocol iswss
, with SSL.security_defaultRights
The default rights value is discord.com-like by default. Check the fosscord docs for info about rights.guild_defaultFeatures_X
The default features of a guild. Used to grant premium features to all guilds on Slowcord. You may want to do the same. List of guild features. This value is an array,X
is a number, starting a0
.security_captcha_enabled
, and related values.
The .env
file in the project root doesn't have any defaults, but I recommend you use this:
THREADS=1
DATABASE=YOUR DATABASE CONNECTION STRING.
Not providing a DATABASE
will set Slowcord to use SQlite, which is not very performant at scale. I recommend Mariadb or Postgresql, as they are quite well-used in the Fosscord community.
npm run generate:client
. Downloads the full Discord.com web client and patches it. Edit the script to change what the patches do, such as changingDiscord
->Slowcord
and removing Nitro references.npm run generate:rights
. Shows all-rights values and Discord.com-like rights values.npm run generate:schema
. Generates a newassets/schemas.json
file. If you edit any schemas, you will need to rerun this.
If you want to run the login server for Discord oauth, use the bot, or use the status reporting service? Just look around in the repo. It's 10:30pm, I'm too tired. Theres example .env files, and you can always look at the codebase to see what they do. They're pretty self explanatory though.
Thanks.