使用Docker-compose安裝NextCloud,并部署Collabora作為office服務

使用Docker-compose安裝NextCloud敬拓,并部署Collabora作為office服務

在csdn也同步發(fā)布了,csdn上markdown格式顯示效果更好些

https://blog.csdn.net/u013568040/article/details/123648666

安裝Docker和docker-compose

使用docker-compose可以更快速的構建nextcloud需要的各個服務

準備域名裙戏,啟用SSL

2個子域名乘凸,分別用于Collabora Office和Nextcloud,且兩個域名均擁有合法SSL證書累榜,通過備案后在云服務商申請免費證書即可营勤,證書授權一年灵嫌。

例如:

nextcloud.eeeeeee.com用于訪問Nextcloud,collabora.eeeeeeee.com用于部署Collabora Office

nginx的 SSL 證書可用騰訊云或阿里云每年授權一次的免費證書葛作,就不用那個什么letsencrypt搞什么自動續(xù)簽了寿羞,

docker-compose文件

docker-compose.yml

version: '3'

services:

? db:

? ? image: mariadb:10.5

? ? container_name: nextcloud-db

? ? restart: always

? ? command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW

? ? volumes:

? ? ? - ./mariadb/db:/var/lib/mysql

? ? environment:

? ? ? - MYSQL_DATABASE=nextcloud

? ? ? - MYSQL_ROOT_PASSWORD=sd21111111111111111w

? ? ? - MYSQL_USER=nextcloud

? ? ? - MYSQL_PASSWORD=GXDw1111111111111111112

? ? ports:

? ? ? - 3306:3306

? redis:

? ? image: redis:alpine

? ? container_name: nextcloud_redis

? ? restart: always

? ? expose:

? ? ? - 6379


? cron:

? ? image: nextcloud:apache

? ? restart: always

? ? volumes:

? ? ? - ./nextcloud_cron:/var/www/html

? ? entrypoint: /cron.sh

? ? depends_on:

? ? ? - db

? ? ? - redis

? nextcloud:

? ? image: nextcloud:apache

? ? container_name: nextcloud_web

? ? restart: always

? ? volumes:

? ? ? - ./nextcloud:/var/www/html

? ? environment:

? ? ? - NEXTCLOUD_ADMIN_USER=eeeee

? ? ? - NEXTCLOUD_ADMIN_PASSWORD=L111231

? ? ? - NEXTCLOUD_TRUSTED_DOMAINS='nextcloud.eeeeeeeee.com'

? ? ? - REDIS_HOST=redis

? ? ? - VIRTUAL_HOST=nextcloud.eeeeeee.com

? ? ? - TZ=Aisa/Shanghai

? ? ? - MYSQL_DATABASE=nextcloud

? ? ? - MYSQL_ROOT_PASSWORD=sdeeeeew

? ? ? - MYSQL_USER=nextcloud

? ? ? - MYSQL_PASSWORD=GXeeeeee

? ? ? - MYSQL_HOST=db

? ? ? - UID=0

? ? ? - GID=0

? ? ? - UPLOAD_MAX_SIZE=10G

? ? ? - APC_SHM_SIZE=1024M

? ? ? - OPCACHE_MEM_SIZE=512

? ? ? - CRON_PERIOD=15m

? ? depends_on:

? ? ? - db

? ? ? - redis

? ? links:

? ? ? - db

? ? cap_add:

? ? ? - MKNOD

? ? networks:

? ? ? - cloud_net

? ? ? - default

? proxy:

? ? image: nginxproxy/nginx-proxy:alpine

? ? container_name: nextcloud_proxy

? ? restart: always

? ? ports:

? ? ? - 80:80

? ? ? - 443:443

? ? volumes:

? ? ? - ./nginx/certs:/etc/nginx/certs:ro

? ? ? - ./nginx/vhost.d:/etc/nginx/vhost.d

? ? ? - ./nginx/html:/usr/share/nginx/html

? ? ? - /var/run/docker.sock:/tmp/docker.sock:ro

? ? ? - ./nginx/conf.d:/etc/nginx/conf.d

? ? networks:

? ? ? - cloud_net


? cloud_collabora:

? ? image: collabora/code:6.4.14.3

