因為 Gooogle 教育帳號縮水,要逃難了。
之前架設過 NextCloud ( 實際上是從 OwnCloud 開始後來轉成NextCloud)
但是覺得當時手動設定太麻煩了,
用 docker image 應該就方便多了。
主要想法是把 container 的 port 80 映射到 host,
並且讓 Nextcloud 的檔案資料夾和設定資料夾都對應到 Host 的實體資料夾。
弄了一個下午,卡最久的就是編譯 map app 。
現在安裝的 NextCloud 是 22 版,
比3年前用的截面好太多了,
app 也更豐富。
建立 Container
先下載 NextCloud docker image
https://hub.docker.com/_/nextcloud/
# docker pull nextcloud:latest
產生一個 Container ,Container 的 port 80 對應到 host 的41234,在 docker 網站的 NextCloud 有列出相對的資料夾:
/var/www/html
主資料夾,升級時需要變動/var/www/html/custom_apps
installed / 放置改過的 app/var/www/html/config
本地端設定檔案/var/www/html/data
Nextcloud 存放上傳的檔案位置/var/www/html/themes/<YOUR_CUSTOM_THEME>
佈景主題/品牌
# docker run -d -p 41234:80 -v /opt/nextcloud_docker/html:/var/www/html nextcloud
看有沒有執行成功
# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESddaaaaaa223 nextcloud "/entrypoint.sh apac…" 4 hours ago Up About an hour 0.0.0.0:41234->80/tcp, :::41234->80/tcp confident_euler
查 container IP
# docker inspect ddaaaaaa223
下列這行就是container IP
"IPAddress": "172.17.0.2",
這時候就可以連線測試
初始化設定
一開始會先設定管理員帳號和密碼,下方還有要使用的資料庫資料,
預設是不必特別設定的 sqlite ,
但是效能沒其他的好。
選了 mysql 就可以使用另外的mysql或 MariaDB。
我選擇使用原本就在 host 的 MariaDB。
因為是從 Container 存取 host 上的資料庫,
外部連接
如果要使用網址從外部連接,
除了注意 port 41234 要開放外,
還要設定 NextCloud 允需的連接網址
檔案在 config/config.php
# less /opt/nextcloud_docker/html/config/config.php
'trusted_domains' =>
array (
0 => '127.0.0.1:41234',
1 => 'www.mysite.com:41234',
2 => '168.168.168.168:41234',
),
安裝 Map app
https://github.com/nextcloud/maps
所以直接到 host 的 /opt/nextcloud_docker/html/apps/ 下載 Map app
#cd /opt/nextcloud_docker/html/apps/
#git clone https://github.com/nextcloud/maps.git
進入 container console
# docker exec -it ddaaaaaa223 bash
docker image 缺少需要的 nodejs 和 npm
先升級套件庫
# apt-get update
確認沒有相關套件
# apt list nodejs
# apt list npm
手動安裝相關套件
# apt-get install libuv1 libc-ares2 libnode64 nodejs
# apt-get install npm
才能在 Map app 資料夾編譯成功
# cd /var/www/html/apps/maps
# make
===========
Container 網路失效
不過我卡在一個很奇怪的狀況,
container 內似乎因為之前 suspend 過造成docker 網路怪怪的,
# docker container stop ddaaaaaa223
#systemctl stop docker
#systemctl start docker
確認正常運作
#systemctl status docker
# docker container start ddaaaaaa223
===========更新資料庫中照片座標
Maps app 網頁上寫會在Nextcloud 定期背景作業時自動掃描照片座標資料 。如果要馬上看到照片出現在度圖上,
就要手動執行
直接在 host 執行
#docker exec --user www-data ddaaaaaa223 php occ map:scan-photos
如果已經有上傳包含座標資料的照片,等個幾分鐘就會看到出現在地圖上。
==============
NextCloud 的背景作業
在 NextCloud 的右上角個人圖像選單「設定/ 基本設定」,
第1個是每當使用者點選切換到頁面時順便執行背景工作,
第2個是利用 webcron伺服器提供每5分鐘連到自己的 NextCloud 網站觸發背景工作。
第3個是手動設定到作業系統中的定時執行排程,
可以在主機建立 systemd timer 檔案和相對應的 service 檔案,
執行下方指令
docker exec --user www-data ddaaaaaa223 php cron.php
沒有留言:
張貼留言