Skip to content
L1nSn0w edited this page Jul 1, 2025 · 4 revisions

3秒极速部署

🐳 docker部署(推荐)

docker run -d \
  --name ech0 \
  -p 6277:6277 \
  -v /opt/ech0/data:/app/data \
  -e JWT_SECRET="Hello Echos!" \
  sn0wl1n/ech0:latest

💡 部署完成后访问 ip:6277 即可使用
🚷 建议把-e JWT_SECRET="Hello Echos!"里的Hello Echos!改成别的内容以提高安全性
📍 首次使用注册的账号会被设置为管理员(目前仅管理员支持发布内容)
🎈 数据存储在/opt/ech0/data下

🐋 docker-componse部署

创建一个新目录并将 docker-compose.yml 文件放入其中

在该目录下执行以下命令启动服务:

docker-compose up -d

如何更新

🔄 Docker部署如何更新

# 停止当前的容器
docker stop ech0

# 移除容器
docker rm ech0

# 拉取最新的镜像
docker pull sn0wl1n/ech0:latest

# 启动新版本的容器
docker run -d \
  --name ech0 \
  -p 6277:6277 \
  -v /opt/ech0/data:/app/data \
  -v /opt/ech0/config/config.yaml:/app/data/config/config.yaml \
  -e JWT_SECRET="Hello Echos!" \
  sn0wl1n/ech0:latest

💎 Docker Compose部署如何更新

# 进入 compose 文件目录
cd /path/to/compose

# 拉取最新镜像并重启
docker-compose pull && \
docker-compose up -d --force-recreate

# 清理旧镜像
docker image prune -f

❓ 常见问题

  1. Ech0是什么?
    Ech0 是一款轻量级的开源自托管平台,专为快速发布与分享个人想法、文字和链接而设计。它提供简洁的界面,支持零干扰的写作体验,所有数据存储于本地,确保用户对内容的完全控制。

  2. Ech0不是什么?
    Ech0不是传统的笔记软件,设计之初并不是为了专业的笔记管理和记录(如Obsidian、Notion等),Ech0的核心功能类似朋友圈/说说。

  3. Ech0 是免费的吗?
    是的,Ech0 完全免费且开源,遵循 MIT 协议。它没有广告、追踪、订阅或服务依赖。

  4. 如何进行备份和恢复数据?
    由于所有内容都存储在本地 SQLite 文件中,您只需备份/opt/ech0/data目录中的文件即可(具体选择部署时的映射路径)。在需要恢复时,直接将备份文件还原即可。

  5. Ech0 支持 RSS 吗?
    是的,Ech0 支持 RSS 订阅,您可以通过 RSS 阅读器订阅您的内容更新。

  6. 为什么发布失败,提示联系管理员?
    当前版本设计上,只有管理员可以发布内容。部署后,首个注册的用户会自动被设置为系统管理员,其他用户无法发布内容(可在设置中分配权限)。

  7. 为什么没有明确的权限划分?
    Ech0 旨在保持简洁和轻量,因此在设计时没有复杂的权限系统。我们希望用户能够专注于分享内容,而不是被复杂的权限管理所困扰。为了保持流畅的使用体验,Ech0 尽量精简了功能,避免不必要的复杂性。(因此目前只有管理员与非管理员之分,所以请谨慎分配你的权限)。

  8. 为什么别人无法显示自己的Connect头像?
    要使别人显示自己的Connect头像需要在系统设置-服务地址中填入自己当前的实例地址,比如我自己填的是部署ech0后的域名https://memo.vaaat.com(注意:这里填的链接需要带上http或https)。

  9. 设置中的MetingAPI项是什么?
    这是用于解析获取音乐流媒体直链的服务api,用于分享的音乐卡片功能,如果不设置则默认使用ech0提供的api(部署于vercel)。

  10. 为什么添加后的Connect只显示了一部分?
    因为后端会尝试获取所有connect的实例信息,如果某个实例挂了或者无法访问则会被抛弃,只返回获取到的有效connect实例的信息给前端。


🛠️ 开发

后端要求:

📌 Go 1.24.3+

📌 C 编译器
使用 go-sqlite3 等需要 CGO 的库时,需安装:

  • Windows:
    • MinGW-w64
    • 解压后将bin目录添加到PATH
  • macOS: brew install gcc
  • Linux: sudo apt install build-essential

📌 Google Wire
安装wire用于依赖注入文件生成:

  • go install github.com/google/wire/cmd/wire@latest

前端要求:

📌 NodeJS v23.11.1+, PNPM v10

注:如需要多个nodejs版本共存可使用fnm进行管理


启动前后端联调

第一步: 后端(在Ech0根目录下):

go run cmd/ech0/main.go # 编译并启动后端

如果依赖注入关系发生了变化先需要在ech0/internal/di/下执行wire命令生成新的wire_gen.go文件

第二步: 前端(新终端):

cd web # 进入前端目录

pnpm install # 如果没有安装依赖则执行

pnpm dev # 启动前端预览

第三步: 前后端启动后访问:
前端预览: http://localhost:5173 (端口在启动后可在控制台查看)
后端预览: http://localhost:6273 (默认后端端口为6273)