Debian 安装 Nextcloud 使用 MariaDB 数据库 + Caddy + PHP-FPM

前言

之前通过 docker在ubuntu上安装Nextcloud,但是现在我使用PVE安装Debian虚拟机,不想通过docker安装了。下面开始折腾。

安装过程

步骤 1:更新系统并安装必要的软件

sudo apt update && sudo apt upgrade -y
sudo apt install -y mariadb-server php php-fpm php-cli php-mysql php-curl php-gd php-intl php-mbstring php-xml php-zip php-bz2 php-bcmath php-gmp php-imagick unzip curl sudo

步骤 2:创建并配置 MariaDB 数据库

  • 启动 MariaDB 并设置安全性:
sudo systemctl enable --now mariadb
sudo mysql_secure_installation

按提示设置 root 密码并启用安全选项。

  • 登录 MariaDB:
sudo mysql -u root -p

创建 Nextcloud 数据库和用户:

CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;

可以修改自己的密码 your_secure_password。

步骤 3:创建 Nextcloud 存储目录

确保你的硬盘已经正确挂载,并创建存储目录(假设你挂载到 /mnt/AAA):

sudo mkdir -p /mnt/AAA/nextcloud_data
sudo chown -R www-data:www-data /mnt/AAA/nextcloud_data
sudo chmod 750 /mnt/AAA/nextcloud_data

步骤 4:下载并解压 Nextcloud

获取最新的 Nextcloud 版本:

cd /var/www
sudo curl -o nextcloud.tar.bz2 https://download.nextcloud.com/server/releases/latest.tar.bz2
sudo tar -xjf nextcloud.tar.bz2
sudo rm nextcloud.tar.bz2
sudo chown -R www-data:www-data nextcloud
sudo chmod -R 755 nextcloud

步骤 5:创建 Nextcloud 配置文件

在安装前,创建配置文件 /var/www/nextcloud/config/autoconfig.php,并指定存储位置:

sudo nano /var/www/nextcloud/config/autoconfig.php

添加以下内容:

<?php
$AUTOCONFIG = array(
  "dbtype"        => "mysql",
  "dbname"        => "nextcloud",
  "dbuser"        => "nextcloud",
  "dbpass"        => "your_secure_password",
  "dbhost"        => "localhost",
  "dbtableprefix" => "",
  "adminlogin"    => "admin",
  "adminpass"     => "your_admin_password",
  "directory"     => "/mnt/seafile/nextcloud_data",
);

可以修改 adminlogin 和 adminpass,还有 “dbpass” => “your_secure_password”。
保存并退出 (CTRL + X, 然后 Y 以及 Enter)。

步骤 6:配置 PHP-FPM

编辑 PHP 配置文件:

sudo nano /etc/php/*/fpm/php.ini

找到并修改以下参数。可以使用 Ctrl+W 查找,如果想改 1GB,就填 memory_limit = 1G,

memory_limit = 512M
upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 300

重启 PHP-FPM:

sudo systemctl restart php*-fpm

步骤 7:安装并配置 Caddy

  • 安装 Caddy:
sudo apt install -y debian-keyring debian-archive-keyring
sudo curl -fsSL https://dl.cloudsmith.io/public/caddy/stable/gpg.key | sudo tee /usr/share/keyrings/caddy-keyring.asc >/dev/null
echo "deb [signed-by=/usr/share/keyrings/caddy-keyring.asc] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main" | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddy
  • 配置 Caddy:
sudo nano /etc/caddy/Caddyfile

添加以下内容(请替换 yourdomain.com 为你的域名或本机 IP):

yourdomain.com {
    root * /var/www/nextcloud
    file_server
    php_fastcgi unix//run/php/php-fpm.sock
    header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    redir /.well-known/carddav /remote.php/dav 301
    redir /.well-known/caldav /remote.php/dav 301
}

我的改为:

  GNU nano 7.2                              /etc/caddy/Caddyfile                                        
# The Caddyfile is an easy way to configure your Caddy web server.
#
# Unless the file starts with a global options block, the first
# uncommented line is always the address of your site.
#
# To use your own domain name (with automatic HTTPS), first make
# sure your domain's A/AAAA DNS records are properly pointed to
# this machine's public IP, then replace ":80" below with your
# domain name.

:80 {
        # Set this path to your site's directory.
        root * /var/www/nextcloud

        # Enable the static file server.
        file_server
        php_fastcgi unix//run/php/php-fpm.sock
        header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        redir /.well-known/carddav /remote.php/dav 301
        redir /.well-known/caldav /remote.php/dav 301

        # Another common task is to set up a reverse proxy:
        # reverse_proxy localhost:8080

        # Or serve a PHP site through php-fpm:
        # php_fastcgi localhost:9000
}

# Refer to the Caddy docs for more information:
# https://caddyserver.com/docs/caddyfile

保存并退出。

启动 Caddy:

sudo systemctl enable --now caddy

步骤 8:完成 Nextcloud 安装

  1. 访问 http://yourdomain.com,Nextcloud 应该会自动完成安装。
  2. 使用 admin 和 your_admin_password 登录。

步骤 9:设置自动更新与优化

  • 配置 定时任务 让 Nextcloud 进行后台任务管理:
sudo crontab -u www-data -e

添加:

*/5 * * * * php -f /var/www/nextcloud/cron.php
  • 启用 OPcache(提高 PHP 性能):
