2022-07-29 06:09:26 +00:00
|
|
|
FoundKey Setup and Installation Guide
|
2022-07-29 05:57:40 +00:00
|
|
|
================================================================
|
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
We thank you for your interest in setting up your FoundKey server!
|
|
|
|
This guide describes how to install and setup FoundKey.
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
----------------------------------------------------------------
|
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
*1.* Create FoundKey user
|
2022-07-29 05:57:40 +00:00
|
|
|
----------------------------------------------------------------
|
2022-07-29 06:09:26 +00:00
|
|
|
Running FoundKey as root is not a good idea. Create a separate user to run FoundKey.
|
2022-07-29 20:00:31 +00:00
|
|
|
|
|
|
|
In debian for example:
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
```sh
|
2022-07-29 06:09:26 +00:00
|
|
|
adduser --disabled-password --disabled-login foundkey
|
2022-07-29 05:57:40 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
*2.* Install dependencies
|
|
|
|
----------------------------------------------------------------
|
2022-07-29 06:09:26 +00:00
|
|
|
FoundKey requires the following packages to run:
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 20:00:31 +00:00
|
|
|
### Dependencies :package:
|
2022-07-29 05:57:40 +00:00
|
|
|
* **[Node.js](https://nodejs.org/en/)** (16.x)
|
|
|
|
* **[PostgreSQL](https://www.postgresql.org/)** (12.x / 13.x is preferred)
|
|
|
|
* **[Redis](https://redis.io/)**
|
2022-07-29 20:00:31 +00:00
|
|
|
|
|
|
|
The following are needed to compile native npm modules:
|
2022-07-29 06:22:00 +00:00
|
|
|
* A C/C++ compiler toolchain like **GCC** or **Clang**.
|
2022-07-29 06:29:45 +00:00
|
|
|
* **[Python](https://python.org/)** (3.x)
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 20:00:31 +00:00
|
|
|
### Optional
|
|
|
|
* [Yarn](https://yarnpkg.com/) - *If you decide not to install it, use `npx yarn` instead of `yarn`.*
|
2022-07-29 05:57:40 +00:00
|
|
|
* [FFmpeg](https://www.ffmpeg.org/)
|
|
|
|
|
2022-07-29 06:22:00 +00:00
|
|
|
To install the dependiencies on Debian (or derivatives like Ubuntu) you can use the following commands:
|
|
|
|
```sh
|
|
|
|
curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
|
2022-07-29 06:31:48 +00:00
|
|
|
apt install build-essential python3 nodejs postgresql redis
|
2022-07-29 06:22:00 +00:00
|
|
|
|
|
|
|
# Optional dependencies
|
|
|
|
apt install ffmpeg
|
|
|
|
corepack enable # for yarn
|
|
|
|
```
|
2022-07-29 20:00:31 +00:00
|
|
|
You will need to adapt this for whichever OS you are using to host FoundKey.
|
2022-07-29 06:22:00 +00:00
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
*3.* Install FoundKey
|
2022-07-29 05:57:40 +00:00
|
|
|
----------------------------------------------------------------
|
2022-07-29 06:09:26 +00:00
|
|
|
1. Connect to the `foundkey` user
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
`su - foundkey`
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
2. Clone the FoundKey repository
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 20:00:31 +00:00
|
|
|
`git clone --recursive https://akkoma.dev/FoundKeyGang/FoundKey foundkey`
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
3. Navigate to the repository
|
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
`cd foundkey`
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
4. Install FoundKey's dependencies
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
`yarn install`
|
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
*4.* Configure FoundKey
|
2022-07-29 05:57:40 +00:00
|
|
|
----------------------------------------------------------------
|
2022-07-29 20:00:31 +00:00
|
|
|
1. Copy `.config/example.yml` to `.config/default.yml`.
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
`cp .config/example.yml .config/default.yml`
|
|
|
|
|
2022-07-29 20:00:31 +00:00
|
|
|
2. Edit `default.yml` with a text editor
|
|
|
|
- Make sure you set the PostgreSQL and Redis settings correctly.
|
|
|
|
- Use a strong password for the PostgreSQL user and take note of it since it'll be needed later.
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
*5.* Build FoundKey
|
2022-07-29 05:57:40 +00:00
|
|
|
----------------------------------------------------------------
|
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
Build foundkey with the following:
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
`NODE_ENV=production yarn build`
|
|
|
|
|
|
|
|
If you're still encountering errors about some modules, use node-gyp:
|
|
|
|
|
|
|
|
1. `npx node-gyp configure`
|
|
|
|
2. `npx node-gyp build`
|
|
|
|
3. `NODE_ENV=production yarn build`
|
|
|
|
|
|
|
|
*6.* Init DB
|
|
|
|
----------------------------------------------------------------
|
|
|
|
1. 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
|
2022-07-29 06:09:26 +00:00
|
|
|
user that will later run FoundKey, or it could cause problems later.
|
2022-07-29 05:57:40 +00:00
|
|
|
The encoding of the database should be UTF-8.
|
|
|
|
|
2022-07-29 06:12:30 +00:00
|
|
|
```sh
|
|
|
|
sudo -u postgres psql
|
|
|
|
```
|
2022-07-29 06:09:26 +00:00
|
|
|
|
2022-07-29 06:12:30 +00:00
|
|
|
```sql
|
|
|
|
create database foundkey with encoding = 'UTF8';
|
|
|
|
create user foundkey with encrypted password '{YOUR_PASSWORD}';
|
|
|
|
grant all privileges on database foundkey to foundkey;
|
|
|
|
\q
|
|
|
|
```
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
2. Run the database initialisation
|
|
|
|
`yarn run init`
|
|
|
|
|
2022-07-29 20:00:31 +00:00
|
|
|
*7.* Running FoundKey
|
2022-07-29 05:57:40 +00:00
|
|
|
----------------------------------------------------------------
|
2022-07-29 06:09:26 +00:00
|
|
|
Well done! Now, you can begin using FoundKey.
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 20:00:31 +00:00
|
|
|
### Launching manually
|
|
|
|
Run `NODE_ENV=production npm start` to launch FoundKey manually. To stop the server, use Ctrl-C.
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
### Launch with systemd
|
|
|
|
|
2022-07-29 20:00:31 +00:00
|
|
|
1. Run `systemctl --edit --full --force foundkey.service`, and paste the following:
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:12:30 +00:00
|
|
|
```ini
|
|
|
|
[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
|
|
|
|
```
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 20:00:31 +00:00
|
|
|
2. Save the file, then enable and start FoundKey.
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 20:00:31 +00:00
|
|
|
`systemctl enable --now foundkey`
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
You can check if the service is running with `systemctl status foundkey`.
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
### Launch with OpenRC
|
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
1. Copy the following text to `/etc/init.d/foundkey`:
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:12:30 +00:00
|
|
|
```sh
|
|
|
|
#!/sbin/openrc-run
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:12:30 +00:00
|
|
|
name=foundkey
|
|
|
|
description="FoundKey daemon"
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:12:30 +00:00
|
|
|
command="/usr/bin/npm"
|
|
|
|
command_args="start"
|
|
|
|
command_user="foundkey"
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:12:30 +00:00
|
|
|
supervisor="supervise-daemon"
|
|
|
|
supervise_daemon_args=" -d /home/foundkey/foundkey -e NODE_ENV=\"production\""
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:12:30 +00:00
|
|
|
pidfile="/run/${RC_SVCNAME}.pid"
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:12:30 +00:00
|
|
|
depend() {
|
|
|
|
need net
|
|
|
|
use logger
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:12:30 +00:00
|
|
|
# alternatively, uncomment if using nginx reverse proxy
|
|
|
|
#use logger nginx
|
|
|
|
}
|
|
|
|
```
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
2. Set the service to start on boot
|
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
`rc-update add foundkey`
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
3. Start the FoundKey service
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
`rc-service foundkey start`
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
You can check if the service is running with `rc-service foundkey status`.
|
2022-07-29 05:57:40 +00:00
|
|
|
|
2022-07-29 06:09:26 +00:00
|
|
|
### How to update your FoundKey server to the latest version
|
|
|
|
1. `git pull`
|
|
|
|
2. `git submodule update --init`
|
|
|
|
3. `yarn install`
|
|
|
|
4. `NODE_ENV=production yarn build`
|
|
|
|
5. `yarn migrate`
|
|
|
|
6. Restart your FoundKey process to apply changes
|
|
|
|
7. Enjoy
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
If you encounter any problems with updating, please try the following:
|
|
|
|
1. `yarn clean` or `yarn cleanall`
|
2022-07-29 06:09:26 +00:00
|
|
|
2. Retry update (Don't forget `yarn install`)
|
2022-07-29 05:57:40 +00:00
|
|
|
|
|
|
|
----------------------------------------------------------------
|
|
|
|
|
2022-07-29 06:10:19 +00:00
|
|
|
If you have any questions or troubles, feel free to contact us on IRC (`#foundkey` on `irc.akkoma.dev`, port `6697` with SSL)!
|