You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.5 KiB
119 lines
3.5 KiB
# Deploy FreshRSS with Docker |
|
* See also: |
|
* https://hub.docker.com/r/freshrss/freshrss/ |
|
* https://cloud.docker.com/app/freshrss/repository/docker/freshrss/freshrss |
|
|
|
## Install Docker |
|
|
|
```sh |
|
curl -fsSL https://get.docker.com/ -o get-docker.sh |
|
sh get-docker.sh |
|
``` |
|
|
|
## Optional: Build Docker image of FreshRSS |
|
Optional, as a *less recent* online image can be automatically fetched during the next step (run), |
|
but online images are not available for as many platforms as if you build yourself. |
|
|
|
```sh |
|
# First time only |
|
git clone https://github.com/FreshRSS/FreshRSS.git |
|
|
|
cd ./FreshRSS/ |
|
git pull |
|
sudo docker pull alpine:3.7 |
|
sudo docker build --tag freshrss/freshrss -f Docker/Dockerfile . |
|
``` |
|
|
|
## Run FreshRSS |
|
|
|
Example using SQLite, and exposing FreshRSS on port 8080. You may have to adapt the network parameters to fit your needs. |
|
|
|
```sh |
|
# You can optionally run from the directory containing the FreshRSS source code: |
|
cd ./FreshRSS/ |
|
|
|
# The data will be saved on the host in `./data/` |
|
mkdir -p ./data/ |
|
|
|
sudo docker run -dit --restart unless-stopped --log-opt max-size=10m \ |
|
-v $(pwd)/data:/var/www/FreshRSS/data \ |
|
-p 8080:80 \ |
|
--name freshrss freshrss/freshrss |
|
``` |
|
|
|
### Examples with external databases |
|
|
|
You may want to use other link methods such as Docker bridges, and use Docker volumes for the data, but here are some simple examples: |
|
|
|
#### MySQL |
|
See https://hub.docker.com/_/mysql/ |
|
|
|
```sh |
|
sudo docker run -d -v /path/to/mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=rootpass -e MYSQL_DATABASE=freshrss -e MYSQL_USER=freshrss -e MYSQL_PASSWORD=pass --name mysql mysql |
|
sudo docker run -dit --restart unless-stopped --log-opt max-size=10m \ |
|
-v $(pwd)/data:/var/www/FreshRSS/data \ |
|
--link mysql -p 8080:80 \ |
|
--name freshrss freshrss/freshrss |
|
``` |
|
|
|
#### PostgreSQL |
|
See https://hub.docker.com/_/postgres/ |
|
|
|
```sh |
|
sudo docker run -d -v /path/to/pgsql-data:/var/lib/postgresql/data -e POSTGRES_DB=freshrss -e POSTGRES_USER=freshrss -e POSTGRES_PASSWORD=pass --name postgres postgres |
|
sudo docker run -dit --restart unless-stopped --log-opt max-size=10m \ |
|
-v $(pwd)/data:/var/www/FreshRSS/data \ |
|
--link postgres -p 8080:80 \ |
|
--name freshrss freshrss/freshrss |
|
``` |
|
|
|
## Update |
|
|
|
```sh |
|
# Rebuild an image (see build section above) or get a new online version: |
|
sudo docker pull freshrss/freshrss |
|
# And then |
|
sudo docker stop freshrss |
|
sudo docker rename freshrss freshrss_old |
|
# See the run section above for the full command |
|
sudo docker run ... |
|
# If everything is working, delete the old container |
|
sudo docker rm freshrss_old |
|
``` |
|
|
|
## Command line |
|
|
|
```sh |
|
sudo docker exec --user apache -it freshrss php ./cli/list-users.php |
|
``` |
|
|
|
See the [CLI documentation](../cli/) for all the other commands. |
|
|
|
### Cron job to refresh feeds |
|
Set a cron job up on your host machine, calling the `actualize_script.php` inside the FreshRSS Docker instance. |
|
|
|
#### Example on Debian / Ubuntu |
|
Create `/etc/cron.d/FreshRSS` with: |
|
|
|
``` |
|
7,37 * * * * root docker exec --user apache -it freshrss php ./app/actualize_script.php > /tmp/FreshRSS.log 2>&1 |
|
``` |
|
|
|
## Debugging |
|
|
|
```sh |
|
# See FreshRSS data (it is on the host) |
|
cd ./data/ |
|
# See Web server logs |
|
sudo docker logs -f freshrss |
|
|
|
# Enter inside FreshRSS docker container |
|
sudo docker exec -it freshrss sh |
|
## See FreshRSS root inside the container |
|
ls /var/www/FreshRSS/ |
|
``` |
|
|
|
## Deployment in production |
|
|
|
Use a reverse proxy on your host server, such as [Træfik](https://traefik.io/) or [nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/), |
|
with HTTPS, for instance using [Let’s Encrypt](https://letsencrypt.org/).
|
|
|