169 lines
No EOL
4.9 KiB
Markdown
169 lines
No EOL
4.9 KiB
Markdown
# Outbag Server
|
|
Did you know that you can host your own outbag instance?
|
|
|
|
This repo contains the official outbag server.
|
|
|
|
## Setup
|
|
**\*Keep in mind that you need a valid SSL certificate for your domain**
|
|
|
|
### Using docker
|
|
[Find docker instructions in the docker repo](https://gitlab.com/outbag/containers)
|
|
|
|
### Manually
|
|
#### Requirements
|
|
- `git`
|
|
- `nodejs` & `npm`
|
|
- a mysql database, we recommend `mariadb`
|
|
|
|
#### Setting up MariaDB
|
|
|
|
1. Install `mariadb` using your system's package manager. e.g.:
|
|
```bash
|
|
sudo apt install mariadb-server
|
|
```
|
|
2. Secure your installation
|
|
```bash
|
|
sudo mysql_secure_installation
|
|
```
|
|
3. Start the MySQL/MariaDB command line mode (you have to enter the befor given paswsord):
|
|
```bash
|
|
sudo mysql -u root -p
|
|
```
|
|
4. Then a MariaDB [root]> prompt will appear.
|
|
Create an user and a databse:
|
|
```sql
|
|
CREATE USER 'outbagUser'@'localhost' IDENTIFIED BY 'aSecurePassword';
|
|
CREATE DATABASE IF NOT EXISTS outbag CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
|
GRANT ALL PRIVILEGES ON outbag.* TO 'outbagUser'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
```
|
|
To not forget to replace username, password and database name.
|
|
5. You can quit the prompt by entering:
|
|
```sql
|
|
quit;
|
|
```
|
|
|
|
|
|
#### Install
|
|
1. Clone this git repo
|
|
```bash
|
|
git clone https://gitlab.com/outbag/server/ outbag-server
|
|
cd outbag-server
|
|
```
|
|
2. Download & install the dependecies
|
|
```bash
|
|
npm install
|
|
```
|
|
#### Setup - with config file
|
|
1. Create a config file, e.g. in `/opt/config.juml`,
|
|
or run the server once,
|
|
to autogenerate that file.
|
|
```bash
|
|
node . -c /opt/config.juml
|
|
```
|
|
2. The server will crash.
|
|
Now open the config file with your favourite text editor.
|
|
You have to change the database login details.
|
|
3. If you do not proxy your Server from https to http,
|
|
you have to add the path to your ssl certificate and enable ssl.
|
|
4. After closing the file,
|
|
you can restart the server (It should not crash this time)
|
|
```bash
|
|
node . -c /opt/config.juml
|
|
```
|
|
|
|
#### Setup - with environment variables
|
|
1. List of environment variables with default values:
|
|
```
|
|
OUTBAG_PORT=7223
|
|
OUTBAG_EXPOSED_PORT=7223
|
|
OUTBAG_EXPOSED_PATH=/
|
|
OUTBAG_HOST=localhost
|
|
OUTBAG_CERT_LIVE_SEC=2592000
|
|
|
|
OUTBAG_SSL_ENABLED=false
|
|
OUTBAG_SSL_PRIVATE_KEY=privkey.pem
|
|
OUTBAG_SSL_CERT=cert.pem
|
|
OUTBAG_SSL_CHAIN=chain.pem
|
|
|
|
OUTBAG_MYSQL_HOST=localhost
|
|
OUTBAG_MYSQL_PORT=3306
|
|
OUTBAG_MYSQL_USER=admin
|
|
OUTBAG_MYSQL_PASSWORD=12346789
|
|
OUTBAG_MYSQL_DATABASE=outbag
|
|
|
|
OUTBAG_MAX_USERS=0
|
|
OUTBAG_DEFAULT_MAX_ROOMS=3
|
|
OUTBAG_DEFAULT_MAX_ROOMS_SIZE=10000
|
|
OUTBAG_DEFAULT_MAX_USERS_PER_ROOM=5
|
|
```
|
|
Only set the environment variables you want to change.
|
|
You have to set the MYSQL varibales.
|
|
2. If you do not proxy your Server from https to http,
|
|
you have to set the path to your ssl certificate and enable ssl.
|
|
3. Start the server
|
|
```bash
|
|
node .
|
|
```
|
|
|
|
### Hosting the UI
|
|
As of writing,
|
|
there is no official method of having the backend host the UI yet
|
|
(we are working on it).
|
|
|
|
For the time being,
|
|
just follow the [manual guide](https://gitlab.com/outbag/app/)
|
|
|
|
### Setting up and using a proxy
|
|
**NOTE: This is for advanced users only**
|
|
|
|
If you do not want to expose multiple ports,
|
|
you can use a proxy to expose both the app and the server on the same port.
|
|
|
|
1. Download `nginx`
|
|
(or your favourite `nginx` alternative, e.g. `apache`)
|
|
using your system's package manager.
|
|
e.g.:
|
|
```bash
|
|
sudo apt install nginx
|
|
```
|
|
2. Open the config file using your favourite text editor.
|
|
_NOTE: The nginx config file is probably located at /etc/nginx/http.d/default.conf_
|
|
You probably want something similar to this in your config file:
|
|
```conf
|
|
location /api {
|
|
if ($request_uri ~* "/api(/.*$)") {
|
|
set $path_remainder $1;
|
|
}
|
|
proxy_pass http://127.0.0.1:7223/$path_remainder;
|
|
proxy_set_header Host $http_host;
|
|
proxy_buffering off;
|
|
}
|
|
location /.well-known/outbag/server {
|
|
proxy_pass http://127.0.0.1:7223/.well-known/outbag/server;
|
|
proxy_set_header Host $http_host;
|
|
proxy_buffering off;
|
|
}
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8080$request_uri;
|
|
proxy_set_header Host $http_host;
|
|
proxy_buffering off;
|
|
}
|
|
```
|
|
3. Next up enable and start the system service
|
|
(e.g. `systemctl enable nginx` and `systemctl start nginx`;
|
|
or `rc-update add nginx` and `rc-service nginx start`)
|
|
4. Now open `127.0.0.1` or `<your.domain.com>` (when using https)
|
|
in your browser and you should be prompted with the webapp
|
|
(in case you enabled it)
|
|
5. To be able to use the server properly,
|
|
you should go back to the `docker-compose.yml` file
|
|
and change the `OUTBAG_EXPOSED_PATH` variable to point to `/api`.
|
|
6. To finish of,
|
|
restart the containers:
|
|
```bash
|
|
docker-compose down
|
|
docker-compose up -d
|
|
```
|
|
## API
|
|
[API docu](https://gitlab.com/outbag/server/-/blob/main/docs/api.md) |