Instalação OpenEMR · 14 min read · Sep 24, 2025

Como Instalar OpenEMR no Ubuntu 22.04

OpenEMR é uma ferramenta de registro eletrônico de saúde e gerenciamento de prática médica de código aberto. É certificada pelo Escritório do Coordenador Nacional para Tecnologia da Informação em Saúde (ONC) e possui registros de saúde integrados, gerenciamento de prática, agendamento, faturamento eletrônico, internacionalização, suporte gratuito e muito mais. Ele pode rastrear dados demográficos dos pacientes, agendar pacientes, manter registros de saúde extremamente detalhados com relatórios de laboratório, medicamentos e procedimentos, rastrear suas prescrições, ajudar com faturamento médico, gerar relatórios detalhados e suporte multilíngue.

Neste tutorial, você aprenderá como instalar o software OpenEMR em um servidor executando Ubuntu 22.04.

Pré-requisitos

  • Um servidor executando Ubuntu 20.04.
  • Um usuário sudo não-root.
  • Um nome de domínio totalmente qualificado (FQDN) como openemr.example.com.
  • Certifique-se de que tudo esteja atualizado. $ sudo apt update $ sudo apt upgrade
  • Alguns pacotes que seu sistema precisa. $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Alguns desses pacotes podem já estar instalados em seu sistema.

Passo 1 - Configurar o Firewall

O primeiro passo é configurar o firewall. O Ubuntu vem com ufw (Uncomplicated Firewall) por padrão.

Verifique se o firewall está em execução.

$ sudo ufw status

Você receberá a seguinte saída.

Status: inactive

Permita a porta SSH para que o firewall não interrompa a conexão atual ao ativá-lo.

$ sudo ufw allow OpenSSH

Permita também as portas HTTP e HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Ative o Firewall

$ sudo ufw enable
Comando pode interromper conexões ssh existentes. Prosseguir com a operação (y|n)? y
Firewall está ativo e habilitado na inicialização do sistema

Verifique o status do firewall novamente.

$ sudo ufw status

Você deve ver uma saída semelhante.

Status: active

Para                         Ação      De
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Passo 2 - Instalar Nginx

O Ubuntu vem com uma versão mais antiga do Nginx. Para instalar a versão mais recente, você precisa baixar o repositório oficial do Nginx.

Importe a chave de assinatura do Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Adicione o repositório para a versão estável do Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Atualize os repositórios do sistema.

$ sudo apt update

Instale o Nginx.

$ sudo apt install nginx

Verifique a instalação.

$ nginx -v
nginx version: nginx/1.24.0

Inicie o servidor Nginx.

$ sudo systemctl start nginx

Passo 3 - Instalar MySQL

O Ubuntu 22.04 vem com a versão mais recente do MySQL. Você pode instalá-lo com um único comando.

$ sudo apt install mysql-server

Verifique a versão do MySQL.

$ mysql --version
mysql  Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Este passo é necessário para versões do MySQL 8.0.28 e superiores. Entre no Shell do MySQL.

$ sudo mysql

Execute o seguinte comando para definir a senha do seu usuário root. Certifique-se de que tenha uma mistura de números, letras maiúsculas, minúsculas e caracteres especiais.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Saia do shell.

mysql> exit

Execute o script de instalação segura do MySQL.

$ sudo mysql_secure_installation

Primeiro, você será solicitado a inserir sua senha root. Digite-a. Em seguida, você será solicitado a instalar o Componente de Validação de Senha. Ele verifica a força das senhas usadas no MySQL. Pressione Y para instalá-lo. Em seguida, você será solicitado a definir o nível da política de validação de senhas. Escolha 2 pois é a mais forte.

Proteger a implantação do servidor MySQL.

Digite a senha para o usuário root:

O COMPONENTE DE VALIDAÇÃO DE SENHA pode ser usado para testar senhas
e melhorar a segurança. Ele verifica a força da senha
e permite que os usuários definam apenas aquelas senhas que são
a segurança suficiente. Você gostaria de configurar o componente de VALIDAÇÃO DE SENHA?

Pressione y|Y para Sim, qualquer outra tecla para Não: Y

Existem três níveis de política de validação de senha:

BAIXO    Comprimento >= 8
MÉDIO Comprimento >= 8, numérico, letras mistas e caracteres especiais
FORTE Comprimento >= 8, numérico, letras mistas, caracteres especiais e dicionário                  arquivo

Por favor, insira 0 = BAIXO, 1 = MÉDIO e 2 = FORTE: 2
Usando a senha existente para root.

Força estimada da senha: 100

