Podman安装部署Nextcloud | 开源自托管个人云存储共享协作方案
1.First | 序
1.1.What is nextcloud? | 什么是 nextcloud ?
Nextcloud 是一个开源的文件同步与共享平台,可以自建私有云服务
类似于
- Google Drive
- Dropbox
- OneDrive
但数据完全由用户掌控,部署在自己的服务器或 VPS 上。
1.1.1.主要功能
-
文件存储与同步
- 支持多设备(PC、手机、平板)之间的文件同步。
- 可以通过 Web 界面访问,支持桌面和移动客户端。
-
共享与协作
- 文件夹或文件可以与其他用户或外部用户共享,设置访问权限(只读、可编辑等)。
- 内置文档协作工具(支持文档在线编辑,例如使用 Collabora Online 或 OnlyOffice)。
-
扩展插件系统
- 提供大量插件(Calendar、Mail、Notes、Talk 视频会议等),可以扩展成一个完整的协同办公平台。
-
数据安全
- 端到端加密,保证数据安全性。
- 支持 LDAP、二次认证等用户认证方式。
-
跨平台
- 支持 Linux、Windows、macOS 服务器端部署,客户端覆盖 Android 和 iOS。
1.1.2.为什么选择 Nextcloud ?
- 隐私与控制权:所有数据都保存在自己掌控的服务器上,不依赖第三方服务。
- 灵活性:根据需求选择不同的功能插件,打造专属云服务。
- 成本节约:自建云存储可以节省长期的云服务费用。
如果你有一台 VPS 或服务器,可以考虑部署 Nextcloud 自建一个私有云,实现文件同步、备份和协作办公
以上总结来自ChatGPT
1.2.OS&APP Version | * 版本
1.2.1.OS

1.2.2.Podman

1.2.3.Nextcloud

1.2.4.PHP&MYSQL

2.Knowledgebase | 知识库
此篇示例使用容器部署 Nextcloud 且为 Podman(Quadlet)
Docker 用户完全可参考
可点击以下链接详细了解 Podman(Quadlet)

考虑到 Nextcloud 应用于生产需要配置外部数据库(本篇示例使用Mysql)
所以我们使用到的容器镜像如下
- lscr.io/linuxserver/nextcloud:latest
- docker.io/library/mysql:8.0
2.1.Parameters | 参数
首先介绍容器参数以便理解 .container 文件
2.1.1.Nextcloud
-
PublishPort=127.0.0.1:30001:80- 功能:WebUI 端口映射
-
Environment=PUID=1000- 功能:用户 ID(UserID)
-
Environment=PGID=1000- 功能:用户组 ID(GroupID)
-
Environment=TZ=Etc/UTC- 功能:指定时区,参见 时区列表
-
Volume=/home/nextcloud/config:/config- 功能:持久化配置文件存储路径
-
Volume=/home/nextcloud/data:/data- 功能:存储个人数据的路径
2.1.2.MYSQL
-
IP=10.88.255.1- 功能: 将MYSQL容器的IP地址指定为 10.18.255.1
-
Environment="MYSQL_ROOT_PASSWORD=xzllll.com"- 功能: MYSQL Root 用户密码赋值为 xzllll.com
-
Environment="MYSQL_USER=nextcloud"- 功能: MYSQL 用户名
-
Environment="MYSQL_PASSWORD=09ms22xc"- 功能: MYSQL 用户密码赋值为 09ms22xc
-
Environment="MYSQL_DATABASE=nextcloud"- 功能: MYSQL 数据库名称
-
Environment="MYSQL_ROOT_HOST=%"- 功能: 允许远程访问
3.Procedure | 步骤
了解完一些参数后即可部署容相应容器,步骤如下
- 部署 Mysql
- 部署 Nextcloud
- 初始化容器
3.1.Deployment MYSQL | 部署 Mysql
-
在/usr/share/containers/systemd目录下创建 nextcloud-mysql.container 文件
编辑 nextcloud-mysql.container 文件
[Unit] Description=MySQL is a widely used, open-source relational database management system (RDBMS) After=network-online.target Wants=network-online.target Before=shutdown.target [Container] IP=10.88.255.1 ContainerName=nextcloud-mysql Image=docker.io/library/mysql:8.0 Environment="MYSQL_ROOT_PASSWORD=xzllll.com" "MYSQL_USER=nextcloud" "MYSQL_PASSWORD=09ms22xc" "MYSQL_DATABASE=nextcloud" "MYSQL_ROOT_HOST=%" Volume=/home/nextcloud/mysql:/var/lib/mysql [Install] WantedBy=default.target -
重置 systemd
systemctl daemon-reload -
启动 nextcloud-mysql 容器
systemctl start nextcloud-mysql -
验证上述配置和 MYSQL 容器运行状态

3.2.Deployment Nextcloud | 部署 Nextcloud
-
在/usr/share/containers/systemd目录下创建 nextcloud.container 文件
编辑 nextcloud.container 文件
[Unit] Description=Nextcloud gives you access to all your files wherever you are After=network-online.target Wants=network-online.target Before=shutdown.target [Container] ContainerName=nextcloud Environment=PUID=20001 PGID=100 TZ=Asia/Shanghai Image=lscr.io/linuxserver/nextcloud:latest PublishPort=127.0.0.1:30001:80 Volume=/home/nextcloud/config:/config Volume=/home/nextcloud/data:/data [Service] Restart=always [Install] WantedBy=default.target -
重置 systemd
systemctl daemon-reload -
启动 Nextcloud 容器
systemctl start nextcloud -
验证上述配置和 Nextcloud 容器运行状态

3.3.Initialization | 初始化
Nextcloud 启动完成以后
根据配置中映射的地址直接连接或配置 Cloudflare Tunnels 以打开 Nextcloud 界面
-
创建管理员账号并配置数据库

确认配置无误后点击安装
-
推荐应用选择
根据自身需要选择即可
我这里直接跳过
-
欢迎界面

-
主界面

-
PHP&MYSQL 详情

4.Example | 示例
4.1.Demo File | 演示文件
Nextcloud 官方内置了以下文件做演示
- PNG
- MP4
- MD
可以做到在线预览及简单编辑修改
-
PNG
在线预览PNG文件

调整PNG文件大小

过滤器

-
MP4
在线观看MP4

-
PDF
在线预览PDF并做简单标注

-
MD
Markdown 在线编辑

5.Ex | 拓展
5.1.Android Client | 安卓客户端
此节描述安卓客户端如何连接
Nextcloud 有官方的 Android 客户端
GooglePlay 即可下载
-
APP 下载完成后打开网页依次转至
个人中心→安全→设备和活动链接 -
输入用户名后点击
添加新应用
-
确认密码

-
点击为移动程序显示二维码

-
使用 Nextcloud Android APP 扫描此二维码即可登录

6.Thanks & Copy
6.1.Nextcloud
