Ubuntu 部署 PostgreSQL 18 完整指南:局域网+Tailscale 双网络访问配置

Posted by Bruce Liu, Microsoft Copilot on April 24, 2026

🏷️ Tags: PostgreSQL , Ubuntu , Windows , tailscale

在本地开发或小型团队协作中,我们常常需要在Ubuntu服务器部署PostgreSQL数据库,并实现「局域网本地访问」和「异地Tailscale远程访问」的双重需求。本文结合实际操作场景,从PostgreSQL 18的安装、配置安全访问、Win11连接三个维度,整理了一套可直接复制执行的完整流程,适合新手快速上手,也可作为生产环境基础配置参考。

一、说明

本文基于以下环境完成:

  • 服务器系统:Ubuntu(本文以24.04为例)

  • PostgreSQL版本:全新直接安装18(最新稳定版)

  • 访问需求:Win11局域网访问 + Tailscale异地访问

  • 安全要求:拒绝公网裸奔,仅放行信任网段,使用官方推荐加密方式

二、PostgreSQL 18 安装流程

1. 系统更新与依赖准备

安装前先更新系统软件包,确保依赖齐全,避免安装过程中出现报错:

sudo apt update && sudo apt upgrade -y

2. 添加PostgreSQL官方源

Ubuntu默认系统源可能未包含PostgreSQL 18最新版本,需添加官方源以获取稳定版本,确保安装的是PostgreSQL 18:

sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

执行过程中一路回车/选Y,完成官方源的配置与密钥导入,确保后续能正常下载安装包。

3. 安装PostgreSQL 18 (服务、客户端均自动安装)

sudo apt update
sudo apt install -y postgresql-18

安装完成后,系统会自动完成以下操作,无需手动干预:

  • 创建PostgreSQL 18的配置目录(/etc/postgresql/18/main/)和数据目录(/var/lib/postgresql/18/main/

  • 自动启动PostgreSQL 18服务,并设置开机自启

  • 创建默认的postgres系统用户和数据库管理员账户

4. 验证安装是否成功

安装完成后,执行以下命令,验证服务是否正常运行:

sudo systemctl status postgresql@18-main

若输出显示「active (running)」,说明服务启动正常;同时可验证客户端版本,确认安装的是18版本:

psql --version

正常输出应为「psql (PostgreSQL) 18.x」,表示安装成功。

5. 配置PostgreSQL 18(端口+监听)

默认配置仅允许本机访问,需修改配置文件,确保监听所有网卡(支持局域网和Tailscale虚拟网卡),并使用默认端口5432(无需修改Win11连接配置):

sudo vim /etc/postgresql/18/main/postgresql.conf

找到以下两行,取消注释(删除开头的 #)并修改:

# 原配置(注释状态)
#listen_addresses = 'localhost'

# 修改后配置(取消注释+修改值)
listen_addresses = '*'

port = 5432为默认。

保存退出。

三、关键配置:局域网+Tailscale 双网络访问

仅允许「本地局域网设备」和「Tailscale组网设备」访问,拒绝公网访问,兼顾安全和实用性。

1. 获取关键网段信息

  • 局域网网段:在Ubuntu终端执行 ip a,找到本机局域网IP(如192.168.1.100),对应的网段为192.168.1.0/24(90%家用路由器通用)。

  • Tailscale网段:执行 tailscale ip -4,获取本机Tailscale IP(如100.96.226.51),Tailscale官方默认网段为100.64.0.0/10(所有Tailscale节点均在此网段内)。

2. 配置pg_hba.conf(访问控制规则)

编辑访问控制文件,精准放行信任网段,使用最安全的scram-sha-256认证方式:

sudo vim /etc/postgresql/18/main/pg_hba.conf

保留文件原有默认配置,在末尾添加局域网和Tailscale访问规则,最终完整配置如下(可直接复制替换):

# 允许本地局域网所有设备访问(替换为你的实际网段)
host    all             all             192.168.1.0/24          scram-sha-256
# 允许所有Tailscale设备访问(官方默认网段)
host    all             all             100.64.0.0/10           scram-sha-256

3. 创建远程登录用户(自定义用户名 + 密码)

PostgreSQL 安装后会自动创建系统用户 postgres,进入数据库命令行:

sudo su - postgres
psql

创建远程登录用户(自定义用户名 + 密码):

-- 创建用户(替换 username 和 your_password 为你自己的)
CREATE USER username WITH PASSWORD 'your_password';

-- 授予超级权限(方便管理,也可按需分配权限)
ALTER ROLE username SUPERUSER;

-- 创建数据库(可选)
CREATE DATABASE test_db;

-- 退出 psql
\q

退出 postgres 用户:

exit

4. 防火墙放行端口

放行PostgreSQL默认端口5432,允许局域网和Tailscale流量通过:

sudo ufw allow 5432/tcp
sudo ufw reload

6. 重启PostgreSQL 18生效

sudo systemctl restart postgresql@18-main

验证服务状态(确保为active (running)):

sudo systemctl status postgresql@18-main

四、Win11 连接方式

配置完成后,Win11使用pgAdmin(官方推荐图形化工具)来连接。

1. 局域网连接

  • Host:Ubuntu的局域网IP(如192.168.1.100)

  • Port:5432

  • Username:数据库用户名(如postgres)

  • Password:重新设置的密码

2. Tailscale异地连接

  • Host:Ubuntu的Tailscale IP(执行tailscale ip -4获取)

  • Port:5432

  • Username/Password:与局域网连接一致

  • 前提:Win11已登录同一个Tailscale账号,组网成功。

按照本文配置后,你可以在Win11上无缝切换局域网和Tailscale方式访问Ubuntu上的PostgreSQL 18数据库,无需重复修改配置。若遇到连接问题,可检查防火墙端口、配置文件语法或Tailscale组网状态。


Share on:

« PREVIOUS: Useful tools