🚀 使用 Docker Compose 部署 onenav
下面是一份为新手准备的 OneNav 书签管理器 Docker Compose 部署教程,希望能帮你轻松搭建一个跨平台、跨设备的个人书签导航中心。
🧰 先决条件
在开始之前,请确保你的系统已经安装了 Docker 和 Docker 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,就表示部署成功了。
🚀 初始化与基本使用
-
访问 OneNav:打开你的浏览器,输入
http://你的服务器IP地址:3080。如果一切正常,你将看到 OneNav 的初始化界面。 > 注意:某些情况下,你可能需要通过http://localhost:3080来访问。请确保服务器的防火墙或安全组规则已放行你设置的端口(例如这里的3080)。 -
初始设置:根据页面提示,设置你的初始用户名和密码。请务必使用强密码并妥善保管。早期版本可能默认用户名为
xiaoz,密码为xiaoz.me,但强烈建议在初始化时自行设置。 -
开始管理书签:
- 登录后台:初始化后,通常可以在页面右上角找到登录入口,访问
http://你的服务器IP地址:3080/index.php?c=login即可登录管理后台。 - 添加书签:在后台管理界面,你可以开始添加、编辑和分类你的书签。
- 批量导入:OneNav 支持从 Chrome、Firefox、Edge 等浏览器批量导入书签,可以快速迁移你现有的收藏。
- 登录后台:初始化后,通常可以在页面右上角找到登录入口,访问
⚙️ 主要功能与进阶配置
OneNav 不仅仅是一个简单的书签列表,它提供了许多强大且实用的功能:
| 功能类别 | 说明 |
|---|---|
| 🔖 书签管理 | 支持后台管理、链接信息自动识别、二级分类和私有链接。 |
| 🎨 个性化 | 支持多种主题风格(默认内置Material Design等模板)。 |
| 🛠️ 扩展与集成 | 支持API集成、浏览器扩展、uTools插件和右键菜单管理。 |
| 📥 数据迁移 | 支持Chrome/Firefox/Edge书签批量导入。 |
使用域名访问(反向代理)
如果你希望通过域名(例如 nav.yourdomain.com)访问 OneNav,可以使用 Nginx 设置反向代理。
- 安装 Nginx (若尚未安装)。
- 创建配置文件,例如
/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.yml 和 onenav_data 文件夹)复制到新服务器,然后在新服务器运行 docker-compose up -d 即可。
希望这份教程能帮助你顺利部署并使用 OneNav!如果有其他问题,欢迎随时交流。