sudo nano /etc/php/*/fpm/php.ini

找到 opcache.enable=0 并修改为:

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1

然后重启 PHP-FPM:

sudo systemctl restart php*-fpm

部分问题后处理

如果没有权限

如果网页登录没有权限进入,修改文件权限

sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 750 /var/www/nextcloud

然后清理缓存

sudo -u www-data php /var/www/nextcloud/occ maintenance:repair

Nextcloud 预览 iPhone HEIC 图片

下面操作有点混乱,反正是一顿操作+重启,然后好使了。

确保 iPhone 端上传原始 HEIC 格式

iPhone 可能默认会上传 JPEG,而不是 HEIC。请在 iPhone 设置 中进行以下调整:

  1. 打开 iPhone 设置
  2. 进入 “照片”(Photos)
  3. 找到 “传输到 Mac 或 PC”
  4. 选择 “保留原始文件”(Keep Originals)
    这样,iPhone 上传到 Nextcloud 时不会自动转换为 JPEG。
允许 Nextcloud 识别 HEIC 格式

Nextcloud 可能不允许 HEIC 文件上传,手动添加 MIME 类型支持:

sudo nano /etc/mime.types

在末尾添加:

image/heic heic
image/heif heif

保存退出(Ctrl + X → Y → 回车)。

然后重启服务器:

sudo systemctl restart php8.2-fpm redis caddy
确保 Web 端可以预览 HEIC

Nextcloud 默认不支持 HEIC 预览,你可以安装 HEIC 预览插件:

sudo -u www-data php /var/www/nextcloud/occ app:install previewgenerator

启用插件:

sudo -u www-data php /var/www/nextcloud/occ app:enable previewgenerator

然后重启 Nextcloud 相关服务:

sudo systemctl restart php8.2-fpm
安装 ImageMagick 以支持 HEIC

ImageMagick 可以让 Nextcloud 生成 HEIC 预览:

sudo apt install imagemagick

检查 HEIC 是否支持:

convert -list format | grep HEIC

如果输出类似于:

 HEIC* HEIF      r--   High Efficiency Image Format

说明已支持。如果 HEIC 没有启用,需要重新编译 ImageMagick,或者使用 libheif:

sudo apt install libheif-examples

然后编辑 policy.xml:

sudo nano /etc/ImageMagick-6/policy.xml

找到:

<policy domain="coder" rights="none" pattern="HEIC" />

改成:

<policy domain="coder" rights="read | write" pattern="HEIC" />

保存退出。没有找到就新增。然后重启:

sudo systemctl restart php8.2-fpm
确保 HEIC 文件可下载

如果 Nextcloud 拦截 HEIC 文件,可能需要手动允许 .heic 上传:

sudo nano /var/www/nextcloud/.htaccess

添加:

AddType image/heic .heic

保存并退出,然后清理缓存:

sudo -u www-data php /var/www/nextcloud/occ files:scan --all
启用 Nextcloud 预览支持

即使安装了 HEIC 解析,Nextcloud 仍然不会自动创建 HEIC 预览,需要手动开启。

1️⃣ 安装 previewgenerator 插件

sudo -u www-data php /var/www/nextcloud/occ app:install previewgenerator
sudo -u www-data php /var/www/nextcloud/occ app:enable previewgenerator

2️⃣ 允许 HEIC 预览

sudo nano /var/www/nextcloud/config/config.php

在 ); 之前添加:

'enable_previews' => true,
'preview_max_x' => 4096,
'preview_max_y' => 4096,
'preview_max_filesize_image' => 50,
'enabledPreviewProviders' => [
    'OC\Preview\HEIC',
    'OC\Preview\Image',
    'OC\Preview\JPEG',
    'OC\Preview\PNG',
    'OC\Preview\GIF',
    'OC\Preview\BMP',
    'OC\Preview\TIFF',
    'OC\\Preview\\MarkDown',
    'OC\\Preview\\MP3',
    'OC\\Preview\\TXT',
   'OC\\Preview\\XBitmap',
   'OC\\Preview\\OpenDocument',
   'OC\\Preview\\Krita',
   'OC\\Preview\\WebP',
],

保存并退出 (Ctrl + X → Y → 回车)。

3️⃣ 手动生成 HEIC 预览

sudo -u www-data php /var/www/nextcloud/occ preview:generate-all

设置定时任务自动生成 HEIC 预览:

echo "*/30 * * * * www-data php /var/www/nextcloud/occ preview:pre-generate" | sudo tee -a /

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/965406.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

