TandoorRecipes / recipes

Application for managing recipes, planning meals, building shopping lists and much much more!
https://docs.tandoor.dev
Other
5.55k stars 589 forks source link

Forever at 502 page, even after waiting hours #1950

Closed bonelifer closed 2 years ago

bonelifer commented 2 years ago

Issue

Just stays on the 502 error page. Left it sitting for over an hour.

Tandoor Version

docker image version current

OS Version

Ubuntu 20.04.4

Setup

Docker / Docker-Compose

Reverse Proxy

No reverse proxy

Other

No response

Environment file

# only set this to true when testing/debugging
# when unset: 1 (true) - dont unset this, just for development
DEBUG=0
SQL_DEBUG=0

# HTTP port to bind to
TANDOOR_PORT=9098

# hosts the application can run under e.g. recipes.mydomain.com,cooking.mydomain.com,...
ALLOWED_HOSTS=*

# random secret key, use for example `base64 /dev/urandom | head -c50` to generate one
# ---------------------------- REQUIRED -------------------------
SECRET_KEY=SuyperSecret
# ---------------------------------------------------------------

# your default timezone See https://timezonedb.com/time-zones for a list of timezones
TIMEZONE=America/Chicago

# add only a database password if you want to run with the default postgres, otherwise change settings accordingly
DB_ENGINE=django.db.backends.postgresql
# DB_OPTIONS= {} # e.g. {"sslmode":"require"} to enable ssl
POSTGRES_HOST=db_recipes
POSTGRES_PORT=5432
POSTGRES_USER=tandoor
# ---------------------------- REQUIRED -------------------------
POSTGRES_PASSWORD=doubleSuperSecret
# ---------------------------------------------------------------
POSTGRES_DB=tandoor

# database connection string, when used overrides other database settings.
# format might vary depending on backend
# DATABASE_URL = engine://username:password@host:port/dbname

# the default value for the user preference 'fractions' (enable/disable fraction support)
# default: disabled=0
FRACTION_PREF_DEFAULT=0

# the default value for the user preference 'comments' (enable/disable commenting system)
# default comments enabled=1
COMMENT_PREF_DEFAULT=1

# Users can set a amount of time after which the shopping list is refreshed when they are in viewing mode
# This is the minimum interval users can set. Setting this to low will allow users to refresh very frequently which
# might cause high load on the server. (Technically they can obviously refresh as often as they want with their own scripts)
SHOPPING_MIN_AUTOSYNC_INTERVAL=5

# Default for user setting sticky navbar
# STICKY_NAV_PREF_DEFAULT=1

# If base URL is something other than just / (you are serving a subfolder in your proxy for instance http://recipe_app/recipes/)
# Be sure to not have a trailing slash: e.g. '/recipes' instead of '/recipes/'
# SCRIPT_NAME=/recipes

# If staticfiles are stored at a different location uncomment and change accordingly, MUST END IN /
# this is not required if ytive path from the applications base path or the url of an external host
# STATIC_URL=/static/

# If mediafiles are stored at a different location uncomment and change accordingly, MUST END IN /
# this is not required if you are just using a subfolder
# This can either be a relative path from the applications base path or the url of an external host
# MEDIA_URL=/media/

# Serve mediafiles directly using gunicorn. Basically everyone recommends not doing this. Please use any of the examples
# provided that include an additional nxginx container to handle media file serving.
# If you know what you are doing turn this back on (1) to serve media files using djangos serve() method.
# when unset: 1 (true) - this is temporary until an appropriate amount of time has passed for everyone to migrate
GUNICORN_MEDIA=0

# S3 Media settings: store mediafiles in s3 or any compatible storage backend (e.g. minio)
# as long as S3_ACCESS_KEY is not set S3 features are disabled
# S3_ACCESS_KEY=
# S3_SECRET_ACCESS_KEY=
# S3_BUCKET_NAME=
# S3_REGION_NAME= # default none, set your region might be required
# S3_QUERYSTRING_AUTH=1 # default true, set to 0 to serve media from a public bucket without signed urls
# S3_QUERYSTRING_EXPIRE=3600 # number of seconds querystring are valid for
# S3_ENDPOINT_URL= # when using a custom endpoint like minio

