Nextcloud是一款开源的自托管云存储解决方案,旨在提供安全、私密和可扩展的文件存储和共享服务。它的功能类似于Dropbox或Google Drive,但不同之处在于用户可以完全控制自己的数据,并在自己的服务器上运行Nextcloud,从而保护隐私和安全。
自托管:用户可以在自己的服务器或虚拟机上安装Nextcloud,这样可以完全控制数据和存储环境。
文件存储与共享:Nextcloud允许用户上传、下载、分享和同步文件,支持多种文件类型。
多用户支持:可以为不同用户设置权限,方便团队协作和文件管理。
丰富的应用生态:Nextcloud提供了大量的应用插件,可以扩展功能,例如日历、联系人、任务管理、在线文档编辑等。
安全性:支持端到端加密、SSL加密传输等多种安全措施,确保用户数据的安全。
跨平台:Nextcloud提供Web界面以及适用于Windows、macOS、Linux、Android和iOS的客户端,方便用户在不同设备上访问文件。
在本篇博客中,我们将逐步介绍如何在Ubuntu系统上安装和配置Nextcloud,这是一款功能强大的自托管云存储解决方案。我们将涵盖从系统更新到Apache、PHP、MariaDB及Nextcloud本身的安装和配置。
首先,我们需要确保系统是最新的,并安装Apache2作为我们的Web服务器。
bashsudo apt update sudo apt install apache2 -y sudo apt install software-properties-common -y
根据Nextcloud的官方文档,建议使用PHP 8.2及其所需的扩展,因此我们将安装PHP 8.2及相关的必要组件。
bashsudo add-apt-repository ppa:ondrej/php -y sudo apt update sudo apt install php8.2 libapache2-mod-php8.2 php8.2-gd php8.2-mysql php8.2-curl php8.2-mbstring php8.2-intl php8.2-gmp php8.2-bcmath php8.2-xml php8.2-imagick php8.2-zip -y
接下来,我们将安装MariaDB,根据Nextcloud的官方文档,我们将安装MariaDB 10.6来存储Nextcloud数据的数据库。
bashwget https://dlm.mariadb.com/3859034/MariaDB/mariadb-10.6.19/repo/ubuntu/mariadb-10.6.19-ubuntu-jammy-amd64-debs.tar
tar -xvf mariadb-10.6.19-ubuntu-jammy-amd64-debs.tar
cd mariadb-10.6.19-ubuntu-jammy-amd64-debs
sudo ./setup_repository
sudo apt update && sudo apt install mariadb-server -y
启动并启用MariaDB服务:
bashsudo systemctl start mariadb
sudo systemctl enable mariadb
我们需要为Nextcloud创建一个数据库和用户。
bashsudo mysql -u root -e "CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
sudo mysql -u root -e "CREATE USER 'anthony'@'localhost' IDENTIFIED BY 'nextcloud';"
sudo mysql -u root -e "GRANT ALL PRIVILEGES ON nextcloud.* TO 'anthony'@'localhost';"
sudo mysql -u root -e "FLUSH PRIVILEGES;"
现在我们来下载并安装Nextcloud。
bashcd ~
sudo apt install unzip -y
wget https://download.nextcloud.com/server/releases/latest.zip
wget https://download.nextcloud.com/server/releases/latest.zip.sha256
sha256sum -c latest.zip.sha256 < latest.zip
unzip latest.zip
sudo cp -r nextcloud /var/www
sudo chown -R www-data:www-data /var/www/nextcloud
我们需要为Nextcloud配置Apache虚拟主机。
bashcat <<EOL | sudo tee /etc/apache2/sites-available/nextcloud.conf
ServerName 192.168.124.128 # 服务器IP 或域名
<VirtualHost *:80>
ServerAdmin anthony@localhost
DocumentRoot /var/www/nextcloud
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin anthony@localhost
DocumentRoot /var/www/nextcloud
ErrorLog \${APACHE_LOG_DIR}/error.log
CustomLog \${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/cert.pem
SSLCertificateKeyFile /etc/ssl/cert-key.pem
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
</VirtualHost>
</IfModule>
EOL
禁用默认站点并启用Nextcloud站点:
bashsudo a2dissite 000-default.conf sudo a2dissite default-ssl.conf sudo a2ensite nextcloud.conf
启用必要的Apache模块:
bashsudo a2enmod rewrite headers env dir mime setenvif php8.2 ssl
为了确保Nextcloud的安全性,我们需要为它配置SSL证书。如果没有域名,我们可以使用mkcert
来生成本地证书。
bashsudo apt install libnss3-tools -y
wget https://dl.filippo.io/mkcert/latest?for=linux/amd64 -O mkcert
chmod +x mkcert
sudo mv mkcert /usr/local/bin/
mkcert --install
mkcert X.X.X.X localhost 127.0.0.1 ::1
X.X.X.X 替换成服务器IP
最后,将生成的证书移动到正确的位置:
bashsudo cp X.X.X.X-key.pem /etc/ssl/cert-key.pem
sudo cp X.X.X.X.pem /etc/ssl/cert.pem
重启Apache以应用更改:
bashsudo systemctl restart apache2
打开浏览器输入服务器IP或域名,用在MariaDB中创建的数据库及用户名登录并进行部署。
点击此处获取自动化部署Nextcloud。
本文作者:DYMripper
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!