Dockerized tt-rss using docker-compose
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
Andrew Dolgov 59eb978976 updater: wait until app container finishes initializing instead of checking for config.php 5 years ago
app updater: wait until app container finishes initializing instead of checking for config.php 5 years ago
web switch to caddy from nginx 5 years ago
web-ssl Accept Let's Encrypt TOS when using web-ssl 5 years ago
.env-dist clarify what HTTP_HOST does in .env-dist 5 years ago
.gitignore 1. move .env to .env-dist so local customization is not clashing with the 5 years ago
README.md update README a bit more 5 years ago
docker-compose.yml prevent updater from failing repeatedly on first startup while app volume is not ready 5 years ago

README.md

A primitive set of scripts to deploy tt-rss via docker-compose

The idea is to provide tt-rss working (and updating) out of the box with minimal fuss.

This setup is still WIP. Some features may be unimplemented or broken. Check the following before deploying:

General outline of the configuration is as follows:

  • separate containers (frontend: caddy, database: pgsql, app and updater: php/fpm)
  • tt-rss updates from git master repository on container restart
  • tt-rss source code is stored on a persistent volume so plugins, etc. could be easily added
  • config.php is generated if it is missing
  • database schema is installed automatically if it is missing
  • Caddy has its http port exposed to the outside
  • optional SSL support via Caddy w/ automatic letsencrypt certificates
  • feed updates are handled via update daemon started in a separate container (updater)

Installation

Check out scripts from Git:

git clone https://git.tt-rss.org/fox/ttrss-docker-compose.git ttrss-docker && cd ttrss-docker

Edit configuration files:

Copy .env-dist to .env and edit any relevant variables you need changed.

  • You will likely have to change SELF_URL_PATH which should equal fully qualified tt-rss URL as seen when opening it in your web browser. If this field is set incorrectly, you will likely see the correct value in the tt-rss fatal error message.

Note: SELF_URL_PATH is updated in generated tt-rss config.php automatically on container restart. You don't need to modify config.php manually for this.

  • By default, container binds to localhost port 8280. If you want the container to be accessible on the net, without using a reverse proxy sharing same host, you will need to remove 127.0.0.1: from HTTP_PORT variable in .env.

Build and start the container

docker-compose up --build

See docker-compose documentation for more information and available options.

Updating

Restarting the container will update tt-rss from the origin repository. If database needs to be updated, tt-rss will prompt you to do so on next page refresh.

Updating container scripts

  1. Stop the containers: docker-compose down && docker-compose rm
  2. Update scripts from git: git pull origin master and apply any necessary modifications to .env, etc.
  3. Rebuild and start the containers: docker-compose up --build

Using SSL with Letsencrypt

  • HTTP_HOST in .env should be set to a valid hostname (i.e. no localhost or IP address)
  • comment out web container, uncomment web-ssl in docker-compose.yml
  • SELF_URL_PATH in .env should not include a port as the container is going to use default https port
  • ports 80 and 443 should be externally accessible i.e. not blocked by firewall and/or conflicting with host services

How do I add plugins and themes?

By default, tt-rss code is stored on a persistent docker volume (app). You can find its location like this:

docker volume inspect ttrss-docker_app | grep Mountpoint

Alternatively, you can mount any host directory as /var/www/html by updating docker-compose.yml, i.e.:

volumes:
      - app:/var/www/html

Replace with:

volumes:
      - /opt/tt-rss:/var/www/html

Copy and/or git clone any third party plugins into plugins.local as usual.

How do I put this container behind a reverse proxy?

A common pattern is shared nginx doing SSL termination, etc.

   location /tt-rss/ {
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_pass http://127.0.0.1:8280/tt-rss/;
      break;
   }

You will need to set SELF_URL_PATH to a correct (i.e. visible from the outside) value in the .env file.

Suggestions / bug reports