FoundKey/docs/INSTALL.md

202 lines
5.3 KiB
Markdown
Raw Normal View History

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.
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
### 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/)**
The following are needed to compile native npm modules:
* A C/C++ compiler toolchain like **GCC** or **Clang**.
* **[Python](https://python.org/)** (3.x)
2022-07-29 05:57:40 +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/)
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
# Optional dependencies
apt install ffmpeg
corepack enable # for yarn
```
You will need to adapt this for whichever OS you are using to host FoundKey.
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
`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
----------------------------------------------------------------
1. Copy `.config/example.yml` to `.config/default.yml`.
2022-07-29 05:57:40 +00:00
`cp .config/example.yml .config/default.yml`
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`
*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
### 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
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
2. Save the file, then enable and start FoundKey.
2022-07-29 05:57:40 +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)!