This page covers the five most common issues encountered when deploying or running GeoViable. Work through each accordion that matches your symptoms — every entry includes a diagnosis step, a fix, and where relevant a prevention tip.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/danizd/geoviable/llms.txt
Use this file to discover all available pages before exploring further.
Issue 1: API container restarts continuously (exit code 255)
Issue 1: API container restarts continuously (exit code 255)
Symptom: If you see Prevention: Add a
docker compose ps shows geoviable-api in a Restarting state with exit code 255.Cause: The entrypoint.sh and/or crontab scripts were checked out with Windows CRLF line endings. On the Linux container, the CRLF characters corrupt the #!/bin/bash shebang, so the kernel cannot locate the interpreter.Diagnosis: Inspect the last few log lines from the container:exec ./entrypoint.sh: no such file or directory, the cause is CRLF line endings.Fix (PowerShell): Strip the carriage returns, then rebuild the container:.gitattributes file to the repository root containing *.sh text eol=lf. Git will then normalise line endings automatically for every developer who clones the repository.Issue 2: Nginx returns 403 Forbidden on http://localhost
Issue 2: Nginx returns 403 Forbidden on http://localhost
Symptom: The browser shows a 403 Forbidden error when accessing If the directory is empty or
http://localhost.Cause: The frontend/build/ directory is empty — the React application was never compiled. Nginx has no static files to serve, so it returns 403.Diagnosis: Check whether index.html is present inside the build directory:index.html is missing, the build has not been run.Fix: Install dependencies and build the React app:This step must be completed before the first
docker compose up -d and must be re-run after every change to the frontend source code. Changes to frontend/src are not picked up automatically when running under Docker — only the compiled output in frontend/build/ is served by Nginx.Issue 3: API returns 500 — tables don't exist or PostGIS not installed
Issue 3: API returns 500 — tables don't exist or PostGIS not installed
Symptoms: The API returns HTTP 500 with one of these messages in the logs:Verify the tables were created:You should see 8 tables: the 7 environmental layer tables plus
relation "red_natura_2000" does not existfunction st_geomfromgeojson does not exist
init_db.sql script did not run when the container was first created. This happens in two scenarios:- The
pgdatavolume already existed from a previous deployment — PostgreSQL only runs init scripts against a brand-new, empty data directory. - On Windows, Docker sometimes creates
backend/initdb/01_init.sqlas a directory instead of a file (a known bug withkartoza/postgisandpostgis/postgisimages), so the schema is never applied.
layer_update_log.Issue 4: PDF report generated but shows NINGUNO risk with 0 affected layers
Issue 4: PDF report generated but shows NINGUNO risk with 0 affected layers
Symptom: The PDF is generated without errors, but every layer shows “No” in the overlap column and ”—” for the affected area. The overall risk level is reported as NINGUNO.Cause: The environmental layer tables are empty (zero rows). This is expected behaviour on a fresh installation — the spatial data must be loaded explicitly after the database schema is created.Diagnosis: Run this query to check the record count for every layer table:All counts should be greater than 0. Any table showing 0 needs data loaded.Fix — Option A: Manual load from ZIPs (recommended)Request the preprocessed environmental data ZIPs from daniel.zas.dacosta@gmail.com, place them in Fix — Option B: Automated update (requires internet)
backend/data/, then run:Issue 5: Cannot connect to database / health check fails
Issue 5: Cannot connect to database / health check fails
Symptom: The API health check returns an error, or the API logs show database connection failures.Diagnosis: Verify that the PostGIS extension is installed and that the container is reachable:If the command hangs or the container is not found, check that Fix: Open your The hostname must be
geoviable-db is running:.env file and confirm that DATABASE_URL uses the correct container name and credentials. The default value should be:geoviable-db (the Docker service name), not localhost, when the API is running inside Docker Compose. After editing .env, restart the API service: