
rootlogin/nextcloud!Nextcloud Logo
的易用Docker镜像。
所有组件均为最新稳定版本。
可在不使用单独数据库的情况下运行Nextcloud,但不建议生产环境使用(因使用SQLite)。也可使用外部数据库,在安装向导中输入凭据。
docker pull rootlogin/nextclouddocker run -d --name nextcloud -p 80:80 -v 本地数据文件夹:/data rootlogin/nextcloud(将本地数据文件夹替换为存储持久化数据的路径)首次运行时,可通过Nextcloud设置向导完成安装,之后将直接启动。
标准部署建议使用MariaDB(比SQLite更可靠),可使用官方MariaDB Docker镜像。
bash# 拉取镜像 docker pull rootlogin/nextcloud && docker pull mariadb:10 # 启动数据库容器 docker run -d --name nextcloud_db \ -v 数据库持久化文件夹:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=超级密码 \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=nextcloud \ -e MYSQL_PASSWORD=数据库密码 \ mariadb:10 # 启动Nextcloud容器(链接数据库) docker run -d --name nextcloud \ --link nextcloud_db:nextcloud_db \ -p 80:80 \ -v 本地数据文件夹:/data \ rootlogin/nextcloud
数据库与Nextcloud的自动连接尚未实现,需手动配置。
可通过occ命令配置Nextcloud:
bashdocker exec -ti nextcloud occ [...命令...]
该命令使用与Web服务器相同的用户权限。
可轻松将现有OwnCloud实例迁移到此Nextcloud Docker镜像。
迁移前务必备份旧OwnCloud实例!
sudo -u www-data ./occ maintenance:mode --ondocker run -d --name nextcloud -p 80:80 -v /var/my_nextcloud_data:/data rootlogin/nextclouddocker exec nextcloud occ upgradedocker exec nextcloud occ maintenance:mode --off可通过systemd管理容器,配置示例:
ini[Unit] Description=Docker - Nextcloud容器 Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/bin/docker run -p 127.0.0.1:8000:80 -v /data/nextcloud:/data --name nextcloud rootlogin/nextcloud ExecStop=/usr/bin/docker stop -t 2 nextcloud ; /usr/bin/docker rm -f nextcloud [Install] WantedBy=default.target
此容器不直接支持SSL,建议使用前端代理(如另一NGinx)。配置示例:
nginxserver { listen 80; server_name cloud.example.net; # Let's Encrypt ACME验证 location /.well-known/acme-challenge { alias /var/www/letsencrypt/; default_type "text/plain"; try_files $uri =404; } location / { return 301 [***] } } server { listen 443 ssl spdy; server_name cloud.example.net; ssl_certificate /etc/letsencrypt.sh/certs/cloud.example.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt.sh/certs/cloud.example.net/privkey.pem; ssl_trusted_certificate /etc/letsencrypt.sh/certs/cloud.example.net/chain.pem; ssl_dhparam /etc/nginx/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache shared:SSL:10m; ssl_session_timeout 30m; ssl_prefer_server_ciphers on; ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security "max-age=31536000"; access_log /var/log/nginx/docker-nextcloud_access.log; error_log /var/log/nginx/docker-nextcloud_error.log; location / { proxy_buffers 16 4k; proxy_buffer_size 2k; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Frame-Options SAMEORIGIN; client_max_body_size 10G; proxy_pass [***] } }
为什么启动时间很长?
容器启动时会重置/data文件夹权限。若数据量大,此过程耗时较长,可避免权限问题。
Nextcloud配置中的部分参数会被root/opt/nextcloud/config/docker.config.php文件覆盖。
可通过构建参数修改用户ID和组ID:
bashgit clone [***] && cd docker-nextcloud docker build -t rootlogin/nextcloud --build-arg UID=1000 --build-arg GID=1000 . docker run -p 80:80 rootlogin/nextcloud
本项目基于GPL协议发布,欢迎提交PR改进。
若想支持本项目,可通过以下地址***:
*******: ***
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务