前言
雖然我們前面介紹了圖床之類的應(yīng)用,但其實云盤服務(wù)才是更加貼近大眾生活的應(yīng)用 。
是一個類似于百度網(wǎng)盤、阿里云盤的服務(wù),可以通過容器的方式搭建在自己的個人服務(wù)器或NAS上,有安卓和IOS客戶端 。我不知道有沒有人在VPS上布署 。一般都是NAS用戶吧!有中文界面 。我個人一般是用于進行手機照片的云同步 , 同時還儲存一些小文件,并且偶爾可以分享文件給朋友,此時朋友下載文件的速度不像免費百度云那樣受到限制 。
除了基本的文件云同步和云儲存的功能外,其實還有很多進階功能,以后有機會再開系列博文來描述它的使用吧 。
本篇博文主要講述如何通過來安裝,并且借助NPM進行ssl證書的申請和自動續(xù)期 。安裝應(yīng)用往往不是難事,難就難在如何方便地獲得https,而這個和個人信息安全密切相關(guān)的主題在多數(shù)教程中均少有提及 。
的特別之處還在于:僅僅提供特色功能 。它的性能提升往往依賴其它應(yīng)用,比如MYSQL和Redis;它的拓展性往往依賴強大的插件 。如果你用默認的方法安裝,那么它的性能會受到較大的限制 。
如果你可以熟練使用原生Nginx,可參考這位大佬的方案:使用-搭建+Nginx+MySQL+Redis 。我請了杜比的大佬測試,這個博客的方案是有效的,只是數(shù)據(jù)庫權(quán)限的設(shè)置方法要變通一下 。由于我對于原生Nginx的配置并不熟悉,所以并沒有采用他的方案 。對于新手而言,他的設(shè)置過于復雜 。本回的安裝方法是一種對性能有較大提升并且較為簡便的方法 。原理上,唯一不同的是我們采用原生app , 即使用進行80端口映射,而不是像大佬那樣采用Nginx+:fpm的方法 。
最后提醒一下:這個方法配置的對內(nèi)存的占用還是比較大的 。如果你覺得安裝完卡頓的話,可以到htop看看是不是的問題 。這里我大致展示一下(不知道是不是和有關(guān)):
不知長期使用會怎么樣,現(xiàn)階段感覺對其它應(yīng)用沒有明顯的不良影響 。
其它關(guān)于的其它信息,可以訪問:
另外 , **如果有使用非443端口的NAS的童鞋在安裝中有任何問題的,歡迎評論區(qū)留言 。**我什么坑都踩過!
測試環(huán)境
我是在VPS里演示安裝的:
uname -a # Linux VM-12-8-ubuntu 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linuxdocker --version # Docker version 20.10.5, build 55c4c88docker-compose --version # docker-compose version 1.28.6, build 5db8d86f
準備工作
# 工作目錄請按需修改work=~/docker/nextcloud && mkdir -p $work && cd $work# 防火墻sudo ufw allow 7602/tcp comment 'nextcloud' && sudo ufw reloadsudo ufw allow 6379/tcp comment 'nextcloud' && sudo ufw reload# 提前拉取鏡像docker pull nextcloud:latestdocker pull mariadb:latestdocker pull redis
配置yml文件
添加一個-文件:
vim $work/docker-compose.yml
添加以下內(nèi)容:
---version: '3.2'networks:default:name: nextcloudservices:app:image: nextcloud:latestrestart: unless-stoppedvolumes:- ./app:/var/www/htmlenvironment:- MYSQL_PASSWORD=nextcloud_password # 按需修改- MYSQL_DATABASE=nextcloud- MYSQL_USER=nextcloud- MYSQL_HOST=dbports:- 7602:80 # 按需修改networks:- defaultcache:image: redisrestart: unless-stoppedexpose:- "6379" # 可用此默認 。因為這是暴露而不是映射volumes:- ./cache:/datacommand: redis-server --requirepass 'redis_password' # 按需修改networks:- defaultdb:image: mariadb:latestrestart: unless-stopped# 下面的command與官網(wǎng)略有不同 。它將有助于避免MYSQL數(shù)據(jù)庫的4047報錯 。command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressedvolumes:- ./db:/var/lib/mysqlenvironment:- MYSQL_ROOT_PASSWORD=nextcloud_password_root # 按需修改- MYSQL_PASSWORD=nextcloud_password# 按需修改- MYSQL_DATABASE=nextcloud- MYSQL_USER=nextcloudnetworks:- default
上線服務(wù)
cd $work && docker-compose up -d
配置NPM
ddns-go或者域名托管商后臺解析好域名 。
添加一個Proxy Host,反代地址是:7602 ??捎梅河蛎腟SL證書 。
在中添加以下記錄以增強兼容性 。詳見官網(wǎng)配置關(guān)于反代的說明 。
location /.well-known/carddav {return 301 $scheme://$host/remote.php/dav;}location /.well-known/caldav {return 301 $scheme://$host/remote.php/dav;}
完整配置圖如下所示:
NPM有443端口時的配置
觀察的客戶端日志,當出現(xiàn):
Initializing finishedNew nextcloud instance
即可直接登陸網(wǎng)站:進行設(shè)置 。
我隨便設(shè)置一個帳戶 。這個可以自定義!
adminGoK*@s3%oXiQTewxoE*v*5@Q*a!D7WGLQDbwFt!NTiaQ!P6DUf5v
如圖所示:

文章插圖

文章插圖
有些人不安裝推薦應(yīng)用 。我這里就直接安裝試試看 。國內(nèi)環(huán)境安裝速度也還行 。你也可以不點,反正你需要的話以后可以自己裝嘛!最后,耐心地等待初始化的完成吧 。
很快就成功了 。有443端口就是簡單!
最后 , 為了讓redis生效,我們需要配置$work/app//.php:
sudo vim $work/app/config/config.php添加以下內(nèi)容:
//'memcache.local' => '\OC\Memcache\APCu' // 用本地式緩存使用APCu // 注釋這行 'memcache.local' => '\OC\Memcache\Redis','memcache.distributed' => '\OC\Memcache\Redis', // 分布式緩存使用Redis'memcache.locking' => '\OC\Memcache\Redis', // 啟用Redis緩存的文件鎖'redis' => array('host' => 'cache', // 這里和mariadb的邏輯相同,填寫容器links時映射的主機名'port' => 6379,'password' => 'redis_password' // 這是之前在配置docker-compose時配置的redis密碼),'filelocking.enabled' => 'true',然后重啟-服務(wù):
cd $work && docker-compose down && docker-compose up -dNPM無443端口時的額外配置
當初我在NAS安裝的時候,沒有443端口,安裝非常地費勁!有時跳轉(zhuǎn)的時候docker可以圖形化嗎,地址欄的可能會消失掉 。
經(jīng)過一翻折騰 , 我發(fā)現(xiàn)用非443端口使用還要進行一些額外的配置 。相關(guān)的教程非常的少,真的惡心!市面上很多Up主也是直接在自己的NAS里安裝,但他們往往是在局域網(wǎng)中使用,不會配https 。然而作為一個云盤 , 沒有https能忍嗎?
又或者他們只在VPS中演示怎么安裝 。如上所述,如果你有443端口,這些問題根本不可能出現(xiàn) 。
下面我們對于無443端口的NAS給另外一些配置上的建議 。
首先,上線服務(wù)后不要登陸網(wǎng)站并注冊用戶 。我們修改$work/app//.php文件的內(nèi)容:
sudo vim $work/app/config/config.php在文件中添加以下內(nèi)容:
如果內(nèi)容已經(jīng)有默認值 , 則添加或更改記錄即可 。比如 。自己看著辦!
每一行最后的,號一定不可以省略!
//'memcache.local' => '\OC\Memcache\APCu' // 用本地式緩存使用APCu // 注釋這行 'memcache.local' => '\OC\Memcache\Redis','memcache.distributed' => '\OC\Memcache\Redis', // 分布式緩存使用Redis'memcache.locking' => '\OC\Memcache\Redis', // 啟用Redis緩存的文件鎖'redis' => array('host' => 'cache', // 這里和mariadb的邏輯相同,填寫容器links時映射的主機名'port' => 6379,'password' => 'redis_password' // 這是之前在配置docker-compose時配置的redis密碼),'filelocking.enabled' => 'true','trusted_domains' => array (0 => '', // 這一般是可以識別,不用改),'overwritehost' => ':', // 按需修改'overwriteprotocol' => 'https','overwrite.cli.url' => 'http://:', # 這里有個逗號不要忘記為什么要特別地設(shè)置.php文件的相關(guān)參數(shù)呢?如果訪問地址帶端口號且屬于反向代理 , 往往無法正確地識別 , 此時內(nèi)部將阻止此地址對進行訪問 。因此,我們需要提前對變量進行特別聲明 。和.cli.url是為了強制https訪問,這里也順便加上以防NPM的設(shè)置不生效(還沒試過刪除會不會影響登陸) 。
如圖所示(如果沒有設(shè)置管理員帳戶 , 有些參數(shù)和值是沒有;但我們要設(shè)置的幾個參數(shù)的樣式是類似的):
重啟服務(wù),讓.php的改動生效:
cd $work && docker-compose down && docker-compose up -d觀察客戶端的日志(也可以用看):
docker logs -f nextcloud_app_1 # 有時候是nextcloud-app-1當log出現(xiàn) line: ' -D '的字樣時,說明已經(jīng)重啟成功 。
此時可以訪問:創(chuàng)建管理員帳戶 。后面的操作和VPS一樣 。設(shè)置完管理帳戶后,可以自動登陸或者訪問:登陸后臺使用 。
如果你不小心注冊了帳戶再來修改.php , 在日志中很可能會有這種報錯:
[access_compat:error] [pid 32] [client ] AH01797: client denied by server configuration: /var/www/html/data/htaccesstest.txt這全是由于地址原因?qū)е碌牟贿^關(guān) 。**所以端口號的問題真的很煩!**這個時候你可以重新注冊一個帳戶 。這個時候的系統(tǒng)就會有2個用戶 。它們的權(quán)限區(qū)別我以后再了解一下 。
后臺任務(wù)
的官話,自己感受一下:為了優(yōu)化性能,正確配置后臺任務(wù)非常重要 。對于較大的實例docker可以圖形化嗎,推薦配置為 ‘Cron’ 。詳情請參考相關(guān)文檔 。
根據(jù)使用-搭建+Nginx+MySQL+Redis大佬文章的建議:由于內(nèi)部的文件和配置會在用戶操作過程中產(chǎn)生變化 , 所以需要啟用一個定時任務(wù)去定期整理和歸檔這些數(shù)據(jù)到數(shù)據(jù)庫或者應(yīng)用到配置中 。問了大佬,這個也是必要的,說是屬于php的優(yōu)化 。
如果你不配置,可能在設(shè)置——管理——基本設(shè)置會有這種警告:
首先 , 使用 ps -a查看的容器ID 。如果你按本教程,一般是或者是-app-1 。
【Docker系列 搭建個人云盤服務(wù)nextcloud】本文到此結(jié)束,希望對大家有所幫助 。
- Linux系統(tǒng)虛擬機和云服務(wù)配置,快速搭建學習環(huán)境
- 一起來學大數(shù)據(jù)|Linux常用管理命令,及大數(shù)據(jù)集群的搭建
- 矩形大法,四點共圓等 ?初三培優(yōu)系列94: 兩個難題巧解
- 一 學習語文有方法,我來指導你進步之系列:議論文寫作指導
- 碟中諜系列票房 ?諜影重重票房為什么不如碟中諜
- 普通人如何15分鐘學會搭建一個自己的網(wǎng)站
- 基礎(chǔ)操作系列「2」
- 開課吧前端課程怎么樣,學員真實職業(yè)“上升通道”搭建過程
- 一文說清汾酒巴拿馬系列產(chǎn)品
- 紅色警戒2:狂獅怒吼 超難版