w192中国陕西民俗网的设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

2.6日学习总结

题目一&#xff1a; AC代码&#xff1a; #include <stdio.h>// 宏 _for 用于简化 for 循环 #define _for(i, a, b) for (int i (a); i < (b); i)// 最大节点数 #define MAXN 1000010// 树节点结构体 typedef struct {int left;int right; } Node;// 树节点数组 Nod…

【数据结构】(4) 线性表 List

一、什么是线性表 线性表就是 n 个相同类型元素的有限序列&#xff0c;每一个元素只有一个前驱和后继&#xff08;除了第一个和最后一个元素&#xff09;。 数据结构中&#xff0c;常见的线性表有&#xff1a;顺序表、链表、栈、队列。 二、什么是 List List 是 Java 中的线性…

工控机的主要功能有那些?

工控机的主要功能包括&#xff1a;数据采集与处理&#xff0c;工控机可以连接多种传感器和输入设备&#xff0c;实时采集数据&#xff0c;并进行必要的处理和分析。其次 就是控制执行&#xff1a;在自动化生产线或机器人控制系统中&#xff0c;工控机根据预设的程序或实时数据执…

链式结构二叉树(递归暴力美学)

文章目录 1. 链式结构二叉树1.1 二叉树创建 2. 前中后序遍历2.1 遍历规则2.2 代码实现图文理解 3. 结点个数以及高度等二叉树结点个数正确做法&#xff1a; 4. 层序遍历5. 判断是否完全二叉树 1. 链式结构二叉树 完成了顺序结构二叉树的代码实现&#xff0c;可以知道其底层结构…

凝思60重置密码

凝思系统重置密码 - 赛博狗尾草 - 博客园 问题描述 凝思系统进入单用户模式&#xff0c;在此模式下&#xff0c;用户可以访问修复错误配置的文件。也可以在此模式下安装显卡驱动&#xff0c;解决和已加载驱动的冲突问题。 适用范围 linx-6.0.60 linx-6.0.80 linx-6.0.100…

MDPI的论文书写

一、作者信息 二、摘要 1、先写背景&#xff0c;将问题放到大背景里面&#xff0c;然后重点说明研究的目的。

2-kafka服务端之延时操作实现原理

文章目录 背景案例延时生产实现原理延时拉取实现原理 总结 背景 上篇我们说到了kafka时间轮是延时操作内部实现的重要数据结构&#xff0c;这篇我们来说下kafka内部的延时操作实现原理。这里我们以延时生产和延时拉取为例说明延时操作的实现原理。 案例 延时生产 我们知道如…

无心剑七绝《深度求索》

七绝深度求索 深研妙理定乾坤 度世玄机启智门 求路千难兼万险 索萦华夏自为尊 2025年2月1日 平水韵十三元平韵 无心剑七绝《深度求索》以平水韵十三元平韵写成&#xff0c;意境深远&#xff0c;气势磅礴。诗中“深研妙理定乾坤”开篇点题&#xff0c;展现出对深奥道理的钻研与探…

C++多级指针图解

