今天自行架設了一台 NextCloud,使用的是 docker 方式來搭建,過程很快大概一個小時就建立好了,將架設的過程記錄一下,大家可以參考看看。
NextCloud 主機環境
- OS:CentOS
- CPU:雙核
- RAM:8G
- HDD:800G
NextCloud 介紹
一、CentOS主機安裝
使用 Docker 快速安裝
- 先進行
yum -y update
進行套件更新 - 安裝常用工具
yum -y install git vim
[root@localhost ~]$ yum -y update Loaded plugins: fastestmirror Determining fastest mirrors * base: mirror01.idc.hinet.net * extras: mirror01.idc.hinet.net * updates: mirror01.idc.hinet.net base | 3.6 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 (1/4): base/7/x86_64/group_gz | 153 kB 00:00:00 (2/4): extras/7/x86_64/primary_db | 243 kB 00:00:00 (3/4): base/7/x86_64/primary_db | 6.1 MB 00:00:01 (4/4): updates/7/x86_64/primary_db | 11 MB 00:00:01 Resolving Dependencies //-------------(略)-------------// util-linux.x86_64 0:2.23.2-65.el7_9.1 vim-minimal.x86_64 2:7.4.629-8.el7_9 virt-what.x86_64 0:1.18-4.el7_9.1 wpa_supplicant.x86_64 1:2.6-12.el7_9.2 zlib.x86_64 0:1.2.7-19.el7_9 Complete! [root@localhost ~]$yum -y install git vim Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror01.idc.hinet.net * extras: mirror01.idc.hinet.net * updates: mirror01.idc.hinet.net Resolving Dependencies --> Running transaction check //-------------(略)-------------// perl-TermReadKey.x86_64 0:2.30-20.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7 perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-299.el7_9 perl-macros.x86_64 4:5.16.3-299.el7_9 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 rsync.x86_64 0:3.1.2-10.el7 vim-common.x86_64 2:7.4.629-8.el7_9 vim-filesystem.x86_64 2:7.4.629-8.el7_9 Complete!
安裝 docker & docker-compose
- 安裝
curl -fsSL https://get.docker.com/ | sh
- 安裝
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 加入執行權限:
chmod +x /usr/local/bin/docker-compose
[root@localhost ~]$ curl -fsSL https://get.docker.com/ | sh # Executing docker install script, commit: 93d2499759296ac1f9c510605fef85052a2c32be + sh -c 'yum install -y -q yum-utils' + sh -c 'yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo' Loaded plugins: fastestmirror adding repo from: https://download.docker.com/linux/centos/docker-ce.repo grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo repo saved to /etc/yum.repos.d/docker-ce.repo + '[' stable '!=' stable ']' + sh -c 'yum makecache' Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror01.idc.hinet.net * extras: mirror01.idc.hinet.net * updates: mirror01.idc.hinet.net base | 3.6 kB 00:00:00 docker-ce-stable | 3.5 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 (1/10): docker-ce-stable/7/x86_64/filelists_db | 27 kB 00:00:00 (2/10): docker-ce-stable/7/x86_64/primary_db | 63 kB 00:00:00 (3/10): docker-ce-stable/7/x86_64/other_db | 120 kB 00:00:00 (4/10): extras/7/x86_64/filelists_db | 259 kB 00:00:00 (5/10): extras/7/x86_64/other_db | 145 kB 00:00:00 (6/10): updates/7/x86_64/other_db | 765 kB 00:00:00 (7/10): docker-ce-stable/7/x86_64/updateinfo | 55 B 00:00:00 (8/10): base/7/x86_64/other_db | 2.6 MB 00:00:00 (9/10): updates/7/x86_64/filelists_db | 6.1 MB 00:00:01 (10/10): base/7/x86_64/filelists_db | 7.2 MB 00:00:01 Metadata Cache Created + '[' -n '' ']' + sh -c 'yum install -y -q docker-ce' warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-ce-20.10.8-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY Public key for docker-ce-20.10.8-3.el7.x86_64.rpm is not installed Importing GPG key 0x621E9F35: Userid : "Docker Release (CE rpm) <docker@docker.com>" Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35 From : https://download.docker.com/linux/centos/gpg + version_gte 20.10 + '[' -z '' ']' + return 0 + sh -c 'yum install -y -q docker-ce-rootless-extras' Package docker-ce-rootless-extras-20.10.8-3.el7.x86_64 already installed and latest version ================================================================================ To run Docker as a non-privileged user, consider setting up the Docker daemon in rootless mode for your user: dockerd-rootless-setuptool.sh install Visit https://docs.docker.com/go/rootless/ to learn about rootless mode. To run the Docker daemon as a fully privileged service, but granting non-root users access, refer to https://docs.docker.com/go/daemon-access/ WARNING: Access to the remote API on a privileged Docker daemon is equivalent to root access on the host. Refer to the 'Docker daemon attack surface' documentation for details: https://docs.docker.com/go/attack-surface/ ================================================================================ [root@localhost ~]$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 633 100 633 0 0 1368 0 --:--:-- --:--:-- --:--:-- 1370 100 12.1M 100 12.1M 0 0 5721k 0 0:00:02 0:00:02 --:--:-- 9.8M [root@localhost ~]$ chmod +x /usr/local/bin/docker-compose [root@localhost ~]$ docker-compose -v docker-compose version 1.29.2, build 5becea4c
啟動 Docker 服務及設定
- 啟動 Docker:
service docker start
- 將 Docker 加入至開機服務:
chkconfig docker on
[root@localhost ~]$ service docker start Redirecting to /bin/systemctl start docker.service [root@localhost ~]$ service docker status Redirecting to /bin/systemctl status docker.service ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since 六 2021-09-11 12:25:36 CST; 13s ago Docs: https://docs.docker.com Main PID: 56863 (dockerd) Tasks: 8 Memory: 31.9M CGroup: /system.slice/docker.service └─56863 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/cont... 9月 11 12:25:36 82-nextcloud dockerd[56863]: time="2021-09-11T12:25:36.3401...c 9月 11 12:25:36 82-nextcloud dockerd[56863]: time="2021-09-11T12:25:36.3401...c 9月 11 12:25:36 82-nextcloud dockerd[56863]: time="2021-09-11T12:25:36.3639..." 9月 11 12:25:36 82-nextcloud dockerd[56863]: time="2021-09-11T12:25:36.6230..." 9月 11 12:25:36 82-nextcloud dockerd[56863]: time="2021-09-11T12:25:36.7032..." 9月 11 12:25:36 82-nextcloud dockerd[56863]: time="2021-09-11T12:25:36.7500..." 9月 11 12:25:36 82-nextcloud dockerd[56863]: time="2021-09-11T12:25:36.7643...8 9月 11 12:25:36 82-nextcloud dockerd[56863]: time="2021-09-11T12:25:36.7644..." 9月 11 12:25:36 82-nextcloud systemd[1]: Started Docker Application Contain.... 9月 11 12:25:36 82-nextcloud dockerd[56863]: time="2021-09-11T12:25:36.7765..." Hint: Some lines were ellipsized, use -l to show in full. [root@localhost ~]$ chkconfig docker on 注意:正在轉送請求至「systemctl enable docker.service」。 Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. [root@localhost ~]$ docker -v Docker version 20.10.8, build 3967b7d
關閉 selinux
- 手動執行關閉 selinux:
setenforce 0
- 修改 selinux config 檔:
vim /etc/selinux/config
[root@localhost ~]$ setenforce 0 [root@localhost ~]$ vim /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled :wq
使用 docker pull 下載 mysql & nextcloud
- 進行 images 下載
- 執行
docker pull mysql:latest
- 執行
docker pull nextcloud
[root@localhost ~]$ docker pull mysql:latest latest: Pulling from library/mysql a330b6cecb98: Pull complete 9c8f656c32b8: Pull complete 88e473c3f553: Pull complete 062463ea5d2f: Pull complete daf7e3bdf4b6: Pull complete 1839c0b7aac9: Pull complete cf0a0cfee6d0: Pull complete 1b42041bb11e: Pull complete 10459d86c7e6: Pull complete b7199599d5f9: Pull complete 1d6f51e17d45: Pull complete 50e0789bacad: Pull complete Digest: sha256:99e0989e7e3797cfbdb8d51a19d32c8d286dd8862794d01a547651a896bcf00c Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest [root@localhost ~]$ docker pull nextcloud Using default tag: latest latest: Pulling from library/nextcloud 99046ad9247f: Pull complete 3875fa64ab1e: Pull complete e9329a8f553a: Pull complete 9bb327f9b0a4: Pull complete 051b56f0e6a3: Pull complete da02d3111b48: Pull complete 98ca514d99e4: Pull complete a4ff74d025cd: Pull complete d094ddd610df: Pull complete 8adafae068ec: Pull complete 70fd73853886: Pull complete 23a25cfceae7: Pull complete df2efaa2c941: Pull complete a3057a184756: Pull complete 3d71491f2ea2: Pull complete 6164fe9a1ff1: Pull complete 5025772d3c9a: Pull complete 4e5ba9e839cf: Pull complete d6cfd3085738: Pull complete 4689d3b9389b: Pull complete Digest: sha256:99d94124b2024c9f7f38dc12144a92bc0d68d110bcfd374169ebb7e8df0adf8e Status: Downloaded newer image for nextcloud:latest docker.io/library/nextcloud:latest
使用 docker run 啟用 mysql
- 安裝 MySQL:
docker run -p 3306:3306 --name mysql --restart="always" -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mysql
- 建立 root 權限:
grant all PRIVILEGES on . to root@'%' WITH GRANT OPTION;
ALTER USER 'root'@'%' IDENTIFIED BY 'password
' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password
';
FLUSH PRIVILEGES; - 建立 nextcloud 資料庫:
Create database nextcloud;
自行定議密碼:password
[root@localhost ~]$ docker run -p 3306:3306 --name mysql --restart="always" -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mysql [root@localhost ~]$ docker exec -it mysql bash root@c7dac2091985:/# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.26 MySQL Community Server - GPL Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec) mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; Query OK, 0 rows affected (0.01 sec) mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> Create database nextcloud; Query OK, 1 row affected (0.01 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | nextcloud | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> exit Bye root@c7dac2091985:/# exit exit
使用 docker run 啟用 nextcloud
- 安裝 NextCloud:
docker run -d -v /root/nextcloud/html:/var/www/html -v /root/nextcloud/apps:/var/www/html/custom_apps -v /root/nextcloud/config:/var/www/html/config -v /root/nextcloud/nextcloud/data:/var/www/html/data -v /root/nextcloud/themes:/var/www/html/themes -p 80:80 --name nextcloud --restart="always" nextcloud
[root@localhost ~]$ docker run -d -v /root/nextcloud/html:/var/www/html -v /root/nextcloud/apps:/var/www/html/custom_apps -v /root/nextcloud/config:/var/www/html/config -v /root/nextcloud/nextcloud/data:/var/www/html/data -v /root/nextcloud/themes:/var/www/html/themes -p 80:80 --name nextcloud --restart="always" nextcloud 9b08026c104a2529001bc33e6d5dbd6a82c186ddf8fed465beb47215bc8c2cba [root@localhost ~]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9b08026c104a nextcloud "/entrypoint.sh apac…" 21 seconds ago Up 21 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nextcloud c7dac2091985 mysql "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
二、進行頁面 NextCloud install 流程
透過瀏覽器進入至安裝頁面:http://192.168.50.82 (你主機的 IP 或 Domain Name)
首次起用安裝頁面
進行管理者資料輸入,建立管理者帳號
輸入完成後,點擊「完成設定」
系統進行工具安裝
完成畫面
三、Domain Name 設定
在 /root/nextcloud/config/config.php
裡有個設定,需要將你的域名加入,不然會跳出不可接受的請求來源
[root@localhost ~]$ vim /root/nextcloud/config/config.php 'trusted_domains' => array ( 0 => '192.168.50.80', 1 => 'nextcloud.demo.cc', ),
在〈“NextCloud – Docker 安裝教學”〉中有 1 則留言
[…] NextCloud – Docker 安裝教學 儀表板 DashBoard 檔案功能 File 照片功能 Photo 線上播放影片 Video 圖片功能 Photo 圖片留言功能 Photo Message 活動 Activity 聊天功能 Talk 好友私聊 Talk 聊天室 Room 電子郵件 Email 連絡人 Content 連絡人 Content 行事曆 Calendar […]