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