{"id":9852,"date":"2025-09-02T15:52:07","date_gmt":"2025-09-02T18:52:07","guid":{"rendered":"https:\/\/www.fernandoquadro.com.br\/html\/?p=9852"},"modified":"2025-09-02T20:51:06","modified_gmt":"2025-09-02T23:51:06","slug":"conectar-banco-de-dados-externo-ao-geonode","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2025\/09\/02\/conectar-banco-de-dados-externo-ao-geonode\/","title":{"rendered":"Conectar banco de dados externo ao GeoNode"},"content":{"rendered":"<p>Prezado leitor,<\/p>\n<p>Se voc\u00ea est\u00e1 implantando o GeoNode na sua infraestrutura e deseja conectar um banco de dados j\u00e1 existente, este tutorial ir\u00e1 gui\u00e1-lo passo a passo para realizar a configura\u00e7\u00e3o corretamente.<\/p>\n<p><strong>1. Descobrir o endere\u00e7o IP da Rede Docker<\/strong><\/p>\n<p>Para identificar a rede que est\u00e1 rodando o seu GeoNode, execute:<\/p>\n<pre>\r\n\/opt\/geonode_custom\/my_geonode> docker network inspect my_geonode_default | grep Subnet\r\n<\/pre>\n<p><strong>2. Descobrir o IP da m\u00e1quina Linux<\/strong><\/p>\n<p>Para descobrir o endere\u00e7o IP da m\u00e1quina onde o Docker est\u00e1 rodando:<\/p>\n<pre>\r\n\/opt\/geonode_custom\/my_geonode> ifconfig\r\n<\/pre>\n<p><strong>3. Certificar que os containers Docker estejam inativos<\/strong><\/p>\n<pre>\r\ndocker-compose down\r\n<\/pre>\n<p><strong>4. Desabilitar o banco de dados interno do GeoNode<\/strong><\/p>\n<p>Edite o arquivo <b>docker-compose.yml<\/b> e comente as linhas referentes ao PostGIS interno, para evitar conflitos com o banco externo:<\/p>\n<pre>\r\n# PostGIS database.\r\n  #db:\r\n  #  image: ${COMPOSE_PROJECT_NAME}\/postgis:${POSTGRES_BASE_IMAGE_VERSION}\r\n  #  build:\r\n  #    context: .\/docker\/postgresql\r\n  #    dockerfile: Dockerfile\r\n  #    args:\r\n  #      - BASE_IMAGE_VERSION=${POSTGRES_BASE_IMAGE_VERSION}\r\n  #  command: postgres -c \"max_connections=${POSTGRESQL_MAX_CONNECTIONS}\"\r\n  #  container_name: db4${COMPOSE_PROJECT_NAME}\r\n  #  env_file:\r\n  #    - .env\r\n  #  volumes:\r\n  #    - dbdata:\/var\/lib\/postgresql\/data\r\n  #    - dbbackups:\/pg_backups\r\n  #  restart: unless-stopped\r\n  #  healthcheck:\r\n  #    test: \"pg_isready -d postgres -U postgres\"\r\n  # uncomment to enable remote connections to postgres\r\n  #ports:\r\n  #  - \"5432:5432\"\r\n\r\n  # dbdata:\r\n  #    name: ${COMPOSE_PROJECT_NAME}-dbdata\r\n  #  dbbackups:\r\n  #    name: ${COMPOSE_PROJECT_NAME}-dbbackups\r\n<\/pre>\n<p>Voc\u00ea precisa desabilitar a depend\u00eancia do Django ao banco para que n\u00e3o d\u00ea erro ao tentar subir o container novamente:<\/p>\n<pre>\r\ndjango:\r\n#  depends_on:\r\n#   - db\r\n<\/pre>\n<p>E tamb\u00e9m a depend\u00eancia do GeoServer e Celery ao Django:<\/p>\n<pre>\r\n#  depends_on:\r\n#   - django:\r\n#      condition: service_healthy\r\n<\/pre>\n<p><strong>5. Par\u00e2metros necess\u00e1rios no banco de dados externo<\/strong><\/p>\n<p>Quanto ao banco de dados externo, espera-se que ele tenha os seguintes par\u00e2metros:<\/p>\n<ul>\n<li>Usu\u00e1rio com senha para conex\u00e3o<\/li>\n<li>Base de dados para as tabelas Django do GeoNode<\/li>\n<li>Base de dados para os dados espaciais<\/li>\n<li>Endere\u00e7o IP do servidor de banco externo<\/li>\n<li>Porta de acesso ao banco<\/li>\n<li>Endere\u00e7o IP da rede Docker<\/li>\n<\/ul>\n<p><strong>6. Preparar o banco de dados externo<\/strong><\/p>\n<p>O GeoNode precisa de <strong>duas bases de dados<\/strong>: uma para o Django (geonode) e outra para os dados espaciais (geonode_data). Veja:<\/p>\n<pre>\r\n-- Criar usu\u00e1rio com senha forte\r\nCREATE USER geonode_user WITH PASSWORD 'geonode123';\r\n\r\n-- Criar os bancos com ownership do usu\u00e1rio\r\n\r\nCREATE DATABASE geonode OWNER geonode_user;\r\nCREATE DATABASE geonode_data OWNER geonode_user;\r\n\r\n-- ==============================\r\n-- Configura\u00e7\u00e3o no banco geonode\r\n-- ==============================\r\n-- Abra o banco geonode e execute:\r\n\r\nCREATE EXTENSION IF NOT EXISTS postgis;\r\n\r\nGRANT ALL ON geometry_columns TO PUBLIC;\r\nGRANT ALL ON spatial_ref_sys TO PUBLIC;\r\nGRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO geonode_user;\r\n\r\n-- ==============================\r\n-- Configura\u00e7\u00e3o no banco geonode_data\r\n-- ==============================\r\n-- Abra o banco geonode_data e execute:\r\n\r\nCREATE EXTENSION IF NOT EXISTS postgis;\r\n\r\nGRANT ALL ON geometry_columns TO PUBLIC;\r\nGRANT ALL ON spatial_ref_sys TO PUBLIC;\r\nGRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO geonode_user;\r\n<\/pre>\n<p><strong>7. Atualizar o arquivo .env com os dados do banco externo<\/strong><\/p>\n<p>Lembre-se de alterar o n\u00famero do IP e a porta de acordo com a sua realidade (onde seu banco de dados est\u00e1 instalado), no meu caso o IP do meu banco \u00e9 o 192.168.0.245.<\/p>\n<pre>\r\n# -------------------------------\r\n# Backend\r\n# -------------------------------\r\nGEONODE_DATABASE=geonode\r\nGEONODE_DATABASE_USER=geonode_user\r\nGEONODE_DATABASE_PASSWORD=geonode123\r\nGEONODE_GEODATABASE=geonode_data\r\nGEONODE_GEODATABASE_USER=geonode_user\r\nGEONODE_GEODATABASE_PASSWORD=geonode123\r\nGEONODE_DATABASE_SCHEMA=public\r\nGEONODE_GEODATABASE_SCHEMA=public\r\nDATABASE_HOST=192.168.0.245\r\nDATABASE_PORT=5432\r\nDATABASE_URL=postgis:\/\/geonode_user:geonode123@192.168.0.245:5432\/geonode\r\nGEODATABASE_URL=postgis:\/\/geonode_user:geonode123@192.168.0.245:5432\/geonode_data\r\n<\/pre>\n<p><strong>8. Alterar o arquivo pg_hba.conf<\/strong><\/p>\n<p>Agora \u00e9 necess\u00e1rio inserir no arquivo do PostgreSQL as permiss\u00f5es de acesso a m\u00e1quina e a rede onde est\u00e1 rodando o docker, da seguinte forma:<\/p>\n<pre>\r\n# -------------------------------\r\n# GeoNode connections\r\n# -------------------------------\r\n\r\n# Permite que a rede dos containers Docker do GeoNode acesse o PostgreSQL\r\nhost   geonode        geonode_user   172.18.0.0\/16        md5\r\nhost   geonode_data   geonode_user   172.18.0.0\/16        md5\r\n\r\n# Permite que a VM Linux (192.168.186.137) e qualquer host da sub-rede 192.168.0.0\/24 acessem o PostgreSQL\r\nhost   geonode        geonode_user   192.168.186.137\/32   md5\r\nhost   geonode_data   geonode_user   192.168.186.137\/32   md5\r\nhost   geonode        geonode_user   192.168.0.0\/24       md5\r\nhost   geonode_data   geonode_user   192.168.0.0\/24       md5\r\n\r\n<\/pre>\n<p><strong>Observa\u00e7\u00f5es:<\/strong><\/p>\n<ul>\n<li><b>172.18.0.0\/16<\/b> \u2192 rede Docker<\/li>\n<li><b>192.168.186.137\/32<\/b> \u2192 IP da VM Linux<\/li>\n<\/ul>\n<p>Ap\u00f3s alterado o arquivo, voc\u00ea deve reiniciar o servi\u00e7o do PostgreSQL. Se for no Linux, fa\u00e7a da seguinte forma:<\/p>\n<pre>\r\nsudo service postgresql restart\r\n<\/pre>\n<p><strong>9. Reiniciar o docker<\/strong><\/p>\n<p>Para finalizar o processo, fa\u00e7a um novo build e depois suba o docker:<\/p>\n<pre>\r\n\/opt\/geonode_custom\/my_geonode> docker-compose build \r\n\/opt\/geonode_custom\/my_geonode> docker-compose up -d\r\n<\/pre>\n<p>Agora \u00e9 s\u00f3 testar e ver se funcionou.<\/p>\n<p><strong>10. Ambiente<\/strong><\/p>\n<p>Para esse teste eu utilizei:<\/p>\n<p> &#8211; M\u00e1quina com Windows 11 e PostgreSQL 16 (IP 192.168.0.245)<br \/>\n &#8211; Ubuntu 22.04 rodando no VMWare, dentro da m\u00e1quina Windows (IP 192.168.186.137)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prezado leitor, Se voc\u00ea est\u00e1 implantando o GeoNode na sua infraestrutura e deseja conectar um banco de dados j\u00e1 existente, este tutorial ir\u00e1 gui\u00e1-lo passo a passo para realizar a configura\u00e7\u00e3o corretamente. 1. Descobrir o endere\u00e7o IP da Rede Docker&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2025\/09\/02\/conectar-banco-de-dados-externo-ao-geonode\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":9860,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[196,212,230],"class_list":["post-9852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-geonode","tag-postgis","tag-postgresql"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/9852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/users\/275"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/comments?post=9852"}],"version-history":[{"count":29,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/9852\/revisions"}],"predecessor-version":[{"id":9882,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/9852\/revisions\/9882"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/9860"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=9852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=9852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=9852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}