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

添加以下内容(请替换 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 /
相关推荐
乐渔leyu2 天前
Debian 12 服务器搭建Beego环境
服务器·debian·beego
Kaede62 天前
如何删除Debian中的用户?删除Debian用户方法
运维·debian
电星托马斯2 天前
Linux的那些基础常用命令汇总
linux·运维·服务器·数据库·笔记·centos·debian
kfepiza6 天前
Debian编译安装mysql8.0.41源码包 笔记250401
数据库·笔记·mysql·debian·database
kfepiza6 天前
Debian用二进制包安装mysql8.0.41 笔记250401
数据库·笔记·mysql·debian·database
自由鬼7 天前
开源虚拟化管理平台Proxmox VE部署超融合
linux·运维·服务器·开源·虚拟化·pve
Jtti7 天前
PHP在Debian环境上的并发处理能力如何
开发语言·debian·php
HX科技9 天前
Debian系统_主板四个网口1个配置为WAN,3个配置为LAN
linux·运维·网络·debian