? ? container_name: cloud_collabora

? ? environment:

? ? ? - domain=nextcloud\.eeeeeeeeeeeeeeee\.com

? ? ? - username=yaeeeee

? ? ? - password=qingfeeeeeeeeeeeu

? ? ? - dictionaries=de en es zh

? ? cap_add:

? ? ? - MKNOD

? ? ports:

? ? ? - 9980:9980

? ? restart: always

? ? volumes:

? ? ? - ./collabora/coolwsd.xml:/etc/coolwsd/coolwsd.xml

? ? networks:

? ? ? - cloud_net


networks:

? cloud_net:

docker-compose.yml文件中涉及到的容器及參數(shù)配置

db:MySQL 數(shù)據(jù)庫

mariadb是完全兼容mysql的

command:是一個隔離級別的東西,不知道干嘛的赂蠢,官方文檔里并沒寫

volumes:為了不把其他目錄搞亂绪穆,我比較喜歡把文件掛在當前目錄下,我在?/home/dc/nextcloud/?文件夾下執(zhí)行安裝命令虱岂,文件都會創(chuàng)建在這個下面玖院。

volumes,作用是第岖,將宿主機的目錄掛載到docker容器中难菌,這樣操作文件時,不用登錄docker容器了绍傲,直接在宿主機操作就可以了扔傅。

如果你使用的是windows版本的docker, 建議買個linux的云服務器烫饼,騰訊云雙十一的時候都不貴的猎塞。

environment:這里設置了root賬戶的密碼,還有給nextcloud使用的賬戶密碼和數(shù)據(jù)庫

? db:

? ? image: mariadb:10.5

? ? container_name: nextcloud-db

? ? restart: always

? ? command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW

? ? volumes:

? ? ? - ./mariadb/db:/var/lib/mysql

? ? environment:

? ? ? - MYSQL_DATABASE=nextcloud

? ? ? - MYSQL_ROOT_PASSWORD=sd4eeeeee

? ? ? - MYSQL_USER=nextcloud

? ? ? - MYSQL_PASSWORD=Geeeeeee

? ? ports:

? ? ? - 3306:3306

redis:緩存服務

cron:后臺事務

nextcloud:云盤主服務

image:這里我選用的是nextcloud:apache鏡像杠纵,因為apache的更能看明白一點

environment:

NEXTCLOUD_ADMIN_*****?配置項里面nextcloud的管理員賬號密碼荠耽。這里如果不設置,應該也可以在初始化的時候設置比藻;

REDIS_HOST直接用redis铝量,可能因為我們啟了一個名字是redis的容器;

VIRTUAL_HOST這個應該是給ngnix用的银亲,就用nextcloud的域名就可用慢叨;

MYSQL_*****這個是數(shù)據(jù)庫相關設置,和db容器的一致就可以聯(lián)上务蝠;

UID GID是nextcloud操作文件時的用戶權限拍谐,可用id命令查詢用戶的uid和gid,我用的是root用戶的id馏段。id權限不足回導致上傳文件只有文件名不能正常寫入文件轩拨;

其余的各種上限的配置就按著寫就夠用了;

cap_add: - MKNOD這個也是一個容器權限相關的設置院喜,控制容器對宿主機文件的操作亡蓉,MKNOD允許容器使用mknod(2)創(chuàng)建特殊文件;

? nextcloud:

? ? image: nextcloud:apache

? ? container_name: nextcloud_web

? ? restart: always

? ? volumes:

? ? ? - ./nextcloud:/var/www/html

? ? environment:

? ? ? - NEXTCLOUD_ADMIN_USER=yanglijun

? ? ? - NEXTCLOUD_ADMIN_PASSWORD=eeeeeeeeeeeeeeeeeeeeeeeeewew

? ? ? - NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.weqeq

? ? ? - REDIS_HOST=redis

? ? ? - VIRTUAL_HOST=nextcloud.sevewnqweq

? ? ? - TZ=Aisa/Shanghai

? ? ? - MYSQL_DATABASE=nextcloud

? ? ? - MYSQL_ROOT_PASSWORD=sd42YGwqewqewqewqw

? ? ? - MYSQL_USER=nextcloud