# Email Settings, see https://docs.djangoproject.com/en/3.2/ref/settings/#email-host
# Required for email confirmation and password reset (automatically activates if host is set)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=465
EMAIL_HOST_USER=bonelifer
EMAIL_HOST_PASSWORD=SEDRET
EMAIL_USE_TLS=1
EMAIL_USE_SSL=1
# email sender address (default 'webmaster@localhost')
DEFAULT_FROM_EMAIL=bonelifer@gmail.com
# prefix used for account related emails (default "[Tandoor Recipes] ")
# ACCOUNT_EMAIL_SUBJECT_PREFIX=

# allow authentication via reverse proxy (e.g. authelia), leave off if you dont know what you are doing
# see docs for more information https://vabene1111.github.io/recipes/features/authentication/
# when unset: 0 (false)
REVERSE_PROXY_AUTH=0

# Default settings for spaces, apply per space and can be changed in the admin view
# SPACE_DEFAULT_MAX_RECIPES=0 # 0=unlimited recipes
# SPACE_DEFAULT_MAX_USERS=0 # 0=unlimited users per space
# SPACE_DEFAULT_MAX_FILES=0 # Maximum file storage for space in MB. 0 for unlimited, -1 to disable file upload.
# SPACE_DEFAULT_ALLOW_SHARING=1 # Allow users to share recipes with public links

# allow people to create accounts on your application instance (without an invite link)
# when unset: 0 (false)
# ENABLE_SIGNUP=0

# If signup is enabled you might want to add a captcha to it to prevent spam
# HCAPTCHA_SITEKEY=
# HCAPTCHA_SECRET=

# if signup is enabled you might want to provide urls to data protection policies or terms and conditions
# TERMS_URL=
# PRIVACY_URL=
# IMPRINT_URL=

# enable serving of prometheus metrics under the /metrics path
# ATTENTION: view is not secured (as per the prometheus default way) so make sure to secure it
# trough your web server (or leave it open of you dont care if the stats are exposed)
# ENABLE_METRICS=0

# allows you to setup OAuth providers
# see docs for more information https://vabene1111.github.io/recipes/features/authentication/
# SOCIAL_PROVIDERS = allauth.socialaccount.providers.github, allauth.socialaccount.providers.nextcloud,

# Should a newly created user from a social provider get assigned to the default space and given permission by default ?
# ATTENTION: This feature might be deprecated in favor of a space join and public viewing system in the future
# default 0 (false), when 1 (true) users will be assigned space and group
# SOCIAL_DEFAULT_ACCESS = 1

# if SOCIAL_DEFAULT_ACCESS is used, which group should be added
# SOCIAL_DEFAULT_GROUP=guest

# Django session cookie settings.ou are just using a subfolder
# This can either be a rela Can be changed to allow a single django application to authenticate several applications
# when running under the same database
# SESSION_COOKIE_DOMAIN=.example.com
# SESSION_COOKIE_NAME=sessionid # use this only to not interfere with non unified django applications under the same top level domain

# by default SORT_TREE_BY_NAME is disabled this will store all Keywords and Food in the order they are created
# enabling this setting makes saving new keywords and foods very slow, which doesn't matter in most usecases.
# however, when doing large imports of recipes that will create new objects, can increase total run time by 10-15x
# Keywords and Food can be manually sorted by name in Admin
# This value can also be temporarily changed in Admin, it will revert the next time the application is started
# This will be fixed/changed in the future by changing the implementation or finding a better workaround for sorting
# SORT_TREE_BY_NAME=0
# LDAP authentication
# default 0 (false), when 1 (true) list of allowed users will be fetched from LDAP server
#LDAP_AUTH=
#AUTH_LDAP_SERVER_URI=
#AUTH_LDAP_BIND_DN=
#AUTH_LDAP_BIND_PASSWORD=
#AUTH_LDAP_USER_SEARCH_BASE_DN=
#AUTH_LDAP_TLS_CACERTFILE=

# Enables exporting PDF (see export docs)
# Disabled by default, uncomment to enable
#ENABLE_PDF_EXPORT=1

# Recipe exports are cached for a certain time by default, adjust time if needed
# EXPORT_FILE_CACHE_DURATION=600

Docker-Compose file

