parent
1b51ab4857
commit
06b230d135
110
Installation.md
Normal file
110
Installation.md
Normal file
@ -0,0 +1,110 @@
|
||||
## Installation
|
||||
|
||||
To begin with, you will need the compiled jar file. You can either download it from the [release](https://git.arcusiridis.com/nova/Chatto/releases) releases section of this repo, or by building it from source.
|
||||
|
||||
On linux systems, place the jar file in a directory such as /var/lib/chatto or /var/www/chatto.
|
||||
|
||||
Place the below application.properties config file in the same directory -
|
||||
|
||||
```properties
|
||||
chatto.datasource.username = chatto_user
|
||||
chatto.datasource.password = test
|
||||
chatto.datasource.database-name = chatto_db
|
||||
chatto.datasource.url=localhost
|
||||
chatto.datasource.port=3306
|
||||
chatto.datasource.params=useSSL=false
|
||||
```
|
||||
|
||||
Then you would need to configure a reverse proxy, preferably with SSL. You can obtain a free SSL certificate from letsencrypt (be sure to donate if possible). Below is a sample nginx config -
|
||||
|
||||
```nginx
|
||||
upstream chat {
|
||||
server 127.0.0.1:8080;
|
||||
}
|
||||
|
||||
# Expires map
|
||||
map $sent_http_content_type $expires {
|
||||
default off;
|
||||
text/html epoch;
|
||||
text/css max;
|
||||
application/javascript max;
|
||||
~image/ max;
|
||||
}
|
||||
server {
|
||||
server_name chat.example.com;
|
||||
access_log off;
|
||||
error_log off;
|
||||
|
||||
expires $expires;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:8080;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
|
||||
#listen [::]:443 ssl ipv6only=on; # managed by Certbot
|
||||
listen 443 ssl; # managed by Certbot
|
||||
ssl_certificate /etc/letsencrypt/live/chat.example.com/fullchain.pem; # managed by Certbot
|
||||
ssl_certificate_key /etc/letsencrypt/live/chat.example.com/privkey.pem; # managed by Certbot
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
server {
|
||||
if ($host = chat.example.com) {
|
||||
return 301 https://$host$request_uri;
|
||||
} # managed by Certbot
|
||||
|
||||
|
||||
if ($host = www.chat.example.com) {
|
||||
return 301 https://$host$request_uri;
|
||||
} # managed by Certbot
|
||||
|
||||
|
||||
listen 80 ;
|
||||
listen [::]:80;
|
||||
server_name chat.example.com;
|
||||
return 404; # managed by Certbot
|
||||
}
|
||||
```
|
||||
Place the file in ```bash /etc/nginx/sites-available/``` (depending on your linux distro this may differ).
|
||||
|
||||
Now make a symlink - ```bash sudo ln -s /etc/nginx/sites-available/chatto /nginx/sites-enabled
|
||||
verify configration - ```bash sudo nginx -t```
|
||||
and restart nginx - ``` sudo systemctl restart nginx```
|
||||
|
||||
Now create a linux user -
|
||||
```bash sudo useradd -r -s /bin/false```
|
||||
|
||||
Next create a systemd script making use of the created user-
|
||||
```
|
||||
[Unit]
|
||||
Description=System Daemon for Chatto
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/path/to/chatto-jar/
|
||||
ExecStart=java -jar Chatto.jar --spring.profiles.active=prod
|
||||
User=chatto
|
||||
Type=simple
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
Take note of the spring profiles argument. It enabled the production profile. Omitting it would run the app in dev profile.
|
||||
|
||||
Name the file chatto.service and place it in ```/etc/systemd/systemd```.
|
||||
|
||||
Reload systemd daemon - ```bash sudo systemctl daemon-reload```
|
||||
Then start the service - ```bash sudo systemctl start chatto```
|
||||
|
||||
If everything went well then the app should start.
|
||||
Check with ```bash sudo systemctl status chatto``` and if it fails to start do ```sudo journalctl -u chatto```
|
Loading…
Reference in New Issue
Block a user