Skip to content

🚀 使用 Docker Compose 部署 onenav

下面是一份为新手准备的 OneNav 书签管理器 Docker Compose 部署教程,希望能帮你轻松搭建一个跨平台、跨设备的个人书签导航中心。

🧰 先决条件

在开始之前,请确保你的系统已经安装了 DockerDocker Compose。你可以通过在终端中运行以下命令来验证:

docker --version
docker-compose --version

如果系统返回了版本号,说明已经安装妥当。

📦 一键部署 OneNav

1. 创建并进入部署目录 创建一个专门的目录来存放你的 OneNav 数据,这有助于日后管理和备份。

mkdir onenav && cd onenav

2. 创建 docker-compose.yml 文件 将以下内容复制并粘贴到新创建的 docker-compose.yml 文件中。这个配置设定了服务重启策略、端口映射以及数据持久化存储。

#version: '3'
services:
  onenav:
    container_name: onenav
    image: helloz/onenav  # 或使用镜像加速地址 pub.tcp.mk/helloz/onenav:cite[1]
    ports:
      - "3080:80"  # 主机端口 3080 可自定义,容器端口 80 勿改
    volumes:
      - './onenav_data:/data/wwwroot/default/data'  # 持久化数据存储
    restart: unless-stopped
    deploy:
     resources:
       limits:
        cpus: '0.5'  # 限制CPU使用,可根据实际情况调整
        memory: 512M # 限制内存使用,可根据实际情况调整
        #cpus: '5'
        #memory: 1G

关键配置说明: * image: helloz/onenav:指定了 OneNav 的官方 Docker 镜像。 * ports"3080:80" 表示将容器内部的 80 端口映射到主机的 3080 端口。你可以根据需要修改主机端口(前面的3080),但容器端口(后面的80)请保持不变。 * volumes'./onenav_data:/data/wwwroot/default/data' 这一步至关重要,它将容器内的数据目录映射到主机的 ./onenav_data 文件夹,确保你的书签数据和配置在容器重启或更新后也不会丢失。请务必保持容器内的路径 /data/wwwroot/default/data 不变,否则可能导致数据丢失。 * restart: unless-stopped:设置容器自动重启策略,除非手动停止,否则总是重启,保证服务可用性。

3. 启动 OneNav 服务docker-compose.yml 文件所在目录下,执行命令:

docker-compose up -d

-d 参数代表在后台运行容器。

4. 验证服务状态 运行以下命令检查容器是否正常启动:

docker-compose ps

如果看到 onenav 容器的状态为 Up,就表示部署成功了。

🚀 初始化与基本使用

  1. 访问 OneNav:打开你的浏览器,输入 http://你的服务器IP地址:3080。如果一切正常,你将看到 OneNav 的初始化界面。 > 注意:某些情况下,你可能需要通过 http://localhost:3080 来访问。请确保服务器的防火墙或安全组规则已放行你设置的端口(例如这里的3080)。

  2. 初始设置:根据页面提示,设置你的初始用户名和密码。请务必使用强密码并妥善保管。早期版本可能默认用户名为 xiaoz,密码为 xiaoz.me,但强烈建议在初始化时自行设置

  3. 开始管理书签

    • 登录后台:初始化后,通常可以在页面右上角找到登录入口,访问 http://你的服务器IP地址:3080/index.php?c=login 即可登录管理后台。
    • 添加书签:在后台管理界面,你可以开始添加、编辑和分类你的书签。
    • 批量导入:OneNav 支持从 Chrome、Firefox、Edge 等浏览器批量导入书签,可以快速迁移你现有的收藏。

⚙️ 主要功能与进阶配置

OneNav 不仅仅是一个简单的书签列表,它提供了许多强大且实用的功能:

功能类别 说明
🔖 书签管理 支持后台管理、链接信息自动识别、二级分类和私有链接。
🎨 个性化 支持多种主题风格(默认内置Material Design等模板)。
🛠️ 扩展与集成 支持API集成、浏览器扩展、uTools插件和右键菜单管理。
📥 数据迁移 支持Chrome/Firefox/Edge书签批量导入。

使用域名访问(反向代理)

如果你希望通过域名(例如 nav.yourdomain.com)访问 OneNav,可以使用 Nginx 设置反向代理。

  1. 安装 Nginx (若尚未安装)。
  2. 创建配置文件,例如 /etc/nginx/conf.d/onenav.conf,内容如下(请替换 demo.onenav.top 为你的域名,3080 为你的端口): ```nginx server { listen 80; server_name demo.onenav.top; # 你的域名
    location / {
        proxy_pass http://127.0.0.1:3080; # 将请求转发给OneNav容器
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    

    } 3. **测试并重载 Nginx**:bash nginx -t && nginx -s reload ``` 4. 将你的域名解析到服务器 IP。现在,你就可以通过域名直接访问 OneNav 了。强烈建议在此基础上为域名配置 SSL 证书(HTTPS),以提升安全性。

🔒 维护指南

  • 数据备份:定期备份部署目录下的 onenav_data 文件夹。这里面包含了你的所有书签数据和配置文件。
  • 服务更新bash # 进入 docker-compose.yml 所在目录 docker-compose down docker-compose pull docker-compose up -d
  • 安全提醒
    • 务必在初始化时设置强密码
    • 若使用 Nginx 反向代理,请参考官方文档中的安全设置,防止敏感文件被直接访问。

❓ 常见问题 (FAQ)

Q1:访问 http://服务器IP:3080 看不到页面? A1:请检查: * 容器是否正常运行:docker-compose ps。 * 服务器防火墙/安全组是否开放了 3080 端口。

Q2:忘记登录密码怎么办? A2:你可以通过修改数据卷中 config.php 文件里的 PASSWORD 字段来重置密码。该文件通常位于你挂载的数据目录(如 onenav_data)下。

Q3:如何迁移我的 OneNav 数据到新服务器? A3:只需要将整个 onenav 部署目录(包含 docker-compose.ymlonenav_data 文件夹)复制到新服务器,然后在新服务器运行 docker-compose up -d 即可。

希望这份教程能帮助你顺利部署并使用 OneNav!如果有其他问题,欢迎随时交流。