Instalación OpenEMR · 14 min read · Sep 24, 2025
Cómo instalar OpenEMR en Ubuntu 22.04

OpenEMR es una herramienta de gestión de registros médicos electrónicos y de práctica médica de código abierto. Está certificada por la Oficina del Coordinador Nacional de Tecnología de la Información en Salud (ONC) y cuenta con registros de salud integrados, gestión de prácticas, programación, facturación electrónica, internacionalización, soporte gratuito y mucho más. Puede rastrear la demografía de los pacientes, programar citas, mantener registros de salud extremadamente detallados con informes de laboratorio, medicamentos y procedimientos, rastrear sus recetas, ayudar con la facturación médica, generar informes detallados y soporte multilingüe.
En este tutorial, aprenderás cómo instalar el software OpenEMR en un servidor que ejecute Ubuntu 22.04.
Prerrequisitos
- Un servidor que ejecute Ubuntu 20.04.
- Un usuario sudo no root.
- Un nombre de dominio completamente calificado (FQDN) como
openemr.example.com. - Asegúrate de que todo esté actualizado.
$ sudo apt update $ sudo apt upgrade - Algunos paquetes que tu sistema necesita.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -yAlgunos de estos paquetes pueden ya estar instalados en tu sistema.
Paso 1 - Configurar el Firewall
El primer paso es configurar el firewall. Ubuntu viene con ufw (Firewall sin complicaciones) por defecto.
Verifica si el firewall está en funcionamiento.
$ sudo ufw status
Obtendrás la siguiente salida.
Estado: inactivo
Permite el puerto SSH para que el firewall no interrumpa la conexión actual al habilitarlo.
$ sudo ufw allow OpenSSH
Permite también los puertos HTTP y HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Habilita el Firewall
$ sudo ufw enable
El comando puede interrumpir las conexiones ssh existentes. ¿Proceder con la operación (y|n)? y
El firewall está activo y habilitado al inicio del sistema
Verifica el estado del firewall nuevamente.
$ sudo ufw status
Deberías ver una salida similar.
Estado: activo
Para Acción Desde
-- ------ ----
OpenSSH PERMITIR En cualquier lugar
80/tcp PERMITIR En cualquier lugar
443 PERMITIR En cualquier lugar
OpenSSH (v6) PERMITIR En cualquier lugar (v6)
80/tcp (v6) PERMITIR En cualquier lugar (v6)
443 (v6) PERMITIR En cualquier lugar (v6)
Paso 2 - Instalar Nginx
Ubuntu viene con una versión anterior de Nginx. Para instalar la última versión, necesitas descargar el repositorio oficial de Nginx.
Importa la clave de firma de Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Agrega el repositorio para la versión estable de 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
Actualiza los repositorios del sistema.
$ sudo apt update
Instala Nginx.
$ sudo apt install nginx
Verifica la instalación.
$ nginx -v
nginx version: nginx/1.24.0
Inicia el servidor Nginx.
$ sudo systemctl start nginx
Paso 3 - Instalar MySQL
Ubuntu 22.04 viene con la última versión de MySQL. Puedes instalarlo con un solo comando.
$ sudo apt install mysql-server
Verifica la versión de MySQL.
$ mysql --version
mysql Ver 8.0.33-0ubuntu0.22.04.2 para Linux en x86_64 ((Ubuntu))
Este paso es necesario para las versiones de MySQL 8.0.28 y superiores. Ingresa al Shell de MySQL.
$ sudo mysql
Ejecuta el siguiente comando para establecer la contraseña para tu usuario root. Asegúrate de que tenga una mezcla de números, mayúsculas, minúsculas y caracteres especiales.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Sal del shell.
mysql> exit
Ejecuta el script de instalación segura de MySQL.
$ sudo mysql_secure_installation
Primero, se te pedirá tu contraseña de root. Ingrésala. A continuación, se te pedirá que instales el Componente de Validación de Contraseña. Verifica la fortaleza de las contraseñas utilizadas en MySQL. Presiona Y para instalarlo. Luego, se te pedirá que establezcas el nivel de la política de validación de contraseñas. Elige 2 ya que es el más fuerte.
Asegurando la implementación del servidor MySQL.
Ingresa la contraseña para el usuario root:
EL COMPONENTE DE VALIDACIÓN DE CONTRASEÑA se puede usar para probar contraseñas
y mejorar la seguridad. Verifica la fortaleza de la contraseña
y permite a los usuarios establecer solo aquellas contraseñas que son
es suficientemente seguras. ¿Te gustaría configurar el componente de VALIDACIÓN DE CONTRASEÑA?
Presiona y|Y para Sí, cualquier otra tecla para No: Y
Hay tres niveles de política de validación de contraseñas:
BAJO Longitud >= 8
MEDIO Longitud >= 8, numérico, mayúsculas y minúsculas, y caracteres especiales
FUERTE Longitud >= 8, numérico, mayúsculas y minúsculas, caracteres especiales y archivo de diccionario
Por favor ingresa 0 = BAJO, 1 = MEDIO y 2 = FUERTE: 2
Usando la contraseña existente para root.
Fortaleza estimada de la contraseña: 100
A continuación, ingresa N para rechazar cambiar tu contraseña de root. También, ingresa Y para eliminar usuarios anónimos, deshabilitar inicios de sesión remotos de root, eliminar la base de datos de prueba y recargar las tablas de privilegios.
¿Cambiar la contraseña para root? ((Presiona y|Y para Sí, cualquier otra tecla para No) : N
... omitiendo.
Por defecto, una instalación de MySQL tiene un usuario anónimo,
permitiendo que cualquiera inicie sesión en MySQL sin tener que tener
una cuenta de usuario creada para ellos. Esto está destinado solo para
testing, y para hacer que la instalación sea un poco más fluida.
Deberías eliminarlos antes de pasar a un entorno de producción.
¿Eliminar usuarios anónimos? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
Éxito.
Normalmente, solo se debería permitir que root se conecte desde
'localhost'. Esto asegura que alguien no pueda adivinar la
contraseña de root desde la red.
¿Deshabilitar el inicio de sesión remoto de root? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
Éxito.
Por defecto, MySQL viene con una base de datos llamada 'test' que
cualquiera puede acceder. Esto también está destinado solo para
testing, y debería eliminarse antes de pasar a un entorno de producción.
¿Eliminar la base de datos de prueba y el acceso a ella? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
- Eliminando la base de datos de prueba...
Éxito.
- Eliminando privilegios en la base de datos de prueba...
Éxito.
Recargar las tablas de privilegios asegurará que todos los cambios
realizados hasta ahora surtan efecto de inmediato.
¿Recargar tablas de privilegios ahora? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
Éxito.
¡Todo listo!
Paso 4 - Configurar MySQL
Inicia sesión en el shell de MySQL. Ingresa tu contraseña de root cuando se te pida.
$ sudo mysql -u root -p
Crea una base de datos de muestra.
mysql> CREATE DATABASE openemr;
Crea una cuenta de usuario SQL.
mysql> CREATE USER 'openemruser'@'localhost' IDENTIFIED BY 'Your_password2';
Otorga todos los privilegios en la base de datos al usuario.
mysql> GRANT ALL PRIVILEGES ON openemr.* TO 'openemruser'@'localhost';
Actualiza los privilegios del usuario.
mysql> FLUSH PRIVILEGES;
Sal del shell.
mysql> exit
Paso 5 - Instalar PHP y sus extensiones
Ubuntu 22.04 viene con la versión PHP 8.1.2 que está un poco desactualizada. Instalaremos la última versión PHP 8.2 usando el repositorio PHP de Ondrej.
$ sudo add-apt-repository ppa:ondrej/php
A continuación, instala PHP y sus extensiones requeridas por 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
Verifica la instalación.
$ 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
Paso 6 - Instalar SSL
Necesitamos instalar Certbot para generar el certificado SSL. Puedes instalar Certbot usando el repositorio de Ubuntu o obtener la última versión usando la herramienta Snapd. Usaremos la versión de Snapd.
Ubuntu 22.04 viene con Snapd instalado por defecto. Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd esté actualizada.
$ sudo snap install core && sudo snap refresh core
Instala Certbot.
$ sudo snap install --classic certbot
Usa el siguiente comando para asegurarte de que el comando Certbot pueda ejecutarse creando un enlace simbólico al directorio /usr/bin.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Ejecuta el siguiente comando para generar un Certificado SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d openemr.example.com
El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/openemr.example.com en tu servidor.
Genera un certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Verifica el servicio programador de renovación de Certbot.
$ sudo systemctl list-timers
Encontrarás snap.certbot.renew.service como uno de los servicios programados para ejecutarse.
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
Haz una prueba del proceso para verificar si la renovación de SSL está funcionando correctamente.
$ sudo certbot renew --dry-run
Si no ves errores, estás listo. Tu certificado se renovará automáticamente.
Paso 7 - Descargar OpenEMR
Visita la página de descarga de OpenEMR y obtén el enlace para la última versión de OpenEMR. Descarga OpenEMR en el servidor.
$ wget https://sourceforge.net/projects/openemr/files/OpenEMR%20Current/7.0.1/openemr-7.0.1.tar.gz
Extrae los archivos.
$ tar -pxzf openemr-7.0.1.tar.gz
Crea el directorio /var/www/html.
$ sudo mkdir /var/wwww/html -p
Mueve los archivos extraídos al directorio web.
$ sudo mv openemr-7.0.1 /var/www/html/openemr
Dale permisos al usuario de Nginx sobre el directorio raíz web.
$ sudo chown -R nginx:nginx /var/www/html/openemr
Paso 8 - Configurar PHP-FPM
Abre el archivo /etc/php/8.2/fpm/pool.d/www.conf.
$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Necesitamos establecer el usuario/grupo Unix de los procesos PHP a nginx. Encuentra las líneas user=www-data y group=www-data en el archivo y cámbialas a nginx.
...
; Usuario/grupo Unix de los procesos
; Nota: El usuario es obligatorio. Si el grupo no está establecido, se usará el grupo del usuario predeterminado
; se usará.
; RPM: usuario de apache elegido para proporcionar acceso a los mismos directorios que httpd
user = nginx
; RPM: Mantener un grupo permitido para escribir en el directorio de registro.
group = nginx
...
Encuentra las líneas listen.owner = www-data y listen.group = www-data en el archivo y cámbialas a nginx.
; Establecer permisos para el socket unix, si se usa uno. En Linux, se deben establecer permisos de lectura/escritura
; para permitir conexiones desde un servidor web. Muchos
; sistemas derivados de BSD permiten conexiones independientemente de los permisos. El propietario
; y el grupo pueden especificarse ya sea por nombre o por sus ID numéricos.
; Valores predeterminados: el usuario y el grupo se establecen como el usuario en ejecución
; el modo se establece en 0660
listen.owner = nginx
listen.group = nginx
Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.
Aumenta el tiempo de ejecución para PHP-FPM y PHP-CLI a 60 segundos.
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.2/fpm/php.ini
Establece el valor de la variable max_input_time a 1.
$ sudo sed -i 's/max_input_time = 60/max_input_time = -1/' /etc/php/8.2/fpm/php.ini
Aumenta el límite de memoria para PHP-FPM de 128MB a 512MB.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php/8.2/fpm/php.ini
Aumenta el tamaño máximo de carga de archivos a 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
Aumenta el número de variables de entrada máximas a 3000.
$ sudo sed -i 's/;max_input_vars = 1000/max_input_vars = 3000/g' /etc/php/8.2/fpm/php.ini
Permite acceder, desde la perspectiva de PHP, a archivos locales con declaraciones LOAD DATA.
$ sudo sed -i 's/;mysqli.allow_local_infile = On/mysqli.allow_local_infile = On/g' /etc/php/8.2/fpm/php.ini
Reinicia el servicio PHP-FPM.
$ sudo systemctl restart php8.2-fpm
Cambia el grupo del directorio de sesiones de PHP a Nginx.
$ sudo chgrp -R nginx /var/lib/php/sessions
Paso 9 - Configurar Nginx
Crea y abre el archivo /etc/nginx/conf.d/openemr.conf para editar.
$ sudo nano /etc/nginx/conf.d/openemr.conf
Pega el siguiente código en él.
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;
# usa https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, es gratis y seguro
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;
}
# Pasar scripts PHP al servidor FastCGI
location ~* \.php$ {
try_files $uri =404;
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Depende de la versión de PHP
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
include fastcgi_params;
}
# denegar acceso a archivos/directorios escribibles
location ~* ^/sites/*/(documents|edi|era) {
deny all;
return 404;
}
# denegar acceso a ciertos directorios
location ~* ^/(contrib|tests) {
deny all;
return 404;
}
# Alternativamente, se puede denegar todo acceso a estos archivos
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;
}
}
# forzar HTTPS
server {
listen 80;
listen [::]:80;
server_name openemr.example.com;
return 301 https://$host$request_uri;
}
Nota que el directorio raíz que se usará en la configuración de Nginx es /var/www/html/wallabag/public/.
Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida una vez que termines.
Abre el archivo /etc/nginx/nginx.conf para editar.
$ sudo nano /etc/nginx/nginx.conf
Agrega la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;.
server_names_hash_bucket_size 64;
Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.
Verifica la sintaxis del archivo de configuración de Nginx.
$ sudo nginx -t
nginx: el archivo de configuración /etc/nginx/nginx.conf la sintaxis es correcta
nginx: prueba del archivo de configuración /etc/nginx/nginx.conf exitosa
Reinicia el servicio Nginx.
$ sudo systemctl restart nginx
Paso 10 - Instalar OpenEMR
Abre la URL https://openemr.example.com en tu navegador y verás la siguiente pantalla de configuración.

Aquí se verifica los permisos de archivo y se confirma si puedes proceder al paso 1 o no. Si ves la palabra listo en verde, significa que puedes proceder. Haz clic en el botón azul para continuar al paso 1.

En la siguiente página, se te preguntará si deseas que el instalador cree la base de datos o use una preexistente. Selecciona la opción Ya he creado la base de datos y haz clic en el botón para continuar al paso 2.

En la siguiente página, completa las credenciales de la base de datos que configuraste en el paso 4 antes. También, ingresa las credenciales de tu cuenta de administrador. Asegúrate de que tu nombre de usuario tenga 12 o más caracteres, de lo contrario, recibirás un error. Puedes habilitar la autenticación de dos factores (2FA) aquí, pero se recomienda configurarla más tarde después de la instalación. Haz clic en el botón para crear la base de datos y la cuenta de usuario.

La siguiente página mostrará el estado de la instalación y te mostrará el nombre de usuario y la contraseña. Haz clic en el botón para continuar al paso 4.

La siguiente página enumerará los valores recomendados y actuales de tu archivo php.ini. Asegúrate de que los valores actuales satisfagan los requisitos. El instalador muestra los valores incorrectos para las variables max_input_time y max_execution_time por alguna razón, incluso si los has establecido correctamente. Puedes ignorarlos. Puedes verificar los valores actuales usando los siguientes comandos.
Una vez que estés satisfecho, haz clic en el botón para continuar al paso 5.

El siguiente paso enumera las configuraciones del servidor Apache que ignoraremos ya que estamos usando el servidor Nginx. Haz clic en el botón para continuar a la siguiente página.

Aquí se te pedirá que selecciones un tema para el panel de administración. Selecciona la opción Mantener actual y haz clic en el botón para continuar. Puedes cambiar el tema desde el panel de administración más tarde, sin embargo, no podrás ver cómo lucen. Si eliges desde la página del instalador, también puedes verificar cómo lucen antes de seleccionar. Nos quedaremos con el tema predeterminado.

La última página enumera algunas notas finales sobre el software y las credenciales de la cuenta. Haz clic en el botón Iniciar para abrir la página de inicio de sesión.

Recibirás un popup de registro de OpenEMR para recibir anuncios de su sitio. Puedes ignorarlo e ingresar tus credenciales y hacer clic en el botón Iniciar sesión para acceder al panel de control.

Si no configuraste la autenticación de dos factores durante la instalación, hazlo haciendo clic en el ícono de avatar en la parte superior derecha y seleccionando la opción Gestión de MFA.

En la siguiente página, selecciona el método de autenticación del menú desplegable y comienza a configurarlo.

Puedes comenzar a usar OpenEMR para gestionar tu negocio de salud a partir de aquí.
Conclusión
Esto concluye nuestro tutorial sobre la instalación de OpenEMR en un servidor Ubuntu 22.04. Si tienes alguna pregunta, publícalas en los comentarios a continuación.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.