version: "3"
services:
  db_recipes:
    restart: always
    image: postgres:11-alpine
    volumes:
      - ./postgresql:/var/lib/postgresql/data
    env_file:
      - ./.env

  web_recipes:
    restart: always
    image: vabene1111/recipes
    env_file:
      - ./.env
    volumes:
      - staticfiles:/opt/recipes/staticfiles
      - nginx_config:/opt/recipes/nginx/conf.d
      - ./mediafiles:/opt/recipes/mediafiles
    depends_on:
      - db_recipes

  nginx_recipes:
    image: nginx:mainline-alpine
    restart: always
    ports:
      - 9098:80
    env_file:
      - ./.env
    depends_on:
      - web_recipes
    volumes:
      - nginx_config:/etc/nginx/conf.d:ro
      - staticfiles:/static:ro
      - ./mediafiles:/media:ro

volumes:
  nginx_config:
  staticfiles:

Relevant logs

No response

bonelifer commented 2 years ago

Nginx log:

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf is not a file or does not exist
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/07/21 14:56:04 [notice] 1#1: using the "epoll" event method
2022/07/21 14:56:04 [notice] 1#1: nginx/1.23.1
2022/07/21 14:56:04 [notice] 1#1: built by gcc 11.2.1 20220219 (Alpine 11.2.1_git20220219) 
2022/07/21 14:56:04 [notice] 1#1: OS: Linux 5.13.0-7620-generic
2022/07/21 14:56:04 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2022/07/21 14:56:04 [notice] 1#1: start worker processes
2022/07/21 14:56:04 [notice] 1#1: start worker process 22
2022/07/21 14:56:04 [notice] 1#1: start worker process 23
2022/07/21 14:56:04 [notice] 1#1: start worker process 24
2022/07/21 14:56:04 [notice] 1#1: start worker process 25
2022/07/21 14:56:16 [error] 22#22: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.29.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "http://172.29.0.3:8080/", host: "localhost:9098"
172.29.0.1 - - [21/Jul/2022:14:56:16 +0000] "GET / HTTP/1.1" 502 4295 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0" "-"
2022/07/21 15:01:41 [error] 23#23: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 172.29.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "http://172.29.0.3:8080/", host: "localhost:9098"
172.29.0.1 - - [21/Jul/2022:15:01:41 +0000] "GET / HTTP/1.1" 502 4295 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0" "-"

bonelifer commented 2 years ago

Postgreql log:

PostgreSQL Database directory appears to contain a database; Skipping initialization

2022-07-21 14:56:03.206 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2022-07-21 14:56:03.207 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2022-07-21 14:56:03.219 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2022-07-21 14:56:03.254 UTC [21] LOG:  database system was interrupted; last known up at 2022-07-21 14:46:06 UTC
2022-07-21 14:56:03.707 UTC [21] LOG:  database system was not properly shut down; automatic recovery in progress
2022-07-21 14:56:03.716 UTC [21] LOG:  redo starts at 0/1A8BA80
2022-07-21 14:56:03.716 UTC [21] LOG:  invalid record length at 0/1A8BB60: wanted 24, got 0
2022-07-21 14:56:03.716 UTC [21] LOG:  redo done at 0/1A8BB28
2022-07-21 14:56:03.774 UTC [1] LOG:  database system is ready to accept connections

bonelifer commented 2 years ago

webrecipes log:

Checking configuration...
Waiting for database to be ready...
Database is ready
Migrating database
Operations to perform:
 Apply all migrations: account, admin, auth, authtoken, contenttypes, cookbook, sessions, sites, socialaccount
Running migrations:
 No migrations to apply.
Generating static files
js-reverse file written to /opt/recipes/cookbook/static/django_js_reverse

1 static file copied to '/opt/recipes/staticfiles', 629 unmodified, 1346 post-processed.
Done
[2022-07-21 14:56:27 +0000] [1] [INFO] Starting gunicorn 20.1.0
[2022-07-21 14:56:27 +0000] [1] [INFO] Listening at: http://0.0.0.0:9098 (1)
[2022-07-21 14:56:27 +0000] [1] [INFO] Using worker: sync
[2022-07-21 14:56:27 +0000] [12] [INFO] Booting worker with pid: 12

smilerz commented 2 years ago

@bonelifer you just posted your email password online, you should change it immediately.

You changed your tandoor port to 9098, so the docker config shouldn't have this line: - 9098:80

or delete this line TANDOOR_PORT=9098

bonelifer commented 2 years ago

Ok, yeah I noticed. Just changed it. Will try.

bonelifer commented 2 years ago

Commenting it out of the .env file got me to the initial setup page. Thanks