基于Ubuntu20.04+Docker+MariaDB+Nextcloud部署云盘

头图参数:

parameters:
(cowboy shot:1.1), (public:1.331), (city:1.331), silver hair, yellow eyes, (sleepy:1.1), nun, solo, 1girl, teen, (masterpiece:1.2), best quality, masterpiece, highres, original, extremely detailed wallpaper, perfect lighting, (extremely detremely detailed CG:1.2),
Negative prompt: (large breasts,huge breasts:1.4), (mutation, poorly drawn :1.2), (long body :1.3), (mutation, poorly drawn :1.2) , liquid body, long neck, uncoordinated body,fused ears, (ugly:1.4), lowres, one hand with more than 5 fingers, one hand with less than 5 fingers, (worst quality, low quality:1.4)
Steps: 20, Sampler: Euler a, CFG scale: 5, Seed: 2993431532, Size: 960x540, Model hash: a1535d0a42, Model: AnythingV5Ink_v32Ink

天下只有两种人。

比如一串葡萄到手,一种人挑好的吃,另一种人把最好的留到最后吃。

照例第一种人应该乐观,因为他每吃一颗都是吃剩的葡萄里最好的;

第二种人应该悲观,因为他每吃一颗都是吃剩的葡萄里最坏的。

不过事实却适得其反,缘故是第二种人还有希望,第一种人只有回忆。

— 钱钟书
随机引文生成自fortunes-zh包

本文默认使用以下环境:

· Ubuntu 20.04 LTS

· Docker Engine – Community 20.10.17, build 100c701

· Nextcloud 24.0.2-apache

· MariaDB 1:10.8.3+maria~jammy

本文默认环境已完成Docker环境的安装、Certbot的安装使用及数据库的部署,如未部署可观看此文章

1. Nextcloud容器部署与web端服务搭建

首先拉取对应的Nextcloud镜像

docker pull nextcloud:24.0.2-apache

使用以下命令来创建容器,需要将命令中的your_port修改为你准备使用的端口,将your_dir修改为你准备用来存放相关文件的地址,将your_application修改为你准备为这个容器起的名字(便于之后的辨认与操作)

docker run \
-dit \
--name your_application \
-p your_port:80 \
-v your_dir:/var/www/html \
nextcloud:24.0.2-apache

完成后,通过http://{your_host}:{your_port}地址访问服务,your_host为你的主机地址,如果你使用的服务器运营商有自己的安全组设置,记得先去安全组设置中为这个主机开放对应端口的访问权限

进入Nextcloud初始化页面后,按照页面上的提示输入你的初始账号/密码,绑定的数据库/其对应端口等信息,需要注意此时填写的地址为容器内地址而非映射后地址。如果数据库架设在宿主机上,可以使用host.docker.internal为主机地址的代替,完成输入后点击按钮,等待安装完成

安装完成后会跳转到一个推荐addon安装的页面,此时可以选择是否安装这些功能,可视需要而定。不过如果主机无法正确解析github地址的话,将无法安装任何addon

2. 开启https访问及网盘使用相关设置

此时再次访问http://{your_host}:{your_port}地址,将进入欢迎界面,如果此服务仅仅只是架设在不会被别人访问到的内网的话,这个网盘就已经能正常发挥自身的功能了

如果要对外网公开,此时可以点击右上角的头像→设置→概览来观看现在有哪些安全与设置问题

接下来使用certbot开启https访问,首先使用nginx将服务地址反向代理到你的域名your_domain下,这里可以先写一个简单的conf文件暂用,后续的设置certbot会协助补完

server {
    listen 80;
    server_name your_domain;

    client_max_body_size 16G;  # 客户端文件大小限制, 可以修改得更大
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";   # 强制安全传输配置

    location / {
        proxy_pass http://localhost:your_port;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for;  # 传递访问真实ip
    }
}

适用nginx配置后即可使用certbot获取ssl证书并将该反向代理自动转为https。此时再次打开概览,会发现提示虽然使用了https,但nextcloud正在生成不安全的http页面字样的提示信息,并且使用your_domain访问网站的话,亦可能出现通知使用不受信任的地址访问等,此时需要修改your_dit/config/config.php文件来完成后续工作

在修改config.php文件前首先需将服务停止,此服务在运行时修改配置文件可能发生不可逆的损坏,请注意

在config.php文件中做下列修改:

# 添加信任域名, 注意只有在这里的地址才可正常访问服务,若删除主机端口,则将不能通过主机:端口访问到服务
  'trusted_domains' =>
  array (
    0 => 'your_domain',

    1 => 'your_host:your_port',
  ),
  
# 开启https访问, 在文件下方添加以下内容
  'overwritehost' => 'your_domain',
  'overwriteprotocol' => 'https',
# 并修改下列行的信息
  'overwrite.cli.url' => 'https://your_domain',
  
# 如果主机无法访问外网致使无法进入nextcloud应用页面,可以使用贝锐的国内源来访问,有约一周的延迟,不过如果主机无法正确访问github则仍然无法正常安装应用
  'appstoreenabled' => true, 
  'appstoreurl' => 'https://www.orcy.net/ncapps/v1/', 

完成config.php文件修改后,再次开启nextcloud容器,即可通过https://your_domain地址访问到你的服务,此时其他的连接方式(如Nextcloud android application)也可行了

0x00. 手动添加文件

在第一步中,将一个文件地址映射到了宿主机上的your_dir地址。有可能出于某种原因,文件已在宿主机上,或是不得不使用scp命令来上传文件。此时将文件直接放置在your_dir/data/username/files下,在前端是不会显示这些文件的,数据库中也没有对应的地址,此时需要使用该容器的命令来扫描该地址下的文件并建立索引才可在前端访问,在此将your_username改为你nextcloud的用户名

docker exec -u www-data nc php /var/www/html/occ files:scan --path your_username/files

命令读完后即可在前端看到这些文件了,但在前端很可能却无法读取修改或移除。此时的原因多是因为www-data用户并没有操作这些文件的权限,此时可以使用ll命令确认一下文件权限的所属,之后将文件归属交予www-data即可

chown -R www-data /your_dir/data 

0x01. 手动添加应用

有可能出于各种原因,并不想要在国内主机上部署敏感工具,但是又需要添加应用时,可以先如上加上贝锐的国内源,在应用页面找到自己心仪的应用,或是直接访问nextcloud的应用商店页面找到应用的github发布版压缩包,手动下载后将其解压至/your_dir/custom_apps中即可

Side. 参考链接

  1. NextCloud 使用https反向代理后PC端异常
  2. Nextcloud应用页面空白加载不出来、Nextcloud应用商店无法打开

已发布

分类

,

作者:

标签