5.2 KiB
FoundKey Setup and Installation Guide
We thank you for your interest in setting up your FoundKey server! This guide describes how to install and setup FoundKey.
1. Create FoundKey user
Running FoundKey as root is not a good idea. Create a separate user to run FoundKey. In debian for exemple :
adduser --disabled-password --disabled-login foundkey
2. Install dependencies
FoundKey requires the following packages to run:
Dependencies 📦
- Node.js (16.x)
- PostgreSQL (12.x / 13.x is preferred)
- Redis
- A C/C++ compiler toolchain like GCC or Clang.
- Python (3.x)
Optional
- Yarn - Optional but recommended for security reasons. If you won't install it, use
npx yarn
instead ofyarn
. - FFmpeg
To install the dependiencies on Debian (or derivatives like Ubuntu) you can use the following commands:
curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
apt install build-essential python nodejs postgresql redis
# Optional dependencies
apt install ffmpeg
corepack enable # for yarn
Other OSes will have different package names and package managers to install the dependencies.
3. Install FoundKey
-
Connect to the
foundkey
usersu - foundkey
-
Clone the FoundKey repository
git clone --recursive https://akkoma.dev/FoundKeyGang/FoundKey
-
Navigate to the repository
cd foundkey
-
Install FoundKey's dependencies
yarn install
4. Configure FoundKey
-
Copy the
.config/example.yml
and rename it todefault.yml
.cp .config/example.yml .config/default.yml
-
Edit
default.yml
5. Build FoundKey
Build foundkey with the following:
NODE_ENV=production yarn build
If you're still encountering errors about some modules, use node-gyp:
npx node-gyp configure
npx node-gyp build
NODE_ENV=production yarn build
6. Init DB
- Create the appropriate PostgreSQL users with respective passwords, and empty database as named in the configuration file. Make sure the database connection also works correctly when run from the user that will later run FoundKey, or it could cause problems later. The encoding of the database should be UTF-8.
sudo -u postgres psql
create database foundkey with encoding = 'UTF8';
create user foundkey with encrypted password '{YOUR_PASSWORD}';
grant all privileges on database foundkey to foundkey;
\q
- Run the database initialisation
yarn run init
7. That is it.
Well done! Now, you can begin using FoundKey.
Launch normally
Just NODE_ENV=production npm start
. GLHF!
Launch with systemd
-
Create a systemd service here
/etc/systemd/system/foundkey.service
-
Edit it, and paste this and save:
[Unit]
Description=FoundKey daemon
[Service]
Type=simple
User=foundkey
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/foundkey/foundkey
Environment="NODE_ENV=production"
TimeoutSec=60
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=foundkey
Restart=always
[Install]
WantedBy=multi-user.target
-
Reload systemd and enable the foundkey service.
systemctl daemon-reload ; systemctl enable foundkey
-
Start the foundkey service.
systemctl start foundkey
You can check if the service is running with systemctl status foundkey
.
Launch with OpenRC
- Copy the following text to
/etc/init.d/foundkey
:
#!/sbin/openrc-run
name=foundkey
description="FoundKey daemon"
command="/usr/bin/npm"
command_args="start"
command_user="foundkey"
supervisor="supervise-daemon"
supervise_daemon_args=" -d /home/foundkey/foundkey -e NODE_ENV=\"production\""
pidfile="/run/${RC_SVCNAME}.pid"
depend() {
need net
use logger
# alternatively, uncomment if using nginx reverse proxy
#use logger nginx
}
-
Set the service to start on boot
rc-update add foundkey
-
Start the FoundKey service
rc-service foundkey start
You can check if the service is running with rc-service foundkey status
.
How to update your FoundKey server to the latest version
git pull
git submodule update --init
yarn install
NODE_ENV=production yarn build
yarn migrate
- Restart your FoundKey process to apply changes
- Enjoy
If you encounter any problems with updating, please try the following:
yarn clean
oryarn cleanall
- Retry update (Don't forget
yarn install
)
If you have any questions or troubles, feel free to contact us on IRC (#foundkey
on irc.akkoma.dev
, port 6697
with SSL)!