当前位置: 首页 > news >正文

为具有公网IPV6地址的服务器安装nextcloudAIO并使用NginxProxyManager配置反向代理

软件和硬件环境

  1. ubuntu server 24.04,并已配置好ipv6公网地址,已安装好docker和docker-compose。
  2. 一块单独的硬盘,用于单独存储nextcloud数据。(非必需)
  3. 有一个能够正常解析的域名,并已配置好AAAA记录解析。
  4. 免费SSL证书可以通过Let’s Encrypt (letsencrypt.org)获取。

格式化用于存储nextcloud数据的硬盘(若无需求可跳过)

创建分区表

使用sudo fdisk -l查看系统中的所有硬盘信息,并从中找到想用于存储nextcloud数据的硬盘,我这里的是/dev/sdb

在这里插入图片描述

使用sudo parted /dev/sdb命令,进入分区编辑,使用如下命令进行分区(因为我的硬盘大于2TB,需要使用GPT类型分区表),其他分区方式请自行百度。

mache@mache:~$ sudo parted /dev/sdb
GNU Parted 3.6
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
# 设置分区表类型为gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to
continue?
Yes/No? yes                                                               
(parted) mkpart primary 0% 100%
# 将硬盘的所有空间设置为一个主分区,parted工具会自动为分区表留出空间
(parted) print
# 查看分区结果
Model: ATA ST3000VN007-2AX1 (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: Number  Start   End     Size    File system  Name     Flags1      1049kB  3001GB  3001GB               primary(parted) ^C
# 退出编辑Information: You may need to update /etc/fstab.

也可使用fdisk(2TB以下硬盘)或gdisk命令(2T以上硬盘)进行分区,请自行百度。
输入d可以删除原有分区,输入n可以新建分区,输入w可以将分区表写入并保存退出。
若硬盘容量大于2TB,必须改用gdisk命令进行分区。
因为是安装完成后写的这篇记录,这里就不放具体操作流程了(命令使用方法可以自行百度),我自己只为硬盘创建了一个分区,就如上图所示。

格式化分区

分区完成后,使用mkfs格式化分区为ext4格式(nextcloud官方建议格式)。

mache@mache:~$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 732566272 4k blocks and 183148544 inodes
Filesystem UUID: e8c2956e-b1ae-4f30-8ab7-e0c5f3108de9
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544Allocating group tables: done  
# 使用默认设置
Writing inode tables: done
# 使用默认设置
Creating journal (262144 blocks): done
# 使用默认设置
Writing superblocks and filesystem accounting information: done
# 使用默认设置

格式化完成后,再次使用sudo fdisk -l查看是否分区成功。

挂载硬盘

使用sudo mkdir /data创建用于挂载硬盘的目录。(请根据个人实际需求进行修改)

临时挂载

注:此种方式挂载只是暂时挂载,系统重启之后需要重新挂载。
使用sudo mount /dev/sdb1 /data将格式化完成的新分区挂载到/data目录。可以使用sudo lsblk -f查看是否挂载成功。

永久挂载

通过绑定UUID的形式进行挂载,其他方式请自行百度。
使用sudo blkid命令查看所有硬盘的信息,找到需要挂载的分区的UUID(我这里是/dev/sdb1)。

unn@unn:/$ sudo blkid
# 其他信息省略
/dev/sdb1: UUID="e8c2956e-xxxx-xxxx-xxxx-xxxxxxxxxxxx" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="primary" PARTUUID="46f4705d-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

使用sudo vim /etc/fstab打开fstab文件,在文末插入如下一行:

UUID=e8c2956e-xxxx-xxxx-xxxx-xxxxxxxxxxxx       /data   ext4 defaults 0 2
#需要挂载的分区的UUID   挂载点  分区文件类型 挂载参数 是否使用dump工具备份文件系统(按需修改) fsck检查文件系统的优先级(按需修改)  

最后保存并退出,使用sudo mount -a命令进行挂载。

安装NginxProxyManager

项目官方地址:NginxProxyManager

使用mkdir nginxproxymanager新建文件夹用于存放NginxProxyManager配置和数据文件。
进入刚才新建的目录,使用以下docker-compose.yaml文件进行安装(docker-compose up -d),其中network_mode参数根据实际需求,可修改为host:

version: '3.8'
services:app:image: 'jc21/nginx-proxy-manager:latest'restart: unless-stoppednetwork_mode: bridge# 网络模式根据实际需求,可修改为hostports:# These ports are in format <host-port>:<container-port>- '80:80' # Public HTTP Port- '443:443' # Public HTTPS Port- '81:81' # Admin Web Port# Add any other Stream port you want to expose# - '21:21' # FTP# Uncomment the next line if you uncomment anything in the section# environment:# Uncomment this if you want to change the location of# the SQLite DB file within the container# DB_SQLITE_FILE: "/data/database.sqlite"# Uncomment this if IPv6 is not enabled on your host# DISABLE_IPV6: 'true'volumes:- ./data:/data- ./letsencrypt:/etc/letsencrypt

安装nextcloud AIO

官方文档: Nextcloud All-in-One
官方Nextcloud All-in-One反向代理文档: Reverse Proxy Documentation

使用mkdir nextcloud新建文件夹用于存放NginxProxyManager配置文件,数据文件存放于刚才格式化并挂载好的硬盘中。
使用如下docker-compose.yaml文件,安装Nextcloud All-in-One(docker-compose up -d):

services:nextcloud-aio-mastercontainer:image: nextcloud/all-in-one:latestinit: truerestart: alwayscontainer_name: nextcloud-aio-mastercontainer # 不要修改! This line is not allowed to be changed as otherwise AIO will not work correctlydns:# 设置常用的dns- 223.5.5.5- 119.29.29.29- 123.125.81.6- 180.76.76.76- 114.114.114.114volumes:- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'WATCHTOWER_DOCKER_SOCKET_PATH'!network_mode: bridge # add to the same network as docker run would doports:# - 80:80 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md- 8080:8080# - 8443:8443 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.mdenvironment:APACHE_PORT: 11000 # aio代理服务器的监听端口APACHE_IP_BINDING: 0.0.0.0  # 监听所有可用的ipv4地址,按需修改。未测试过修改为,是否可以。NEXTCLOUD_DATADIR: /data # 自定义nextcloud的数据目录,按需修改,如果不需要修改,请注释掉这条。⚠️⚠️⚠️不要在nextcloud安装完成后调整。volumes: # If you want to store the data on a different drive, see https://github.com/nextcloud/all-in-one#how-to-store-the-filesinstallation-on-a-separate-drivenextcloud_aio_mastercontainer:name: nextcloud_aio_mastercontainer # 不要修改! This line is not allowed to be changed as otherwise the built-in backup solution will not workdriver: localdriver_opts:type: 'none'o: 'bind'device: '/home/mache/nextcloud/config'  # 自定义配置文件存放在刚才创建好的目录中# 如果不需要自定义配置文件的存放目录,请使用以下配置进行代替
# volumes: # If you want to store the data on a different drive, see https://github.com/nextcloud/all-in-one#how-to-store-the-filesinstallation-on-a-separate-drive
#   nextcloud_aio_mastercontainer:
#     name: nextcloud_aio_mastercontainer # This line is not allowed to be changed as otherwise the built-in backup solution will not work

安装完成后,使用查看容器是否已成功启动:
在这里插入图片描述

请注意此时只有一个nextcloud相关的容器在运行

在电脑上打开浏览器,使用https://ubuntu_server的ip:8080连接nextcloud aio容器。
以下以edge浏览器为例,若提示你的连接不是专用连接,依次点击“高级”“继续访问xxx.xxx.xxx.xxx(不安全)”。
在这里插入图片描述

进入页面后,若是第一次登录,记下AIO配置的密码(红框中圈出的部分,只会显示这一次),然后点击open nextcloud aio login

在这里插入图片描述

输入刚才记录的密码,登录配置页面,若页面中有AIO is currently in "reverse proxy mode" ,则可以进入下一步骤:

在这里插入图片描述

配置NginxProxyManager

查看nginx配置所需要的反向代理ip地址

使用sudo docker container ls查看,此时能看见有2个nextcloud容器:

在这里插入图片描述

其中使用nextcloud/all-in-one:latest镜像的容器,是上一步通过docker-compose安装的。而另一个使用nextcloud/aio-domaincheck:latest镜像的容器,据我推测,是在进入https://192.168.5.125:8080/containers页面后,由nextcloud所启动的,从镜像名称、容器绑定的端口与上一步docker-compose.yaml中的APACHE_PORT匹配来看,是用于校验反向代理域名。

这时还需要注意一点,虽然上一步的docker-compose.yaml中指定的网络为docker自带的bridge网络,但是此时通过sudo docker inspect nextcloud-aio-mastercontainersudo docker inspect nextcloud-aio-domaincheck查看Network配置,能看出此时两个容器均绑定了一个新的nextcloud-aio网络:
nextcloud-aio-mastercontainer容器网络情况如下:

在这里插入图片描述

nextcloud-aio-domaincheck容器网络情况如下:

在这里插入图片描述

此时,记下nextcloud-aio网络的前12位前缀:c01a06d998e6,以及nextcloud-aio-domaincheck容器的IP地址:172.19.0.3

使用NginxProxyManager配置反向代理

在主机上打开浏览器,使用http://ubuntu_server的ip:81打开NginxProxyManager配置页面,登录使用的默认邮箱为admin@example.com,默认密码为changeme

在这里插入图片描述

导入SSL证书(若已有)

首先将SSL证书下载到电脑上,证书格式为PEM_NGINX格式。
点击NginxProxyManager主页的SSL Certificates,进入SSL配置页面,点击Add SSL Certificates,证书来源选择Custom(或者Let’s Encrypt,这会尝试通过Let’s Encrypt申请一个免费SSL证书,能否成功看网络情况)。

在这里插入图片描述

Name填写nextcloud(按需修改),Certificate Key选择已经下载好的公钥,Certificate选择已经下载好的私钥,然后点击保存。

在这里插入图片描述

配置Nextcloud反向代理

点击最右侧的Proxy Hosts,再点击中间的绿色按钮添加代理服务:

  1. Details选项卡配置:Domain Names填写已经配置好解析的域名,Schme设为http,Forward Hostnam/IP填写上一步中查到的nextcloud-aio-domaincheck容器的IP地址,Forward Port填写第4步中yaml文件里的APACHE_PORT的值,并勾选Block Common ExploitsWebscokets Support
    注意:若第3步中,通过docker安装NginxProxyManager时,选择的网络模式为host,则**Forward Hostnam/IP**填写为**localhost**

在这里插入图片描述

  1. Custom locations选项卡可以不配置。

在这里插入图片描述

  1. SSL选项卡配置:SSL证书选择刚才自行导入的证书,并勾选Force SSLHTTP/2 Support。若需要免费证书,可以选择Request a new SSL Certificate,with Let’s Encrypt,这会尝试通过Let’s Encrypt申请一个免费证书,但能不能申请成功就看网络情况了。

在这里插入图片描述

  1. Advanced选项卡配置:填写以下三行内容,最后点击保保存。
client_body_buffer_size 512k;
proxy_read_timeout 86400s;
client_max_body_size 0;

在这里插入图片描述

配置防火墙(若以host网络模式安装NginxProxyManager,则无需配置)

由于docker默认的策略,现在nextcloud-aio-domaincheck容器绑定的nextcloud-aio网络和NginxProxyManager容器的bridge网络之间是互相隔离的,这会导致NginxProxyManager与nextcloud-aio的容器之间无法建立连接,因此需要修改iptables策略。

使用以下命令,其中的br-c01a06d998e6的后缀要与第5.1步中查看的后缀匹配:

sudo iptables -I DOCKER-USER -i docker0  -o br-c01a06d998e6 -j ACCEPT
sudo iptables -I DOCKER-USER -i br-c01a06d998e6 -o docker0 -j ACCEPT

配置nextcloud AIO

验证域名及网络通信情况。

在New AIO instance中填写已设置好反向代理的域名,然后点击Submit domain进行验证(记得在路由器防火墙上放行公网流量,允许连接80和443端口)。

在这里插入图片描述

设置时区(按需)

翻到页面最下方的Timezone change部分可以设置时区。

在这里插入图片描述

配置备份(按需)

使用以下命令创建用于备份的卷。

sudo docker volume create --driver local --name nextcloud_aio_backupdir -o device="/自定义的backup文件夹路径" -o type="none" -o o="bind"

Backup and restore部分中填写备份卷名称,点击submit后记下密码。
在这里插入图片描述

在这里插入图片描述

选择额外功能(按需)

Optional containers下方,可以选择需要额外安装的功能,注意选择功能时,需要确保电脑配置能满足后面标注的需求。

下载并启动nextcloud

现在选择完毕需要的额外功能后(也可以都不选),点击Download and start containers,下载启动并配置nextcloud所有的容器。下载速度看网速。

在这里插入图片描述

下载完成后,确保页面显示的所有相关容器都已处于stopped状态,然后点击start and update containers更新配置,并启动所有容器。

在这里插入图片描述

等待,需要较长时间,直到所有容器的状态显示绿色的Running,中途可点击Reload刷新页面。如果有容器显示红色的Stopped,先点击下方的Stop containers,然后再点击start and update containers

在这里插入图片描述

安装完毕如下,这里我选择了Imaginary和Fulltextsearch功能,所以会多两个容器:

在这里插入图片描述

点击Click here to reveal the initial Nextcloud credentials查看并记录初始用户名、密码。

在这里插入图片描述

修改NginxProxyManager(若以host网络模式安装NginxProxyManager,则无需配置)

使用sudo docker inspect nextcloud-aio-apache查看Apache容器的IP地址:

在这里插入图片描述

打开浏览器,进入NginxProxyManager的配置页面,修改已配置好的代理的Forward Hostname / IP为Apache容器的IP,并保存:

在这里插入图片描述

开始使用nextcloud

在浏览器中使用已配置好的域名进入nextcloud的首页,使用第6.5步中记录的初始用户名和密码,开始使用。

在这里插入图片描述

相关文章:

为具有公网IPV6地址的服务器安装nextcloudAIO并使用NginxProxyManager配置反向代理

软件和硬件环境 ubuntu server 24.04&#xff0c;并已配置好ipv6公网地址&#xff0c;已安装好docker和docker-compose。一块单独的硬盘&#xff0c;用于单独存储nextcloud数据。&#xff08;非必需&#xff09;有一个能够正常解析的域名&#xff0c;并已配置好AAAA记录解析。…...

挖矿宝藏之TCP/IP

目录 一、TCP/IP简介 1.TCP自述 2.IP自述 二、TCP/IP 寻址 1.IP V6 2.域名 三、TCP/IP协议 一、TCP/IP简介 TCP/IP 指传输控制协议/网际协议&#xff08;Transmission Control Protocol / Internet Protocol&#xff09;&#xff0c;是供已连接因特网的计算机进行通信的…...

略谈set与map的pair封装与进入哈希

引子&#xff1a;之前我们讲了红黑树的自实现&#xff0c;与小小的接口实现&#xff0c;那set与map的pair封装是如何实现的呢&#xff1f;&#xff0c;今天我们来一探究竟&#xff0c;而且我们也要进入新章节--哈希 对于operator--()的封装&#xff1a; 注意&#xff1a;牢记思…...

android13 串口编号修改 串口名修改

总纲 android13 rom 开发总纲说明 目录 1.前言 2.技术分析 别名定义的语法规则 3.修改示例 使用别名 注意事项 4.不生效分析 5.编译查看 6.其他方法 7.彩蛋 1.前言 更改Android设备的串口编号涉及对系统深层次的配置进行修改,通常是为了解决硬件兼容性问题或满足特…...

工作中常用的软件竟可直接下载0.5m卫星影像(Esri影像、天地图、星图)、DEM、土地覆盖数据...

之前我们有介绍过在ArcGIS通过插件、WTMS或者lyr添加谷歌影像、天地图等各种在线图源。今天我们就来再整理一套既方便查看又方便下载的教程&#xff0c;软件就是我们常用的Global Mapper&#xff0c;有点强。 这里我们整理了一些我们工作学习中常用的一些数据下载方法&#xf…...

1章3节:R 语言的产生与发展轨迹

R语言诞生于1990年代,由统计学家Ross Ihaka和Robert Gentleman在新西兰奥克兰大学开发,旨在提供一种免费开源、灵活强大的统计编程工具。R语言基于S语言的设计理念,并通过其开源社区的贡献迅速发展,形成了庞大的生态系统,包括CRAN、RStudio和Shiny等。R语言以其强大的统计…...

html常用标签

一、无序列表 ul li 注意事项&#xff1a;ul下面不可以嵌套其他标签&#xff0c;li下可以 二、有序列表 ol li 注意事项同无序列表 三、自定义列表 dd dt 注意事项同无序列表 四 、表格 table tr&#xff1a;行 th:表头 td:内容 4.1合并单元格 步骤 1.明确合并的目标 2.保留…...

选择文件鼠标右键自定义菜单

注册表路径 计算机\HKEY_CLASSES_ROOT\*\shell 效果 操作 1.定位 winr&#xff0c;输入regedit, 地址栏输入以下路径&#xff0c;并回车。 计算机\HKEY_CLASSES_ROOT\*\shell 2.在shell上右键&#xff0c;新建项 3右键新建字符串值&#xff0c;Icon,Position 4 右键新建c…...

Linux安全与高级应用(九)Linux远程访问与控制:安全与最佳实践

文章目录 Linux远程访问与控制&#xff1a;安全与最佳实践引言一、SSH服务的基本概述二、密钥对验证的SSH体系三、TCP Wrappers的使用四、构建安全的SSH服务实践五、结论 &#x1f44d; 个人网站&#xff1a;【 洛秋导航】【洛秋资源小站】 Linux远程访问与控制&#xff1a;安全…...

前端已经学会vue,做粒子效果

目录 1. Canvas API 2. WebGL 3. 粒子系统 4. 动画与性能优化 5. 现有库和框架 6. Vue 组件和状态管理 实践项目建议 案例1 案例2雪花 已经熟悉了 Vue、TypeScript 和 JavaScript&#xff0c;下面是一些你可以学习的内容&#xff0c;以帮助你实现粒子效果的界面&#…...

Nessus——全面的漏洞扫描神器

一、引言 在网络安全的领域中&#xff0c;及时发现和评估系统中的漏洞是保障网络安全的关键步骤。Nessus 作为一款备受认可的漏洞扫描工具&#xff0c;为企业和安全专业人员提供了强大而全面的漏洞检测和评估功能。本文将深入介绍 Nessus 的特点、功能、使用方法以及其在实际应…...

自动化部署的艺术:Conda包依赖管理的终极指南

标题&#xff1a;自动化部署的艺术&#xff1a;Conda包依赖管理的终极指南 在当今快速发展的科学计算和数据分析领域&#xff0c;Conda已成为Python开发者和数据科学家的首选包管理器之一。它不仅能够管理Python包&#xff0c;还能处理不同语言环境的依赖关系&#xff0c;确保…...

详解Xilinx FPGA高速串行收发器GTX/GTP(7)--IBERT IP核的使用

目录 1、什么是IBERT? 2、IBERT IP核的使用 3、Example Design的使用 4、IBERT的测试 4.1、误码率测试 4.2、眼图测试 4.3、回环测试(Loopback) 5、源码下载 文章总目录点这里:《FPGA接口与协议》专栏的说明与导航 1、什么是IBERT? IBERT就是Xilinx提…...

瞬态噪声抑制算法流程解析

在语音增强领域,噪声通常可以分为稳态噪声(例如白噪声)和瞬态噪声(也称为非稳态噪声,如键盘声)。对于熟悉语音降噪的读者来说,通常的信号处理方法对稳态噪声有较好的效果,具体可以参考WebRTC ANR流程解析。然而,对于瞬态噪声,由于噪声变化迅速,传统的噪声估计算法难…...

只用一个 HTML 元素可以写出多少形状?——多边形篇

上一篇章的末尾&#xff0c;我们只用一个 div 元素写了一个鸡蛋&#xff0c;在欧几里得平面几何中&#xff0c;鸡蛋的形状已经不能算是标准形状了。对于非标准的形状&#xff0c;没有比较直观的几何规律&#xff0c;命名方面也更加困难&#xff0c;俗称不规则图形&#xff0c;在…...

QT界面设计开发(Visual Studio 2019)—学习记录一

一、控件升级 简要介绍&#xff1a; 简单来说&#xff0c;控件提升就是将一个基础控件&#xff08;Base Widget&#xff09;转换为一个更特定、更复杂的自定义控件&#xff08;Custom Widget&#xff09;。这样做的目的是为了在设计界面时能够使用更多高级功能&#xff0c;而不…...

Kafka 单机和集群环境部署教程

目录 一、Kafka 单机环境部署1. 环境准备2. 安装 Java3. 安装 ZooKeeper3.1 下载并解压 ZooKeeper3.2 配置 ZooKeeper3.3 启动 ZooKeeper3.4 验证 ZooKeeper 是否正常运行 4. 安装 Kafka4.1 下载并解压 Kafka4.2 配置 Kafka4.3 创建日志目录4.4 启动 Kafka Broker4.5 验证 Kafk…...

使用Python发送PDD直播间弹幕(协议算法分析)

文章目录 1. 写在前面2. 接口分析3. 算法还原 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…...

1056. Mice and Rice (25)-PAT甲级真题

当时没想到可以用队列来做&#xff0c;就傻傻的模拟了&#xff0c;用cur存当前轮的id&#xff0c;这个id对应的是order的下标&#xff0c;这里有个求rank的技巧就是当前轮没有晋级的rank为&#xff08;当前轮的组数1&#xff09; 模拟&#xff1a; #include<bits/stdc.h&g…...

色轮在数据可视化中的应用

在数据可视化中&#xff0c;色彩的运用不仅仅是为了美观&#xff0c;更是为了传达信息、区分数据和提升图表的易读性。本文探讨色轮及其色彩公式的应用&#xff0c;帮助大家更好地运用色彩来提升数据可视化的效果。 1、色轮的基础概念 色轮是一个用于表示颜色之间关系的图形工…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...