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

news2025/2/8 14:08:27

前言

之前通过 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 /

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

qt6.8安装mysql8.0驱动

qt6.8安装mysql8.0驱动 qt6.8本身是不带mysql驱动。想要在qt里面使用mysql,还是比较麻烦的。需要自己编译驱动 首先下载qt源码&#xff0c;链接Index of /archive/qt/6.8/6.8.1/single 下载mysql对于驱动文件&#xff0c;链接是MySQL :: Download MySQL Connector/C (Archiv…

π0开源了且推出自回归版π0-FAST——打造机器人动作专用的高效Tokenizer:比扩散π0的训练速度快5倍但效果相当

前言 过去的半个多月 对于大模型 deepseek火爆全球&#xff0c;我对其的解读也写成了整整一个系列 详见《火爆全球的DeepSeek系列模型》&#xff0c;涉及对GRPO、MLA、V3、R1的详尽细致深入的解读 某种意义来讲&#xff0c;deepseek 相当于把大模型的热度 又直接拉起来了——…

【算法篇】贪心算法

目录 贪心算法 贪心算法实际应用 一&#xff0c;零钱找回问题 二&#xff0c;活动选择问题 三&#xff0c;分数背包问题 将数组和减半的最小操作次数 最大数 贪心算法 贪心算法&#xff0c;是一种在每一步选择中都采取当前状态下的最优策略&#xff0c;期望得到全局最优…

《金字塔原理》笔记

金字塔原理一书的原理是关于结构化写作的&#xff0c;里面提出一个MECE法则&#xff1a;各个分论点之间要“相互独立、完全穷尽”。 我的总结 写作思路都是总分总。 要凝练最顶部的信息&#xff0c;然后按照三叉树&#xff08;最多四叉树&#xff09;一直分下去。 书中优雅的…

蓝桥杯准备 【入门3】循环结构

素数小算法&#xff08;埃氏筛&&欧拉筛&#xff09; 以下四段代码都是求20以内的所有素数 1.0版求素数 #include<iostream> using namespace std;int main() {int n 20;for(int i2;i<n;i){int j0;for(j2;j<i;j)//遍历i{if(i%j0){break;}}if(ij){cout&l…

MySQL三大日志——binlog、redoLog、undoLog详解

日志是mysql数据库的重要组成部分&#xff0c;记录着数据库运行期间各种状态信息&#xff0c;能帮助我们进行很多容错及分析工作&#xff0c;其中有三大日志与我们这些开发者息息相关&#xff0c;本文将介绍binlog、redoLog、undoLog三种日志&#xff1a; 1. redoLog 1.1 为什么…

SpringAI系列 - 使用LangGPT编写高质量的Prompt

目录 一、LangGPT —— 人人都可编写高质量 Prompt二、快速上手2.1 诗人 三、Role 模板3.1 Role 模板3.2 Role 模板使用步骤3.3 更多例子 四、高级用法4.1 变量4.2 命令4.3 Reminder4.4 条件语句4.5 Json or Yaml 方便程序开发 一、LangGPT —— 人人都可编写高质量 Prompt La…

springboot+vue导入ruoyi项目的框架

一、介绍 RuoYi-Vue版本&#xff0c;采用了前后端分离的单体架构设计软件环境&#xff1a;JDK、Mysql、Redis、Maven、Node技术选型: Spring Boot、Spring Security、MyBatis、Jwt、Vue3、Element-Plus官方地址: https://gitee.com/y_project/RuoYi-Vue 官方推荐的版本如下&a…

Conmi的正确答案——Rider中添加icon作为exe的图标

C#版本&#xff1a;.net 8.0 Rider版本&#xff1a;#RD-243.22562.250&#xff08;非商业使用版&#xff09; 1、添加图标到解决方案下&#xff1a; 2、打开“App.xaml”配置文件&#xff0c;添加配置&#xff1a; <Applicationx:Class"ComTransmit.App"xmlns&q…

360手机刷机 360手机解Bootloader 360手机ROOT

360手机刷机 360手机解Bootloader 360手机ROOT 问&#xff1a;360手机已停产&#xff0c;现在和以后&#xff0c;能刷机吗&#xff1f; 答&#xff1a;360手机&#xff0c;是肯定能刷机的 360手机资源下载网站 360手机-360手机刷机RootTwrp 360os.top 360rom.github.io 一、…

