Ubuntu 24.04 LTS 通过 docker 安装 nextcloud 搭建个人网盘
准备
- Ubuntu 24.04 LTS
- Ubuntu 空闲硬盘挂载
- Ubuntu 安装 Docker Desktop
- Ubuntu 24.04 LTS 安装 tailscale
[我的Ubuntu服务器折腾集](https://blog.csdn.net/jh1513/article/details/145222679。
安装 nextcloud
参考 Ubuntu24.04系统Docker安装Nextcloud+Onlyoffice _。
- 更新系统包
sudo apt update
sudo apt upgrade -y
- Ubuntu 安装 Docker
如果还没有安装 Docker 和 Docker Compose,可以按照以下命令安装:
安装 Docker:
sudo apt install -y docker.io
启动并启用 Docker:
sudo systemctl enable --now docker
安装 Docker Compose:
sudo apt install -y docker-compose
- 拉取 Nextcloud 镜像
sudo docker pull nextcloud
- 创建 Docker Compose 配置文件
我把nextcloud安装在ubuntu外置硬盘,其挂载在 /media/mydisk 目录,参考Ubuntu 24.04 LTS 空闲硬盘挂载。在 /media/mydisk 下创建一个文件夹 nextcloud,来来存放 Docker Compose。在 nextcloud 文件夹下载创建 db_data 和 nextcloud_data 两个文件夹.
mkdir -p /media/mydisk/nextcloud
cd /media/mydisk/nextcloud
mkdir db_data
mkdir nextcloud_data
然后创建 docker-compose.yml 文件:
vim docker-compose.yml
然后粘贴进去下面配置文件。注意参考博文Ubuntu24.04系统Docker安装Nextcloud+Onlyoffice _中间配置文件第一句 version: '3.8'
,我给删除了,不然后面运行会给警报消息 WARN[0000] /media/mydisk/nextcloud/docker-compose.yml: the attribute version
is obsolete, it will be ignored, please remov。
services:
# 数据库服务
db:
image: mysql:latest # 使用最新版本的 MySQL 镜像
container_name: nextcloud_mysql # 自定义容器名称
restart: always # 容器异常退出时自动重启
environment:
MYSQL_ROOT_PASSWORD: your_root_password # 定义 MySQL 的 root 用户密码
MYSQL_PASSWORD: your_password # 定义 Nextcloud 用户的密码
MYSQL_DATABASE: nextcloud # 创建数据库,名为 nextcloud
MYSQL_USER: nextcloud # 定义 MySQL 用户名
TZ: Asia/Shanghai # 设置时区为上海
volumes:
- /media/mydisk/nextcloud/db_data:/var/lib/mysql # 将 MySQL 数据存储在主机的指定目录,实现持久化存储
networks:
- nextcloud_network # 连接到指定的网络
# Nextcloud 应用服务
app:
image: nextcloud:latest # 使用最新版本的 Nextcloud 镜像
container_name: nextcloud # 自定义容器名称
restart: always # 容器异常退出时自动重启
depends_on:
- db # 确保 db 服务先启动
environment:
MYSQL_DATABASE: nextcloud # 使用与数据库服务相同的数据库名称
MYSQL_USER: nextcloud # 使用与数据库服务相同的用户名
MYSQL_PASSWORD: your_password # 使用与数据库服务相同的密码
MYSQL_HOST: db # 数据库主机名为 db(即 db 服务)
TZ: Asia/Shanghai # 设置时区为上海
volumes:
- /media/mydisk/nextcloud/nextcloud_data:/var/www/html # 将 Nextcloud 数据存储在主机的指定目录,实现持久化存储
ports:
- "8080:80" # 将容器的 80 端口映射到主机的 8080 端口
networks:
- nextcloud_network # 连接到指定的网络
# OnlyOffice 文档服务
onlyoffice:
image: onlyoffice/documentserver:7.1.0 # 使用指定版本的 OnlyOffice 镜像
container_name: nextcloud_onlyoffice # 自定义容器名称
restart: always # 容器异常退出时自动重启
environment:
JWT_ENABLED: 'false' # 关闭 JWT(无需密钥)
JWT_SECRET: # 不设置 JWT 密钥
TZ: Asia/Shanghai # 设置时区为上海
ports:
- "8081:80" # 将容器的 80 端口映射到主机的 8081 端口
networks:
- nextcloud_network # 连接到指定的网络
# 网络定义
networks:
nextcloud_network: # 定义一个名为 nextcloud_network 的网络
# 卷定义,用于持久化存储数据
volumes:
mysql_data: # 定义 MySQL 数据的卷
nextcloud_data: # 定义 Nextcloud 数据的卷
- 启动 Nextcloud 和 MariaDB 服务
sudo docker compose up -d
- 然后查看运行中的容器
docker ps -a
- 打开浏览器通过 本地IP访问,192.168.x.xx:8080,并设置好用户名和密码。
配置 Tailscale 访问
-
Ubuntu 24.04 安装 tailscale
-
Ubuntu 安装 Tailscale 后,通过Tailscale IP访问会提示不被信任的域名访问。
- 修改 trusted_domains
'trusted_domains' =>
array (
0 => '本地192.168.XXX.XXX',
1 => '100.XXX.XXX.XXX', // 添加你的 Tailscale IP 地址
2 => 'Tailscale domain', // 添加Tailscale 域名
),
至此,可以通过 本地 IP,Tailscale IP,Tailscale 域名访问 nextcloud。
配置预览苹果HEIC图片
参考
- Can’t preview HEIC images
- Image Previews only working for HEIC photos
config.php 在哪
下面代码查找 config.php 文件
find /media/mydisk/nextcloud/nextcloud_data -name config.php
新增预览代码
'enabled_previews' => true,
'enabledPreviewProviders' => array (
0 => 'OC\\Preview\\BMP',
1 => 'OC\\Preview\\GIF',
2 => 'OC\\Preview\\JPEG',
3 => 'OC\\Preview\\MarkDown',
4 => 'OC\\Preview\\MP3',
5 => 'OC\\Preview\\PNG',
6 => 'OC\\Preview\\TXT',
7 => 'OC\\Preview\\XBitmap',
8 => 'OC\\Preview\\OpenDocument',
9 => 'OC\\Preview\\Krita',
10 => 'OC\\Preview\\WebP',
11 => 'OC\\Preview\\HEIC',
),
重启ubuntu
sudo reboot
效果