Nextcloud是一款开源的自托管云存储和协作平台,它提供了文件同步、共享、版本控制、日历、联系人等功能。Nextcloud是一个安全的数据存储平台,您可以在任何设备上访问和共享文件、日历、联系人、邮件等,并完全掌控数据。
这个Docker微服务镜像由Nextcloud社区开发和维护。Nextcloud GmbH不提供对该Docker镜像的支持。如果您需要专业支持,可以成为企业客户或使用AIO。通过Nextcloud,你可以方便地在个人电脑、手机和其他设备之间同步和共享文件,同时还能够与他人进行协作。
Nextcloud适用于各种场景,比如个人使用、团队协作、企业内部文件管理等。无论你是需要在不同设备之间同步文件,还是需要与他人共享大型文件,Nextcloud都能满足你的需求。而且,由于Nextcloud是开源的,你可以根据自己的需求进行定制和扩展。
步骤1:安装Dk8s
首先,你需要在你的机器上安装Dk8s。具体的安装方法可以进入【首页】-【探索】-【快速上手】查阅官方文档。
步骤2:安装Nextcloud
进入【首页】-【商店】搜索‘Nextcloud’程序,点击安装。
步骤3:运行Nextcloud
安装后,点击【我的】-【‘Nextcloud’程序】-【更多】-【设置】,检查各项参数是否需要修改,
其中,‘本地目录’指示的值为共享文件夹的二级目录路径,一级目录需进入【首页】-【设置】-【存储】-‘存储位置’进行修改,所有程序仅支持存储于同一个一级目录中,二级目录默认隶属于一级目录。
设置参数检查后,如无需修改,即可点击运行,程序会自动拉取镜像并完成安装。
步骤4:访问Nextcloud
现在,你可以进入【我的】-【‘Nextcloud’程序】,点击打开程序,可在【设置】中修改默认密码。
这个镜像设计用于微服务环境。有两个版本的镜像可供选择。
apache标签包含了一个完整的Nextcloud安装,包括一个Apache Web服务器。它易于使用,能够快速启动。这也是最新标签和未进一步指定版本标签的默认选项。
第二个选项是fpm容器。它基于php-fpm镜像,并运行一个FastCGI进程来提供Nextcloud页面。要使用这个镜像,必须与能够将HTTP请求代理到容器的FastCGI端口的任何Web服务器结合使用。
apache镜像包含一个Web服务器,并暴露端口80。要启动容器,请输入以下命令:
$ docker run -d -p 8080:80 nextcloud
现在,您可以从主机系统上的http://localhost:8080/访问Nextcloud。
要使用fpm镜像,您需要一个额外的Web服务器,例如nginx,它可以将http请求代理到容器的fpm端口。对于fpm连接,此容器公开端口9000。在大多数情况下,您可能希望使用另一个容器或主机作为代理。如果使用主机,您可以直接在端口9000上访问Nextcloud容器。如果使用另一个容器,请确保将它们添加到相同的Docker网络中(通过docker run --network …或docker-compose文件)。在这两种情况下,您都不希望将fpm端口映射到主机。
$ docker run -d nextcloud:fpm
由于fastCGI进程无法提供静态文件(样式表、图像等),Web服务器需要访问这些文件。可以使用volumes-from选项来实现此目的。您可以在docker-compose部分找到更多信息。
默认情况下,此容器使用SQLite进行数据存储,但Nextcloud设置向导(在首次运行时出现)允许连接到现有的MySQL/MariaDB或PostgreSQL数据库。您还可以链接一个数据库容器,例如–link my-mysql:mysql,然后在设置中使用mysql作为数据库主机。更多信息请参阅docker-compose部分。
Nextcloud安装和除了数据库中的数据(文件上传等)之外的所有数据都存储在未命名的Docker卷/var/www/html中。Docker守护进程将在Docker目录/var/lib/docker/volumes/…中存储该数据。这意味着即使容器崩溃、停止或删除,您的数据也会被保存。
升级和备份应使用命名的Docker卷或挂载的主机目录。为此,您需要一个用于数据库容器的卷和一个用于Nextcloud的卷。
如果您想对个别文件进行细粒度访问,可以为数据、配置、主题和自定义应用程序挂载附加卷。数据、配置文件存储在/var/www/html/的相应子文件夹中。应用程序分为核心应用程序(与Nextcloud一起提供,无需关注)和custom_apps文件夹。如果使用自定义主题,则应放入themes子文件夹中。 可以作为卷挂载的文件夹概述:
如果要为所有这些使用命名卷,可以这样做:
$ docker run -d -v nextcloud:/var/www/html -v apps:/var/www/html/custom_apps -v config:/var/www/html/config -v data:/var/www/html/data -v theme:/var/www/html/themes/ nextcloud
要使用Nextcloud命令行界面(也称为occ命令): docker exec --user www-data CONTAINER_ID php occ 或者对于docker-compose: $ docker-compose exec --user www-data app php occ
Nextcloud镜像支持通过环境变量进行自动配置。您可以在首次运行时预先配置安装页面上要求的所有内容。要启用自动配置,请使用以下环境变量设置数据库连接。对于给定的数据库,您必须指定所有环境变量,否则数据库环境变量将默认为SQLITE。仅使用一种数据库类型!
SQLite:
MYSQL/MariaDB:
PostgreSQL:
如果设置了任何一组值(即MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD、MYSQL_HOST的所有值),它们将不会在首次运行时在安装页面上询问。通过使用所有与数据库类型相关的变量进行完整配置,还可以通过设置管理员用户和密码来配置Nextcloud实例(仅在同时设置两者时有效):
NEXTCLOUD_ADMIN_USER Nextcloud管理员用户的名称。
NEXTCLOUD_ADMIN_PASSWORD Nextcloud管理员用户的密码。 如果需要,可以设置数据目录,否则将使用默认值。
NEXTCLOUD_DATA_DIR(默认值:/var/www/html/data)配置Nextcloud存储所有用户文件的数据目录。 还可以通过环境变量设置一个或多个受信任的域。它们将在安装后添加到配置中。
NEXTCLOUD_TRUSTED_DOMAINS(默认情况下未设置)可选的以空格分隔的域列表
只有在使用默认命令(apache-foreground或php-fpm)时才会触发安装和更新脚本。如果使用自定义命令,您必须使用以下方式启用安装/更新
NEXTCLOUD_UPDATE(默认值:0) 如果将html文件夹与多个Docker容器共享,您可能希望避免多个进程更新相同的共享卷
NEXTCLOUD_INIT_LOCK(默认情况下未设置)将其设置为true以启用初始化锁定。其他容器将等待当前进程完成更新html卷后继续。 您可能还希望确保每次容器更新后htaccess是最新的。特别是在多个群集节点上,任何差异都会使服务器无法使用。
NEXTCLOUD_INIT_HTACCESS(默认情况下未设置)将其设置为true以在容器初始化后运行occ maintenance:update:htaccess。 如果要使用Redis,必须在设置/ docker-compose文件中创建一个单独的Redis容器。要通知Nextcloud有关Redis容器,请传递以下参数:
REDIS_HOST(默认情况下未设置)Redis容器的名称
REDIS_HOST_PORT(默认值:6379)Redis的可选端口,仅用于运行在非标准端口上的外部Redis服务器。
REDIS_HOST_PASSWORD(默认情况下未设置)Redis密码
建议使用Redis以防止文件锁定问题。有关更多说明,请参见示例。
要使用外部SMTP服务器,您必须提供连接详细信息。要配置Nextcloud使用SMTP,请添加:
要将外部S3兼容对象存储用作主要存储,请设置以下变量:
请查看Nextcloud文档以获取更多信息。
要将外部OpenStack Swift对象存储用作主要存储,请设置以下变量:
要自定义其他PHP限制,只需更改以下变量:
默认情况下,如果请求来自10.0.0.0/8、172.16.0.0/12或192.168.0.0/16的代理,则Apache镜像将使用X-Real-IP中的IP地址替换Nextcloud可见的远程地址(IP地址)。如果您希望Nextcloud从受信任的代理中获取服务器主机(HTTP_X_FORWARDED_HOST)、协议(HTTP_X_FORWARDED_PROTO)和客户端IP(HTTP_X_FORWARDED_FOR),则禁用重写IP并将反向代理的IP地址添加到TRUSTED_PROXIES。
APACHE_DISABLE_REWRITE_IP(默认未设置):设置为1以禁用重写IP。 TRUSTED_PROXIES(默认为空):以空格分隔的受信任代理列表。IPv4支持CIDR表示法。 如果TRUSTED_PROXIES方法对您不起作用,请尝试使用固定值来覆盖参数。
OVERWRITEHOST(默认为空):设置代理的主机名。也可以指定端口。 OVERWRITEPROTOCOL(默认为空):设置代理的协议,http或https。 OVERWRITECLIURL(默认为空):设置代理的cli url(例如https://mydnsname.example.com)。 OVERWRITEWEBROOT(默认为空):设置代理的绝对路径。 OVERWRITECONDADDR(默认为空):用于根据远程地址覆盖值的正则表达式。 请查阅Nexcloud文档以获取更多详细信息。
请记住,一旦设置,删除这些环境变量不会从配置文件中删除这些值,因为Nextcloud如何合并配置文件。
最简单的获取完全功能和可用的设置的方法是使用docker-compose文件。有太多不同的可能性来设置您的系统,所以这里只列举了一些您需要注意的事项。 首先,请确保您选择了正确的基础镜像(fpm或apache)并添加了您想要的功能(见下文)。在每种情况下,您都希望添加一个数据库容器和Docker卷,以便轻松访问持久数据。如果您希望从互联网上访问您的服务器,则必须添加HTTPS加密!有关更多信息,请参阅下文。
此版本将使用Apache镜像并添加一个MariaDB容器。卷设置为保持数据持久性。此设置不提供SSL加密,旨在在代理后运行。 在运行此设置之前,请确保传入MYSQL_ROOT_PASSWORD和MYSQL_PASSWORD变量的值。 version: ‘2’
volumes: nextcloud: db:
services: db: image: mariadb:10.6 restart: always command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes:
app: image: nextcloud restart: always ports:
使用FPM镜像时,您需要另一个容器作为Web服务器在端口80上,并将请求代理到Nextcloud容器。在这个例子中,一个简单的nginx容器与Nextcloud-fpm镜像和MariaDB数据库容器结合在一起。数据存储在Docker卷中。nginx容器还需要访问您的Nextcloud安装中的静态文件。它通过volumes_from选项访问所有挂载到Nextcloud的卷。nginx的配置存储在名为nginx.conf的配置文件中,该文件被挂载到容器中。可以在此处的示例部分找到一个示例。 由于此设置不包括加密,请确保在运行此设置之前传递MYSQL_ROOT_PASSWORD和MYSQL_PASSWORD变量的值。 version: ‘2’
volumes: nextcloud: db:
services: db: image: mariadb:10.6 restart: always command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes:
app: image: nextcloud:fpm restart: always links:
web: image: nginx restart: always ports:
作为将敏感信息通过环境变量传递的替代方法,可以在先前列出的环境变量后附加"_FILE",这样初始化脚本就会从容器中存在的文件中加载这些变量的值。特别是,可以使用此方法从存储在/run/secrets/文件中的Docker secrets中加载密码。例如: version: ‘3.2’
services: db: image: postgres restart: always volumes:
app: image: nextcloud restart: always ports:
volumes: db: nextcloud:
…
Note: the description for this image is longer than the Hub length limit of 25000, so has been trimmed. The full description can be found at https://github.com/docker-library/docs/tree/master/nextcloud/README.md. See also docker/hub-feedback#238 and docker/roadmap#475. Recent Tags