? ? ? - MYSQL_PASSWORD=GXwqewqewqwqu

? ? ? - MYSQL_HOST=db

? ? ? - UID=0

? ? ? - GID=0

? ? ? - UPLOAD_MAX_SIZE=10G

? ? ? - APC_SHM_SIZE=1024M

? ? ? - OPCACHE_MEM_SIZE=512

? ? ? - CRON_PERIOD=15m

? ? depends_on:

? ? ? - db

? ? ? - redis

? ? links:

? ? ? - db

? ? cap_add:

? ? ? - MKNOD

? ? networks:

? ? ? - cloud_net

? ? ? - default

proxy:云盤nginx代理服務

volumes: - 宿主機:容器?需要在阿里云把證書下載并放在 ./nginx/certs/

? proxy:

? ? image: nginxproxy/nginx-proxy:alpine

? ? container_name: nextcloud_proxy

? ? restart: always

? ? ports:

? ? ? - 80:80

? ? ? - 443:443

? ? volumes:

? ? ? - ./nginx/certs:/etc/nginx/certs:ro

? ? ? - ./nginx/vhost.d:/etc/nginx/vhost.d

? ? ? - ./nginx/html:/usr/share/nginx/html

? ? ? - /var/run/docker.sock:/tmp/docker.sock:ro

? ? ? - ./nginx/conf.d:/etc/nginx/conf.d

? ? networks:

? ? ? - cloud_net

cloud_collabora:office預覽服務

這里我也試了好幾個office預覽的服務喷舀,包括onlyoffice占用內存會特別多砍濒,微軟官方的officeOline2013淋肾,部署太麻煩了,最終選擇了collabora梯影,并且nextcloud還有直接可用的插件巫员,內置的插件對中文支持不好,所以就用這個單獨部署的了甲棍。這個單獨部署的是支持中文的简识。

environment:

domain一定要設置正確(哪個網(wǎng)站上要用collabora就設置那個網(wǎng)站的地址,不是設置collabora在用的域名)感猛,否則在collabora預覽的時候會一直初始化然后就沒有然后了七扰。

如果要讓這個Collabora Office同時服務于多個域名的話,需要在兩個不同域名之間加上|陪白,例如:

domain=cloud\\.nextcloud\\.com\|second\\.nexcloud\\.com

username和password是collabora管理后臺的賬號密碼颈走,管理后臺的訪問地址是https://collabora.seeeeeeee.com/loleaflet/dist/admin/admin.html

如果瀏覽器打不開新開一個瀏覽器就好了

cap_add: - MKNOD這個設置用于讓collabora能夠正常寫緩存

? cloud_collabora:

? ? image: collabora/code:6.4.14.3

? ? container_name: cloud_collabora

? ? environment:

? ? ? - domain=nextcloud\.eeeee\.com

? ? ? - username=eeeeeeeeeeeeee

? ? ? - password=qieeeeeeeeeeeeeeeeeee

? ? ? - dictionaries=de en es zh

? ? cap_add:

? ? ? - MKNOD

? ? ports:

? ? ? - 9980:9980

? ? restart: always

? ? volumes:

? ? ? - ./collabora/coolwsd.xml:/etc/coolwsd/coolwsd.xml

? ? networks:

? ? ? - cloud_net

backups:定期備份Nextcloud文件和數(shù)據(jù)庫

(暫時沒部署)

backups:

? ? image: christophetd/duplicacy-autobackup:v1.0

? ? container_name: backups

? ? restart: always

? ? environment:

? ? ? BACKUP_NAME: "${BACKUP_NAME}"

? ? ? BACKUP_LOCATION: "b2://${B2_BUCKET}"

? ? ? BACKUP_SCHEDULE: "${BACKUP_SCHEDULE}"

? ? ? BACKUP_ENCRYPTION_KEY: "${BACKUP_ENCRYPTION_KEY}"

? ? ? B2_ID: "${B2_ID}"

? ? ? B2_KEY: "${B2_KEY}"

? ? volumes:

? ? ? - "${DATA_DIR}:/data"

創(chuàng)建和啟動容器:

在docker-compose.yml文件所在目錄,運行以下命令:

docker-compose up -d