实验3 词法分析(二)

实验3 词法分析(二) [实验目的]&#xff1a; 1 . 熟悉给定的词法分析程序&#xff1b; 2 . 改进词法分析程序。 [实验内容]&#xff1a; 1.尝试多方面改进TEST语言的文法&#xff0c;参考教材附录B词法分析程序TESTscan.c&#xff0c;在此词法分析程序的基础上改进程序&#x…

VsCode创建VUE项目

1. 首先安装Node.js和npm 通过网盘分享的文件&#xff1a;vsCode和Node&#xff08;本人电脑Win11安装&#xff09; 链接: https://pan.baidu.com/s/151gBWTFZh9qIDS9XWMJVUA 提取码: 1234 它们是运行和构建Vue.js应用程序所必需的。 1.1 Node安装&#xff0c;点击下一步即可 …

【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具04

SQLSERVER的ImpDp和ExpDp工具演示 1、指定某些表作为导出对象外 (-exclude_table) 验证用&#xff1a;导出的表&#xff0c;导入到新的数据库 2、指定某些表作为导出对象外 (-exclude_table) 支持模糊检索&#xff0c;可以使用星号 以s开头的表作为导出对象外&#xff0c;…

国内知名Deepseek培训师培训讲师唐兴通老师讲授AI人工智能大模型实践应用

课程名称 《Deepseek人工智能大模型实践应用》 课程目标 全面了解Deepseek人工智能大模型的技术原理、功能特点及应用场景。 熟练掌握Deepseek大模型的提示词工程技巧&#xff0c;能够编写高质量的提示词。 掌握Deepseek大模型在办公、营销等领域的应用方法&#xff0c;提升…

【C语言标准库函数】指数与对数函数:exp(), log(), log10()

目录 一、头文件 二、函数简介 2.1. exp(double x) 2.2. log(double x) 2.3. log10(double x) 三、函数实现&#xff08;概念性&#xff09; 3.1. exp(double x) 的模拟实现 3.2. log(double x) 和 log10(double x) 的模拟实现 四、注意事项 4.1. exp(double x) 的注…

小白系列:数据库基础知识解析

前言 今天&#xff0c;我打算用简单明了的语言来讲解一下数据库的基本概念。总体上&#xff0c;这些内容与我在视频中讲解的基本一致。如果你发现视频的讲解有些难以理解&#xff0c;不妨看看这篇文字版的解释&#xff0c;希望能够更快速地帮助你掌握数据库的相关知识。需要注…

【AIGC魔童】DeepSeek核心创新技术(二):MLA

【AIGC魔童】DeepSeek核心创新技术&#xff08;二&#xff09;&#xff1a;MLA 1. MLA框架的定义与背景2. MLA框架的技术原理&#xff08;1&#xff09;低秩联合压缩&#xff08;2&#xff09;查询的低秩压缩&#xff08;3&#xff09;旋转位置嵌入&#xff08;RoPE&#xff09…

安卓/ios脚本开发按键精灵经验小分享

1. 程序的切换 我们经常碰到这样的需求&#xff1a;打开最近的应用列表&#xff0c;选取我们想要的程序。但是每个手机为了自己的风格&#xff0c;样式都有区别&#xff0c;甚至连列表的滑动方向都不一样&#xff0c;我们很难通过模拟操作来识别点击&#xff0c;那么我们做的只…

完全离线部署deepseek并建立本地知识库应用电子数据取证领域

点击上方蓝字“小谢取证”一起玩耍 之前小谢推出一篇部署本地大模型教程&#xff0c;但需要网络环境 AI机器人本地免费部署&#xff08;部署Llama 3.1详细教程&#xff09; 还是比较受到读者的欢迎&#xff0c;但应读者要求&#xff1a;需要这个模型能够训练&#xff0c;能够…

ctf网络安全题库 ctf网络安全大赛答案

此题解仅为部分题解&#xff0c;包括&#xff1a; 【RE】&#xff1a;①Reverse_Checkin ②SimplePE ③EzGame 【Web】①f12 ②ezrunner 【Crypto】①MD5 ②password ③看我回旋踢 ④摩丝 【Misc】①爆爆爆爆 ②凯撒大帝的三个秘密 ③你才是职业选手 一、 Re ① Reverse Chec…