系统: Ubuntu 22.04 LTS(安装教程请自行百度)
ip地址: 192.168.0.115
软件:NextCloud 25.0.3(看到文章的朋友,官方应该已经有新版本了)
软件下载地址:https://download.nextcloud.com/server/releases/latest.tar.bz2
官方部署链接:https://docs.nextcloud.com/server/25/admin_manual/installation/example_ubuntu.html
最近发现手机和电脑同步很麻烦,以前电脑之间用万由的u-nas好像不错,虽然手机客户端ufile还行,但是还是不方便,看了不少文章人家推荐用nextcloud,而且看了一下官方文档也比较全,为了自己方便就做个笔记,如果有需要的朋友也可以参考参考。
以下命令均在root用户下运行
1.安装相应的软件环境,按官方推荐数据库使用mariadb
apt-get update
#安装依赖组件
apt install -y mariadb-server php8.1 apache2 php8.1-mysql php8.1-zip \
php8.1-mbstring php8.1-gd php8.1-curl php8.1-xml php8.1-bz2 \
php8.1-intl php8.1-smbclient php8.1-gmp
2.为了相对安全使用https,因此要创建证书。
#创建https证书
CERTCA='/C=CN/ST=SH/L=SH/O=NextCloud/OU=NextCloud/CN=NextCloud/emailAddress=admin@NextCloud.com'
echo '创建 CA key'
openssl genrsa -out ca.key 2048
echo '创建 CSR'
openssl req -new -subj $CERTCA -days 36500 -key ca.key -out ca.csr
echo '创建 Self Signed certificate'
openssl x509 -req -days 36500 -sha256 -signkey ca.key -in ca.csr -out ca.crt
openssl x509 -text -noout -in ca.crt
echo '创建 private server key'
openssl genrsa -out server.key 2048
echo '创建 server csr'
openssl req -new -subj $CERTCA -days 36500 -key server.key -out server.csr
echo '创建 generate server certificate'
echo '[req]
req_extensions = v3_req
[v3_req]
1.2.3.4.5.6.7.8=ASN1:UTF8String:MyNextCloud'>server.ext
openssl x509 -req -in server.csr -days 36500 -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -extfile server.ext
网上说增加server.ext会使浏览器不显示不安全,我没有成功,也许哪里错了知道的朋友可以告诉我一下。
3.配置apache2使支持https
#复制刚才生成的证书到下面的目录,因为配置文件里这么写的
cp server.crt /etc/ssl/certs/
cp server.key /etc/ssl/private/
#开启apache的ssl
ln -sf /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf
ln -sf /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load
ln -sf /etc/apache2/mods-available/socache_shmcb.load /etc/apache2/mods-enabled/socache_shmcb.load
#创建nextcloud的apache配置文件
echo '<VirtualHost *:18080>
DocumentRoot /var/www/nextcloud/
ServerName localhost
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>' >/etc/apache2/sites-available/nextcloud.conf
#开启ssl端口,如果是默认443就不需要了,我这里是18080端口
echo '<IfModule ssl_module>
Listen 18080
</IfModule>' >>/etc/apache2/ports.conf
ln -sf /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf
4.解压文件到指定目录,并给于用户www-data,修改php的时区
#解压nextcloud
tar xf latest.tar.bz2
if [ -d /var/www/nextcloud ];then
mv /var/www/nextcloud /var/www/nextcloud-old-`date +%Y-%m-%d`
fi
mv nextcloud /var/www/
chown -R www-data:www-data /var/www/nextcloud/
#修改php时区
sed -i 's?;date.timezone =?date.timezone = Asia/Shanghai?g' /etc/php/8.1/apache2/php.ini
systemctl restart apache2
5.创建nextcloud的数据库
#mariadb
MYSQL_COMMAND="mysql -uroot -e"
#创建用户nextcloud,密码为1234NextCloud123
$MYSQL_COMMAND "CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY '1234NextCloud123';"
#创建数据库名为nextcloud的数据库
$MYSQL_COMMAND "CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
#授权用户nextcloud访问nextcloud数据库的权限
$MYSQL_COMMAND "GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';"
#刷新权限
$MYSQL_COMMAND "FLUSH PRIVILEGES;"
到此基本配置完成了
6.安装nextcloud,用浏览器打开https://192.168.0.115:18080
到这里nextcloud就完成安装了。
如果不喜欢折腾的用户,官方也提供docker等版本的下载。
在电脑上和手机上装上nextcloud的app就可以用了,电脑端会时时同步自己的文件,因此找一个空间大一点的分区。
附上app下载的地址:
https://nextcloud.com/install/#install-clients