[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-/blog/tutorial/instalar-postgresql-en-ubuntu-24":3,"prev-/blog/tutorial/instalar-postgresql-en-ubuntu-24":453,"next-/blog/tutorial/instalar-postgresql-en-ubuntu-24":456,"related-/blog/tutorial/instalar-postgresql-en-ubuntu-24":459},{"id":4,"title":5,"author":6,"authorUrl":7,"body":8,"category":424,"cta":425,"date":426,"dateModified":426,"description":427,"draft":428,"extension":429,"faq":430,"featured":428,"image":440,"imageAlt":441,"meta":442,"navigation":443,"path":444,"readingTime":445,"seo":446,"stem":447,"tags":448,"__hash__":452},"blog/blog/tutorial/instalar-postgresql-en-ubuntu-24.md","Cómo instalar PostgreSQL en Ubuntu 24.04","Syswork México","/nosotros",{"type":9,"value":10,"toc":415},"minimark",[11,15,20,23,31,35,38,80,84,106,117,120,138,142,160,163,248,251,255,262,277,280,288,295,309,312,318,321,337,352,356,359,377,381,402,411],[12,13,14],"p",{},"PostgreSQL es uno de los sistemas de bases de datos más robustos y utilizados en entornos empresariales. En esta guía te mostramos cómo instalarlo, configurarlo y asegurarlo en un servidor Ubuntu 24.04 LTS listo para producción.",[16,17,19],"h2",{"id":18},"requisitos-previos","Requisitos previos",[12,21,22],{},"Necesitas un servidor con Ubuntu 24.04 LTS, acceso root o sudo, y conexión a internet.",[24,25,28],"alert",{"title":26,"type":27},"Versión","info",[12,29,30],{},"Esta guía instala PostgreSQL 16, la versión estable más reciente incluida en los repositorios de Ubuntu 24.04.",[16,32,34],{"id":33},"paso-1-actualizar-el-sistema","Paso 1: Actualizar el sistema",[12,36,37],{},"Antes de instalar cualquier paquete, asegúrate de tener el sistema actualizado:",[39,40,45],"pre",{"className":41,"code":42,"language":43,"meta":44,"style":44},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","sudo apt update && sudo apt upgrade -y\n","bash","",[46,47,48],"code",{"__ignoreMap":44},[49,50,53,57,61,64,68,71,73,76],"span",{"class":51,"line":52},"line",1,[49,54,56],{"class":55},"sbgvK","sudo",[49,58,60],{"class":59},"s_sjI"," apt",[49,62,63],{"class":59}," update",[49,65,67],{"class":66},"sP7_E"," &&",[49,69,70],{"class":55}," sudo",[49,72,60],{"class":59},[49,74,75],{"class":59}," upgrade",[49,77,79],{"class":78},"stzsN"," -y\n",[16,81,83],{"id":82},"paso-2-instalar-postgresql","Paso 2: Instalar PostgreSQL",[39,85,87],{"className":41,"code":86,"language":43,"meta":44,"style":44},"sudo apt install postgresql postgresql-contrib -y\n",[46,88,89],{"__ignoreMap":44},[49,90,91,93,95,98,101,104],{"class":51,"line":52},[49,92,56],{"class":55},[49,94,60],{"class":59},[49,96,97],{"class":59}," install",[49,99,100],{"class":59}," postgresql",[49,102,103],{"class":59}," postgresql-contrib",[49,105,79],{"class":78},[12,107,108,109,112,113,116],{},"El paquete ",[46,110,111],{},"postgresql-contrib"," incluye utilidades adicionales como ",[46,114,115],{},"pg_stat_statements"," que son esenciales para monitoreo en producción.",[12,118,119],{},"Verifica que el servicio está corriendo:",[39,121,123],{"className":41,"code":122,"language":43,"meta":44,"style":44},"sudo systemctl status postgresql\n",[46,124,125],{"__ignoreMap":44},[49,126,127,129,132,135],{"class":51,"line":52},[49,128,56],{"class":55},[49,130,131],{"class":59}," systemctl",[49,133,134],{"class":59}," status",[49,136,137],{"class":59}," postgresql\n",[16,139,141],{"id":140},"paso-3-acceder-a-postgresql","Paso 3: Acceder a PostgreSQL",[39,143,145],{"className":41,"code":144,"language":43,"meta":44,"style":44},"sudo -u postgres psql\n",[46,146,147],{"__ignoreMap":44},[49,148,149,151,154,157],{"class":51,"line":52},[49,150,56],{"class":55},[49,152,153],{"class":78}," -u",[49,155,156],{"class":59}," postgres",[49,158,159],{"class":59}," psql\n",[12,161,162],{},"Dentro del shell de PostgreSQL, crea un usuario y base de datos:",[39,164,168],{"className":165,"code":166,"language":167,"meta":44,"style":44},"language-sql shiki shiki-themes material-theme-lighter github-light github-dark","CREATE USER miusuario WITH PASSWORD 'contraseña_segura';\nCREATE DATABASE mibasededatos OWNER miusuario;\nGRANT ALL PRIVILEGES ON DATABASE mibasededatos TO miusuario;\n\\q\n","sql",[46,169,170,203,220,242],{"__ignoreMap":44},[49,171,172,176,179,183,186,189,193,196,199],{"class":51,"line":52},[49,173,175],{"class":174},"sw1J6","CREATE",[49,177,178],{"class":174}," USER",[49,180,182],{"class":181},"sGLFI"," miusuario",[49,184,185],{"class":174}," WITH",[49,187,188],{"class":174}," PASSWORD",[49,190,192],{"class":191},"sjJ54"," '",[49,194,195],{"class":59},"contraseña_segura",[49,197,198],{"class":191},"'",[49,200,202],{"class":201},"su5hD",";\n",[49,204,206,208,211,214,217],{"class":51,"line":205},2,[49,207,175],{"class":174},[49,209,210],{"class":174}," DATABASE",[49,212,213],{"class":181}," mibasededatos",[49,215,216],{"class":174}," OWNER",[49,218,219],{"class":201}," miusuario;\n",[49,221,223,226,229,232,234,237,240],{"class":51,"line":222},3,[49,224,225],{"class":174},"GRANT",[49,227,228],{"class":201}," ALL PRIVILEGES ",[49,230,231],{"class":174},"ON",[49,233,210],{"class":174},[49,235,236],{"class":201}," mibasededatos ",[49,238,239],{"class":174},"TO",[49,241,219],{"class":201},[49,243,245],{"class":51,"line":244},4,[49,246,247],{"class":201},"\\q\n",[249,250],"ad-banner",{},[16,252,254],{"id":253},"paso-4-configurar-acceso-remoto","Paso 4: Configurar acceso remoto",[12,256,257,258,261],{},"Edita ",[46,259,260],{},"postgresql.conf",":",[39,263,265],{"className":41,"code":264,"language":43,"meta":44,"style":44},"sudo nano /etc/postgresql/16/main/postgresql.conf\n",[46,266,267],{"__ignoreMap":44},[49,268,269,271,274],{"class":51,"line":52},[49,270,56],{"class":55},[49,272,273],{"class":59}," nano",[49,275,276],{"class":59}," /etc/postgresql/16/main/postgresql.conf\n",[12,278,279],{},"Cambia la línea:",[39,281,286],{"className":282,"code":284,"language":285},[283],"language-text","listen_addresses = '*'\n","text",[46,287,284],{"__ignoreMap":44},[12,289,290,291,294],{},"Luego edita ",[46,292,293],{},"pg_hba.conf"," para definir qué IPs pueden conectarse:",[39,296,298],{"className":41,"code":297,"language":43,"meta":44,"style":44},"sudo nano /etc/postgresql/16/main/pg_hba.conf\n",[46,299,300],{"__ignoreMap":44},[49,301,302,304,306],{"class":51,"line":52},[49,303,56],{"class":55},[49,305,273],{"class":59},[49,307,308],{"class":59}," /etc/postgresql/16/main/pg_hba.conf\n",[12,310,311],{},"Agrega al final:",[39,313,316],{"className":314,"code":315,"language":285},[283],"host    all    all    0.0.0.0/0    scram-sha-256\n",[46,317,315],{"__ignoreMap":44},[12,319,320],{},"Reinicia el servicio para aplicar los cambios:",[39,322,324],{"className":41,"code":323,"language":43,"meta":44,"style":44},"sudo systemctl restart postgresql\n",[46,325,326],{"__ignoreMap":44},[49,327,328,330,332,335],{"class":51,"line":52},[49,329,56],{"class":55},[49,331,131],{"class":59},[49,333,334],{"class":59}," restart",[49,336,137],{"class":59},[24,338,341],{"title":339,"type":340},"Seguridad","warning",[12,342,343,344,347,348,351],{},"En producción nunca dejes acceso abierto a ",[46,345,346],{},"0.0.0.0/0",". Restringe a las IPs específicas de tus servidores de aplicación, por ejemplo: ",[46,349,350],{},"host all all 10.0.1.0/24 scram-sha-256",".",[16,353,355],{"id":354},"paso-5-habilitar-firewall","Paso 5: Habilitar firewall",[12,357,358],{},"Si usas UFW, permite el tráfico al puerto de PostgreSQL:",[39,360,362],{"className":41,"code":361,"language":43,"meta":44,"style":44},"sudo ufw allow 5432/tcp\n",[46,363,364],{"__ignoreMap":44},[49,365,366,368,371,374],{"class":51,"line":52},[49,367,56],{"class":55},[49,369,370],{"class":59}," ufw",[49,372,373],{"class":59}," allow",[49,375,376],{"class":59}," 5432/tcp\n",[16,378,380],{"id":379},"siguientes-pasos","Siguientes pasos",[12,382,383,384,387,388,391,392,397,398,401],{},"Con PostgreSQL instalado y configurado, puedes avanzar con la optimización de rendimiento (",[46,385,386],{},"shared_buffers",", ",[46,389,390],{},"work_mem","), configurar ",[393,394,396],"a",{"href":395},"/blog","réplicas para alta disponibilidad",", o implementar backups automatizados con ",[46,399,400],{},"pg_dump"," o herramientas como Barman.",[403,404],"call-to-action",{"description":405,"eyebrow":406,"icon":407,"label":408,"title":409,"to":410},"Ofrecemos servicios de instalación, optimización y alta disponibilidad de PostgreSQL para empresas.","Bases de datos empresariales","i-lucide-database","Solicitar evaluación","¿Necesitas ayuda con PostgreSQL en producción?","/contacto",[412,413,414],"style",{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sw1J6, html code.shiki .sw1J6{--shiki-light:#F76D47;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":44,"searchDepth":205,"depth":222,"links":416},[417,418,419,420,421,422,423],{"id":18,"depth":205,"text":19},{"id":33,"depth":205,"text":34},{"id":82,"depth":205,"text":83},{"id":140,"depth":205,"text":141},{"id":253,"depth":205,"text":254},{"id":354,"depth":205,"text":355},{"id":379,"depth":205,"text":380},"tutorial",null,"2026-01-15","Guía paso a paso para instalar, configurar y asegurar PostgreSQL en Ubuntu 24.04 LTS para entornos de producción.",false,"md",[431,434,437],{"question":432,"answer":433},"¿Qué versión de PostgreSQL se instala en Ubuntu 24.04?","Ubuntu 24.04 LTS incluye PostgreSQL 16 en sus repositorios oficiales, que es la versión estable más reciente.",{"question":435,"answer":436},"¿Es seguro abrir el puerto 5432 a internet?","No. En producción siempre debes restringir el acceso al puerto 5432 únicamente a las IPs de tus servidores de aplicación usando pg_hba.conf y reglas de firewall.",{"question":438,"answer":439},"¿Puedo instalar una versión diferente de PostgreSQL?","Sí, puedes agregar el repositorio oficial de PostgreSQL (apt.postgresql.org) para instalar versiones más recientes o anteriores.","/images/blog/postgresql-ubuntu.jpg","Terminal de Linux mostrando la instalación de PostgreSQL en Ubuntu 24.04",{},true,"/blog/tutorial/instalar-postgresql-en-ubuntu-24",6,{"title":5,"description":427},"blog/tutorial/instalar-postgresql-en-ubuntu-24",[449,450,451,424],"postgresql","bases-de-datos","linux","dxRHAHRyvhQY1h9S22xV8y68bsfYCtd-fOl69S9mlK4",{"path":454,"title":455},"/blog/tutorial/replicacion-postgresql-alta-disponibilidad","Replicación master-slave en PostgreSQL — alta disponibilidad paso a paso",{"path":457,"title":458},"/blog/tutorial/instalar-proxmox-primera-vm","Instalar Proxmox VE y crear tu primera máquina virtual",[460,468,476],{"path":461,"title":462,"description":463,"date":464,"category":424,"image":465,"imageAlt":466,"readingTime":467},"/blog/tutorial/apis-rest-python-fastapi","Crear APIs REST con Python y FastAPI para integraciones empresariales","Guía paso a paso para construir una API REST profesional con Python y FastAPI que conecte tu ERP, CRM o cualquier sistema con validación, autenticación y documentación automática.","2026-03-04","/images/blog/fastapi-api-rest.jpg","Editor de código mostrando una API FastAPI con documentación Swagger generada automáticamente",12,{"path":469,"title":470,"description":471,"date":472,"category":424,"image":473,"imageAlt":474,"readingTime":475},"/blog/tutorial/configurar-firewall-ufw-linux","Configurar firewall en Linux con UFW — reglas esenciales","Guía paso a paso para configurar UFW (Uncomplicated Firewall) en Ubuntu y Debian con las reglas esenciales para proteger servidores de producción.","2026-03-01","/images/blog/ufw-firewall-linux.jpg","Terminal de Linux mostrando reglas de firewall UFW activas protegiendo un servidor de producción",8,{"path":477,"title":478,"description":479,"date":480,"category":424,"image":481,"imageAlt":482,"readingTime":483},"/blog/tutorial/traefik-reverse-proxy-docker","Configurar Traefik como reverse proxy para contenedores Docker","Guía paso a paso para instalar Traefik como reverse proxy con descubrimiento automático de contenedores Docker, SSL con Let's Encrypt y dashboard de monitoreo.","2026-02-28","/images/blog/traefik-docker.jpg","Dashboard de Traefik mostrando rutas automáticas hacia múltiples contenedores Docker con SSL activo",10]