182 lines
3.9 KiB
Markdown
182 lines
3.9 KiB
Markdown
# Installation
|
|
|
|
## Server prerequisites
|
|
|
|
Your instance will need [docker](https://docs.docker.com/engine/install/) and [docker-compose](https://docs.docker.com/compose/install/) installed and working.
|
|
|
|
## Setup
|
|
|
|
Download the [docker-compose file](https://github.com/NicolasConstant/BirdsiteLive/blob/master/docker-compose.yml):
|
|
|
|
```
|
|
sudo curl -L https://raw.githubusercontent.com/NicolasConstant/BirdsiteLive/master/docker-compose.yml -o docker-compose.yml
|
|
```
|
|
|
|
Then edit file:
|
|
|
|
```
|
|
sudo nano docker-compose.yml
|
|
```
|
|
|
|
### Attributes to change in the docker-compose file
|
|
|
|
#### Personal info
|
|
|
|
* `Instance:Domain` the domain name you'll be using, for example use `birdsite.live` for the URL `https://birdsite.live`
|
|
* `Instance:AdminEmail` the admin's email, will be displayed in the instance /.well-known/nodeinfo endpoint
|
|
|
|
#### Database credentials
|
|
|
|
The database credentials must be changed the same way in the **server** and **db** section.
|
|
|
|
* database name:
|
|
* `Db:Name`
|
|
* `POSTGRES_DB`
|
|
* database user name:
|
|
* `Db:User`
|
|
* `POSTGRES_USER`
|
|
* database user password:
|
|
* `Db:Password`
|
|
* `POSTGRES_PASSWORD`
|
|
|
|
## Startup
|
|
|
|
Launch the app with:
|
|
|
|
```
|
|
docker-compose up -d
|
|
```
|
|
|
|
By default the app will be available on the port 5000
|
|
|
|
## Nginx
|
|
|
|
On a Debian based distrib:
|
|
|
|
```
|
|
sudo apt update
|
|
sudo apt install nginx
|
|
```
|
|
|
|
Check nginx status:
|
|
|
|
```
|
|
sudo systemctl status nginx
|
|
```
|
|
|
|
### Create nginx configuration
|
|
|
|
Create your nginx configuration
|
|
|
|
```
|
|
sudo nano /etc/nginx/sites-enabled/{your-domain-name.com}
|
|
```
|
|
|
|
And fill your service block as follow:
|
|
|
|
```
|
|
server {
|
|
listen 80;
|
|
server_name {your-domain-name.com};
|
|
location / {
|
|
proxy_pass http://localhost:5000;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection keep-alive;
|
|
proxy_set_header Host $host;
|
|
proxy_cache_bypass $http_upgrade;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
}
|
|
}
|
|
```
|
|
|
|
Save and start/restart your Nginx service
|
|
|
|
```
|
|
sudo service nginx start
|
|
# or restart it if its already started
|
|
sudo service nginx restart
|
|
```
|
|
|
|
### Secure your hosted application with SSL
|
|
|
|
After having a domain name pointing to your instance, install and setup certbot:
|
|
|
|
```
|
|
sudo apt install certbot python3-certbot-nginx
|
|
sudo certbot --nginx -d {your-domain-name.com}
|
|
```
|
|
|
|
Make sure you're redirecting all traffic to https when asked.
|
|
|
|
Finally check that the auto-revewal will work as espected:
|
|
|
|
```
|
|
sudo certbot renew --dry-run
|
|
```
|
|
|
|
### Set the firewall
|
|
|
|
Make sure you're securing your firewall correctly:
|
|
|
|
```
|
|
sudo apt install ufw #if not installed
|
|
sudo ufw app list
|
|
sudo ufw allow 22/tcp
|
|
sudo ufw allow 80/tcp
|
|
sudo ufw allow 443/tcp
|
|
sudo ufw enable
|
|
sudo ufw status
|
|
```
|
|
|
|
You should now have an up and running BirdsiteLIVE instance!
|
|
|
|
## Updating
|
|
|
|
Make sure your data belong outside the containers before migrating (set by default).
|
|
|
|
To update your installation to the latest release:
|
|
|
|
```
|
|
# Edit `docker-compose.yml` to update the version, if you have one specified
|
|
# Pull new images
|
|
docker-compose pull
|
|
# Start a new container, automatically removes old one
|
|
docker-compose up -d
|
|
```
|
|
|
|
## Auto-Updating
|
|
|
|
To set auto-updates on your deployment, add to the `docker-compose.yml` file this section:
|
|
|
|
```diff
|
|
version: "3"
|
|
|
|
networks:
|
|
birdsitelivenetwork:
|
|
external: false
|
|
|
|
services:
|
|
server:
|
|
image: nicolasconstant/birdsitelive:latest
|
|
[...]
|
|
|
|
db:
|
|
image: postgres:9.6
|
|
[...]
|
|
|
|
+ watchtower:
|
|
+ image: containrrr/watchtower
|
|
+ restart: always
|
|
+ container_name: watchtower
|
|
+ environment:
|
|
+ - WATCHTOWER_CLEANUP=true
|
|
+ volumes:
|
|
+ - /var/run/docker.sock:/var/run/docker.sock
|
|
+ command: --interval 300
|
|
```
|
|
|
|
## More options
|
|
|
|
You can find more options available [here](https://github.com/NicolasConstant/BirdsiteLive/blob/master/VARIABLES.md)
|