本文介绍如何在Podman上作为容器部署在Fedora 33 Linux服务器上运行Nextcloud 20。默认情况下,Podman在Fedora工作站上可用,并且可以使用。如果需要安装podman,请运行sudo dnf install podman,参考在CentOS 7、Fedora 30/29/28上安装Podman的方法。
前言 如今,许多开源项目都提供了易于部署的容器映像。在运行家庭服务器或实验室环境时,这非常方便。 1、什么是Nextcloud? Nextcloud作为Owncloud的分支,成立于2016年。从那时起,它发展成为功能强大的协作软件,可提供文件、日历和联系人同步等功能。您可以在其中运行一个简单的看板,也可以协作编写文档。Nextcloud根据AGPLv3许可是完全开源的,可用于私人或商业用途。 2、什么是Podman? Podman是一个容器引擎,用于在Linux系统上开发、管理和运行OCI容器。它提供了多种功能,例如无根模式、cgroupv2支持、pod管理,并且可以运行无守护程序。此外,您将获得与Docker兼容的API,以进行进一步的开发。 3、设计部署 每个部署都需要一点准备。当然,您可以简单地启动一个容器并开始使用它。精心设计的部署应该易于理解,并提供某种灵活性。 4、容器/图像 首先,您需要为部署选择正确的容器映像。对于Nextcloud来说,这非常容易,因为它已经为容器部署提供了很好的文档。Nextcloud支持两种变体:Nextcloud Apache httpd(完全独立)和Nextcloud php-fpm(需要附加的nginx容器)。 在这两种情况下,您还都需要提供一个数据库,该数据库可以是MariaDB(推荐)或PostgreSQL,本文使用Apache httpd+MariaDB安装。 5、卷数 运行容器不会持久化您在运行时创建的数据。您可以通过重新创建容器来执行更新。因此,您将需要一些卷来存储数据库和Nextcloud文件。Nextcloud还建议您将数据文件夹放在单独的卷中。因此,您将获得以下三卷内容: nextcloud-app。 nextcloud-data。 nextcloud-db。 6、网络 最后,您需要联网。容器的好处之一是,您可以重新创建部署,就像在生产中那样。网络分段是一种非常普遍的做法,容器部署也应考虑网络分段。本文不会添加高级功能,例如网络负载平衡或安全分段。您只需要一个网络即可用于发布Nextcloud的端口。创建网络还提供dnsname插件,该插件将允许基于容器名称的容器通信。 7、附图 现在已经准备好每个元素,您可以将它们放在一起,并且对开发的外观有了很好的理解。
运行,Nextcloud 现在,您已经准备好所有要素,并且可以开始运行命令以部署Nextcloud。所有命令都可以用于root特权。 从网络开始: # 创建一个新的网络 $ podman network create nextcloud-net # 列出所有网络 $ podman network ls # 检查网络 $ podman network inspect nextcloud-net 在上一个命令中可以看到,您创建了一个名为“dns.podman”的DNS区域。可通过“CONTAINER_NAME.dns.podman”访问此网络中创建的所有容器。 接下来,可以选择准备卷。可以跳过此步骤,因为Podman将根据需要创建命名卷(如果它们不存在)。Podman支持在特定位置创建的命名卷,因此您无需照顾SELinux等。 # 创建卷 $ podman volume create nextcloud-app $ podman volume create nextcloud-data $ podman volume create nextcloud-db # 上市量 $ podman volume ls # 检查卷(这也提供了完整路径) $ podman volume inspect nextcloud-app 网络和卷已完成。现在提供容器。 首先,您需要数据库。根据MariaDB映像文档,您需要提供一些其他环境变量。此外,您需要附加创建的卷,连接网络并提供容器的名称。下一个命令将再次需要大多数值。(请注意,您应该用唯一的密码替换DB_USER_PASSWORD和DB_ROOT_PASSWORD。) # 部署Mariadb $ podman run --detach --env MYSQL_DATABASE=nextcloud --env MYSQL_USER=nextcloud --env MYSQL_PASSWORD=DB_USER_PASSWORD --env MYSQL_ROOT_PASSWORD=DB_ROOT_PASSWORD --volume nextcloud-db:/var/lib/mysql --network nextcloud-net --restart on-failure --name nextcloud-db docker.io/library/mariadb:10 # 检查运行中的容器 $ podman container ls 成功启动新的MariaDB容器后,您可以部署Nextcloud本身。(请注意,应将DB_USER_PASSWORD替换为上一步中使用的密码。将NC_ADMIN和NC_PASSWORD替换为要用于Nextcloud管理员帐户的用户名和密码。) # 部署Nextcloud $ podman run --detach --env MYSQL_HOST=nextcloud-db.dns.podman --env MYSQL_DATABASE=nextcloud --env MYSQL_USER=nextcloud --env MYSQL_PASSWORD=DB_USER_PASSWORD --env NEXTCLOUD_ADMIN_USER=NC_ADMIN --env NEXTCLOUD_ADMIN_PASSWORD=NC_PASSWORD --volume nextcloud-app:/var/www/html --volume nextcloud-data:/var/www/html/data --network nextcloud-net --restart on-failure --name nextcloud --publish 8080:80 docker.io/library/nextcloud:20 # 检查正在运行的容器 $ podman container ls 现在两个容器都在运行,您可以配置容器了。打开浏览器并指向“localhost:8080”(如果它在其他服务器上运行,则指向另一个主机名或IP地址)。 第一次加载可能需要一些时间(30秒),甚至报告无法加载。这来自正在准备首次运行的Nextcloud。在这种情况下,请等待一两分钟。Nextcloud将提示输入用户名和密码:
输入您先前使用的用户名和密码:
现在,您可以去体验Nextcloud进行测试,开发或家用服务器了。
更新 如果要更新其中一个容器,则需要提取新映像并重新创建容器。 # 更新mariadb $ podman pull mariadb:10 $ podman stop nextcloud-db $ podman rm nextcloud-db $ podman run --detach --env MYSQL_DATABASE=nextcloud --env MYSQL_USER=nextcloud --env MYSQL_PASSWORD=DB_USER_PASSWORD --env MYSQL_ROOT_PASSWORD=DB_ROOT_PASSWORD --volume nextcloud-db:/var/lib/mysql --network nextcloud-net --restart on-failure --name nextcloud-db docker.io/library/mariadb:10 更新Nextcloud容器的工作原理完全相同。 # 更新Nextcloud $ podman pull nextcloud:20 $ podman stop nextcloud $ podman rm nextcloud $ podman run --detach --env MYSQL_HOST=nextcloud-db.dns.podman --env MYSQL_DATABASE=nextcloud --env MYSQL_USER=nextcloud --env MYSQL_PASSWORD=DB_USER_PASSWORD --env NEXTCLOUD_ADMIN_USER=NC_ADMIN --env NEXTCLOUD_ADMIN_PASSWORD=NC_PASSWORD --volume nextcloud-app:/var/www/html --volume nextcloud-data:/var/www/html/data --network nextcloud-net --restart on-failure --name nextcloud --publish 8080:80 docker.io/library/nextcloud:20 至此,您的Nextcloud是最新的。
结论 用Podman部署Nextcloud非常容易。几分钟后,您将拥有一个非常方便的协作软件,可提供文件同步、日历、联系人等更多信息。
相关主题 |