[Newbie] Blank page with docker-compose installation and nginx reverse proxy

Hey guys,

I’m brand new to self hosting and have nearly no experience with managing servers, so bear with me. Been setting up my first VPS for the past three days and have a huge headache from hours upon hours spent googling things, but I can’t for the life of me get TT-RSS to work.

I think I managed to get the nginx reverse proxy with https (using certbot) to work okay, but then again I’m pretty out of my depth here. I set it up to point to http://localhost:8280/tt-rss/, but when I open my domain at the right address all I get is a blank page with the correct title (“Tiny Tiny RSS: Login”).
When I searched, people said a blank page points to a PHP error, but I’m not sure what to do with that in a dockerized container.

Here’s my .env file. I didn’t change much because I’m using a reverse proxy:

.env
POSTGRES_USER=redacted
POSTGRES_PASSWORD=redacted

OWNER_UID=1000
OWNER_GID=1000

# You can keep this as localhost unless you want to use the ssl sidecar 
# container (I suggest terminating ssl on the reverse proxy instead).
HTTP_HOST=localhost

# You will likely need to set this to the correct value, see README.md
# for more information.
SELF_URL_PATH=http://localhost:8280/tt-rss/

# bind exposed port to 127.0.0.1 by default in case reverse proxy is used.
# if you plan to run the container standalone and need origin port exposed
# use next HTTP_PORT definition (or remove "127.0.0.1:").
HTTP_PORT=127.0.0.1:8280
#HTTP_PORT=8280

Here’s my nginx config I’m using (domain name redacted):

nginx config
server {

  server_name redacted;

  location /rss {
      proxy_pass http://localhost:8280/tt-rss/;
      proxy_buffering off;
      proxy_set_header X-Real-IP $remote_addr; *Tried it with and without this line, changed nothing*
  }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/redacted/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/redacted/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 = redacted) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


  listen 80;
  listen [::]:80;

  server_name redacted;
    return 404; # managed by Certbot
}

Tried opening the dev console to see what’s going on, and I’m getting a whole bunch of error messages:

dev console entries
GEThttps://redacted.com/rss
[HTTP/1.1 200 OK 423ms]

GEThttps://redacted.com/lib/prototype.js?1582159011
[HTTP/1.1 404 Not Found 127ms]

GEThttps://redacted.com/lib/dojo/dojo.js?1582159011
[HTTP/1.1 404 Not Found 386ms]

GEThttps://redacted.com/lib/dojo/tt-rss-layer.js?1582159011
[HTTP/1.1 404 Not Found 255ms]

GEThttps://redacted.com/js/common.js?1582159011
[HTTP/1.1 404 Not Found 385ms]

GEThttps://redacted.com/js/utility.js?1582159011
[HTTP/1.1 404 Not Found 379ms]

GEThttps://redacted.com/errors.php?1582159011&mode=js
[HTTP/1.1 404 Not Found 389ms]

Loading failed for the <script> with source “https://redacted.com/lib/prototype.js?1582159011”. rss:7:1
Loading failed for the <script> with source “https://redacted.com/lib/dojo/dojo.js?1582159011”. rss:8:1
GEThttps://redacted.com/lib/dojo/tt-rss-layer.js?1582159011
[HTTP/1.1 404 Not Found 127ms]

Loading failed for the <script> with source “https://redacted.com/lib/dojo/tt-rss-layer.js?1582159011”. rss:9:1
GEThttps://redacted.com/lib/prototype.js?1582159011
[HTTP/1.1 404 Not Found 126ms]

Loading failed for the <script> with source “https://redacted.com/lib/prototype.js?1582159011”. rss:10:1
GEThttps://redacted.com/js/common.js?1582159011
[HTTP/1.1 404 Not Found 127ms]

Loading failed for the <script> with source “https://redacted.com/js/common.js?1582159011”. rss:11:1
GEThttps://redacted.com/js/utility.js?1582159011
[HTTP/1.1 404 Not Found 129ms]

Loading failed for the <script> with source “https://redacted.com/js/utility.js?1582159011”. rss:12:1
GEThttps://redacted.com/errors.php?1582159011&mode=js
[HTTP/1.1 404 Not Found 129ms]

Loading failed for the <script> with source “https://redacted.com/errors.php?1582159011&mode=js”. rss:13:1
ReferenceError: require is not defined
rss:28:3
GEThttps://redacted.com/images/favicon.png
[HTTP/1.1 404 Not Found 0ms]

Hopefully it’s some dumb beginner error that can be quickly fixed? Some dumb people advice would be appreciated since I’m quite new to this and have just about no back-end knowledge.


tt-rss version (including git commit id):
Latest one I think? Been following the dynamic installation guide

Platform (i.e. Linux distro, PHP, PostgreSQL, etc) versions:
Debian 10 server with the dynamic docker-compose image and whatever versions of the above it contains

Thanks a bunch in advance!

it looks like gogs container on git.tt-rss.org got updated which broke it, so you can’t get upstream source right now. you can use static installation with images from docker hub for the time being.

e: it’s up now.

Fixed it!

The gog container update didn’t turn out to be my issue though.

My nginx reverse proxy configuration was wrong, had to tinker a bit with the location and proxy_pass paths to make everything work. Very happy with it now!

Here’s my updated config file in case anyone else is going to have trouble with it in the future and happens to come along this thread.

/etc/nginx/conf.d/ttrss.conf
server {

  server_name redacted.com;

  listen [::]:443 ssl ipv6only=on; # managed by Certbot
  listen 443 ssl; # managed by Certbot
  ssl_certificate /etc/letsencrypt/live/redacted.com/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/redacted.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
  
  location /tt-rss{
      proxy_pass http://localhost:8280;
      proxy_buffering off;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    if ($host = redacted.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


  listen 80;
  listen [::]:80;

  server_name redacted.com;
    return 404; # managed by Certbot
}