自建书签应用Hoarder

2024-10-05
#bookmark
1582 words
4 min read

背景故事

今年的10月4号,我的raindrop会员正式到期。消费水平降级,我不打算续费会员。之后的许多会员服务,大概率也会被我抛弃掉。虽然SaSS服务,大概率会比开源替代品更加好用。

2024年的我,更倾向于将消费集中于AI服务【ChatGPT会员和Claude会员】、高质量代理【下期介绍目前我获取AI服务的配置】、假期吃喝玩乐等方面。

不知不觉,我的raindrop书签数量也已经来到了5k+,每当我看到有趣的网站,我就收藏一下。等到自己要用的时候,直接搜索即可。

raindrop书签数量来到了5k+

raindrop也成了我写月刊的灵感来源,我的月刊里面会有“有趣”、“链享”等模块,这些模块的素材全部来自于raindrop。

月刊部分模块灵感来源取自raindrop

到期后,我开始寻找书签应用的替代品。正好前几天,看到Youtuber—DBTech分享了hoarder的自建的视频,看了视频演示感觉不错,于是乎我准备将其定为我的raindrop开源替代品。

自建过程

项目地址:https://github.com/hoarder-app/hoarder

文档地址:https://docs.hoarder.app/

# 进入用户主目录,新建hoarder文件夹,进入新建的文件夹。
cd && mkdir hoarder && cd hoarder
# 下载docker compose文件
wget https://raw.githubusercontent.com/hoarder-app/hoarder/main/docker/docker-compose.yml

# 我调整后的docker-compose.yml文件内容如下:
# 和官方给的demo的不同点:
# 1、使用绑定挂载而不是卷
# 2、宿主机的端口仅允许本机访问,由反向代理来反代
services:
  web:
    image: ghcr.io/hoarder-app/hoarder:${HOARDER_VERSION:-release}
    restart: unless-stopped
    volumes:
      - ./data:/data
    ports:
      - 127.0.0.1:3600:3000
    env_file:
      - .env
    environment:
      MEILI_ADDR: http://meilisearch:7700
      BROWSER_WEB_URL: http://chrome:9222
      DATA_DIR: /data
  chrome:
    image: gcr.io/zenika-hub/alpine-chrome:123
    restart: unless-stopped
    command:
      - --no-sandbox
      - --disable-gpu
      - --disable-dev-shm-usage
      - --remote-debugging-address=0.0.0.0
      - --remote-debugging-port=9222
      - --hide-scrollbars
  meilisearch:
    image: getmeili/meilisearch:v1.6
    restart: unless-stopped
    env_file:
      - .env
    environment:
      MEILI_NO_ANALYTICS: "true"
    volumes:
      - ./meilisearch:/meili_data

# 编辑环境变量
vim .env

# 环境变量
# 具体设置见https://docs.hoarder.app/Installation/docker
# 文档详细得很
HOARDER_VERSION=release
NEXTAUTH_SECRET=xxx
MEILI_MASTER_KEY=xxx
NEXTAUTH_URL=https://hoarder.example.com
MAX_ASSET_SIZE_MB=1024

# 启动 Docker Compose 定义的所有服务
docker compose up -d

# 编辑caddy的配置文件
vim /etc/caddy/Caddyfile
# 反向代理caddy配置
hoarder.example.com {
        reverse_proxy localhost:3600
}

# 去cloudflare添加DNS A记录

# 重载caddy
systemctl reload caddy

紧接着,访问hoarder.example.com注册一个账号。

在hoarder网页端注册账号

在settings里面导入raindrop导出的书签。

将书签导入hoarder

5000多个书签导了差不多1个小时。

手机端的hoarder app、浏览器插件都装一下,方便收集趣站或者查找书签。浏览器插件我绑定了原本raindrop浏览器插件的快捷键,这样子收藏网页还是原本的工作流。

hoarder查找功能,还算ok。

hoarder查找功能还算ok

最后当然是关闭注册了,一个人独享hoarder😁。

# 修改docker-compose.yml文件
vim docker-compose.yml

# 和原本docker-compose.yml文件的不同点
# 添加了DISABLE_SIGNUPS环境变量
# 你如果需要AI给你打tag,也可以配置AI相关的环境变量
# 对我来说,自己手打的tag更容易搜索
services:
  web:
    image: ghcr.io/hoarder-app/hoarder:${HOARDER_VERSION:-release}
    restart: unless-stopped
    volumes:
      - ./data:/data
    ports:
      - 127.0.0.1:3600:3000
    env_file:
      - .env
    environment:
      MEILI_ADDR: http://meilisearch:7700
      BROWSER_WEB_URL: http://chrome:9222
      DATA_DIR: /data
+     DISABLE_SIGNUPS: true
  chrome:
    image: gcr.io/zenika-hub/alpine-chrome:123
    restart: unless-stopped
    command:
      - --no-sandbox
      - --disable-gpu
      - --disable-dev-shm-usage
      - --remote-debugging-address=0.0.0.0
      - --remote-debugging-port=9222
      - --hide-scrollbars
  meilisearch:
    image: getmeili/meilisearch:v1.6
    restart: unless-stopped
    env_file:
      - .env
    environment:
      MEILI_NO_ANALYTICS: "true"
    volumes:
      - ./meilisearch:/meili_data

# 停止并删除 Docker Compose 定义的所有容器、网络和卷,
# 然后重新创建和启动所有服务
docker compose down && docker compose up -d

hoarder关闭注册功能

总结

raindrop对不起,不是你的功能不行,而是我的钱包不够鼓了。自从买了10欧元/月的bero host,就注定了SaSS服务要远离了。哎😑。我不是富哥。

开源项目也不是不能用,只不过确实打不过raindrop。app端也还行,只要能搜索,就满足了基本需求。

hoarder的app也还行

就这样吧,之后的SaSS服务,如readwise、inoreader这些继续用开源项目替代。

我已经竭尽所能,去利用bero host的机器了,但奈何这机器的配置实在是太高了,够我继续折腾下去。

bero host的机器配置太高,够我继续折腾

最后,请允许我打个广告,具体广告可见via,今天DMIT全线产品补货。想自建节点的小伙伴,抓紧机会入手。

DMIT广告

有了优质的优化线路美西机器,再搭配上家宽落地,访问AI服务更稳定,不惧封号。这也是下期博客要分享的目前我访问AI服务的配置。


Emoji Reaction


© 2022-2025 Made with ❤️ By Jiakai