跳到正文
发现
Anchor:离线优先的自托管笔记应用
网站 / Web 应用效率工具

Anchor:离线优先的自托管笔记应用

一款离线优先、可自托管的笔记应用,覆盖 Web 与 Android,笔记本地存储、联网自动同步。

admin
发布于 2026-10-28
浏览
4
访问
0
下载
0
版本
v0.17.2
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

Anchor 是一款离线优先、可自托管的笔记应用,提供 Web 端与 Android 移动端。笔记保存在本地数据库中,断网也能编辑,联网后在设备之间自动同步。项目强调速度、隐私、简洁与可靠。

技术栈:后端为 Nest.js、PostgreSQL、Prisma;Web 端为 Next.js、TypeScript;移动端为 Flutter。

主要功能

  • 富文本编辑器:支持加粗、斜体、下划线、标题、列表、复选框等格式
  • 离线优先:所有编辑基于本地数据库,离线可用
  • 笔记分享:把笔记分享给其他用户,权限分查看者与编辑者
  • 笔记历史:查看笔记的历史版本,并可回滚到某一版本
  • 标签系统:自定义标签与颜色
  • 附件:为笔记添加图片与音频
  • 笔记背景:使用纯色与图案定制笔记外观
  • 置顶与归档:置顶重要笔记,归档留待日后查阅
  • 提醒:为任意笔记设置时间提醒,支持一次性或重复,在手机上收到通知
  • 本地搜索:按标题或内容搜索笔记
  • 回收站:软删除笔记,并在一段时间内可恢复
  • 自动同步:联网时在设备间同步改动
  • 导入导出:整库备份,或按纯 Markdown 导入导出笔记
  • 主屏幕小组件:在 Android 桌面快速访问笔记
  • 管理后台:用户管理、注册控制、系统统计
  • OIDC 认证:支持 Pocket ID、Authelia、Keycloak 等 OpenID Connect 提供方登录

安装与使用

使用预构建镜像自托管(推荐)

新建 docker-compose.yml:

services:
  anchor:
    image: ghcr.io/zhfahim/anchor:latest
    container_name: anchor
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - anchor_data:/data

volumes:
  anchor_data:

启动容器:

docker compose up -d

随后访问 http://localhost:3000 即可。

环境变量为可选项,默认配置即可开箱使用。常用变量包括 APP_URL(服务地址)、JWT_SECRET(认证密钥,设置时至少 16 字符)、DATA_DIR(持久化上传目录)、CORS_ORIGINS、USER_SIGNUP(disabled / enabled / review),以及 PostgreSQL 相关变量(不填则使用内置数据库)。next 标签对应预发布镜像。

从源码构建

git clone https://github.com/zhfahim/anchor.git
cd anchor
docker compose up -d

仓库中的 docker-compose.yml 会自动从源码构建镜像。

Android 客户端

前往 GitHub Releases 下载最新 APK:通用包(anchor-{version}.apk,推荐多数用户使用),或体积更小的按 CPU 架构拆分包。

备份与恢复

登录后进入 Settings,滚动到 Export & Import,导出 Anchor backup (.zip)。导出的 anchor-export-YYYY-MM-DD.zip 包含记录备份元数据、标签、笔记与附件引用的 manifest.json,以及 attachments 目录下的附件文件。恢复时在同一位置上传该文件即可。

OIDC 登录

在 OIDC 提供方中配置回调地址:Web 端为 {APP_URL}/api/auth/oidc/callback(例如 https://notes.example.com/api/auth/oidc/callback);若要在移动端使用 OIDC,需把 Anchor 配置为公共客户端(PKCE,无需 client secret),并添加回调 anchor://oidc/callback。

services:
  anchor:
    image: ghcr.io/zhfahim/anchor:latest
    environment:
      - OIDC_ENABLED=true
      - OIDC_PROVIDER_NAME=Pocket ID
      - OIDC_ISSUER_URL=https://pocketid.example.com
      - OIDC_CLIENT_ID=your-client-id
      - OIDC_CLIENT_SECRET=your-client-secret # 公共客户端可省略
      - DISABLE_INTERNAL_AUTH=false
      - APP_URL=https://notes.example.com

也可以通过管理后台的 Settings → OIDC Authentication 配置。

注意事项

  • 预发布镜像 ghcr.io/zhfahim/anchor:next 由 next 分支构建,可能包含不完整功能或不兼容变更,请勿用于生产环境,切换前务必备份数据。
  • 排查问题时可在移动端 Settings → View Logs 查看日志,并点击底部 Export 导出 .log 文件用于反馈。日志仅保存在本机(滚动写入,上限约 2 MB),其中授权头、密码、token、secret、邮箱等敏感值会先被替换为 ***。
  • 项目采用 AGPL-3.0 许可证;路线图中已规划的后续功能为实时协作。

本作品整理自 GitHub 开源项目 ZhFahim/anchor,原作者 @ZhFahim,许可证 AGPL-3.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v0.17.2当前版本

    修复若干同步与权限问题:协作者可自行归档、打标签和移除共享笔记;提醒不再因同步冲突丢失;同步改为按字段合并;会话过期时显示提示并可恢复;Web 端展示服务端真实错误信息。

评论