Docker 部署 NextCloud

突然有想部署一个自己云盘的想法,这样就避免了电脑同步一些资料还需要通过微信转发接收,而且有时候没有及时处理,又过期了,或者被清理微信空间的时候被删除。

最开始的选择是 OwnCloud,但是 OwnCloud 一些插件是收费的,而且再上传文件的时候,会出现 part 文件块再合并,对ALIYUN OSS 的支持就不好了,ALIYUN OSS 不支持文件修改,只能追加。于是转向 NextCloud,而另一个常用的Seafile 开源版本是不支持外挂外部盘的,也就没再研究。

Docker 部署

直接先展示出我的配置文件,我用的数据库是PostgreSQL, 可以根据个人喜好进行更换,并且配置 OSS 作为主存储方式。

version: "3"

services:
  nextcloud:
    image: nextcloud:23.0.0
    restart: always
    ports:
      - 8001:80
    depends_on:
      - postgres
      - redis
    environment:
      - POSTGRES_DB=数据库名称
      - POSTGRES_USER=数据库用户名
      - POSTGRES_PASSWORD=数据库密码
      - POSTGRES_HOST=postgres:5432
      - REDIS_HOST=redis
      - OBJECTSTORE_S3_HOST=OSS地址,例如:oss-cn-beijing-internal.aliyuncs.com
      - OBJECTSTORE_S3_BUCKET=OSS Bucket 名称
      - OBJECTSTORE_S3_KEY=OSS Key
      - OBJECTSTORE_S3_SECRET=OSS Secret
      - OVERWRITEHOST=访问域名
      - OVERWRITEPROTOCOL=访问协议, 例如 https
    volumes:
      - files:/var/www/html

  postgres:
    image: postgres:11.14
    restart: always
    environment:
      - POSTGRES_DB=数据库名称
      - POSTGRES_USER=数据库用户名
      - POSTGRES_PASSWORD=数据库密码
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "thought-action-cloud"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - database:/var/lib/postgresql/data

  redis:
    image: redis:6
    restart: always
    command: ["--databases", "1"]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - redis:/data
 
  cron:
    image: nextcloud:23.0.0
    restart: always
    volumes:
      - files:/var/www/html
    entrypoint: /cron.sh
    depends_on:
      - postgres
      - redis

volumes:
  files:
  database:
  redis:

通过 Docker Stack 进行部署

docker stack deploy -c nextcloud.yml nextcloud

Nginx 配置

再 Nginx conf 目录下,新添配置文件

server {

	server_name 域名地址;

    listen [::]:80;
    listen 80;

	location / {
                proxy_pass http://127.0.0.1:8001;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                client_max_body_size 100m;
                add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
	}

        location /.well-known/carddav {
            return 301 $scheme://$host/remote.php/dav;
        }

        location /.well-known/caldav {
            return 301 $scheme://$host/remote.php/dav;
        }


    error_log 错误日志目录;
    access_log 访问日志目录;
}

后运行 certbot --nginx 选择配置的域名地址即可自动配置 SSL并修改配置文件。

Certbot 可以通过下述命令进行安装

	sudo apt install certbot python3-certbot-nginx

访问安装

访问配置的域名,既可进入安装页面,因为环境变量里已经配置了数据库,安装界面只需输入管理员账户信息即可, 点击完成安装进行安装。

安装界面
安装界面

安全与警告

进入后台后,打开概览,可以看到一些待修复的问题,下面例举了部分遇见的问题解决方案

安全于警告
安全于警告

此实例中的 php-imagick 模块不支持 SVG。为了获得更好的兼容性,建议安装它

进入容器中,安装 imagemagick 即可

docker exec -it 容器名称 /bin/bash
apt update && apt install imagemagick

如何容器默认源配置安装缓慢,可以通过修改 /etc/apt/source.list 加速

sed -i "s/deb.debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list

您的安装没有设置默认的电话区域

进入容器中, 修改 config/config.php 中的配置, 先生成新的配置,确认配置无误后覆盖配置。

tac config/config.php | sed "1a\ \ 'default_phone_region' => 'CN'," | tac > config.php_backup
cp config.php_backup config/config.php

后台任务配置

基本设置中,可以配置后台任务执行方式,通过Cron可以提高部分性能

后台任务
后台任务
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