AudioResample **pResample 指针的地址图解AudioResample **pResample; // pResample 存储 AudioResample* 的地址 AudioResample *ar *pResample; // ar 现在指向 AudioResample 结构体 pResample → 指向 AudioResample* 的地址 (0x2000)*pResample → 取出 AudioResample…

oracle基础语法

oracle基础语法 1、增删改查1.1查询语句1.2 修改语句1.3 删除表1.4 删除数据1.5 增加数据1.6 创建视图1.7 添加视图字段注释 1、增删改查 oracle与sql server语法上大致相同&#xff0c;但有些细微的不同&#xff0c;以下是我个人记录工作中常用到的一些语法句。 1.1查询语句…

数据库------------

一 mysql ----数据库就相当于一个端口 1. 三层结构 1&#xff09;数据库中 表的本质仍然是文件 1.1 mysql常用数据类型---&#xff08;即 mysql列类型&#xff09; 1&#xff09; 数值类型 2&#xff09; 文本类型 3&#xff09; 二进制数据类型 4&#xff09;日期类型 2. sq…

使用服务器部署DeepSeek-R1模型【详细版】

文章目录 引言deepseek-r1IDE或者终端工具算力平台体验deepseek-r1模型总结 引言 在现代的机器学习和深度学习应用中&#xff0c;模型部署和服务化是每个开发者面临的重要任务。无论是用于智能推荐、自然语言处理还是图像识别&#xff0c;如何高效、稳定地将深度学习模型部署到…

25/2/6 <机器人基础> 运动学中各连杆的变换矩阵求法

变换矩阵 机器人通常包含多个关节和连杆&#xff0c;每个关节和连杆都有自己的局部坐标系。变换矩阵能够将一个点或向量从一个坐标系转换到另一个坐标系&#xff0c;从而实现对机器人各个部件位置和姿态的统一描述 变换矩阵能够将复杂的运动分解为旋转和平移的组合。通过矩阵乘…

CS 与 BS 架构的差异

在数字化的今天&#xff0c;选择软件架构模式对系统的性能、维护、安全和成本都有很大影响。BS架构和CS架构是最常见的两种模式&#xff0c;了解它们的区别和特点对开发人员和企业决策者都很重要。 CS架构最早出现&#xff0c;当时用户直接从主机获取数据。随着客户端和服务端…

Vuex 解析:从 Vue 2 到 Vue 3 的演变与最佳实践

Vuex 是 Vue.js 中的状态管理模式&#xff0c;广泛应用于 Vue 2 和 Vue 3 中&#xff0c;其内部实现存在一些差异。 1. 什么是 Vuex &#xff1f; Vuex 是 Vue.js 官方提供的状态管理库&#xff0c;用于集中管理应用的所有组件的状态。主要是通过一种集中化的方式来管理共享状…

ip属地是手机号还是手机位置?一文理清

在数字化和网络化的今天&#xff0c;IP属地这一概念逐渐成为了人们关注的焦点。特别是在社交媒体和在线平台上&#xff0c;IP属地的显示往往让人联想到用户的地理位置。然而&#xff0c;关于IP属地到底与手机号还是手机位置有关&#xff0c;却存在着不少误解和混淆。本文将深入…

【C语言高级特性】预处理指令(二)

目录 一、取消宏定义&#xff08;#undef&#xff09; 1.1. 详细介绍 1.2. 代码示例 1.3. 使用场景 1.4. 注意事项 二、#line 指令 2.1. 详细介绍 2.2. 代码示例 2.3. 使用场景 2.4. 注意事项 三、#error 和 #warning 指令 3.1. #error 3.2. #warning 3.3 注意事项…

vim-plug的自动安装与基本使用介绍

vim-plug介绍 Vim-plug 是一个轻量级的 Vim 插件管理器&#xff0c;它允许你轻松地管理 Vim 插件的安装、更新和卸载。相较于其他插件管理器&#xff0c;vim-plug 的优点是简单易用&#xff0c;速度较快&#xff0c;而且支持懒加载插件&#xff08;即按需加载&#xff09; 自动…

华为支付-免密支付接入免密代扣说明

免密代扣包括支付并签约以及签约代扣场景。 开发者接入免密支付前需先申请开通签约代扣产品&#xff08;即申请配置免密代扣模板及协议模板ID&#xff09;。 华为支付以模板维度管理每一个代扣扣费服务&#xff0c;主要组成要素如下&#xff1a; 接入免密支付需注意&#x…