FoundKey/docs/INSTALL.md

204 lines
5.2 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.
2022-07-29 05:57:40 +00:00
In debian for exemple :
```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:
* **[Node.js](https://nodejs.org/en/)** (16.x)
* **[PostgreSQL](https://www.postgresql.org/)** (12.x / 13.x is preferred)
* **[Redis](https://redis.io/)**
* A C/C++ compiler toolchain like **GCC** or **Clang**.
* **[Python](https://python.org/)** (3.x)
2022-07-29 05:57:40 +00:00
##### Optional
2022-07-29 06:09:26 +00:00
* [Yarn](https://yarnpkg.com/) - *Optional but recommended for security reasons. If you won't 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 -
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.
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 06:09:26 +00:00
`git clone --recursive https://akkoma.dev/FoundKeyGang/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 the `.config/example.yml` and rename it to `default.yml`.
`cp .config/example.yml .config/default.yml`
2. Edit `default.yml`
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.* That is it.
----------------------------------------------------------------
2022-07-29 06:09:26 +00:00
Well done! Now, you can begin using FoundKey.
2022-07-29 05:57:40 +00:00
### Launch normally
Just `NODE_ENV=production npm start`. GLHF!
### Launch with systemd
1. Create a systemd service here
2022-07-29 06:09:26 +00:00
`/etc/systemd/system/foundkey.service`
2022-07-29 05:57:40 +00:00
2. Edit it, and paste this and save:
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 06:09:26 +00:00
3. Reload systemd and enable the foundkey service.
2022-07-29 05:57:40 +00:00
2022-07-29 06:09:26 +00:00
`systemctl daemon-reload ; systemctl enable foundkey`
2022-07-29 05:57:40 +00:00
2022-07-29 06:09:26 +00:00
4. Start the foundkey service.
2022-07-29 05:57:40 +00:00
2022-07-29 06:09:26 +00:00
`systemctl start 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)!