QNAP TS-464c2 使用 Docker 部署 Blinko 完整记录
在 QNAP NAS 上部署个人知识管理系统 Blinko,实现数据私有化存储。
背景
随着 AI 工具的发展,个人知识管理逐渐从传统笔记系统向 AI 增强知识库方向发展。
Blinko 是一个开源的个人知识管理工具,支持:
- 快速记录想法
- Markdown 笔记
- 标签管理
- AI 辅助能力
- 私有化部署
为了保证数据安全和长期可控,我计划将 Blinko 部署在自己的 NAS 上。
最终目标:
- NAS 本地运行 Blinko
- 数据持久化保存
- 手机可以访问
- 后续通过个人域名 + HTTPS 实现内外网统一访问
环境说明
硬件环境
NAS:
1
2
3
4
5
6
7
8
9
10
11
| 型号:
QNAP TS-464c2
CPU:
Intel x86_64
硬盘:
2 × HDD RAID1
SSD:
2 × NVMe RAID1
|
用途:
软件环境
NAS 系统:
Docker 环境:
1
2
3
4
| Container Station
Docker Compose:
v2.29.1-qnap2
|
验证:
输出:
1
| Docker Compose version v2.29.1-qnap2
|
说明 Docker 环境正常。
存储结构确认
通过:
确认 RAID 状态:
1
2
| md2 : active raid1
md1 : active raid1
|
说明:
- HDD 使用 RAID1
- NVMe 使用 RAID1
RAID1 可以保证:
但:
RAID1 不是备份,仍然需要额外备份策略。
前期准备
安装 Container Station
打开 QNAP:
1
2
3
| App Center
↓
Container Station
|
安装完成后验证:
初始状态:
说明 Docker 服务正常。
Entware 安装过程(可选)
由于计划长期使用 NAS,同时希望具备一些 Linux 工具环境,因此安装 Entware。
初次安装问题
第一次安装 Entware 后执行:
1
| opkg install zsh git tmux
|
出现:
1
2
| verify_pkg_installable:
Only have 6000kb available on filesystem /opt
|
原因:
QNAP 默认:
位于系统分区。
查看:
发现:
问题分析
QNAP 系统结构:
1
2
3
4
5
6
7
8
9
| 系统盘
|
+-- QTS系统文件
数据盘
|
+-- 用户数据
+-- Docker数据
+-- QPKG应用
|
直接安装 Entware 会占用系统空间。
因此改用 QNAP QPKG 方式安装。
重新安装 Entware
通过 QNAP App Center 手动安装:
安装后:
1
| /share/CACHEDEV1_DATA/.qpkg/Entware
|
映射:
1
2
3
4
5
| /opt
↓
/share/CACHEDEV1_DATA/.qpkg/Entware
|
验证:
确认:
测试:
成功:
1
| Updated list of available packages
|
创建 Blinko 部署目录
为了方便管理,统一放在 Docker 数据目录:
1
2
3
| mkdir -p /share/CACHEDEV1_DATA/docker/blinko
cd /share/CACHEDEV1_DATA/docker/blinko
|
最终目录:
1
2
3
4
5
6
| docker
└── blinko
|
├── docker-compose.yml
├── data
└── postgres
|
其中:
- data:Blinko数据
- postgres:数据库文件
编写 Docker Compose
创建:
内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| services:
postgres:
image: postgres:16-alpine
container_name: blinko-postgres
environment:
POSTGRES_USER: blinko
POSTGRES_PASSWORD: blinko_password
POSTGRES_DB: blinko
volumes:
- ./postgres:/var/lib/postgresql/data
restart:
unless-stopped
blinko:
image: blinkospace/blinko:latest
container_name: blinko
depends_on:
- postgres
ports:
- "1111:1111"
environment:
DATABASE_URL:
postgresql://blinko:blinko_password@postgres:5432/blinko
volumes:
- ./data:/app/data
restart:
unless-stopped
|
部署过程中遇到的问题
问题1:Blinko 镜像名称错误
第一次启动:
失败:
1
2
| pull access denied for blinkoai/blinko
repository does not exist
|
原因:
Docker 镜像地址错误。
错误:
通过:
确认正确镜像:
修改:
1
2
| image:
blinkospace/blinko:latest
|
问题2:Docker Hub 拉取 PostgreSQL 失败
错误:
原因:
Docker Hub 网络连接中断。
解决:
手动拉取:
1
| docker pull postgres:16-alpine
|
成功:
重新启动即可。
启动 Blinko
执行:
输出:
1
2
3
| Container blinko-postgres Started
Container blinko Started
|
查看:
结果:
1
2
3
| blinko Up
blinko-postgres Up
|
端口:
Web访问测试
浏览器访问:
例如:
1
| http://192.168.100.172:1111
|
成功进入:
说明:
- Docker运行正常
- 数据库正常
- 网络正常
- 数据目录挂载正常
最终部署结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| QNAP TS-464c2
/share/CACHEDEV1_DATA/docker
|
|
blinko
|
+---- blinko container
|
+---- postgres container
数据:
docker/blinko/data
docker/blinko/postgres
|
后续优化计划
域名访问
目标:
1
| https://blinko.example.com
|
方案:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| 腾讯云DNS
|
家庭公网IP
|
路由器端口映射
|
Nginx Proxy Manager
|
Blinko
|
HTTPS
使用:
实现:
手机访问
推荐:
HarmonyOS 手机:
访问方式:
方案1:
1
2
| 局域网访问
http://NAS_IP:1111
|
方案2:
数据备份
当前数据:
1
| /share/CACHEDEV1_DATA/docker/blinko
|
建议:
使用:
备份:
1
2
3
4
5
| data/
postgres/
docker-compose.yml
|
总结
本次完成:
✅ QNAP Docker环境准备
✅ Entware环境整理
✅ PostgreSQL部署
✅ Blinko部署
✅ 数据持久化
✅ Web访问验证
最终实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
| 私人知识库
+
NAS存储
+
Docker部署
+
未来AI增强
|
后续可以继续扩展:
- 域名访问
- HTTPS
- 手机App化体验
- 自动备份
- 与 Obsidian / AI RAG 集成
本文原载于 巴巴变的博客,遵循CC BY-NC-SA 4.0协议,复制请保留原文出处。