Primeiros passos
Obtenha e instale o OpenDataBio
OpenDataBio é um web-software para Linux nas distribuições Debian, Ubuntu e Arch-Linux e pode ser implementado em qualquer máquina baseada em Linux. Não temos planos de suporte ao Windows, mas pode ser fácil de instalar em uma máquina Windows usando o Docker.
OpenDataBio é escrito em PHP e desenvolvido com o framework Laravel. Requer um servidor web (Apache ou nginx), PHP e um banco de dados SQL - testado apenas com MySQL e MariaDB .
Você pode instalar o OpenDataBio facilmente usando os arquivos Docker incluídos na distribuição. O repositório agora inclui o perfil docker/prod e o arquivo docker-compose.prod.yml, permitindo uso com Docker também em produção (com ajustes de infraestrutura e segredos).
Se você deseja testar o OpenDataBio, ajudar no desenvolvimento ou ter uma instalação individual no seu computador, siga a instalação do Docker.
Proximos passos
- Instalação padrão
- Instalação com Nginx
- Instalação com Docker
- Atualizar OpenDataBio
Prepare para instalação
- Você pode solicitar uma chave API Tropicos.org para que o OpenDataBio possa recuperar dados taxonômicos do banco de dados Tropicos.org. Se não for fornecido, principalmente o serviço de nomenclatura do GBIF será usado;
- OpenDataBio envia e-mails para usuários registrados, seja para informar sobre um job que foi concluído, para enviar solicitações de dados para administradores de Conjuntos de Dados, ou para recuperação de senha. Você pode usar um e-mail do Google para isso, mas precisará alterar as opções de segurança da conta para permitir que o OpenDataBio use a conta para enviar e-mails (você precisa ativar a opção de
Acesso a aplicativos menos seguros nas configurações da conta do gmail). Portanto, crie um endereço de e-mail dedicado para sua instalação. Verifique o arquivo “config/mail.php” para mais opções sobre como enviar e-mails.
1 - Primeira vez?
Descubra o que você pode fazer e como começar
OpenDataBio é normalmente acessado em um servidor mantido por uma instituição
ou grupo de pesquisa. As funcionalidades disponíveis dependem do seu nível de
usuário e das permissões concedidas em cada projeto, dataset ou biocoleção.
Escolha seu ponto de partida
Papéis e permissões
Visitante
Sem iniciar uma sessão, um visitante pode consultar registros públicos, usar os
exploradores, visualizar datasets e versões públicas e baixar dados cuja
política permita acesso anônimo. Não pode inserir ou alterar registros.
Usuário registrado
O autocadastro cria uma conta básica. Um usuário registrado pode editar o
próprio perfil e acessar dados disponibilizados para usuários autenticados. A
instalação pode exigir autenticação e aceite de um acordo para determinados
downloads. O cadastro, por si só, não autoriza a inserção de dados.
Usuário pleno
Um superadministrador, ou um usuário pleno autorizado a gerenciar acessos, pode
promover uma conta registrada para usuário pleno. Esse nível permite criar dados
e receber papéis de colaboração, mas cada operação continua dependendo das
permissões do objeto. Ser usuário pleno não concede acesso a todos os datasets
nem permite administrar a instalação.
Um usuário pleno pode, quando autorizado:
- criar registros nas bibliotecas compartilhadas;
- criar projetos e datasets;
- inserir dados pela interface ou por formulários;
- importar planilhas e usar a API;
- executar e acompanhar UserJobs;
- administrar objetos nos quais recebeu o papel apropriado.
Gestor de acesso de usuários
Um superadministrador pode conceder a um usuário pleno a permissão gerenciar
acessos de usuários. Esse gestor pode:
- promover um usuário registrado para usuário pleno;
- rebaixar um usuário pleno para usuário registrado.
Essa delegação é limitada. O gestor de acesso não pode criar, promover ou
remover superadministradores; não pode alterar outro gestor de acesso; e não
pode conceder essa permissão a outras pessoas. Somente um superadministrador
pode designar ou remover gestores de acesso.
Antes de promover uma conta, o gestor deve confirmar a identidade do usuário e
seguir a política local da instalação. A promoção autoriza a criação de dados,
mas não concede automaticamente participação em projetos, datasets ou
biocoleções.
Administrador, colaborador e visualizador
Projetos, datasets e biocoleções possuem seus próprios participantes:
| Papel | Pode fazer |
|---|
| Administrador | Configurar o objeto, gerenciar participantes e controlar seu conteúdo. |
| Colaborador | Inserir e editar conteúdo permitido, sem administrar todas as configurações ou permissões. |
| Visualizador | Consultar conteúdo restrito, sem alterá-lo. |
As regras específicas variam conforme o tipo de objeto. Por exemplo, o
administrador de um dataset pode preparar versões e revisar suas políticas; o
administrador de uma biocoleção controla os vouchers e solicitações sob a
responsabilidade da coleção.
Superadministrador da instalação
O superadministrador tem acesso global e mantém a instalação. Ele deve:
- revisar novos usuários e atribuir níveis globais com cuidado;
- designar quais usuários plenos podem promover ou rebaixar contas;
- configurar integrações e serviços externos;
- habilitar biocoleções administradas pelo sistema;
- manter localidades e outros registros de referência do sistema;
- revisar ferramentas administrativas, como duplicidades e validações;
- monitorar filas, armazenamento, logs e backups;
- aplicar atualizações e os procedimentos do
UPGRADES_NOTES.md.
O superadministrador não deve substituir os responsáveis científicos por
projetos e datasets na curadoria cotidiana dos dados.
Preparar uma conta de usuário pleno
- Confirme que sua conta foi promovida a usuário pleno.
- Crie ou localize seu registro de Pessoa
e associe-o como pessoa padrão do seu perfil. Isso permite preencher
automaticamente autoria, coleta, medição e identificação quando apropriado.
- Defina em qual projeto e dataset os novos registros serão organizados. Crie
novos objetos apenas quando os existentes não representam o mesmo trabalho.
- Consulte as regras locais da instalação para bibliotecas compartilhadas,
evitando duplicar pessoas, taxons, localidades, referências ou variáveis.
Inserir e importar dados
Escolha o método conforme o volume e a maturidade dos seus dados:
- Interface web: melhor para aprender o modelo, criar poucos registros e
conferir validações.
- Formulários: adequados para protocolos repetíveis de coleta e medição.
- OpenDataBio Collect: usa formulários compatíveis para coleta móvel,
inclusive offline.
- Planilhas: permitem importação em lote pela interface. Os nomes das
colunas correspondem aos parâmetros POST da API.
- OpenDataBio-R: facilita preparar, validar, importar e consultar dados a
partir do R.
- API direta: indicada para integrações e clientes em outras linguagens.
Comece criando manualmente um exemplo pequeno de cada objeto necessário. Depois
exporte ou consulte esse registro para confirmar nomes de campos, relações e
identificadores antes de preparar um lote grande.
Ordem recomendada para novos dados
Cadastre ou localize primeiro as bibliotecas reutilizadas:
- pessoas e referências bibliográficas;
- taxons e localidades que ainda não existam;
- traits, unidades, categorias e formulários;
- projeto e dataset;
- indivíduos e vouchers;
- medições, identificações e mídias.
Uma localidade do tipo ponto não precisa ser criada antecipadamente quando a
importação de indivíduos informa coordenadas e o fluxo utilizado permite sua
criação automática. Parcelas, transectos e polígonos, entretanto, devem ser
planejados e validados antes de importar grandes quantidades de indivíduos.
Antes de importar um lote grande
- teste algumas linhas pela interface ou em uma instalação de testes;
- confirme o dataset e as permissões de destino;
- valide datas, coordenadas e identificadores usados nas relações;
- separe nomes taxonômicos publicados de nomes não publicados;
- verifique se pessoas, referências e traits já existem;
- acompanhe o UserJob até o fim e examine avisos e erros por registro;
- exporte uma amostra após a importação para conferir o resultado.
Os tutoriais de R transformam essa sequência em exemplos
reproduzíveis de consulta e importação.
Antes deles, consulte o Fluxo de importação de
dados para entender dependências,
validação prévia de coordenadas, UserJobs e reconciliação de IDs.
2 - Instalação padrão
Como instalar o OpenDataBio?
Estas instruções são para instalação baseada em apache. Para nginx, use Instalação com Nginx.
Requisitos do servidor
- A versão suportada do PHP >= 8.2 (8.3 recomendado).
- Servidor web: apache para este guia. Para nginx, use Instalação com Nginx.
- Requer um banco de dados SQL, MySQL e MariaDB foram testados, mas também pode funcionar com Postgres. Testado com MySQL 8.0 e MariaDB 10.6+.
- Extensões PHP necessárias:
openssl, pdo, pdo_mysql, mbstring, tokenizer, xml, dom, gd, exif, bcmath, zip, curl, redis. - Redis Server é necessário para filas e cache.
- Tectonic é usado para geração de PDFs/etiquetas a partir de LaTeX.
- Pandoc é usado para traduzir o código LaTeX usado nas referências bibliográficas. Não é necessário para a instalação, mas é sugerido para uma melhor experiência do usuário.
- Requer Supervisor, que é necessário para os jobs de usuário
Criar usuário dedicado
A maneira recomendada de instalar o OpenDataBio para produção é usando um usuário de sistema dedicado. Nestas instruções, esse usuário é odbserver.
Baixar OpenDataBio
Faça login como seu Usuário dedicado e baixe ou clone este software para onde deseja instalá-lo.
Aqui assumimos que é /home/odbserver/opendatabio para que os arquivos de instalação residam neste diretório. Se este não for o seu caminho, altere abaixo sempre que aplicável.
Baixar OpenDataBioPrepare o Servidor
Primeiro, instale os softwares Apache, MySQL, PHP, Redis, Tectonic, Pandoc e Supervisor. Em um sistema Debian, você também precisa instalar algumas extensões PHP e ativá-las:
#EXEMPLO EM UBUNTU 22.04
#repositórios
apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
add-apt-repository ppa:ondrej/php ppa:ondrej/apache2
add-apt-repository ppa:ondrej/php
add-apt-repository ppa:ondrej/apache2
apt update
#instala o php
apt install php8.3 -y
apt update
apt upgrade
#instala extensoes (modulos) do php
php --version
#quais os modulos instalados?
php -m
#se algum desses nao estive, instale
apt install php8.3-{bcmath,xml,mysql,zip,intl,gd,cli,curl,mbstring,sqlite3,redis}
#install apache
apt install libapache2-mod-php8.3
#instala redis e tectonic
apt install redis-server tectonic
#install pandoc
apt install pandoc
#install supervisor (needed for jobs)
apt-get install supervisor -y
a2enmod php8.3
phpenmod mbstring
phpenmod xml
phpenmod dom
phpenmod gd
a2enmod rewrite
a2ensite
systemctl restart apache2.service
#To check if they are installed:
php -m | grep -E 'mbstring|cli|xml|gd|mysql|redis|bcmath|pcntl|zip'
tectonic --version
redis-server --version
Adicione o seguinte à sua configuração do Apache.
- Mude
/home/odbserver/opendatabio para o seu caminho (os arquivos devem estar acessíveis pelo apache) - Você pode criar um novo arquivo na pasta sites-available:
/etc/apache2/sites-available/opendatabio.conf e colocar o seguinte código nele.
<IfModule alias_module>
Alias /opendatabio /home/odbserver/opendatabio/public/
Alias /fonts /home/odbserver/opendatabio/public/fonts
Alias /images /home/odbserver/opendatabio/public/images
Alias /build /home/odbserver/opendatabio/public/build
Alias /vendor/livewire /home/odbserver/opendatabio/public/vendor/livewire
<Directory "/home/odbserver/opendatabio/public">
Require all granted
AllowOverride All
</Directory>
</IfModule>
Isso fará com que o Apache redirecione todas as solicitações de / para a pasta correta, e também permitirá que o arquivo .htaccess fornecido controle as regras de reescrita, de forma que os URLs sejam bonitos. Se desejar acessar o arquivo apontando o navegador para a raiz do servidor, adicione também a seguinte diretiva:
Content Security Policy (CSP) para Apache
Configure o CSP na camada do servidor web (não nos arquivos Laravel).
Aplique primeiro em modo report-only, valide os logs e depois migre para enforcement.
Para instalação standalone com nginx, use Instalação com Nginx.
Apache: onde colocar
- Habilite o módulo necessário:
sudo a2enmod headers
sudo systemctl restart apache2
- Edite o arquivo de vhost ativo (exemplo):
sudo nano /etc/apache2/sites-available/opendatabio.conf
- Dentro do bloco
<VirtualHost ...> correto (HTTP e/ou HTTPS), adicione:
Header always set Content-Security-Policy-Report-Only "
default-src 'self';
base-uri 'self';
form-action 'self';
frame-ancestors 'self';
object-src 'none';
script-src 'self' 'unsafe-eval';
style-src 'self' 'unsafe-inline';
img-src 'self' data: https://server.arcgisonline.com https://*.tile.openstreetmap.org;
font-src 'self' data:;
connect-src 'self';
"
- Recarregue o Apache:
sudo apachectl configtest
sudo systemctl reload apache2
Instalações em subcaminho (/opendatabio)
Se sua instalação roda em subcaminho (por exemplo http://localhost/opendatabio), ajuste no .env:
APP_URL=http://localhost/opendatabio
ASSET_URL=http://localhost/opendatabio
Depois atualize os assets gerados e arquivos do Livewire:
php artisan livewire:publish --assets
php artisan optimize:clear
npm run build
Notas
https://server.arcgisonline.com e https://*.tile.openstreetmap.org são necessários para tiles do mapa.unsafe-inline / unsafe-eval são flags temporárias de compatibilidade; remova após endurecer templates/assets.- Mantenha
Report-Only enquanto ajusta a política em produção.
Configure seu arquivo php.ini. O instalador pode reclamar da falta de extensões do PHP, então lembre-se de ativá-las nos arquivos cli (/etc/php/8.3/cli/php.ini e web ini (/etc/php/8.3/fpm/php.ini) para PHP!
Atualize os valores para as seguintes variáveis:
Encontre os arquivos
php -i | grep 'Configuration File'
Mudar:
memory_limit should be at least 512M
post_max_size should be at least 30M
upload_max_filesize should be at least 30M
Algo como:
[PHP]
allow_url_fopen=1
memory_limit = 512M
post_max_size = 100M
upload_max_filesize = 100M
Habilite os módulos Apache ‘mod_rewrite’ e ‘mod_alias’ e reinicie o servidor:
sudo a2enmod rewrite
sudo a2ensite
sudo systemctl restart apache2.service
Mysql Charset e Collation
- Você deve adicionar o seguinte ao seu arquivo de configuração do SQL (mariadb.cnf ou my.cnf), ou seja, o conjunto de caracteres e o agrupamento que você escolher para sua instalação devem corresponder aos do
config/database.php
[mysqld]
character-set-client-handshake = FALSE #without this, there is no effect of the init_connect
collation-server = utf8mb4_unicode_ci
init-connect = "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
character-set-server = utf8mb4
log-bin-trust-function-creators = 1
sort_buffer_size = 256M #espaco suficiente para consultas com geometria
[mariadb]
max_allowed_packet=100M
innodb_log_file_size=300M #no use for mysql
- Se estiver usando MariaDB e você ainda tiver problemas do tipo #1267 Illegal mix of collations, então verifique aqui sobre como consertar isso.
Configurar o supervisord
Configure o Supervisor, que é necessário para trabalhos. Crie um nome de arquivo opendatabio-worker.conf na pasta de configuração do Supervisor /etc/supervisor/ conf.d/opendatabio-worker.conf com o seguinte conteúdo, ajustando o caminho conforme a sua instalação:
touch /etc/supervisor/conf.d/opendatabio-worker.conf
echo ";--------------
[program:opendatabio-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/odbserver/opendatabio/artisan queue:work --sleep=3 --tries=1 --timeout=0 --memory=512
autostart=true
autorestart=true
user=odbserver
numprocs=8
redirect_stderr=true
stdout_logfile=/home/odbserver/opendatabio/storage/logs/supervisor.log
;--------------" > /etc/supervisor/conf.d/opendatabio-worker.conf
Permissões de arquivos e pastas
Segurança
As permissões de pasta e arquivo são importantes para proteger a instalação em um servidor aberto publicamente. Se você não configurar corretamente, seu site poderá estar em risco.
- As pastas
storage e bootstrap/cache precisam ter permissão de escrita para o usuário do servidor (geralmente www-data). Defina 0775 para esses diretórios. - O arquivo de configuração
.env precisa ter permissão 0640 pois contém senhas. - Este link mostra diferentes métodos de definir permissões para um aplicativo Laravel.
Este é o método recomendado:
cd /home/odbserver
#note que odbserver e www-data podem mudar na sua configuracao
#defia as permissões tanto par ao seu usuário (aqui odbserver) como para o do apache (aqui www-data)
sudo chown -R odbserver:www-data opendatabio
sudo find ./opendatabio -type f -exec chmod 644 {} \;
sudo find ./opendatabio -type d -exec chmod 755 {} \;
cd /home/odbserver/opendatabio
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
#pasta media ajustar
sudo find ./storage/app/public/media -type f -exec chmod 664 {} \;
sudo find ./storage/app/public/media -type d -exec chmod 775 {} \;
#arquivo de configuracao .env para permissao 640
sudo chmod 640 ./.env
Instale OpenDataBio
Muitas distribuições Linux (Ubuntu e Debian) têm arquivos php.ini diferentes para a interface de linha de comando e para o Apache. Recomenda-se usar o arquivo de configuração do Apache ao executar o script de instalação, para que ele possa apontar corretamente as extensões ou configurações ausentes. Para fazer isso, encontre o caminho correto para o arquivo .ini e exporte-o **antes de usar o comando de instalação php install **.
Por exemplo,
export PHPRC=/etc/php/8.3/apache2/php.ini
O script de instalação baixará o gerenciador de dependências Composer e todas as bibliotecas PHP necessárias listadas no arquivo composer.json. No entanto, se o seu servidor estiver atrás de um proxy, você deve instalar e configurar o Composer independentemente. Implementamos a configuração do PROXY, mas não a estamos mais usando e não testamos corretamente (se você precisar de ajustes, coloque um issue no GitLab).
O script solicitará opções de configuração, que são armazenadas no arquivo de ambiente .env na pasta raiz do aplicativo.
Você pode, opcionalmente, configurar este arquivo antes de executar o instalador:
- Crie um arquivo
.env com o conteúdo do cp .env.example .env fornecido - Leia os comentários neste arquivo e ajuste de acordo
- Garanta que
ASSET_URL esteja correto para a URL/subcaminho da sua instalação
Execute o instalador:
cd /home/odbserver/opendatabio
php install
- Compile os assets frontend depois de configurar o
.env (obrigatorio quando ASSET_URL e adicionado ou alterado):
npm ci #talvez precise disso
npm run build
- Seed data - o script irá pergunar se você quer instalar Localidades e Taxons distribuídos com aplicativo. Esses dados são específicos de cada versão do OpenDataBio. Ver as notas das versões no repositório desses dados.
Pronto para usar
Se o script de instalação for concluído com sucesso, você está pronto para prosseguir! Aponte seu navegador para http://localhost/opendatabio. As migrações de banco de dados incluem uma conta de administrador, com login admin@example.org e senha password1. Altere a senha após a instalação.
Problemas de instalação
Existem inúmeras maneiras possíveis de instalar o aplicativo, mas podem envolver mais etapas e configurações.
- se o navegador retornar 500|SERVER ERROR , você deve olhar para o último error em
storage/logs/laravel.log. Se você tiver ERROR: No application encryption key has been specified execute:
chave artesanal php: gerar
php artisan config: cache
- Se você receber o erro failed to open stream: Connection timed out durante a execução do instalador, isso indica uma configuração incorreta do seu roteamento IPv6. A correção mais fácil é desabilitar o roteamento IPv6 no servidor.
- Se você receber erros durante alimentação aleatória do banco de dados, você pode tentar remover
o banco de dados inteiramente e reconstruí-lo. Claro, não execute isso em uma instalação de produção.
php artisan migrate: fresh
- Você pode substituir as tabelas Locations e Taxons usando o seed data depois de reconstruir a base:
Configurações pós-instalação
- Se seus Jobs de importação/exportação não estão sendo processados, certifique-se de que o Supervisor esteja executando
systemctl start supervisord && systemctl enable supervisord e verifique os arquivos de log em storage/logs/supervisor.log. - Você pode alterar várias variáveis de configuração para o aplicativo. O mais importante deles provavelmente está definido pelo instalador, mas há outras variáveis em
.env e no arquivo config/app.php que você pode alterar. Em particular, você pode querer alterar as configurações de idioma, fuso horário e e-mail. Execute php artisan config: cache após atualizar os arquivos de configuração. - Para impedir que os rastreadores do mecanismo de pesquisa indexem seu banco de dados, adicione o seguinte ao seu “robots.txt” na pasta raiz do servidor (no Debian, /var/www/html):
User-agent: *
Disallow: /
- As pastas
storage e bootstrap/cache devem ser graváveis pelo usuário do Apache (geralmente www-data). Veja este link para um exemplo de como fazer isso. Defina a permissão 0775 para esses diretórios.
Atualizando uma instalação Apache existente
Antes de atualizar, faça backup do banco de dados, do arquivo .env e de storage/app/public/media.
Antes de rodar os comandos, revise diferencas de configuracao da versao alvo:
- Compare
.env com .env.example (incluindo assets_url) - Confira configuracoes do PHP (
php.ini em CLI e FPM/Apache) - Confira configuracao dos workers no Supervisor
- Coloque a aplicação em modo de manutenção:
cd /home/odbserver/opendatabio
php artisan down
- Atualize o código-fonte para a versão desejada:
git fetch --tags
git checkout <tag-ou-branch-de-destino>
- Atualize dependências e aplique migrações de banco:
composer install --no-dev --optimize-autoloader
php artisan migrate --force
- Recompile os assets frontend apos mudancas no
.env:
- Recrie os caches e reinicie os workers de fila:
php artisan optimize:clear
php artisan config:cache
php artisan queue:restart
- Tire a aplicação do modo de manutenção:
Se a versão de destino incluir novas variáveis de ambiente, adicione-as ao .env antes de rodar assets/cache. Veja o conteúdo de .env.example para mudanças necessárias.
Armazenamento e backups
Você pode alterar as configurações de armazenamento em config/filesystem.php, onde pode definir o armazenamento baseado em nuvem, que pode ser necessário se muitos usuários enviarem arquivos de mídia, exigindo muito espaço em disco.
- Downloads de dados são colocados em fila como Jobs e um arquivo é gravado em uma pasta temporária,sendo excluído quando o trabalho é excluído pelo usuário. Esta pasta é definida como
download disk no arquivo de configuração filesystem.php, que aponta para storage/app/public/downloads. Apagar esses arquivos temporários depende dos usuários, portanto, um trabalho de limpeza do cron pode ser aconselhável para implementar em sua instalação; - Arquivos de mídia são armazenados por padrão no
media disk, que coloca os arquivos na pasta storage/app/ public/media; - Para configuração regular crie ambos os diretórios
storage/app/public/downloads e storage/app/public/media com permissões graváveis pelo usuário do servidor - Lembre-se de incluir a pasta de mídia em um plano de backup;
3 - Instalação com Docker
Como instalar usando Docker!
A maneira mais fácil de instalar e executar o OpenDataBio é usando o Docker e os arquivos de configuração do docker fornecidos, que contêm todas as configurações necessárias para executar o ODB. Usa nginx e mysql e supervisor.
Por padrão, o fluxo rápido está otimizado para desenvolvimento e testes locais.
Perfil de produção
O OpenDataBio agora inclui um perfil Docker orientado a produção:
docker/prod/nginx.confdocker/prod/php.inidocker/prod/www.confdocker-compose.prod.yml
Execute o compose de produção com:
docker compose -f docker-compose.prod.yml build
docker compose -f docker-compose.prod.yml up -d
Principais diferenças em relação ao dev:
- Usa configurações nginx/php-fpm em
docker/prod/*. - Remove bind-mounts do código-fonte da aplicação.
- Desativa o phpMyAdmin por padrão (perfil
dev-only). - Publica o nginx na porta
80 (ajuste se houver reverse proxy).
O CSP no nginx (report-only) está incluído em docker/prod/nginx.conf. Mantenha report-only primeiro e só depois aplique enforcement.
Arquivos Docker incluídos
laravel-app/
----docker/*
----.env.docker
----docker-compose.yml
----Dockerfile
----Makefile
Eles foram adaptados deste link, onde você também encontra uma configuração de produção.
Instalação
Baixar OpenDataBioPré-requisitos
- Docker com plugin Compose (
docker compose v2). - Linux/mac: usuário no grupo docker ou usar
sudo. - Windows: Docker Desktop (WSL2/Hyper-V habilitados).
Início rápido (Linux/mac, requer make)
cd opendatabio
make docker-init # copia .env.docker se faltar, sobe containers, instala composer, gera key, migra e faz storage:link
make seed-odb # seed opcional para Locations/Taxons
#ou tudo junto
make docker-init SEED=1 # igual acima + seed opcional para Locations/Taxons
- Depois de configurar o
.env (ou sempre que ASSET_URL mudar), recompile os assets:
- App: http://localhost:8081 (usuário
admin@example.org / password1) - phpMyAdmin: http://localhost:8082
Windows (PowerShell)
cd opendatabio
powershell -ExecutionPolicy Bypass -File scripts/docker-init.ps1
# opcional seed
powershell -ExecutionPolicy Bypass -File scripts/docker-init.ps1 -Seed
Comandos manuais (se você não tiver make)
cp .env.docker .env
docker compose up -d
docker compose exec -T -u www-data laravel composer install --optimize-autoloader
docker compose exec -T -u www-data laravel php artisan key:generate --force
docker compose exec -T -u www-data laravel php artisan migrate --force
docker compose exec -T -u www-data laravel php artisan storage:link
Seed opcional sem make:
docker compose exec -T -u www-data laravel php getseeds
docker exec -i odb_mysql mysql -uroot -psecret odbdocker < storage/Location*.sql
docker exec -i odb_mysql mysql -uroot -psecret odbdocker < storage/Taxon*.sql
rm storage/Location*.sql storage/Taxon*.sql
Persistência de dados
Os contêineres criados pelo Docker podem ser excluídos e recriados sem perder os dados
As tabelas MySQL são armazenadas em um volume; se ele for apagado, a base de dados será excluída.
Usando
O arquivo Makefile contém os seguintes comandos para interagir com os contêineres do docker e o odb.
Comandos para construir e criar o app
make docker-init - copia .env.docker (se faltar), constroi/sobe containers, instala composer, gera key, migra e faz storage:linkmake build - construir os contêineresmake key-generate - gerar a chave do app e adicioná-la ao .envmake composer-install - instalar dependências phpmake composer-update - atualizar dependências phpmake composer-dump-autoload - executar o dump-autoload do composer dentro do contêinermake migrate - criar ou atualizar o banco de dadosmake drop-migrate - apaga a base de dados e migra novamentemake seed-odb - popular o banco de dados com localizações e táxons
Comandos para acessar os contêineres docker
make start - iniciar todos os contêineresmake stop - parar todos os contêineresmake restart - reiniciar todos os contêineresmake ssh - entrar no contêiner principal da aplicação laravelmake ssh-mysql - entrar no contêiner mysql, para que você possa acessar o log do banco de dados usando mysql -uUSER -pPWDmake mysql - entrar no console docker do mysqlmake ssh-nginx - entrar no contêiner nginxmake ssh-supervisord - entrar no contêiner supervisord
Comandos de manutenção
make optimize - limpar caches e arquivos de logmake info - mostrar informações do appmake logs - mostrar logs do laravelmake logs-mysql - mostrar logs do mysqlmake logs-nginx - mostrar logs do nginxmake logs-supervisord - mostrar logs do supervisord
Recriando os containers
Se você tiver problemas e alterou os arquivos do docker, pode ser necessário reconstruir:
#apaga todas as imagens sem apagr a base de dados
make stop #pare todas
docker system prune -a #aceitar com Yes
#se quiser pagar os dados
docker volume list
docker volume rm VOLUME_ID
#construa novamente
make build
make start
Atualizando uma instalação Docker existente
Antes de atualizar, faça backup do banco de dados e de storage/app/public/media.
Antes de rodar os comandos, revise diferencas de configuracao da versao alvo:
- Compare
.env com .env.example (incluindo assets_url) - Confira configuracoes PHP do perfil alvo (
docker/prod/php.ini ou seu arquivo customizado) - Confira configuracao do Supervisor (
docker/supervisord.conf ou equivalente no seu deploy)
- Atualize o código-fonte para a versão desejada:
cd opendatabio
git fetch --tags
git checkout <tag-ou-branch-de-destino>
- Reconstrua e reinicie os contêineres:
make stop
make build
make start
- Atualize dependências PHP e rode as migrações:
make composer-install
make migrate
- Recompile os assets frontend apos mudancas no
.env:
- Atualize os caches do Laravel e reinicie os workers de fila:
make optimize
docker compose exec -T -u www-data laravel php artisan queue:restart
Se a nova versão incluir mudanças no .env, adicione as novas chaves antes de rodar assets/cache/restart em produção.
4 - Instalação com Nginx
Como instalar o OpenDataBio com nginx
Estas instruções são para instalação com nginx. Se preferir Apache, use a página de instalação padrão (Apache).
Requisitos do servidor
- Versão suportada do PHP >= 8.2 (8.3 recomendado).
- Servidor web: nginx.
- Banco SQL: MySQL ou MariaDB (testado com MySQL 8.0 e MariaDB 10.6+).
- Extensões PHP necessárias:
openssl, pdo, pdo_mysql, mbstring, tokenizer, xml, dom, gd, exif, bcmath, zip, curl, redis. - Redis para filas/cache.
- Tectonic para geração de PDF de etiquetas.
- Pandoc para renderização bibliográfica (recomendado).
- Supervisor para jobs em segundo plano.
Configuração do site no nginx
Crie o arquivo do site (exemplo):
sudo nano /etc/nginx/sites-available/opendatabio
Use este bloco base (ajuste domínio/caminhos):
server {
listen 80;
server_name seu-dominio.exemplo;
root /home/odbserver/opendatabio/public;
index index.php index.html;
charset utf-8;
client_max_body_size 300M;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_read_timeout 300;
}
location ~ /\. {
deny all;
}
}
Ative e recarregue:
sudo ln -s /etc/nginx/sites-available/opendatabio /etc/nginx/sites-enabled/opendatabio
sudo nginx -t
sudo systemctl reload nginx
Content Security Policy (CSP)
No mesmo arquivo do site nginx, adicione no bloco server { ... }:
add_header Content-Security-Policy-Report-Only "
default-src 'self';
base-uri 'self';
form-action 'self';
frame-ancestors 'self';
object-src 'none';
script-src 'self' 'unsafe-eval';
style-src 'self' 'unsafe-inline';
img-src 'self' data: https://server.arcgisonline.com https://*.tile.openstreetmap.org;
font-src 'self' data:;
connect-src 'self';
" always;
Depois recarregue:
sudo nginx -t
sudo systemctl reload nginx
Notas:
- Comece com
Report-Only e depois migre para enforcement após validar logs. https://server.arcgisonline.com e https://*.tile.openstreetmap.org são necessários para os tiles do mapa.
Instalações em subcaminho (/opendatabio)
Se sua instalação roda em subcaminho (por exemplo http://localhost/opendatabio), ajuste no .env:
APP_URL=http://localhost/opendatabio
ASSET_URL=http://localhost/opendatabio
Depois atualize os assets gerados e arquivos do Livewire:
php artisan livewire:publish --assets
php artisan optimize:clear
npm run build
Etapas compartilhadas da aplicação
Para evitar redundância, use as mesmas seções da instalação Apache (também válidas para implantação com nginx):
- Configurações de PHP (php.ini) em Instalação padrão
- Configurar o supervisord em Instalação padrão
- Permissões de arquivos e pastas em Instalação padrão
- Instale OpenDataBio em Instalação padrão
- Configurações pós-instalação em Instalação padrão
5 - Personalizar a instalação
Como personalizar a interface web!
Mudanças simples que podem ser implementadas no layout de um site OpenDataBio
Logo e imagem de fundo
Para substituir o logotipo da barra de navegação e a imagem da página inicial,
apenas coloque seus arquivos de imagem substituindo os arquivos em /public/custom/ sem alterar seus nomes.
Textos e informações
Para alterar o texto de boas-vindas da página inicial, altere os valores para cada entrada nos arquivos:
/resources/lang/en/customs.php/resources/lang/pt-br/customs.php- Não remova as chaves de entrada. Defina como
null para suprimir a exibição no rodapé e na página inicial.
Documentação Local
Você pode adicionar documentação em formato *.md para o repositório em arquivos nas seguintes pastas:
/resources/docs/en/*/resources/docs/pt/*
Este espaço é reservado para administradores definirem documentação e diretivas personalizadas para os usuários de uma instalação específica do OpenDataBio. Por exemplo, este é um espaço para adicionar um código de conduta para os usuários, quem contatar para se tornar um usuário pleno,tutoriais específicos, etc.
NavBar e Rodapé
- Se você deseja alterar a cor da barra de navegação superior e do rodapé,
basta substituir a classe css Boostrap 5 nas tags e arquivos correspondentes na pasta
/resources/view/layout. - Você pode adicionar html adicional ao rodapé e barra de navegação, alterar o tamanho do logotipo, etc… como desejar.
6 - Atualizar OpenDataBio
Instruções seguras para atualizar instalações do OpenDataBio
Use esta página para a sequência comum de implantação. Antes de atualizar, leia
o arquivo UPGRADES_NOTES.md
da versão de destino do OpenDataBio. Ele é a fonte oficial para requisitos,
permissões de armazenamento, migrações, preenchimentos e comandos de reparo
específicos da versão; essas instruções não são repetidas aqui.
Antes de começar
- Leia
UPGRADES_NOTES.md e as notas da versão de destino. Anote todos os
testes preliminares e comandos pós-migração antes de começar. - Faça backup de pelo menos:
- Dump do banco de dados
.env- Toda a árvore
storage/app, incluindo mídias, exportações geradas e os
arquivos persistentes das versões de datasets
- Compare as configurações atuais com os modelos/configurações da versão de destino:
.env com .env.example (incluindo ASSET_URL)- Configuração do Supervisor (
/etc/supervisor/conf.d/opendatabio-worker.conf ou equivalente no contêiner) - Configuração do PHP (
php.ini de CLI e FPM/Apache)
- Planeje uma janela de manutenção para o ambiente de produção.
Atualização (instalação Apache ou nginx)
- Coloque a aplicação em modo de manutenção:
cd /home/odbserver/opendatabio
php artisan down
- Atualize o código-fonte:
git fetch --tags
git checkout <target-tag-or-branch>
- Instale as dependências e execute as migrações:
composer install --no-dev --optimize-autoloader
php artisan migrate:status
php artisan migrate --force
- Execute, na ordem documentada, os comandos pós-migração indicados no
UPGRADES_NOTES.md da versão de destino. Alguns comandos enviam UserJobs em
segundo plano; mantenha a aplicação em manutenção e acompanhe-os até o fim
quando as notas assim exigirem. - Recompile os assets do frontend após mudanças no
.env (obrigatório quando ASSET_URL mudar):
- Limpe o cache e reinicie os workers:
php artisan optimize:clear
php artisan config:cache
php artisan queue:restart
systemctl restart supervisor.service
# Reinicie o servidor web e o PHP-FPM conforme a sua instalação.
- Verifique a aplicação, os workers, os logs e as operações citadas nas notas de
atualização; depois coloque a aplicação online novamente:
Atualização (instalação Docker)
- Atualize o código-fonte:
cd opendatabio
git fetch --tags
git checkout <target-tag-or-branch>
- Reconstrua e reinicie os contêineres:
make stop
make build
make start
- Instale as dependências e execute as migrações:
make composer-install
make migrate
- Execute dentro do contêiner da aplicação, na ordem documentada, os comandos
pós-migração do
UPGRADES_NOTES.md da versão de destino e acompanhe os
UserJobs enviados por eles. - Recompile os assets do frontend após mudanças no
.env (obrigatório quando ASSET_URL mudar):
- Limpe o cache e reinicie os workers:
make optimize
docker compose exec -T -u www-data laravel php artisan queue:restart
Variáveis de ambiente
Compare .env com o .env.example da versão de destino antes de compilar
assets ou armazenar configurações em cache. Siga UPGRADES_NOTES.md para
variáveis cujo valor ou significado mudou; em produção, confira
APP_FORCE_HTTPS e ASSET_URL.
Estratégia de rollback
Se algo falhar depois das migrações:
- Mantenha o modo de manutenção ativo.
- Restaure o banco, o
.env e o backup correspondente de storage/app. Os
registros do banco e os arquivos das versões de datasets devem ser
restaurados como um único snapshot. - Retorne para a tag estável anterior.
- Reinstale as dependências/reconstrua os contêineres e valide os logs antes de
php artisan up.