Banner

HospitalRun医院管理

2026-09-17

步骤一:环境准备

HospitalRun 的 Docker 部署涉及多个组件:Nginx(Web 服务器和反向代理)、CouchDB(主数据库)、ElasticSearch(搜索)、Logstash(日志处理)、Node.js(后端服务)。

确保服务器满足:

  • 操作系统:Ubuntu LTS(14.04 或更高版本)
  • 内存:建议至少 4GB(ElasticSearch 是内存大户)
  • 磁盘:至少 10GB 可用空间
  • 软件:git、docker、docker-compose 已安装

验证:

git --version
docker --version
docker compose version

步骤二:克隆仓库

cd /opt
git clone https://github.com/HospitalRun/hospitalrun-server.git
cd hospitalrun-server
如果 GitHub 仓库已被归档但仍可访问,克隆应该能成功。如果克隆失败,说明仓库已被完全移除,此时只能寻找镜像或放弃部署。

步骤三:配置 docker-compose.yml

打开 docker-compose.yml 文件,需要修改以下关键配置-3:

SSL 配置:找到 DOMAIN_NAME 参数,将 www.example.com 替换为你实际使用的域名。

如果你没有域名或想使用自签名证书,将 SSL_TYPE 改为 self,然后将证书文件放在:

  • data/nginx/cert/ssl.crt
  • data/nginx/cert/ssl.key

你需要手动创建 data/nginx/cert 目录。

端口配置:默认 Nginx 使用宿主机 80 端口。如果 80 端口被占用,修改 docker-compose.yml 中的 "80:80" 为 "其他端口:80"。

步骤四:启动服务

docker-compose up --build

首次启动需要下载镜像并构建,可能需要 10 分钟或更久,取决于网络速度。

等待所有容器启动完成。检查状态:

docker-compose ps

确认所有服务的 State 为 Up。

步骤五:访问系统

在浏览器中打开:

http://localhost/

默认登录凭据:

  • 用户名:hradmin
  • 密码:test

登录后立即修改密码。

步骤六:验证部署

登录后,建议做以下验证:

检查各模块是否正常:尝试创建一个测试患者,查看患者档案页面是否正常渲染。

验证离线功能(如果部署了桌面版):断开网络,确认系统仍能正常录入数据。

检查数据库连接:CouchDB 是系统的核心。可以通过 docker-compose logs 查看 CouchDB 容器是否有错误。

后续维护

查看日志:

docker-compose logs -f
docker-compose logs -f [容器名]

停止服务:

docker-compose down

重启服务:

docker-compose restart

备份数据:HospitalRun 的所有数据保存在 data 文件夹中,包括 Nginx 的证书、CouchDB 数据和 Elasticsearch 数据。直接备份整个 data 目录即可。

严重警告:删除 data 文件夹将丢失所有数据,包括已安装的 SSL 证书-3。

常见问题

问题:端口 80 被占用,启动失败?
错误信息类似
Bind for 0.0.0.0:80: unexpected error Permission denied。解决方案:修改 docker-compose.yml 中的端口映射,例如改为 "8080:80",然后访问 http://localhost:8080。

问题:Nginx 容器启动后立即退出?
通常是因为
SSL 配置错误。如果是 auto 模式,Let‘s Encrypt 证书生成失败;如果是 self 模式,证书文件未正确放置在 data/nginx/cert/ 目录中。查看容器日志获取具体错误信息。

问题:ElasticSearch 占用内存过高?
ElasticSearch 默认可能尝试使用大量内存。可以在 docker-compose.yml 中为 ElasticSearch 容器设置
ES_JAVA_OPTS=-Xms512m -Xmx512m 限制内存使用。

问题:如何从 v1.x 升级到 v2?
不建议升级。v2 在归档前仍处于“heavy development”状态,且架构与 v1 差异较大。项目归档后更不存在官方升级路径。对于已部署的 v1.x,保持现状并做好隔离是最务实的选择。

问题:项目归档后还能使用吗?
技术上可以——归档只是停止了更新,已发布的 Docker 镜像和代码仍然存在。但你需要自行承担:
安全漏洞无法修复、依赖过时导致的问题无法解决、遇到 bug 无处求助的风险。如果用于非关键场景或教学目的,可以尝试;如果用于真实医疗数据,强烈不建议。


9