官方的NextCloud安裝方法。 NextCloud AIO提供了輕鬆的部署和維護,其中包含大多數NextCloud實例中的功能。
包括:
ffmpeg
, smbclient
, libreoffice
和nodejs
第一個設置 | 安裝後 |
---|---|
![]() | ![]() |
以下說明是針對沒有Web服務器或反向代理(例如Apache,Nginx,Caddy,Caddy,Cloudflare隧道等)的安裝的。如果您想在Web服務器或反向代理後面運行AIO(例如Apache,Nginx,Caddy,Cloudflare Tunnel等),請參見“反向代理文檔”。此外,下面的說明特別適用於Linux。對於Macos,請參閱此信息,有關Windows,請參閱此信息,有關Synology,請參閱此信息。
警告
您可以使用下面的便利腳本安裝Docker。但是,我們建議不要盲目下載並執行腳本作為sudo。但是,如果您喜歡它,那麼您當然可以使用它。見下文:
curl -fsSL https://get.docker.com | sudo sh
如果您需要IPv6支持,則應通過關注https://github.com/nextcloud/all-in-in-one/blob/main/main/docker-ipv6-support.md來啟用它。
在下面運行命令,以便在Linux上啟動容器,並且沒有Web服務器或反向代理(例如Apache,Nginx,Caddy,Caddy,Cloudflare Tunnel等):
# For Linux and without a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) already in place:
sudo docker run
--init
--sig-proxy=false
--name nextcloud-aio-mastercontainer
--restart always
--publish 80:80
--publish 8080:8080
--publish 8443:8443
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config
--volume /var/run/docker.sock:/var/run/docker.sock:ro
nextcloud/all-in-one:latest
sudo docker run
此命令旋轉一個新的Docker容器。如果將用戶添加到Docker組,則可以選擇不使用sudo
使用Docker命令(這與Docker無根不同,請參見下面的常見問題解答)。--init
此選項確保永遠不會創建殭屍程序。請參閱Docker文檔。--sig-proxy=false
此選項允許通過使用[CTRL] + [C]
運行docker run
時自動連接的容器外殼,而無需關閉容器。--name nextcloud-aio-mastercontainer
這是容器的名稱。不允許更改此行,因為MasterContainer更新將失敗。--restart always
是“重新啟動策略”。 always
意味著容器應始終開始使用Docker守護程序。有關重新啟動策略的更多詳細信息,請參見Docker文檔:https://docs.docker.com/config/containers/start-containers-automationaly/--publish 80:80
這意味著容器的端口80應使用端口80在主機上發布。如果要使用端口8443,則用於獲得AIO接口的有效證書。如果您運行,則不需要AIO在Web服務器或反向代理後面,可以在這種情況下刪除,因為您可以簡單地將端口8080用於AIO接口。--publish 8080:8080
這意味著該容器的端口8080應使用端口8080在主機上發布。此端口用於AIO接口,並默認使用自簽名證書。您也可以使用其他主機端口,如果端口8080已經在主機上使用,例如--publish 8081:8080
(只有第一個端口可以更改為主機,第二個端口是用於容器的,並且必須保留在8080 )。--publish 8443:8443
這意味著該容器的端口8443應使用端口8443在主機上發布。如果您將端口80和8443發佈到公共Internet,則可以通過此端口訪問帶有有效證書的AIO界面。如果您在Web服務器後面運行AIO或反向代理,則不需要在這種情況下被刪除,因為您可以簡單地將端口8080用於AIO接口。--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config
這意味著由MasterContainer創建的文件將存儲在稱為nextcloud_aio_mastercontainer
的Docker卷中。不允許此行更改,因為內置備份以後會失敗。--volume /var/run/docker.sock:/var/run/docker.sock:ro
Docker插座安裝在容器中,該容器用於旋轉所有其他容器,以獲取進一步的功能。需要在Windows/MacOS和Docker無根上調整它。請參閱有關此的適用文檔。如果調整,請不要忘記還設置WATCHTOWER_DOCKER_SOCKET_PATH
!如果您不喜歡此事,請參見https://github.com/nextcloud/all-in-in-one/tree/main/manual-install。nextcloud/all-in-one:latest
這是使用的Docker容器圖像。--env NEXTCLOUD_DATADIR="/mnt/ncdata"
(這是Linux的示例。如果要將其更改為特定路徑,而不是默認的Docker卷,則應在第一個啟動上指定。要查看更多變量的說明和示例(例如更改NextCloud的Datadir的位置或將某些位置作為外部存儲在NextCloud容器中安裝),請仔細閱讀此decker-compose文件:https://github.com/ nextCloud /All-In-in-in-in-in-in-in-blob/main/compose.yaml注意:您可能有興趣調整NextCloud的Datadir,以將文件存儲在與默認Docker卷不同的位置。查看有關如何做的文檔。
初始啟動後,您應該能夠在該服務器的端口8080上打開NextCloud AIO接口。
例如https://ip.address.of.this.server:8080
如果您的防火牆/路由器具有端口80和8443打開/轉發,並且您可以將域名指向服務器,則可以通過以下方式通過以下方式自動獲得有效的證書:
https://your-domain-that-points-to-this-server.tld:8443
請不要忘記在防火牆/路由器中打開端口3478/TCP
和3478/UDP
,以供談話容器!
NextCloud AIO的靈感來自Portainer之類的項目,這些項目通過直接通過Docker插座與Docker Daemon進行管理。該概念使用戶只能安裝一個具有一個命令的容器,該命令可以繁重地提升創建和管理所需的所有容器,以提供NextCloud安裝,其中包含大多數功能。它還使更新變得輕而易舉,並且不再綁定到主機系統(及其緩慢更新),因為所有內容都在容器中。此外,從用戶角度來看,它很容易處理,因為提供了用於管理NextCloud AIO安裝的簡單接口。
有關需要貢獻者幫助的功能請求列表,請參閱此問題。
是的。請參閱以下文檔:reververs-proxy.md
您可以在Linux上通過運行: uname -m
在Linux上進行檢查
僅這些(如果您通過端口8080在內部訪問MasterContainer接口):
443/TCP
Apache容器443/UDP
如果要啟用http3的apache容器3478/TCP
和3478/UDP
用於談話容器8080/TCP
:具有自簽名證書的MasterContainer接口(始終工作,也只有通過IP-Address訪問,例如https://ip.address.of.this.server:8080/
)80/TCP
:重定向到NextCloud(用於通過ACME HTTP-CHALLENGE獲得MasterContainer的證書)8443/TCP
:具有有效證書的萬人框架接口(僅當端口80和8443在您的防火牆/路由器中打開/轉發時,您可以將域名指向服務器。它將自動生成有效的證書,然後自動通過EG https訪問eg https://public.domain.com:8443/
是可能的。)443/TCP
:稍後將由Apache容器使用,需要在防火牆/路由器中打開/轉發443/UDP
:Apache容器將稍後使用,如果您想啟用HTTP3,則需要在防火牆/路由器中打開/轉發3478/TCP
和3478/UDP
:將在談話容器內使用Turnerver,需要在防火牆/路由器中打開/轉發在MacOS上,與Linux相比,只有一件事是不同的:而不是使用--volume /var/run/docker.sock:/var/run/docker.sock:ro
,您需要使用--volume /var/run/docker.sock.raw:/var/run/docker.sock:ro
在安裝Docker桌面後運行它(如果需要的話,請不要忘記啟用IPv6)。除此之外,它應該像Linux上一樣起作用並表現出色。
另外,您可能有興趣調整NextCloud的Datadir以將文件存儲在主機系統上。查看有關如何做的文檔。
在Windows上,安裝Docker Desktop(如果需要的話,請不要忘記啟用IPv6),然後在命令提示符中運行以下命令:
docker run ^
--init ^
--sig-proxy=false ^
--name nextcloud-aio-mastercontainer ^
--restart always ^
--publish 80:80 ^
--publish 8080:8080 ^
--publish 8443:8443 ^
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config ^
--volume //var/run/docker.sock:/var/run/docker.sock:ro ^
nextcloud/all-in-one:latest
另外,您可能有興趣調整NextCloud的Datadir以將文件存儲在主機系統上。查看有關如何做的文檔。
筆記
該項目文檔中幾乎所有命令都使用sudo docker ...
由於sudo
在Windows上不可用,因此您只需從命令中刪除sudo
即可。
關於Synology,與Linux相比,有兩件事不同:而不是使用--volume /var/run/docker.sock:/var/run/docker.sock:ro
ro,您需要使用--volume /volume1/docker/docker.sock:/var/run/docker.sock:ro
運行它。 You also need to add --env WATCHTOWER_DOCKER_SOCKET_PATH="/volume1/docker/docker.sock"
to the docker run command of the mastercontainer (but before the last line nextcloud/all-in-one:latest
).除此之外,它應該像Linux上一樣起作用並表現出色。顯然,Synology Docker GUI將無法使用,因此您需要使用SSH或在任務調度程序中創建用戶定義的腳本任務作為用戶“ root”才能運行命令。
筆記
您的Synology上的Docker插座可能位於/var/run/docker.sock
中,就像Linux上的默認值一樣。然後,您可以只使用Linux命令而無需更改任何內容 - 當您嘗試啟動容器時,您會注意到這一點,並說綁定安裝座失敗了。例如docker: Error response from daemon: Bind mount failed: '/volume1/docker/docker.sock' does not exists.
另外,您可能有興趣調整NextCloud的Datadir以將文件存儲在主機系統上。查看有關如何做的文檔。
您還需要調整Synology的防火牆,請參見下文:
Synology DSM容易受到其開放端口和登錄接口的攻擊,這就是為什麼始終建議使用防火牆設置的原因。如果激活了防火牆,則有必要對端口80,443(包括NextCloud容器,您的公共靜態IP(如果您不使用DDNS),以及適用的NC-Talk端口3478 TCP)的Docker Bridge的子網進行例外+UDP:
如果您在本地網絡(通常是這種情況)上具有NAS設置,則需要設置Synology DNS,以便能夠通過其域從網絡訪問NextCloud。另外,不要忘記將新DNS添加到您的DHCP服務器和固定的IP設置:
在Linux上使用Portainer運行它的最簡單方法是使用Portainer的堆棧功能,並使用此Docker-Compose文件以正確啟動AIO。
憑藉Truenas量表版本24.10.0(該版本於2024年10月29日正式發布,作為穩定的發行版)IX Systems拋棄了Kubernetes集成,並實施了完全有效的Docker環境。
有關更完整的指南,請參閱@zybster的本指南:#5506
在較舊的truenas量表上,有兩種方法可以運行AIO。首選的是在VM內運行AIO。這是必要的,因為它們不會露出主機上容器的Docker插座,因此您也不能在其上使用Docker-Compose,因此也無法運行未針對Truenas量表的自定義掌舵式唱片。
Another but untested way is to install Portainer on your TrueNAS SCALE from here https://truecharts.org/charts/stable/portainer/installation-notes and add the Helm-chart repository https://nextcloud.github.io/all-按照https://docs.portainer.io/user/kubernetes/helm進行https://docs.portainer.io/helm。請參見AIOS Helm圖表上的更多文檔:https://github.com/nextcloud/all-in-in-one/tree/main/nextcloud-aio-helm-chart-chart#next#nextcloud-aio-helm -chart。
https://yourdomain.com/settings/admin/richdocuments
中的WOPI-allowListhttps://yourdomain.com/settings/admin/talk
中轉動設置。儘管似乎並非如此,但是從AIO的角度來看,Cloudflare隧道的工作方式就像是反向代理。因此,請按照反向代理文檔進行記錄如何使其在Cloudflare隧道後面運行。但是,請在進行警告之前先查看。
有關尾部的反向代理示例指南,請參見@flll的本指南:#5439
/proc/user_beancounters
文件,並且在其中設置了一個低的numproc
限制,則一旦達到此限制,您的服務器可能會不當行為,而AIO很快達到了該限制,請參見此處。通常,建議的VP是那些是KVM/非虛擬化的VP,因為Docker應該在它們上最有效。
您可以在反向代理模式下安裝AIO,其中還記錄瞭如何使用ACME DNS-Challenge來運行它以獲得AIO的有效證書。請參閱反向代理文檔。 (意味著Caddy with ACME DNS-challenge
)。另請參見https://github.com/dani-garcia/vaultwarden/wiki/running-a-private-vaultenen-instance-with-let--let%27s-cermrypt-certs#getting-a-cetting-a- custom-custom-caddy-build for其他文檔關於這個話題。
如果您不想向公共互聯網打開NextCloud,則可能會查看以下文檔有關如何在本地設置它的文檔:local-instance.md,但請記住,您仍然需要讓HTTPS正常工作。
不,不會添加。如果您只想在本地運行它,則可以查看以下文檔:local-instance.md用於配置而沒有傳統域。或者,請考慮在本地使用NextCloudpi進行IP地址訪問(它比AIO捆綁的功能少)。
否。這是不可能的,由於多種原因:更新檢查,通過應用商店安裝應用程序,按需下載其他Docker映像等。
不,他們不會。如果您想在本地運行它,而無需向公共Internet打開NextCloud,請查看本地實例文檔。
不,不會添加。但是,您可以使用此功能來創建多個AIO實例,一個用於每個域。
不,他們不會。請使用專用域進行NextCloud,並通過遵循反向代理文檔正確設置它。如果端口443和/或80被阻止,則可以在線發布A CloudFlare隧道。您也可以使用ACME DNS-Challenge獲得有效的證書。但是,在所有情況下,NextCloud接口都會將您重定向到端口443。
不,不會添加。請使用專用(子)域進行NextCloud,並通過遵循反向代理文檔正確設置它。
請注意,如果您在Cloudflare隧道後面運行AIO,則無法進行本地訪問,因為TLS代理是在這種情況下被卸載到Cloudflares Infrastructure的。您可以通過設置自己的反向代理來解決此問題,該代理在本地處理TLS,並將以下步驟進行工作。
請確保如果您在反向代理後面運行AIO,則將反向代理配置為在運行它的服務器上使用端口443。否則,以下步驟將不起作用。
現在,這已經陷入困境,推薦的方法如何在本地訪問NextCloud,是設置一個像Pi-hole這樣的本地DNS服務器,並為該域名設置一個自定義DNS記錄,該域指向內部IP-運行NextCloud AIO的服務器的adddress。以下是一些指南:
如果您完全確定已正確配置了所有內容並且無法通過域驗證,則可以通過添加--env SKIP_DOMAIN_VALIDATION=true
MasterContainer的Docker Run命令來跳過域驗證(但在最後一行之前nextcloud/all-in-one:latest
!
眾所周知,使用防火牆作為防火牆守護程序的Linux發行版在Docker Networks上存在問題。如果容器無法彼此通信,則可以通過運行來更改防火牆以使用Iptables後端:
sudo sed -i 's/FirewallBackend=nftables/FirewallBackend=iptables/g' /etc/firewalld/firewalld.conf
sudo systemctl restart firewalld docker
之後它應該起作用。
有關更多詳細信息,請參見https://dev.to/ozorest/fedora-32-how-to-solve-docker-internal-network-sissue-22me。甚至在官方Firewalld網站上提到了此限制:https://firewalld.org/#who-is-using-it
是的。如果啟用了SELINUX,則可能需要添加--security-opt label:disable
選項添加到MasterContainer的Docker Run命令中,以便允許其訪問Docker套接字(或security_opt: ["label:disable"]
compose.yaml)。參見#485
occ
命令?只需運行以下內容: sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ your-command
。當然, your-command
需要與您要運行的命令交換。
Security & setup warnings displays the "missing default phone region" after initial install
?只需運行以下命令: sudo docker exec --user www-data nextcloud-aio-nextcloud php occ config:system:set default_phone_region --value="yourvalue"
。當然,您需要根據位置修改yourvalue
。例子是DE
, US
和GB
。有關更多代碼,請參見此列表:https://en.wikipedia.org/wiki/iso_3166-1_alpha-2#offically_assigned_code_elements
有關此的一些文檔,請參見Mustical-Instances.md。
NextCloud具有內置的Bruteforce保護,該保護可能會觸發,並會阻止IP地址或禁用用戶。您可以通過運行sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ security:bruteforce:reset <ip-address>
並通過運行sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ user:enable <name of user>
useer-useer-useer-useer -user-user-user-user-user-user-user-user-user-user-user-user-user-user-user-user-user-user-user-user-user-user-user-user-user -user-user-user-user-user-user-user- sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ user:enable <name of user>
。請參閱https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#security有關更多信息。
該項目將穩定性評估在新功能上。這意味著,當引入一個新的主要NextCloud更新時,我們將至少等到第一個補丁發布,例如24.0.1
升級之前。另外,我們將等待升級,直到所有重要的應用程序都與新的主要版本兼容。 NextCloud和所有依賴項以及所有容器的次要或補丁版本將盡快更新到新版本,但我們嘗試先對所有更新進行良好的測試回合,然後再推動它們。這意味著大約需要2週的時間才能到達latest
頻道。如果您想幫助測試,則可以通過遵循此文檔來切換到beta
頻道,這也將為您提供更新。
您可以通過停止MasterContainer,將其刪除(不會丟失數據),然後使用您最初使用的相同命令來重新創建容器,從而切換到其他頻道,例如Beta通道或從Beta頻道返回最新頻道。萬事達。您只需要更改最後一行nextcloud/all-in-one:latest
in- nextcloud/all-in-one:beta
,反之亦然。
如果我們將新容器推向latest
,您將在containers
部分下方的AIO接口中看到新的容器更新。在這種情況下,只需按Stop containers
,然後Start and update containers
即可更新容器。 MasterContainer有自己的更新過程。見下文。而且,不要忘記使用內置備份解決方案備份實例的當前狀態,然後再啟動容器!否則,如果更新期間要破裂,您將無法輕鬆恢復您的實例。
如果發現了新的mastercontainer
更新,您會在Stop containers
按鈕下方看到一個允許顯示變形值的註釋。如果您單擊該按鈕,並且容器停止,則將看到一個新按鈕,允許更新萬事通信。這樣做之後,更新完成後,您將可以再次選擇Start and update containers
。建議在單擊Start and update containers
按鈕之前創建備份。
此外,還有一個每天運行一次的Cronjob,檢查容器和萬事包坦納器更新,如果找到了新的更新,並將通知發送給所有NextCloud Admins。
AIO寄出了自己的更新通知實現。它檢查容器更新是否可用。如果是這樣,它將發送帶有標題Container updates available!
在星期六,屬於admin
組一部分的NextCloud用戶。如果NextCloud容器映像應大於90天(〜3個月),因此過時,AIO將向所有帶有標題AIO is outdated!
。因此,管理員應確保每3個月至少每3個月更新一次容器映像,以確保實例盡快獲取所有安全錯誤。
如果您的NextCloud正在運行,並且您在NextCloud中登錄為Admin,則可以通過打開https://yourdomain.tld/settings/admin/overview
輕鬆登錄到AIO界面,該按鈕將在頂部顯示一個按鈕只需單擊此按鈕即可登錄到AIO接口。
筆記
您可以通過簡單地停止容器,從正確且所需的域/IP-Address/端口訪問AIO接口,然後在Start containers
上單擊一次,然後單擊一次。
筆記
手動編輯配置和犯錯可能會破壞您的實例,因此請先創建備份!
如果您設置了一個新的AIO實例,則需要輸入域。當前沒有辦法從AIO接口更改此域。因此,為了更改它,您需要使用sudo docker run -it --rm --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config:rw alpine sh -c "apk add --no-cache nano && nano /mnt/docker-aio-config/data/configuration.json"
用新域中替換每個舊域都會出現您的舊域,並保存並寫出文件。之後,從AIO接口重新啟動您的容器,如果正確配置了新域,則所有內容都應按預期工作。
如果您在Web服務器或反向代理後面運行AIO(例如Apache,Nginx,Caddy,Cloudflare Tunnel等),則顯然還需要更改反向代理配置中的域。
此外,重新啟動容器後,您需要打開管理設置並手動更新無法自動更改的值。這是一些已知地點的列表:
https://your-nc-domain.com/settings/admin/talk
for turn/stun服務器和信號服務器(如果您通過AIO接口啟用通話)https://your-nc-domain.com/settings/admin/theming
用於主題URLhttps://your-nc-domain.com/settings/admin/app_api
for Deploy Daemon如果您通過AIO接口啟用了應用程序API如果在初始安裝過程中出乎意料的路線,則可能需要重置AIO安裝,以便能夠從頭開始。
筆記
如果您已經運行它並在實例上具有數據,則不應遵循以下說明,因為它將刪除與AIO實例耦合的所有數據。
這是正確重置AIO實例的方法:
sudo docker stop nextcloud-aio-mastercontainer
sudo docker stop nextcloud-aio-domaincheck
運行sudo docker ps --format {{.Names}}
來檢查是否不再運行AIO容器。如果未列出nextcloud-aio
容器,則可以繼續下面的步驟。如果應該有一些,您將需要使用sudo docker stop <container_name>
停止它們,直到沒有人列出為止。sudo docker ps --filter "status=exited"
sudo docker container prune
卸下所有這些停止的容器sudo docker network rm nextcloud-aio
刪除docker網絡sudo docker volume ls --filter "dangling=true"
sudo docker volume prune --filter all=1
(在窗口上,您可能需要用docker volume rm nextcloud_aio_backupdir
手動刪除一些卷, docker volume rm nextcloud_aio_nextcloud_datadir
)。NEXTCLOUD_DATADIR
配置為主機上的路徑而不是默認卷,則也需要清理。 (例如,簡單地刪除目錄)。sudo docker volume ls --format {{.Name}}
沒有任何卷。如果未列出nextcloud-aio
卷,則可以繼續下面的步驟。如果應該有一些,您將需要使用sudo docker volume rm <volume_name>
刪除它們,直到沒有人列出。sudo docker image prune -a
刪除所有Docker圖像。NextCloud AIO提供了基於Borgbackup的備份解決方案。如果安裝損壞,這些備份是還原點。通過使用此工具,備份是增量,微分,壓縮和加密的 - 因此,只有第一個備份將需要一段時間。進一步的備份應快速,因為僅考慮更改。
建議在任何容器更新之前創建備份。通過這樣做,您將在更新過程中對任何可能的並發症進行安全,因為您可以單擊一鍵恢復整個實例。
對於本地備份,Restore進程應該非常快,因為RSYNC用於還原所選的備份,該備份只會傳輸更改文件並刪除其他文件。對於遠程BORG備份,從遙控器中提取了整個備份存檔,這取決於borg extract
的巧妙,可能需要下載整個存檔。
如果將外部驅動器連接到主機,然後選擇備份目錄以在該驅動器上,則您也可以安全地防止存儲Docker量的驅動器驅動器故障。
/mnt/backup
中的驅動器。/mnt/backup
。Create Backup
該備份應在外部磁盤上創建第一個備份。如果您想直接備份到遠程BORG存儲庫:
Create backup
,這將創建一個SSH鍵對並失敗,因為遙控器尚未信任此鍵。複製AIO中顯示的公鑰,並將其添加到遙控器上的授權密鑰中。可以使用按鈕創建備份並Restore selected backup
在AIO接口中Create Backup
和還原。此外,還提供了檢查備份完整性的備份檢查,但在大多數情況下不需要。
備份本身會使用一個加密密鑰加密,該密鑰在AIO接口中顯示給您。請保存在安全的地方,因為如果沒有此鍵,您將無法從備份中恢復。
完成初始備份後,每日備份可以啟用。啟用此功能還允許啟用一個選項,該選項可以自動更新所有容器,NextCloud及其應用程序。
請注意,此解決方案不會使用外部存儲應用程序備份將其添加到NextCloud的文件夾 - 但是您可以添加進一步的Docker捲和主機路徑,並在完成初始備份後要備份的備用路徑。
備份將獲取您的NextCloud AIO實例的所有重要數據,例如數據庫,您的文件和配置文件,以及MasterContainer的配置文件。使用外部存儲應用程序安裝到NextCloud的文件和文件夾不會備份。當前無法排除數據目錄,因為它需要諸如運行文件之類的黑客:掃描並使備份解決方案更加不可靠(因為數據庫和您的文件/文件夾需要保持同步)。如果您仍然不希望您的dataDirectory備份,請訪問https://github.com/nextcloud/all-in--in-on.how-to-to-enable-aucable-automatic-updates-without-creatout-creating -a-backup-beforehand-對於選項(有一個提示,需要按照哪個順序進行備份)。
基於內置的BORG備份解決方案默認情況下具有--keep-within=7d --keep-weekly=4 --keep-monthly=6
的保留策略。有關這些值的含義,請參見https://borgbackup.readthedocs.io/en/stable/usage/prune.html。您可以通過提供--env BORG_RETENTION_POLICY="--keep-within=7d --keep-weekly=4 --keep-monthly=6"
來調整保留策略nextcloud/all-in-one:latest
!適合您。
支持直接備份到遠程BORG存儲庫。這避免了必須存儲備份的本地副本,支持僅附加的borg鍵來對抗勒索軟件,並允許使用AIO接口來管理備份。
一些沒有上述所有好處的替代方案:
如果您在LXC容器中運行AIO,則需要確保在LXC容器設置中啟用保險絲。另外,如果使用Alpine Linux作為主機OS,請確保通過apk add fuse
。否則,備份容器將無法啟動,因為需要保險絲才能工作。
如AIO接口中所述,可以使用Docker卷作為備份目標。在使用它之前,您需要先創建它。這是一個如何在Windows上創建一個的示例:
docker volume create ^
--driver local ^
--name nextcloud_aio_backupdir ^
-o device="/host_mnt/e/your/backup/path" ^
-o type="none" ^
-o o="bind"
在此示例中,它將E:yourbackuppath
安裝到卷中,因此,對於其他位置,您需要相應地調整/host_mnt/e/your/backup/path
。之後,在AIO接口中輸入nextcloud_aio_backupdir
作為備份位置。
您可以按照以下步驟在主機上打開Borgbackup檔案:
(Ubuntu桌面的說明)
# Install borgbackup on the host
sudo apt update && sudo apt install borgbackup
# In any shell where you use borg, you must first export this variable
# If you are using the default backup location /mnt/backup/borg
export BORG_REPO= ' /mnt/backup/borg '
# or if you are using a remote repository
export BORG_REPO= ' user@host:/path/to/repo '
# Mount the archives to /tmp/borg
sudo mkdir -p /tmp/borg && sudo borg mount " $BORG_REPO " /tmp/borg
# After entering your repository key successfully, you should be able to access all archives in /tmp/borg
# You can now do whatever you want by syncing them to a different place using rsync or doing other things
# E.g. you can open the file manager on that location by running:
xhost +si:localuser:root && sudo nautilus /tmp/borg
# When you are done, simply close the file manager and run the following command to unmount the backup archives:
sudo umount /tmp/borg
您可以按照以下步驟手動刪除主機上的Borgbackup檔案:
(對Debian的OS'喜歡Ubuntu的說明)
# Install borgbackup on the host
sudo apt update && sudo apt install borgbackup
# In any shell where you use borg, you must first export this variable
# If you are using the default backup location /mnt/backup/borg
export BORG_REPO= ' /mnt/backup/borg '
# or if you are using a remote repository
export BORG_REPO= ' user@host:/path/to/repo '
# List all archives (if you are using the default backup location /mnt/backup/borg)
sudo borg list
# After entering your repository key successfully, you should now see a list of all backup archives
# An example backup archive might be called 20220223_174237-nextcloud-aio
# Then you can simply delete the archive with:
sudo borg delete --stats --progress " ::20220223_174237-nextcloud-aio "
# If borg 1.2.0 or higher is installed, you then need to run borg compact in order to clean up the freed space
sudo borg --version
# If version number of the command above is higher than 1.2.0 you need to run the command below:
sudo borg compact
這樣做之後,請確保更新AIO接口中的備份檔案列表!
您可以通過單擊Check backup integrity
按鈕或Create backup
按鈕來做到這一點。
為了提高備份安全性,您可以考慮定期將本地備份存儲庫同步到另一個驅動器。
為此,首先將驅動器添加到/etc/fstab
以便能夠自動安裝,然後創建一個自動完成所有操作的腳本。這是這樣一個腳本的示例:
#! /bin/bash
# Please modify all variables below to your needings:
SOURCE_DIRECTORY= " /mnt/backup/borg "
DRIVE_MOUNTPOINT= " /mnt/backup-drive "
TARGET_DIRECTORY= " /mnt/backup-drive/borg "
# #######################################
# Please do NOT modify anything below! #
# #######################################
if [ " $EUID " -ne 0 ] ; then
echo " Please run as root "
exit 1
fi
if ! [ -d " $SOURCE_DIRECTORY " ] ; then
echo " The source directory does not exist. "
exit 1
fi
if [ -z " $( ls -A " $SOURCE_DIRECTORY / " ) " ] ; then
echo " The source directory is empty which is not allowed. "
exit 1
fi
if ! [ -d " $DRIVE_MOUNTPOINT " ] ; then
echo " The drive mountpoint must be an existing directory "
exit 1
fi
if ! grep -q " $DRIVE_MOUNTPOINT " /etc/fstab ; then
echo " Could not find the drive mountpoint in the fstab file. Did you add it there? "
exit 1
fi
if ! mountpoint -q " $DRIVE_MOUNTPOINT " ; then
mount " $DRIVE_MOUNTPOINT "
if ! mountpoint -q " $DRIVE_MOUNTPOINT " ; then
echo " Could not mount the drive. Is it connected? "
exit 1
fi
fi
if [ -f " $SOURCE_DIRECTORY /lock.roster " ] ; then
echo " Cannot run the script as the backup archive is currently changed. Please try again later. "
exit 1
fi
mkdir -p " $TARGET_DIRECTORY "
if ! [ -d " $TARGET_DIRECTORY " ] ; then
echo " Could not create target directory "
exit 1
fi
if [ -f " $SOURCE_DIRECTORY /aio-lockfile " ] ; then
echo " Not continuing because aio-lockfile already exists. "
exit 1
fi
touch " $SOURCE_DIRECTORY /aio-lockfile "
if ! rsync --stats --archive --human-readable --delete " $SOURCE_DIRECTORY / " " $TARGET_DIRECTORY " ; then
echo " Failed to sync the backup repository to the target directory. "
exit 1
fi
rm " $SOURCE_DIRECTORY /aio-lockfile "
rm " $TARGET_DIRECTORY /aio-lockfile "
umount " $DRIVE_MOUNTPOINT "
if docker ps --format " {{.Names}} " | grep " ^nextcloud-aio-nextcloud$ " ; then
docker exec -it nextcloud-aio-nextcloud bash /notify.sh " Rsync backup successful! " " Synced the backup repository successfully. "
else
echo " Synced the backup repository successfully. "
fi
您可以簡單地將腳本複制並粘貼到一個名為backup-script.sh
文件中。SH,例如, /root/backup-script.sh
。不要忘記根據您的要求修改變量!
之後,使用sudo chown root:root /root/backup-script.sh
和sudo chmod 700 /root/backup-script.sh
。然後,您可以創建一個cronjob,例如在這樣的星期日,每週20:00
運行:
sudo crontab -u root -e
打開cronjob(如果尚未完成的話,請選擇您的編輯器。我建議Nano)。0 20 * * 7 /root/backup-script.sh
,它將每週在周日的20:00運行腳本。Ctrl + o
> Enter
並使用Ctrl + x
關閉編輯器的快捷方式。警告
以下腳本僅在AIO初始設置之後工作。因此,您將始終需要先訪問AIO接口,在域中鍵入並首次啟動容器,或者在使用腳本之前從其Borg備份恢復較舊的AIO實例。
您可以通過運行存儲在MasterContainer中的/daily-backup.sh
腳本來做到這一點。它接受以下環境變量:
AUTOMATIC_UPDATES
如果設置為1
,它將自動停止容器,對其進行更新並啟動它們,包括MasterContainer。如果MasterContainer更新,則一旦停止了MasterContainer,此腳本的執行將立即停止。然後,您可以等到它再次啟動,然後再次使用此標誌運行腳本,以便之後正確更新所有容器。DAILY_BACKUP
如果設置為1
,它將自動停止容器並創建備份。如果您想然後再啟動它們,則可能會查看START_CONTAINERS
選項。START_CONTAINERS
如果設置為1
,它將自動啟動容器而無需更新它們。STOP_CONTAINERS
如果設置為1
,它將自動停止容器。CHECK_BACKUP
如果設置為1
,它將啟動備份檢查。不允許像DAILY_BACKUP
一樣同時啟用此功能。請注意,此選項是非阻止的,這意味著在過程完成後未完成備份檢查,因為它僅啟動具有正確配置的Borgbackup容器。一個例子是sudo docker exec -it --env DAILY_BACKUP=1 nextcloud-aio-mastercontainer /daily-backup.sh
,您可以通過cronjob運行或將其放入腳本中。
筆記
該選項都沒有返回錯誤代碼。因此,您需要自己檢查正確的結果。
如果您已經有備份解決方案,則可能需要隱藏備份部分。您可以通過添加--env AIO_DISABLE_BACKUP_SECTION=true
tum tum the MasterContainer的Docker Run命令(但是在最後一行nextcloud/all-in-one:latest
!如果已經啟動之前,您需要停止MasterContainer,將其刪除(不會丟失數據),並使用最初使用的Docker Run命令重新創建它)。
警告
完成初始NextCloud安裝後,請勿設置或調整此值!如果您仍然想這樣做,請查看有關如何做的。
您可以配置NextCloud容器以將主機上的特定目錄用作數據目錄。您可以通過將環境變量NEXTCLOUD_DATADIR
添加到MasterContainer的Docker Run命令(但是在最後一行nextcloud/all-in-one:latest
In-In-In-In-In-In-One! (不會丟失數據)並使用最初使用的Docker Run命令重新創建它)。該變量的允許值是以/
且不等於/
字符串。然後,所選目錄或音量將安裝到容器內部的/mnt/ncdata
。
--env NEXTCLOUD_DATADIR="/mnt/ncdata"
。/mnt/ncdata
外部BTRFS驅動器,請確保選擇一個子文件夾,例如eg /mnt/ncdata/nextcloud
作為datadir,因為在這種情況下,根文件夾不適合Datadir 。參見#2696。--env NEXTCLOUD_DATADIR="/var/nextcloud-data"
--env NEXTCLOUD_DATADIR="/volume1/docker/nextcloud/data"
。--env NEXTCLOUD_DATADIR="/run/desktop/mnt/host/c/ncdata"
。 (此路徑相當於窗口主機上的C:ncdata
,因此您需要相應地翻譯路徑。提示:您輸入的路徑需要從/run/desktop/mnt/host/
。附加到確切位置在您的Windows主機上,例如c/ncdata
,等效於C:ncdata
。--env NEXTCLOUD_DATADIR="nextcloud_aio_nextcloud_datadir"
。需要事先手動創建此卷,以便能夠使用它。例如,在Windows上使用: docker volume create ^
--driver local ^
--name nextcloud_aio_nextcloud_datadir ^
-o device="/host_mnt/e/your/data/path" ^
-o type="none" ^
-o o="bind"
E:yourdatapath
掛載到卷中,因此對於其他位置,您需要相應地調整/host_mnt/e/your/data/path
。當然。將其添加到主機系統上的/etc/fstab
文件:
<your-storage-host-and-subpath> <your-mount-dir> cifs rw,mfsymlinks,seal,credentials=<your-credentials-file>,uid=33,gid=0,file_mode=0770,dir_mode=0770 0 0
(當然,您需要修改<your-storage-host-and-subpath>
您的儲存 - 宿主和subpath>,<your-mount-dir>和<your-mount-dir>
和<your-credentials-file>
。)
一個例子看起來像這樣:
//your-storage-host/subpath /mnt/storagebox cifs rw,mfsymlinks,seal,credentials=/etc/storage-credentials,uid=33,gid=0,file_mode=0770,dir_mode=0770 0 0
並添加到/etc/storage-credentials
:
username=<smb/cifs username>
password=<password>
(當然,您需要修改<smb/cifs username>
和<password>
為您的特定情況。)
現在,您可以將/mnt/storagebox
用作NextCloud的datadir,如上面的部分所述。
默認情況下,NextCloud容器被限制,無法在主機OS上訪問目錄。當您打算在NextCloud中使用本地外部存儲在數據目錄外存儲一些文件,並且可以通過將環境變量NEXTCLOUD_MOUNT
添加到MasterContainer的Docker Run命令(但是在最後一行nextcloud/all-in-one:latest
!該變量的允許值是以/
且不等於/
字符串。
--env NEXTCLOUD_MOUNT="/mnt/"
和--env NEXTCLOUD_MOUNT="/media/"
。--env NEXTCLOUD_MOUNT="/Volumes/your_drive/"
--env NEXTCLOUD_MOUNT="/volume1/"
。--env NEXTCLOUD_MOUNT="/run/desktop/mnt/host/d/your-folder/"
。 (此路徑等於D:your-folder
,因此您需要相應地翻譯路徑。提示:您輸入的路徑需要從/run/desktop/mnt/host/
。附加到該路徑Windows主機上的確切位置,例如d/your-folder/
等效於D:your-folder
。使用此選項後,請確保將正確的權限應用於您要在NextCloud中使用的目錄。例如sudo chown -R 33:0 /mnt/your-drive-mountpoint
和sudo chmod -R 750 /mnt/your-drive-mountpoint
當您使用時應該使其在linux上工作--env NEXTCLOUD_MOUNT="/mnt/"
。在Windows上,您可以使用docker exec -it nextcloud-aio-nextcloud chown -R 33:0 /run/desktop/mnt/host/d/your-folder/
and docker exec -it nextcloud-aio-nextcloud chmod -R 750 /run/desktop/mnt/host/d/your-folder/
。
然後,您可以導航到https://your-nc-domain.com/settings/apps/disabled
,激活外部存儲應用程序,導航到https://your-nc-domain.com/settings/admin/externalstorages
並添加並添加一個本地外部存儲目錄,可以在您輸入的同一地點內的容器內訪問。例如/mnt/your-drive-mountpoint
將安裝到容器內的/mnt/your-drive-mountpoint
,等等。
請注意,這些位置不會被內置的備份解決方案覆蓋 - 但是您可以在完成初始備份後要添加更多的Docker量和主機路徑。
筆記
如果您看不到外部存儲管理選項中的類型“本地存儲”,則可能需要從AIO接口中重新啟動容器。
默認情況下,Talk容器將使用端口3478/UDP
和3478/TCP
進行連接。您可以通過將--env TALK_PORT=3478
添加到MasterContainer的Docker Run命令中來nextcloud/all-in-one:latest
端口MasterContainer,將其刪除(不會丟失數據),並使用您最初使用的Docker Run命令重新創建它)並將端口調整為您所需的值。最好的是使用1024上的端口,例如3479不遇到這一點:#2517
默認情況下,公開上傳到NextCloud的最高為10G(登錄用戶可以使用WebInterface或移動/桌面客戶端上傳更大的文件,因為在這種情況下使用了塊)。您可以通過提供--env NEXTCLOUD_UPLOAD_LIMIT=10G
來調整上傳限製到MasterContainer的Docker Run命令(但是在最後一行nextcloud/all-in-one:latest
! MasterContainer,將其刪除(不會丟失數據),並使用您最初使用的Docker Run命令重新創建它)並自定義擬合中的值。它必須以一個數字開始,並以G
10G
結尾。
默認情況下,上傳到NextCloud的最高為3600。您可以通過向MasterContainer的Docker Run命令提供--env NEXTCLOUD_MAX_TIME=3600
來調整上傳時間限制(但是在最後一行nextcloud/all-in-one:latest
In-In-In-In-In-In-In-One! MasterContainer,將其刪除(不會丟失數據),並使用您最初使用的Docker Run命令重新創建它)並自定義擬合的值。它必須是數字,例如3600
。
默認情況下,NextCloud容器中的每個PHP進程最大為512 MB。您可以通過提供--env NEXTCLOUD_MEMORY_LIMIT=512M
來調整內存限制,以便到達MasterContainer的Docker Run命令(但是在最後一行nextcloud/all-in-one:latest
之前! MasterContainer,將其刪除(不會丟失數據),並使用您最初使用的Docker Run命令重新創建它)並自定義擬合中的值。它必須以一個數字開始,並以M
eg 1024M
結束。
如果在域驗證期間遇到錯誤,該驗證指出您的IP地址是內部或保留的IP地址,則可以首先確保您的域確實具有正確的公共IP地址,該公共IP地址指向服務器,並且然後添加--add-host yourdomain.com:<public-ip-address>
> MasterContainer的Docker Run命令(但是在最後一行nextcloud/all-in-one:latest
!需要停止萬事查特納,將其刪除(不會丟失數據),並使用最初使用的Docker Run命令重新創建它),這將允許域驗證正常工作。因此,您知道:即使您的域A
應隨著時間的推移而變化,這也沒有問題,因為MasterContainer不會嘗試在初始域驗證後訪問所選域。
是的。為此,您需要使用並遵循手動啟動文檔。
是的。為此,您需要使用並遵循Helm-Chart文檔。
您也可以使用Docker無根運行AIO。在這裡記錄瞭如何做到這一點:docker-rootless.md
由於Podman與Docker API不兼容100%,因此不支持Podman(因為這將添加另一個平台,其中維護者需要進行測試)。但是,如上所述,您可以使用並遵循手冊安裝文檔,以使AIO的容器與Podman一起運行或使用Docker無根。現在還有這個:#3487
您可能需要調整安裝在NextCloud容器的第一個啟動上的NextCloud應用程序。您可以通過添加--env NEXTCLOUD_STARTUP_APPS="deck twofactor_totp tasks calendar contacts notes"
到MasterContainer的Docker Run命令(但是在最後一行nextcloud/all-in-one:latest
!將需要停止萬事查特納,將其刪除(不會丟失數據),並使用最初使用的Docker Run命令重新創建它)並自定義擬合中的值。它必須是一個帶有小字母AZ,0-9,空格和連字符或“ _'”的字符串。您可以通過在appid的前面添加連字符來禁用運輸和啟用的應用程序。例如 - -contactsinteraction
。
一些NextCloud應用需要其他外部依賴項,這些依賴項必須在NextCloud容器中捆綁,才能正確工作。由於我們不能將所有應用程序的每個依賴性都放入容器中 - 因為這將使項目迅速無法實現 - 您可以在NextCloud容器中添加其他依賴項。但是,請注意,這樣做是不願意的,因為我們不測試需要外部依賴性的NextCloud應用程序。
您可以通過添加nextcloud/all-in-one:latest
--env NEXTCLOUD_ADDITIONAL_APKS="imagemagick dependency2 dependency3"
停止萬事查特納,將其刪除(不會丟失數據),然後使用您最初使用的Docker Run命令重新創建它),然後自定義擬合中的值。它必須是一個帶有小字母AZ的字符串,數字0-9,空格,點和連字符或“ _”。您可以在此處找到可用的軟件包:https://pkgs.alpinelinux.org/packages?branch=v3.20。默認情況下,添加了imagemagick
。如果要保留它,也需要指定它。
某些NextCloud應用程序需要其他PHP擴展名,必須將其捆綁在NextCloud容器中才能正確工作。由於我們無法將所有應用程序的每個依賴性都放入容器中 - 這將使項目快速無法獲得 - 您可以在NextCloud容器中添加其他PHP擴展名。但是,請注意,這樣做是不願意的,因為我們不測試需要其他PHP擴展名的NextCloud應用程序。
您可以通過添加nextcloud/all-in-one:latest
--env NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS="imagick extension1 extension2"
停止萬事查特納,將其刪除(不會丟失數據),然後使用您最初使用的Docker Run命令重新創建它),然後自定義擬合中的值。它必須是一個帶有小字母AZ的字符串,數字0-9,空格,點和連字符或“ _”。您可以在此處找到可用的擴展名:https://pecl.php.net/packages.php。默認情況下,添加了imagick
。如果要保留它,也需要指定它。
FACERECKEGNITION應用程序需要安裝PDLIB PHP擴展名。不幸的是,它在PECL上也無法通過PHP Core上可用,因此目前無法將其添加到AIO中。但是,您可以使用此社區容器來運行面對面的認知。
警告
這僅在主機上存在/dev/dri
設備時才有效!如果您的主機不存在它,請不要按照進行操作,否則NextCloud容器將無法啟動!如果您不確定,最好不要繼續下面的說明。
回憶應用程序允許對視頻進行硬件轉編碼。為了使用它,您需要添加--env NEXTCLOUD_ENABLE_DRI_DEVICE=true
MasterContainer的Docker Run命令(但是在最後一行nextcloud/all-in-one:latest
!停止萬事查特納,將其刪除(不會丟失數據),然後使用最初使用的Docker Run命令重新創建它),該命令將將/dev/dri
設備安裝到容器中。現在有一個社區容器,可以輕鬆地將記憶的轉碼容器添加到AIO:https://github.com/nextcloud/all-in-in-one/tree/main/main/community-containers/memories
在某些情況下,您可能需要保留在AIO接口中禁用的NextCloud應用程序,如果應該在NextCloud中安裝它們,則不要卸載它們。您可以通過添加--env NEXTCLOUD_KEEP_DISABLED_APPS=true
到MasterContainer的Docker Run命令(但是在最後一行nextcloud/all-in-one:latest
!如果已經啟動之前,您需要停止MasterContainer,將其刪除(不會丟失數據),並使用最初使用的Docker Run命令重新創建它)。
警告
如果仍在安裝需要外部依賴的應用程序,但外部依賴性不是例如,這樣做可能會導致NextCloud中的意外問題。
如果您應該遇到龐大的Docker日誌問題,則可以按照https://docs.docker.com/config/containers/logging/local/#usage調整日誌大小。但是,對於隨附的AIO容器,通常不需要這一點,因為幾乎所有的日誌級別都設置為警告,因此它們不應產生許多日誌。
您添加到NextCloud的文件和文件夾默認存儲在以下Docker目錄中: nextcloud_aio_nextcloud:/mnt/ncdata/
(通常/var/lib/docker/volumes/nextcloud_aio_nextcloud_data/_data/
on linux主機系統)。如果需要,您可以在此處修改/添加/刪除文件/文件夾,但是注意:這樣做時要非常小心,因為您可能會破壞AIO安裝!最好的是在其中編輯/更改文件/文件夾之前使用內置備份解決方案創建備份,因為然後您將可以將實例還原為備份的狀態。
完成修改/添加/刪除文件/文件夾後,請不要忘記通過運行: sudo sudo docker exec nextcloud-aio-nextcloud chmod -R 750 /mnt/ncdata/
sudo docker exec nextcloud-aio-nextcloud chown -R 33:0 /mnt/ncdata/
nextcloud----- Aio- sudo docker exec nextcloud-aio-nextcloud chmod -R 750 /mnt/ncdata/
和sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan --all
。
您可以將整個Docker庫及其所有文件移動,包括所有NextCloud AIO文件和文件夾,首先將驅動器安裝在主機OS中(不支持NTFS,並且建議將EXT4作為FS作為FS),然後遵循本教程:https :https:https。 ://www.guguweb.com/2019/02/07/how-to-move-docker-data-data-data-directory-to-another-location-nother-on-on-ubuntu/
(當然,首先需要安裝Docker才能正常工作。)
docker rm nextcloud-aio-collabora
)和ConsoilA Image( docker image rm nextcloud/aio-collabora
)。docker system prune
)(不會丟失數據)。這應該解決問題。
您可以使用您喜歡的文本編輯器直接從主機中編輯NextClouds Config.php文件。 Eg like this: sudo docker run -it --rm --volume nextcloud_aio_nextcloud:/var/www/html:rw alpine sh -c "apk add --no-cache nano && nano /var/www/html/config/config.php"
。否則,請確保不要破壞文件,這可能會損壞您的NextCloud實例。在最好的情況下,在編輯文件之前,請使用內置備份解決方案創建備份。
所有用戶都會看到一組默認文件和文件夾,如NextCloud的配置所規定。要更改這些默認文件和文件夾,必須首先創建自定義骨架目錄;這可以通過複製您的骨架文件sudo docker cp --follow-link /path/to/nextcloud/skeleton/ nextcloud-aio-nextcloud:/mnt/ncdata/skeleton/
sudo docker exec nextcloud-aio-nextcloud chown -R 33:0 /mnt/ncdata/skeleton/
和sudo docker exec nextcloud-aio-nextcloud chmod -R 750 /mnt/ncdata/skeleton/
sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:system:set skeletondirectory --value="/mnt/ncdata/skeleton"
。有關骨架目錄的配置參數的NextCloud文檔中,可以提供更多信息。
您可以將服務器配置為使用Fail2ban作為BruteForce保護,以阻止某些IP地址。這是設置的方法:https://docs.nextcloud.com/server/stable/admin_manual/installation/harden_server.html#setup-fail2ban。 AIO的LOGPATH默認情況下是默認情況下/var/lib/docker/volumes/nextcloud_aio_nextcloud/_data/data/nextcloud.log
。不要忘記將chain=DOCKER-USER
添加到您的NextCloud監獄配置( nextcloud.local
),否則在Docker上運行的NextCloud服務即使禁止使用IP。另外,您可能會更改阻塞端口以覆蓋所有AIO端口:默認情況下, 80,443,8080,8443,3478
(請參閱此)。除此之外
可以連接到現有的LDAP服務器。您需要確保可以從NextCloud容器中訪問LDAP服務器。然後,您可以啟用LDAP應用程序,並在NextCloud中配置LDAP。如果您還沒有LDAP服務器,建議使用此Docker容器:https://hub.docker.com/r/nitnelave/lldap。在這裡也確保NextCloud可以與LDAP服務器交談。最簡單的方法是將LDAP Docker容器添加到Docker Network nextcloud-aio
中。然後,您可以通過NextCloud容器的名稱連接到LDAP容器。現在有一個社區容器,可以輕鬆地將LLDAP添加到AIO:https://github.com/nextcloud/all-in-in-one/tree/main/main/community-containers/lldap
NetData允許您使用GUI監視服務器。您可以按照https://learn.netdata.cloud/docs/agent/package/docker#create-a-a-new-new-new-netdata-agent-container進行安裝。除此之外,社區現在還有一種添加容器的方法:#392(評論)
如果要使用User_SQL應用程序,最簡單的方法是創建一個附加的數據庫容器並將其添加到Docker Network nextcloud-aio
中。然後,NextCloud容器應該能夠使用其名稱與數據庫容器進行交談。
可以安裝其中的任何一個,以獲取AIO數據庫的GUI。建議使用PGADMIN容器。您可以在此處獲得一些文檔:https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html。要使容器連接到AIO數據庫,您需要將容器連接到Docker Network nextcloud-aio
,並將nextcloud-aio-database
用作數據庫主機, oc_nextcloud
作為數據庫用戶名和您在運行sudo docker exec nextcloud-aio-nextcloud grep dbpassword config/config.php
作為密碼。除此之外,社區現在還有一種添加容器的方法:#3061(評論)
您可以使用這四個推薦項目中的任何一個:Docker Mailserver,Mailu,Maddy Mail Server,MailCow或Stalwart配置一個。現在有一個社區容器,可以輕鬆地將堅定的郵件服務器添加到AIO:https://github.com/nextcloud/all-in-in-one/tree/main/main/community-containers/stalwart
請參閱以下文檔:migration.md
為了集成新容器,他們必須提出特定的要求,以將其視為將其集成到AIO本身中。即使不考慮,我們也可以在其中添加一些文檔。現在也有這樣一個:https://github.com/nextcloud/all-in-one/tree/main/main/community-containers#community-containers
有什麼要求?
對於某些應用程序,可能有必要建立與另一個主機/服務器的安全連接,該連接使用由未經信任的認證機構頒發的證書。 An example could be configuring LDAPS against a domain controller (Active Directory or Samba-based) of an organization.
You can make the Nextcloud container trust any Certification Authority by providing the environmental variable NEXTCLOUD_TRUSTED_CACERTS_DIR
to the docker run command of the mastercontainer (but before the last line nextcloud/all-in-one:latest
! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used). The value of the variables should be set to the absolute paths of the directory on the host, which contains one or more Certification Authorities certificates. You should use X.509 certificates, Base64 encoded. (Other formats may work but have not been tested!) All the certificates in the directory will be trusted.
When using docker run
, the environmental variable can be set with --env NEXTCLOUD_TRUSTED_CACERTS_DIR=/path/to/my/cacerts
.
In order for the value to be valid, the path should start with /
and not end with /
and point to an existing directory . Pointing the variable directly to a certificate file will not work and may also break things.
The Collabora container enables Seccomp by default, which is a security feature of the Linux kernel. On systems without this kernel feature enabled, you need to provide --env COLLABORA_SECCOMP_DISABLED=true
to the initial docker run command in order to make it work.
If you have an external backup solution, you might want to enable automatic updates without creating a backup first. However note that doing this is disrecommended since you will not be able to easily create and restore a backup from the AIO interface anymore and you need to make sure to shut down all the containers properly before creating the backup, eg by stopping them from the AIO interface first.
But anyhow, is here a guide that helps you automate the whole procedure:
#! /bin/bash
# Stop the containers
docker exec --env STOP_CONTAINERS=1 nextcloud-aio-mastercontainer /daily-backup.sh
# Below is optional if you run AIO in a VM which will shut down the VM afterwards
# poweroff
You can simply copy and paste the script into a file eg named shutdown-script.sh
eg here: /root/shutdown-script.sh
.
Afterwards apply the correct permissions with sudo chown root:root /root/shutdown-script.sh
and sudo chmod 700 /root/shutdown-script.sh
. Then you can create a cronjob that runs it on a schedule eg runs the script at 04:00
each day like this:
sudo crontab -u root -e
(and choose your editor of choice if not already done. I'd recommend nano).0 4 * * * /root/shutdown-script.sh
which will run the script at 04:00 each day.Ctrl + o
and then Enter
to save, and close the editor with Ctrl + x
).After that is in place, you should schedule a backup from your backup solution that creates a backup after AIO is shut down properly. Hint: If your backup runs on the same host, make sure to at least back up all docker volumes and additionally Nextcloud's datadir if it is not stored in a docker volume.
Afterwards, you can create a second script that automatically updates the containers:
#! /bin/bash
# Run container update once
if ! docker exec --env AUTOMATIC_UPDATES=1 nextcloud-aio-mastercontainer /daily-backup.sh ; then
while docker ps --format " {{.Names}} " | grep -q " ^nextcloud-aio-watchtower$ " ; do
echo " Waiting for watchtower to stop "
sleep 30
done
while ! docker ps --format " {{.Names}} " | grep -q " ^nextcloud-aio-mastercontainer$ " ; do
echo " Waiting for Mastercontainer to start "
sleep 30
done
# Run container update another time to make sure that all containers are updated correctly.
docker exec --env AUTOMATIC_UPDATES=1 nextcloud-aio-mastercontainer /daily-backup.sh
fi
You can simply copy and paste the script into a file eg named automatic-updates.sh
eg here: /root/automatic-updates.sh
.
Afterwards apply the correct permissions with sudo chown root:root /root/automatic-updates.sh
and sudo chmod 700 /root/automatic-updates.sh
. Then you can create a cronjob that runs eg at 05:00
each day like this:
sudo crontab -u root -e
(and choose your editor of choice if not already done. I'd recommend nano).0 5 * * * /root/automatic-updates.sh
which will run the script at 05:00 each day.Ctrl + o
then Enter
to save, and close the editor with Ctrl + x
).By design, Caddy that runs inside the mastercontainer, which handles automatic TLS certificate generation for the AIO interface, is vulnerable to receiving DNS challenges for arbitrary hostnames from anyone on the internet. While this does not compromise your server's security, it can result in cluttered logs and rejected certificate renewal attempts due to rate limit abuse. To mitigate this issue, it is recommended to place the AIO interface behind a VPN and/or limit its public exposure.