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/nextcloudfile_serverphp_fastcgi unix//run/php/php-fpm.sockheader Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"redir /.well-known/carddav /remote.php/dav 301redir /.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_serverphp_fastcgi unix//run/php/php-fpm.sockheader Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"redir /.well-known/carddav /remote.php/dav 301redir /.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 安装
- 访问 http://yourdomain.com,Nextcloud 应该会自动完成安装。
- 使用 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 设置 中进行以下调整:
- 打开 iPhone 设置
- 进入 “照片”(Photos)
- 找到 “传输到 Mac 或 PC”
- 选择 “保留原始文件”(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 /
相关文章:
Debian 安装 Nextcloud 使用 MariaDB 数据库 + Caddy + PHP-FPM
前言 之前通过 docker在ubuntu上安装Nextcloud,但是现在我使用PVE安装Debian虚拟机,不想通过docker安装了。下面开始折腾。 安装过程 步骤 1:更新系统并安装必要的软件 sudo apt update && sudo apt upgrade -y sudo apt install…...
qt6.8安装mysql8.0驱动
qt6.8安装mysql8.0驱动 qt6.8本身是不带mysql驱动。想要在qt里面使用mysql,还是比较麻烦的。需要自己编译驱动 首先下载qt源码,链接Index of /archive/qt/6.8/6.8.1/single 下载mysql对于驱动文件,链接是MySQL :: Download MySQL Connector/C (Archiv…...
π0开源了且推出自回归版π0-FAST——打造机器人动作专用的高效Tokenizer:比扩散π0的训练速度快5倍但效果相当
前言 过去的半个多月 对于大模型 deepseek火爆全球,我对其的解读也写成了整整一个系列 详见《火爆全球的DeepSeek系列模型》,涉及对GRPO、MLA、V3、R1的详尽细致深入的解读 某种意义来讲,deepseek 相当于把大模型的热度 又直接拉起来了——…...
今日AI和商界事件(2025-02-07)
今日AI领域的相关事件包括但不限于以下几个方面: 一、政策与监管 美国众议员推动禁止政府设备使用中国AI应用DeepSeek:美国众议院两名来自两党的议员提议立法,禁止联邦政府设备使用中国人工智能应用DeepSeek,理由是中国政府可能…...
【算法篇】贪心算法
目录 贪心算法 贪心算法实际应用 一,零钱找回问题 二,活动选择问题 三,分数背包问题 将数组和减半的最小操作次数 最大数 贪心算法 贪心算法,是一种在每一步选择中都采取当前状态下的最优策略,期望得到全局最优…...
《金字塔原理》笔记
金字塔原理一书的原理是关于结构化写作的,里面提出一个MECE法则:各个分论点之间要“相互独立、完全穷尽”。 我的总结 写作思路都是总分总。 要凝练最顶部的信息,然后按照三叉树(最多四叉树)一直分下去。 书中优雅的…...
蓝桥杯准备 【入门3】循环结构
素数小算法(埃氏筛&&欧拉筛) 以下四段代码都是求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数据库的重要组成部分,记录着数据库运行期间各种状态信息,能帮助我们进行很多容错及分析工作,其中有三大日志与我们这些开发者息息相关,本文将介绍binlog、redoLog、undoLog三种日志: 1. redoLog 1.1 为什么…...
IDEA中Resolving Maven dependencies卡着不动解决方案
一、修改settings.xml Maven配置阿里云仓库主要通过修改Maven的settings.xml文件来实现。以下是具体步骤: 1、找到settings.xml文件: 通常位于Maven安装目录下的conf文件夹中,或者在用户目录下的.m2文件夹中(如果用户自定义了settings.xml的位置)。 2、编辑se…...
组合(力扣77)
从这道题开始,我们正式进入回溯算法的学习。之前在二叉树中只是接触到了一丢丢,而这里我们将使用回溯算法解决很多经典问题。 那么这道题是如何使用回溯算法的呢?在讲回溯之前,先说明一下此题是如何递归的。毕竟回溯递归不分家&a…...
X86中的常用寄存器
通用寄存器16个 RAX, RBX, RCX, RDX, RSI, RDI, RSP, RBP, R8, R9, R10, R11, R12, R13, R14, R15 其中: RAX:调用程序时,用于存储返回值。RCX:在字符串处理指令中,常用做计数器。RSI:在字符串处理指令中…...
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…...
git撤销上一次的提交
1、撤销提交 如果需要撤销上一次的提交,只是提交到了本地,可以通过命令: // 撤销最近的提交(保留修改) git reset --soft HEAD~1 这个操作可以保留之前的提交和当前的修改。最近一次的提交到本地的修改的提交会回到…...
springboot+vue导入ruoyi项目的框架
一、介绍 RuoYi-Vue版本,采用了前后端分离的单体架构设计软件环境: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#版本:.net 8.0 Rider版本:#RD-243.22562.250(非商业使用版) 1、添加图标到解决方案下: 2、打开“App.xaml”配置文件,添加配置: <Applicationx:Class"ComTransmit.App"xmlns&q…...
360手机刷机 360手机解Bootloader 360手机ROOT
360手机刷机 360手机解Bootloader 360手机ROOT 问:360手机已停产,现在和以后,能刷机吗? 答:360手机,是肯定能刷机的 360手机资源下载网站 360手机-360手机刷机RootTwrp 360os.top 360rom.github.io 一、…...
电风扇各国检测认证详细介绍美国FCC+UL欧盟CE+ROHS日本PSE+METI备案+英国UKCA
美国 : FCC认证 :产品进入美洲市场的通行证,需通过FCC SDOC认证。 FCC第15部分B: 该标准适用于非故意辐射设备,如家用电器、电脑设备等。它规定了这些设备在电磁环境中不会产生过多的辐射。 射频标准: FCC第15部分C:该标准适…...
实验3 词法分析(二)
实验3 词法分析(二) [实验目的]: 1 . 熟悉给定的词法分析程序; 2 . 改进词法分析程序。 [实验内容]: 1.尝试多方面改进TEST语言的文法,参考教材附录B词法分析程序TESTscan.c,在此词法分析程序的基础上改进程序&#x…...
VsCode创建VUE项目
1. 首先安装Node.js和npm 通过网盘分享的文件:vsCode和Node(本人电脑Win11安装) 链接: https://pan.baidu.com/s/151gBWTFZh9qIDS9XWMJVUA 提取码: 1234 它们是运行和构建Vue.js应用程序所必需的。 1.1 Node安装,点击下一步即可 …...
【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具04
SQLSERVER的ImpDp和ExpDp工具演示 1、指定某些表作为导出对象外 (-exclude_table) 验证用:导出的表,导入到新的数据库 2、指定某些表作为导出对象外 (-exclude_table) 支持模糊检索,可以使用星号 以s开头的表作为导出对象外,…...
国内知名Deepseek培训师培训讲师唐兴通老师讲授AI人工智能大模型实践应用
课程名称 《Deepseek人工智能大模型实践应用》 课程目标 全面了解Deepseek人工智能大模型的技术原理、功能特点及应用场景。 熟练掌握Deepseek大模型的提示词工程技巧,能够编写高质量的提示词。 掌握Deepseek大模型在办公、营销等领域的应用方法,提升…...
4.Python字符串和列表:字符串输入、字符串输出、下标和切片、字符串常见函数、列表(list)、列表的循环遍历、列表的增删改查、列表的嵌套、列表的切片
1. Python 字符串 1.1 字符串输入 input() 函数用于从用户获取字符串输入。它总是返回一个字符串类型的值。 # 从用户输入字符串 name input("请输入你的名字:") print(f"你好, {name}")1.2 字符串输出 字符串的输出通常使用 print() 函数…...
【C语言标准库函数】指数与对数函数:exp(), log(), log10()
目录 一、头文件 二、函数简介 2.1. exp(double x) 2.2. log(double x) 2.3. log10(double x) 三、函数实现(概念性) 3.1. exp(double x) 的模拟实现 3.2. log(double x) 和 log10(double x) 的模拟实现 四、注意事项 4.1. exp(double x) 的注…...
小白系列:数据库基础知识解析
前言 今天,我打算用简单明了的语言来讲解一下数据库的基本概念。总体上,这些内容与我在视频中讲解的基本一致。如果你发现视频的讲解有些难以理解,不妨看看这篇文字版的解释,希望能够更快速地帮助你掌握数据库的相关知识。需要注…...
【AIGC魔童】DeepSeek核心创新技术(二):MLA
【AIGC魔童】DeepSeek核心创新技术(二):MLA 1. MLA框架的定义与背景2. MLA框架的技术原理(1)低秩联合压缩(2)查询的低秩压缩(3)旋转位置嵌入(RoPE)…...
Windows Docker笔记-制作、加载镜像
引言 在文章《Windows Docker笔记-在容器中运行项目》中,已经在容器中运行了项目。而且在这个容器中,已经调试好了项目运行的环境。 使用docker,就是为了在项目发布到生产环境时,不用再去安装项目运行的环境,直接丢给…...
安卓/ios脚本开发按键精灵经验小分享
1. 程序的切换 我们经常碰到这样的需求:打开最近的应用列表,选取我们想要的程序。但是每个手机为了自己的风格,样式都有区别,甚至连列表的滑动方向都不一样,我们很难通过模拟操作来识别点击,那么我们做的只…...
(动态规划 leetcode377)组合求和IV
确立状态转移方程需要深入理解问题,合理定义子问题,找到边界条件(比如dp[0]),分析状态之间的转移关系(dp和dp之间的关系),并进行验证。 递归是自顶向下,而dp是自下而上 这里是i作为目标值&…...
备赛蓝桥杯之第十五届职业院校组省赛第四题:多表单校验
提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议 由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题࿰…...
完全离线部署deepseek并建立本地知识库应用电子数据取证领域
点击上方蓝字“小谢取证”一起玩耍 之前小谢推出一篇部署本地大模型教程,但需要网络环境 AI机器人本地免费部署(部署Llama 3.1详细教程) 还是比较受到读者的欢迎,但应读者要求:需要这个模型能够训练,能够…...