我在配置完成后咱士,把nextcloud的端口關了立由,nextcloud服務默認是運行在80端口的(在容器內的80端口),初次安裝可用ports把80端口露出來序厉。

命令完成后锐膜,就可以用http://宿主機IP:端口,來訪問nextcloud了弛房。

如果運行docker-compose道盏,提示權限不夠,解決方法:

chmod +x /usr/local/bin/docker-compose

配置數(shù)據(jù)庫

訪問首頁文捶,進行初始化設置荷逞,就不用在這里設置了

進入mysql:

mysql -u root -p

建立數(shù)據(jù)庫

create database nextcloud;

建立數(shù)據(jù)庫用戶

create user '你的數(shù)據(jù)庫用戶名'@'%' identified by '你的數(shù)據(jù)庫密碼';

將數(shù)據(jù)庫用戶與數(shù)據(jù)庫關聯(lián)起來,并允許所有IP訪問此數(shù)據(jù)庫

GRANT ALL PRIVILEGES ON 你的數(shù)據(jù)庫用戶名 TO '你的數(shù)據(jù)庫用戶名@'%' IDENTIFIED BY '你的數(shù)據(jù)庫密碼' WITH GRANT OPTION;

刷新權限信息

flush privileges;

參數(shù)解釋:

nextcloud粹排,代表對這個數(shù)據(jù)庫有效种远,如果換成*.* ,代表對任意數(shù)據(jù)庫任意表有效

‘%’ 允許任意IP訪問數(shù)據(jù)庫顽耳,如果換成’localhost’代表只允許本機訪問

配置redis

如果doker-compose.yml添加了redis服務坠敷,需要編輯nextcloud的php配置文件來啟用服務,配置文件路徑是./nextcloud/config/config.php

? 'memcache.local' => '\OC\Memcache\Redis',

? 'memcache.distributed' => '\OC\Memcache\Redis',

? 'memcache.locking' => '\OC\Memcache\Redis',

? 'redis' => array(

? ? 'host' => 'redis',? #如果是在本機就是localhost,如果是docker斧抱,要和Redis的名一致

? ? 'port' => 6379,

? ? ),

必要設置

應用商店

應用商店是在墻外的常拓,如果服務器聯(lián)網(wǎng)不科學渐溶,是無法訪問到的辉浦,即使額能訪問到也沒法安裝成功應用。

國內有一個非常優(yōu)秀的鏡像可用使用茎辐,地址 https://www.orcy.net/ncapps/v1/

配置文件路徑是/docker/nextcloud/config/config.php宪郊,修改配置文件掂恕,在最后添加

注意最后也是有逗號的

? 'appstoreenabled' => true,

? 'appstoreurl' => 'https://www.orcy.net/ncapps/v1/',

受信任的域名

如果域名不受信任,即使指向了nextcloud的服務地址弛槐,也是無法打開的懊亡,需要在配置文件./nextcloud/config/config.php,修改配置文件乎串,找到trusted_domains店枣,在下面的數(shù)組中按編號新增自己的域名,如果是帶端口的端口也要寫上叹誉,有IP的IP也要寫

'trusted_domains' =>

? array (

? ? 0 => 'localhost',

? ? 1 => 'nextcloud.eeeeeeeeeeeeee.space',

? ? 2 => 'collabora.eeeeeeeeeeeeeeee.space',

? ),

您的安裝沒有設置默認的電話區(qū)域

管理員后臺【概覽】頁提示【您的安裝沒有設置默認的電話區(qū)域…】

編輯 Nextcloud config 目錄中的 config.php 文件鸯两,在文件最下方, ); 前添加如下代碼

注意长豁,每行代碼后需添加英文逗號钧唐。

'default_phone_region' => 'CN',

掛載外部存儲提示"smbclient" 未安裝。無法掛載 “SMB / CIFS”, “SMB / CIFS 使用 OC 登錄信息”匠襟。

https://qingflow.com/tag/37253/app/c3ab1815/list/1?applyId=53805827

進入Nextcloud容器:

docker exec -it nextcloud_web /bin/bash

apt 更新可用軟件包列表:

apt update

用apt安裝:

apt install smbclient libsmbclient-dev

pecl install smbclient

