背景交代
之前給大家寫了一篇 用 ownCloud 搭建個人私有云 的文章,直到現在網盤紛紛停止服務已經有一段時間了,現在 ownCloud 的團隊也棄坑了,全都跳槽去開發一個新的網盤”NextCloud“。
ownCloud 的版本號一直維持在 V9.X.X ,然而 Nextcloud 作為一個新生兒,初始的版本就是 V10 。這說明 Nextcloud 就是 ownCloud 的後續版本。目前 nextcloud 的最新版本是‘ 12.0.0 “。這個版本 BUG 稍微有點多,我本想等 12 穩定了再發教程,但是有人催我趕緊放教程,所以沒辦了,我就今天把教程發出來吧。
有人抱怨我上篇文章寫的不明確,有很多東西都沒有交代清楚,那我這篇文章盡量詳細吧。如果還有哪寫的不清楚,歡迎大家給提醒,我會盡量去改。那個,還有,如果有人希望也使用我的網盤,可以聯繫我,私人 QQ 269015385。
在這裡吐個糟,我下面的教程是手動安裝的教程。現在官網有一個一鍵安裝,沒錯,只需要一個命令就行了,命令如下:
須藤 卡 安裝 nextcloud
需要準備的清單
- X86架構主機:
或者是虛擬機也行,配置不用太高,推薦雙核CPU、1GB以上內存,
我自己用的主機是4核i3 6100,8GB DDR4內存; - 域名:
推薦購買萬網的域名,因為後面有一個章節會介紹到如果設置動態域名解析(DDNS); - 硬盤:
推薦單獨準備一個硬盤用來存放數據,即使系統出現故障,你的數據也不會受到影響; - RAID卡:
如果可以使用 RAID 卡那就更好了,我自己使用的是 LSI 9266-4I,上面插了4個2TB硬盤,組 raid5。
操作系統
Ubuntu的服務器 16.04 64位
PS:有人管我要centos 的教程,我個人比較習慣用ubuntu ,其實也就是命令不一樣而已。
主要軟件
的Apache2
PHP7
Mysql的 5.7
工具清單
- VIM(一個 linux 的文本工具)
- Openssh-server(linux上的遠程ssh服務,我比較喜歡用xshell遠程上去配置)
- Filezilla(一個可以用過ssh管理主機文件的軟件)
- unzip(解壓東西用的,當然你可以用windows解壓好,上傳到linux)
操作用戶
root
二、預配置
安裝系統之前,我先對系統配置一下,以適應我的使用習慣。
- 更新
易於 更新
- 安裝 vim
易於 安裝 VIM
- 修改網卡名稱為 eth0(選)
1 2 3 4 5 6 7 8 9 |
vim /etc/default/grub //修改以下内容 GRUB_CMDLINE_LINUX=”net.ifnames=0 biosdevname=0” sudo grub-mkconfig -o /boot/grub/grub.cfg init 6 |
PS:這是我個人習慣,你也可以不改,設置靜態也可以通過DHCP綁定一個,都行,看你習慣。
- 設置靜態IP地址(選)
刪除原文件 RM - - [R /等等/網絡/接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
vim /etc/network/interfaces //写入以下内容 source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.88.250 netmask 255.255.255.0 gateway 192.168.88.1 dns-nameservers 114.114.114.114 init 6 |
PS:設置方法有很多種,可以自行搜索
- 配置ssh服務端(選)
1 |
apt install openssh-server |
1 2 3 4 5 |
vim /etc/ssh/sshd_config //修改以下内容 PermitRootLogin yes |
PS:這個是通過遠程登錄到linux服務器ssh服務端,當然你也可以用真機的終端配置。
- 安裝解壓軟件
1 |
apt install unzip |
三、安裝Apache2
首先先登錄root賬戶
1 |
sudo su |
- 安裝環境
1 2 3 4 5 6 7 |
apt update apt-get install apache2 libapache2-mod-php7.0 apt-get install php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring apt-get install php7.0-intl php7.0-mcrypt php-imagick php7.0-xml php7.0-zip |
- 安裝NextCloud
https://nextcloud.com/install/#instructions-server
到這個頁面查找當前的下載地址,下載NextCloud到root工作目錄
1 2 3 |
cd wget https://download.nextcloud.com/server/releases/nextcloud-12.0.0.zip |
解壓文件
1 |
unzip nextcloud-11.0.1.zip |
複製到 Apache2 根目錄
1 |
cp -rv nextcloud /var/www/ |
- 配置的Apache2
創建子目錄配置文件
1 |
vim /etc/apache2/sites-available/nextcloud.conf |
寫入以下內容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Alias /nextcloud "/var/www/nextcloud/" <Directory /var/www/nextcloud/> Options +FollowSymlinks AllowOverride All Satisfy Any <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud </Directory> |
鏈接子目錄配置文件
1 |
ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf |
更改網站默認目錄
1 |
vim /etc/apache2/sites-available/000-default.conf |
修改以下內容
1 |
DocumentRoot /var/www/nextcloud |
添加模塊
1 2 3 4 5 6 7 8 9 |
a2enmod rewrite a2enmod headers a2enmod env a2enmod dir a2enmod mime |
配置根目錄權限
1 |
chown -R www-data:www-data /var/www/nextcloud/ |
創建詳細配置腳本
1 |
vim script |
寫入以下內容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
#!/bin/bash ocpath='/var/www/nextcloud' htuser='www-data' htgroup='www-data' rootuser='root' printf "Creating possible missing Directories\n" mkdir -p $ocpath/data mkdir -p $ocpath/updater printf "chmod Files and Directories\n" find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640 find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750 printf "chown Directories\n" chown -R ${rootuser}:${htgroup} ${ocpath}/ chown -R ${htuser}:${htgroup} ${ocpath}/apps/ chown -R ${htuser}:${htgroup} ${ocpath}/config/ chown -R ${htuser}:${htgroup} ${ocpath}/data/ chown -R ${htuser}:${htgroup} ${ocpath}/themes/ chown -R ${htuser}:${htgroup} ${ocpath}/updater/ chmod +x ${ocpath}/occ printf "chmod/chown .htaccess\n" if [ -f ${ocpath}/.htaccess ] then chmod 0644 ${ocpath}/.htaccess chown ${rootuser}:${htgroup} ${ocpath}/.htaccess fi if [ -f ${ocpath}/data/.htaccess ] then chmod 0644 ${ocpath}/data/.htaccess chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess fi |
運行腳本
1 2 3 |
chmod +x script ./script |
重啟服務
1 |
service apache2 restart |
四、安裝數據庫
- 安裝MySQL
1 |
apt-get install mysql-server mysql-client |
PS:設置密碼為空就行,下面會去設置密碼
- 初始化安全配置
1 |
mysql_secure_installation |
執行之後會進行如下操作
- 為root用戶設置密碼
- 刪除匿名賬號
- 取消root用戶遠程登錄
- 刪除test庫和對test庫的訪問權限
- 刷新授權表使修改生效
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
[root@server1 ~]# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we'll need the current password for the root user. If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none):<–初次运行直接回车 OK, successfully used password, moving on… Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation. Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车 New password: <– 设置root用户的密码 Re-enter new password: <– 再输入一次你设置的密码 Password updated successfully! Reloading privilege tables.. … Success! By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] <– 是否删除匿名用户,生产环境建议删除,所以直接回车 … Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止 … Success! By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] <– 是否删除test数据库,直接回车 - Dropping test database… … Success! - Removing privileges on test database… … Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车 … Success! Cleaning up… All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL! |
- 設置遠程訪問
解除綁定IP地址
1 |
vim /etc/mysql/my.cnf |
找到 '結合地址127.0.0.1 =' ,刪去這一行。
如果沒有找到這行代碼,那就:
1 |
vim /etc/mysql/mysql.conf.d/mysqld.cnf |
找到 '結合地址127.0.0.1 =' ,刪去這一行。
1 |
/etc/init.d/mysql restart |
授權用戶遠程連接
先進入mysql client
1 |
mysql -u root -p |
輸入 root 用戶的密碼
把 password 替換成 root 用戶的密碼
1 2 3 |
grant all privileges on *.* to root@"%" identified by "password" with grant option; flush privileges; |
- 創建數據庫
1 2 3 4 5 |
mysql -u root -p create database nextcloud; quit; |
PS:創建一個數據庫,名稱是nextcloud,後面會 用到
- 數據庫備份(選)
1 |
mysqldump -u 用户名 -p 数据库名 > 导出的文件名 |
例子: mysqldump的 -u dbadmin -p nextcloud> /是/database_bak.SQL;
PS:這個不是安裝的必須步驟,這個是以後你想對數據庫備份用的,下同
- 數據庫還原(選)
1 2 3 4 5 6 7 |
mysql -u dbadmin -p use nextcloud; set names utf8; #这里的字符集根你的将要导入的数据库的字符集一致。 source /var/database_bak.sql; |
PS:這個不是安裝的必須步驟
五、初始化 NextCloud
- 完成初始化
在瀏覽器輸入
- 設置管理員賬戶
在第一行設置管理員的帳號
在第二行設置管理員的密碼
- 存儲和數據庫設置
Data folder 設置網盤所有文件保存的位置,默認就好,後面會有更改的文章;
在下面依次輸入:
- 數據庫用戶名(root)
- 數據庫密碼(你剛才設置的)
- 數據庫名稱(nextcloud,剛才寫的是這個,除非你改了)
- 數據庫地址(數據庫的IP,如果是本機,可以寫127.0.0.1,也可以寫localhost)
存儲和數據庫設置
點擊完成,稍等2分鐘
六、修改存儲路徑(選)
- 停止web服務
1 |
service apache2 stop |
- 修改配置文件
1 |
vim /var/www/nextcloud/config/config.php |
找到 DataDirectory目錄 項,把後面的 '/無功/網絡/ nextcloud /數據“ 修改為你想要設置的路徑,例子:
1 |
'/var/data/' |
- 轉移數據
將 /是/萬維網/nextcloud/數據 目錄下的所有文件移動到新的 /是/數據/ 目錄下。
- 修改權限
修改 /是/數據/ 目錄所述的組及用戶與原 /是/萬維網/nextcloud/數據 目錄相同,例如所述組和用戶都修改為 萬維網 。
1 2 3 |
chown -R www-data:www-data /var/data chmod 755 data |
如果遇到“HTTP ERROR CODE 500”說明是chmod的問題
- 啟動web服務
1 |
service apache2 start |
七、修改apache端口(選)
- 編輯apache2的配置文件
1 2 3 |
vim /etc/apache2/sites-available/000-default.conf 把<VirtualHost *:80>改成<VirtualHost *:88> |
- 編輯apache2的端口配置文件
1 2 3 |
vim /etc/apache2/ports.conf 把Listen 80改成Listen 88 |
- 重啟apache服務
1 |
service apache2 restart |
八、使用HTTPS加密我的流量
- 安裝簽名工具
1 2 3 4 5 |
apt install git git clone https://github.com/Neilpang/acme.sh.git cd ./acme.sh ./acme.sh --install |
- 生成證書
因為現在國家通訊部的規定,運營商把所有的80端口都ban掉了。所以咱們申請證書不能使用正常的80端口進行申請證書,只能通過DNS解析的方法得到證書。
./頂點.sh --問題 --DNS -ð 你的域名.同
然後得到這張圖,你需要去你的域名運營商的控制面板裡,給你的域名加上你的二級域名,如果沒有二級域名,那就直接添加一個txt類型的記錄,主機記錄填寫Domain裡的值,然後把TXT value裡的值寫到記錄值裡。
例圖如下:
- 申請證書
1 |
./acme.sh --renew -d 你的域名.com |
成功之後會出現這樣的提示
- 安裝證書
然後現在咱們去配置把證書放到網站存放證書的文件夾,並把名字更正成它需要的名字
首先要看看存放證書的文件夾在什麼地方,然後把證書複製過去
1 |
vim /etc/apache2/sites-available/default-ssl.conf |
找到這2行
1 2 3 |
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key |
然後把證書和私鑰cp進去
1 2 3 |
cp /root/.acme.sh/pan.********ed.me/pan.********ed.me.cer /etc/ssl/certs/ssl-cert-snakeoil.pem cp /root/.acme.sh/pan.********ed.me/pan.********ed.me.key /etc/ssl/private/ssl-cert-snakeoil.key |
- 安裝openssl
1 |
apt install openssl |
- 開啟SSL模塊
1 |
a2enmod ssl |
- 修改https的默認路徑
1 |
vim /etc/apache2/sites-available/default-ssl.conf |
改成下面值的
1 |
DocumentRoot /var/www/nextcloud |
- 保存
按ESC
:WQ
回車
啟用https
上文安裝完後,會在 /等等/的Apache2/網站-可用的/ 目錄下生成一個缺省的 默認-SSL 文件。缺省的網頁目錄仍然是 /是/萬維網/ 。我們可以創建一個鏈接到 現場-啟用 目錄。
1 |
ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf |
重啟apache服務:
1 |
service apache2 restart |
九、萬網的動態域名解析
- 安裝 python
1 2 3 4 5 |
apt-get update apt-get install python-pip pip install requests |
- 下載萬網DDNS客戶端
1 |
git clone https://github.com/rfancn/aliyun-ddns-client.git |
- 複製路徑
1 |
mv ./aliyun-ddns-client /opt/ |
- 修改配置文件
1 2 3 |
mv ddns.conf.example ddns.conf vim ddns.conf |
配置文件內容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
[DEFAULT] # access id obtains from aliyun access_id=xxxxxxxxx【填写Access Key ID】 # access key obtains from aliyun access_key=xxxxxxxxxxx【填写Access Key Secret】 # it is not used at this moment, you can just ignore it interval=600 # turn on debug mode or not debug=true [DomainRecord1] # domain name, like google.com domain=iioog.com【填写根域名】 # subdomain name, like www, blog, bbs, *, @, ... sub_domain=pan【填写子域名】 # resolve type, 'A', 'AAAA'..., currently it only supports 'A' type=A |
- 執行一次
1 |
python ddns.py |
- 設置週期執行
1 2 3 |
crontab -e */5 * * * * cd /opt/aliyun-ddns-client && /usr/bin/python ddns.py |
本文由 落格博客 原創撰寫:落格博客 » 用 NextCloud 搭建個人私有云
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/2750.html
我在這裡學到了一些恰到好處的東西. 絕對值得重新訪問書籤. 我想知道您為創建這些宏偉的信息網站之一付出了多少努力.
多謝博主的教程,詳實明白,已經照著操作好,還有小問題是ssl證書三個月到期,傾角該如何自動申請證書並完成證書複製安裝呢
如果沒有公網IP的話動態域名解析是不是也沒法用///
是的,必須要有公網IP,如果你沒有,那麼就致電運營商,說你要安裝網絡攝像頭什麼的,他們會給的(也可能要加錢)
這頁面佈局是wordpress的模板,同款模板留個爪
6,這是最新款主題 2019
巧了,我也是同樣的主題。
搜索引擎過來的,剛剛搭建完nextcloud,碰到了不同用戶間無法共享文件的問題。現在的安裝方法(15.0)已經比一年多前簡化好多了
請問博主,關於SSL證書在github上寫的可以自動更新(每60天自動註冊一次),但是Godaddy的TXT記錄是手動添加的,那就是每次只能三個月內再次註冊SSL添加TXT了嗎?有沒有什麼方法自動來更新SSL?
博主,數據庫地址改了,怎麼重新設置nextCloud數據庫的地址。我的是mysql
請問沒有域名的證書怎麼弄呢?
https://www.logcg.com/archives/1709.html
Collabora Online 能和 nextcloud 安裝在同一台上面嗎?還是一定要單獨一台用docker方式運行。
可以在一台服務器上,你可以參考這個文章:
Nextcloud+Collabora Office文檔在線協作
這個教程看過了,到了要openssl 證書這裡不知道要怎麼弄了,不能用自己生成的證書麼
買個域名,去申請一個證書就行了。自己的證書我沒試過
博主知道要怎麼上離線下載嗎?
知道,有空給我寫一個教程吧,最近太忙了