搭一个好用的Miniflux
2015年搭的Tiny Tiny RSS利用率并不高,反而是养成了读完RSS unread的好习惯,因此还给Inoreader付费了几年。
后来计划(plan)赶不上变化,又陆续收到几封邮件介绍新功能,兴冲冲跑去试用被告知Support Plan不行,得Pro Plan。
所以还是得靠开源项目和自己。这次用的是Miniflux和docker-compose,资源占用少,部署和维护简单——如果不升级数据库。
部署
Miniflux是用go写的,docker image只有十几M,内存和CPU占用也几乎可以忽略不计。
部署分三步:
- 添加域名A记录指向VPS IP,确认生效
- 下载和修改
docker-compose.yml
和Caddyfile
,改成你的域名和邮箱。(如果80/443端口被占用了,记得也要改,这个caddy image号称支持非80端口申请SSL证书但是我没测试过) docker-compose up -d --remove-orphans
数次,等服务都起来了,按照gist里的命令进container创建用户
就可以导入OPML开始阅读了。
维护
维护也很简单:
- 升级版本:分别找到miniflux和caddy的新版本,修改docker-compose.yml,然后
docker-compose up -d --remove-orphans
- 服务器迁移:把整个目录拷到新机器,跑起来(此时会用旧机器申请到的SSL,所以能直接启动),修改DNS指向新IP,生效后关闭旧实例
(可选)Postgres升级
Postgresql本身的升级频率不高,(所以?)步骤复杂许多,主要用到pg_upgrade。在部署和本文编写期间,Postgres从12升到了13。
有人做了现成的工具,但是我没能跑成功,只好手动来做。
# 关机备份
cd /root/rss
docker-compose down
mkdir -p ../pgup
cd ../pgup
cp -rp ../rss/miniflux-db miniflux-db-bak-12
# 新建13数据库,启动完成后C-c退出
docker run --rm -e POSTGRES_USER=miniflux -e POSTGRES_PASSWORD=secret -e POSTGRES_DB=tmp -v /root/rss/miniflux-db-13:/var/lib/postgresql/data postgres:13-alpine
# 进container升级,旧数据库mount为/dbold
docker run -it --rm -e POSTGRES_USER=miniflux -e POSTGRES_PASSWORD=secret -e POSTGRES_DB=tmp -v /root/pgup/miniflux-db-bak-12:/dbold -v /root/rss/miniflux-db-13:/var/lib/postgresql/data postgres:13-alpine bash
# 安装postgres 12
# 用`postgres --version`检查路径:本文升级时postgres 13在/usr/local/bin,apk安装的12在/usr/bin
apk update
apk add postgresql
/usr/local/bin/postgres --verion
/usr/bin/postgres --verion
# 升级
# the data directory for the old cluster (-d DATADIR)
# the data directory for the new cluster (-D DATADIR)
# the "bin" directory for the old version (-b BINDIR)
# the "bin" directory for the new version (-B BINDIR)
su - postgres
POSTGRES_USER=miniflux POSTGRES_PASSWORD=secret /usr/local/bin/pg_upgrade -d /dbold -D /var/lib/postgresql/data -b /usr/bin -B /usr/local/bin -U miniflux
# (可选)default level of optimizer statistics
## 新tab启动cluster
docker exec -it [8e2ea4199d8d] bash
su - postgres
/usr/local/bin/postgres -D /var/lib/postgresql/data
## 老tab,跑完后C-c两个tab
./analyze_new_cluster.sh
# 用新数据库和数据目录启动
# docker-compose.yml:12-alpine => 13-alpine, miniflux-db => miniflux-db-13
cd ../rss
docker-compose up -d --remove-orphans
升级后按照changelog描述,重建index,减少硬盘占用:
root@localhost:~/rss# docker exec -it rss-db bash
bash-5.0# psql -U postgres
psql (13.0)
Type "help" for help.
postgres=# REINDEX database miniflux;
ERROR: can only reindex the currently open database
postgres=# \c miniflux;
You are now connected to database "miniflux" as user "postgres".
miniflux=# REINDEX database miniflux;
REINDEX
miniflux=# ^D\q
bash-5.0# exit
root@localhost:~/rss# du -sh mini*
262M miniflux-db
210M miniflux-db-13