docker-php-ext-enable smbclient

重啟Docker服務即可

提示”php-imagick模塊不支持SVG”

https://www.himstudy.net/%e8%a7%a3%e5%86%b3nextcloud%e6%8f%90%e7%a4%baphp-imagick%e6%a8%a1%e5%9d%97%e4%b8%8d%e6%94%af%e6%8c%81svg%e7%9a%84%e9%97%ae%e9%a2%98/

管理員后臺【概覽】頁提示“此實例中的 php-imagick 模塊不支持 SVG钝侠。為了獲得更好的兼容性,建議安裝它酸舍。

首先進入容器中

docker exec -it nextcloud_web /bin/bash

輸入“apt install libmagickcore-”帅韧,然后雙擊tab鍵,會顯示以“l(fā)ibmagickcore-”開頭的組件列表父腕。

然后繼續(xù)敲入完整的安裝命令弱匪,安裝“l(fā)ibmagickcore-6.q16-6-extra”組件。

apt install libmagickcore-6.q16-6-extra

安裝完畢重啟docker璧亮,然后問題就搞定了萧诫。

鏈接教程中是說要重啟apache2,如果有安裝php-fpm枝嘶,需一并重啟帘饶,筆者是php7.4-fpm,如下:

service apache2 restart

service php7.4-fpm restart

再次刷新管理后臺【概覽】頁群扶,問題解決及刻。

另一種在容器外直接操作的方法(不記得是否驗證過):

https://techoverflow.net/2021/08/17/how-to-fix-docker-nextcloud-module-php-imagick-in-this-instance-has-no-svg-support-for-better-compatibility-it-is-recommended-to-install-it/

docker-compose exec nextcloud_web apt -y update

docker-compose exec nextcloud_web apt -y install libmagickcore-6.q16-6-extra

登錄無法跳轉

弄完以后,我測試發(fā)現(xiàn)填寫完用戶名及密碼之后竞阐,點擊登錄無法跳轉到主頁缴饭。但是刷新一下又是登錄狀態(tài)了,最后上網(wǎng)查了下骆莹,這是因為web使用https反向代理了http導致的颗搂。只需要在配置文件(/config/config.json)中加上一條信息就可以了。

'overwriteprotocol' => 'https',

上傳大文件失敗

這個網(wǎng)頁上傳應該會遇到幕垦,因為Nginx做了限制丢氢。

首先傅联,映射出Nginx的配置文件:

-v /volume1/docker/nginx/nginx.conf:/etc/nginx/nginx.conf

然后修改一下,添加一個參數(shù)就可以了:

client_max_body_size 2048M; # 自行調整大小

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末疚察,一起剝皮案震驚了整個濱河市蒸走,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌貌嫡,老刑警劉巖比驻,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異岛抄,居然都是意外死亡嫁艇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門弦撩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來步咪,“玉大人,你說我怎么就攤上這事益楼』” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵感凤,是天一觀的道長悯周。 經(jīng)常有香客問我,道長陪竿,這世上最難降的妖魔是什么禽翼? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮族跛,結果婚禮上闰挡,老公的妹妹穿的比我還像新娘。我一直安慰自己礁哄,他們只是感情好长酗,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桐绒,像睡著了一般夺脾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茉继,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天咧叭,我揣著相機與錄音,去河邊找鬼烁竭。 笑死菲茬,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播生均,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼腥刹!你這毒婦竟也來了马胧?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤衔峰,失蹤者是張志新(化名)和其女友劉穎佩脊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垫卤,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡威彰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了穴肘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歇盼。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖评抚,靈堂內的尸體忽然破棺而出豹缀,到底是詐尸還是另有隱情,我是刑警寧澤慨代,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布邢笙,位于F島的核電站,受9級特大地震影響侍匙,放射性物質發(fā)生泄漏氮惯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一想暗、第九天 我趴在偏房一處隱蔽的房頂上張望妇汗。 院中可真熱鬧,春花似錦说莫、人聲如沸铛纬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽告唆。三九已至,卻和暖如春晶密,著一層夾襖步出監(jiān)牢的瞬間擒悬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工稻艰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留懂牧,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像僧凤,于是被迫代替她去往敵國和親畜侦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容