Em seguida, digite N para recusar a alteração da sua senha root. Além disso, digite Y para remover usuários anônimos, desautorizar logins remotos de root, remover o banco de dados de teste e recarregar as tabelas de privilégios.

Mudar a senha para root? ((Pressione y|Y para Sim, qualquer outra tecla para Não) : N

 ... pulando.
Por padrão, uma instalação do MySQL tem um usuário anônimo,
permitindo que qualquer um faça login no MySQL sem ter que ter
uma conta de usuário criada para eles. Isso é destinado apenas para
testes, e para facilitar a instalação.
Você deve removê-los antes de passar para um ambiente de produção.

Remover usuários anônimos? (Pressione y|Y para Sim, qualquer outra tecla para Não) : Y
Sucesso.

Normalmente, o root deve ser permitido apenas conectar-se de
'localhost'. Isso garante que alguém não possa adivinhar a
senha root pela rede.

Desautorizar login remoto de root? (Pressione y|Y para Sim, qualquer outra tecla para Não) : Y
Sucesso.

Por padrão, o MySQL vem com um banco de dados chamado 'teste' que
qualquer um pode acessar. Isso também é destinado apenas para
testes, e deve ser removido antes de passar para um ambiente de produção.

Remover banco de dados de teste e acesso a ele? (Pressione y|Y para Sim, qualquer outra tecla para Não) : Y
 - Removendo banco de dados de teste...
Sucesso.

 - Removendo privilégios no banco de dados de teste...
Sucesso.

Recarregar as tabelas de privilégios garantirá que todas as alterações
feitas até agora tenham efeito imediato.

Recarregar tabelas de privilégios agora? (Pressione y|Y para Sim, qualquer outra tecla para Não) : Y
Sucesso.

Tudo pronto!

Passo 4 - Configurar MySQL

Faça login no shell do MySQL. Digite sua senha root quando solicitado.

$ sudo mysql -u root -p

Crie um banco de dados de exemplo.

mysql> CREATE DATABASE openemr;

Crie uma conta de usuário SQL.

mysql> CREATE USER 'openemruser'@'localhost' IDENTIFIED BY 'Your_password2';

Conceda todos os privilégios no banco de dados ao usuário.

mysql> GRANT ALL PRIVILEGES ON openemr.* TO 'openemruser'@'localhost';

Atualize os privilégios do usuário.

mysql> FLUSH PRIVILEGES;

Saia do shell.

mysql> exit

Passo 5 - Instalar PHP e suas extensões

O Ubuntu 22.04 vem com a versão PHP 8.1.2 que está um pouco desatualizada. Vamos instalar a versão mais recente do PHP 8.2 usando o repositório PHP de Ondrej.

$ sudo add-apt-repository ppa:ondrej/php

Em seguida, instale o PHP e suas extensões necessárias para o OpenEMR.

$ sudo apt install php8.2-fpm php8.2-mysql php8.2-bcmath php8.2-xml php8.2-zip php8.2-curl php8.2-mbstring php8.2-gd php8.2-tidy php8.2-intl php8.2-cli php8.2-soap imagemagick libtiff-tools php8.2-ldap

Verifique a instalação.

$ php --version
PHP 8.2.7 (cli) (built: Jun  8 2023 15:27:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

Passo 6 - Instalar SSL

Precisamos instalar o Certbot para gerar o certificado SSL. Você pode instalar o Certbot usando o repositório do Ubuntu ou pegar a versão mais recente usando a ferramenta Snapd. Usaremos a versão Snapd.

O Ubuntu 22.04 vem com o Snapd instalado por padrão. Execute os seguintes comandos para garantir que sua versão do Snapd esteja atualizada.

$ sudo snap install core && sudo snap refresh core

Instale o Certbot.

$ sudo snap install --classic certbot

Use o seguinte comando para garantir que o comando Certbot possa ser executado criando um link simbólico para o diretório /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Execute o seguinte comando para gerar um Certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d openemr.example.com

O comando acima fará o download de um certificado para o diretório /etc/letsencrypt/live/openemr.example.com em seu servidor.

Gere um certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Verifique o serviço do agendador de renovação do Certbot.

$ sudo systemctl list-timers

Você encontrará snap.certbot.renew.service como um dos serviços agendados para execução.

NEXT                        LEFT          LAST                        PASSED        UNIT                      ACTIVATES
.....
Dom 2023-02-26 06:32:00 UTC 9h left       Sáb 2023-02-25 18:04:05 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Dom 2023-02-26 06:43:20 UTC 9h left       Sáb 2023-02-25 10:49:23 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Dom 2023-02-26 09:00:06 UTC 11h left      Sáb 2023-02-25 20:58:06 UTC 5min ago      apt-daily.timer           apt-daily.service

Faça um teste do processo para verificar se a renovação do SSL está funcionando corretamente.

$ sudo certbot renew --dry-run

Se você não ver erros, está tudo pronto. Seu certificado será renovado automaticamente.

Passo 7 - Baixar OpenEMR

Visite a página de download do OpenEMR e pegue o link para a versão mais recente do OpenEMR. Baixe o OpenEMR para o servidor.

$ wget https://sourceforge.net/projects/openemr/files/OpenEMR%20Current/7.0.1/openemr-7.0.1.tar.gz

Extraia os arquivos.

$ tar -pxzf openemr-7.0.1.tar.gz

Crie o diretório /var/www/html.

$ sudo mkdir /var/wwww/html -p

Mova os arquivos extraídos para o diretório da web.

$ sudo mv openemr-7.0.1 /var/www/html/openemr

Dê permissões ao usuário Nginx sobre o diretório raiz da web.

$ sudo chown -R nginx:nginx /var/www/html/openemr

Passo 8 - Configurar PHP-FPM

Abra o arquivo /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Precisamos definir o usuário/grupo Unix dos processos PHP para nginx. Encontre as linhas user=www-data e group=www-data no arquivo e altere para nginx.

...
; Usuário/grupo Unix dos processos
; Nota: O usuário é obrigatório. Se o grupo não for definido, o grupo do usuário padrão
;       será usado.
; RPM: usuário apache escolhido para fornecer acesso aos mesmos diretórios que httpd
user = nginx
; RPM: Mantenha um grupo permitido para escrever no diretório de log.
group = nginx
...

Encontre as linhas listen.owner = www-data e listen.group = www-data no arquivo e altere para nginx.

; Defina permissões para o socket unix, se um for usado. No Linux, leitura/escrita
; permissões devem ser definidas para permitir conexões de um servidor web. Muitos
; sistemas derivados do BSD permitem conexões independentemente das permissões. O proprietário
; e grupo podem ser especificados pelo nome ou pelos seus IDs numéricos.
; Valores Padrão: usuário e grupo são definidos como o usuário em execução
;                 modo é definido como 0660
listen.owner = nginx
listen.group = nginx

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Aumente o tempo de execução para PHP-FPM e PHP-CLI para 60 segundos.

$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.2/fpm/php.ini

Defina o valor da variável max_input_time para 1.

$ sudo sed -i 's/max_input_time = 60/max_input_time = -1/' /etc/php/8.2/fpm/php.ini

Aumente o limite de memória para PHP-FPM de 128MB para 512MB.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php/8.2/fpm/php.ini

Aumente o tamanho máximo de upload de arquivos para 30MB.

$ sudo sed -i 's/post_max_size = 8M/post_max_size = 30M/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 30M/' /etc/php/8.2/fpm/php.ini

Aumente o número máximo de variáveis de entrada para 3000.

$ sudo sed -i 's/;max_input_vars = 1000/max_input_vars = 3000/g' /etc/php/8.2/fpm/php.ini

Permita acessar, do ponto de vista do PHP, arquivos locais com instruções LOAD DATA.

$ sudo sed -i 's/;mysqli.allow_local_infile = On/mysqli.allow_local_infile = On/g' /etc/php/8.2/fpm/php.ini

Reinicie o serviço PHP-FPM.

$ sudo systemctl restart php8.2-fpm

Altere o grupo do diretório de sessões PHP para Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Passo 9 - Configurar Nginx

Crie e abra o arquivo /etc/nginx/conf.d/openemr.conf para edição.

$ sudo nano /etc/nginx/conf.d/openemr.conf

Cole o seguinte código nele.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  openemr.example.com;

    access_log  /var/log/nginx/openemr.access.log;
    error_log   /var/log/nginx/openemr.error.log;

    # SSL
    ssl_certificate         /etc/letsencrypt/live/openemr.example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/openemr.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/openemr.example.com/chain.pem;
    ssl_session_timeout  1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    # use https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, It is free and secure
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=300s;

    root /var/www/html/openemr;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php;
    }

    # Pass PHP Scripts To FastCGI Server
    location ~* \.php$ {
        try_files $uri =404;
        fastcgi_index  index.php;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Depends On The PHP Version
        fastcgi_param SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        include fastcgi_params;
    }

    # deny access to writable files/directories
    location ~* ^/sites/*/(documents|edi|era) {
        deny all;
        return 404;
    }

    # deny access to certain directories
    location ~* ^/(contrib|tests) {
        deny all;
        return 404;
    }

    # Alternatively all access to these files can be denied
    location ~* ^/(admin|setup|acl_setup|acl_upgrade|sl_convert|sql_upgrade|gacl/setup|ippf_upgrade|sql_patch)\.php {
        deny all;
        return 404;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt  {
        log_not_found off;
        access_log off;
    }

    location ~ \. {
        deny all;
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  openemr.example.com;
    return 301   https://$host$request_uri;
}

Observe que o diretório raiz a ser usado na configuração do Nginx é /var/www/html/wallabag/public/.

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado após terminar.

Abra o arquivo /etc/nginx/nginx.conf para edição.

$ sudo nano /etc/nginx/nginx.conf

Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Verifique a sintaxe do arquivo de configuração do Nginx.

$ sudo nginx -t
nginx: o arquivo de configuração /etc/nginx/nginx.conf a sintaxe está ok
nginx: teste do arquivo de configuração /etc/nginx/nginx.conf bem-sucedido

Reinicie o serviço Nginx.

$ sudo systemctl restart nginx

Passo 10 - Instalar OpenEMR

Abra a URL https://openemr.example.com em seu navegador e você verá a seguinte tela de configuração.

Verificação de Instalação do OpenEMR

Aqui ele verifica as permissões de arquivo e confirma se você pode prosseguir para o passo 1 ou não. Se você ver a palavra pronto em verde, significa que você pode prosseguir. Clique no botão azul para prosseguir para o passo 1.

Assistente de Configuração do Banco de Dados do OpenEMR

Na próxima página, você será perguntado se deseja que o instalador crie o banco de dados ou use um pré-criado. Selecione a opção Eu já criei o banco de dados e clique no botão para prosseguir para o passo 2.

Detalhes do Banco de Dados e Conta do OpenEMR

Na próxima página, preencha as credenciais do banco de dados que você configurou no passo 4 antes. Além disso, insira as credenciais da sua conta de administrador. Certifique-se de que seu nome de usuário tenha 12 ou mais caracteres, caso contrário, você receberá um erro. Você pode habilitar a autenticação de dois fatores (2FA) aqui, mas é recomendado configurá-la mais tarde, após a instalação. Clique no botão para criar o banco de dados e a conta de usuário.

Criar Banco de Dados e Usuário do OpenEMR

A próxima página mostrará o status da instalação e mostrará seu nome de usuário e senha. Clique no botão para prosseguir para o passo 4.

Configurar PHP do OpenEMR

A próxima página listará os valores recomendados e atuais do seu arquivo php.ini. Certifique-se de que os valores atuais atendam ao requisito. O instalador mostra os valores errados para as variáveis max_input_time e max_execution_time por algum motivo, mesmo que você os tenha configurado corretamente. Você pode ignorá-los. Você pode verificar os valores atuais usando os seguintes comandos.

Uma vez que você esteja satisfeito, clique no botão para prosseguir para o passo 5.

Configurações do Apache do OpenEMR

O próximo passo lista as configurações do servidor Apache, que iremos ignorar, pois estamos usando o servidor Nginx. Clique no botão para prosseguir para a próxima página.

Selecionar Tema do OpenEMR

Aqui você será solicitado a selecionar um tema para o painel de administração. Selecione a opção Manter Atual e clique no botão para prosseguir. Você pode mudar o tema do painel de administração mais tarde, no entanto, você não poderá ver como eles ficam. Se você escolher na página do instalador, você também pode verificar como eles ficam antes de selecionar. Vamos ficar com o tema padrão.

Último Passo de Instalação do OpenEMR

A última página lista algumas notas finais sobre o software e credenciais da conta. Clique no botão Iniciar para abrir a página de login.

Página de Login do OpenEMR

Você receberá um popup de registro do OpenEMR para receber anúncios do site deles. Você pode ignorar e inserir suas credenciais e clicar no botão Login para acessar o painel.

Painel do OpenEMR

Se você não configurou a autenticação de dois fatores durante a instalação, faça isso clicando no ícone do avatar no canto superior direito e selecionando a opção Gerenciamento de MFA.

Menu 2FA do OpenEMR

Na próxima página, selecione o método de autenticação no menu suspenso e comece a configurar.

Página de Tipo 2FA do OpenEMR

Você pode começar a usar o OpenEMR para gerenciar seu negócio de saúde a partir daqui.

Conclusão

Isso conclui nosso tutorial sobre como instalar o OpenEMR em um servidor Ubuntu 22.04. Se você tiver alguma dúvida, poste nos comentários abaixo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.