云存储是一种很好的保护文件安全的方法,以防万一发生某些事情并且您的计算机丢失或损坏。 它可以帮助您在旅途中或下班时访问文件,并可以使所有设备之间的所有信息保持同步。
但是,云存储具有一个主要缺点。 您必须信任所有公司的个人文件。 如果他们被黑了怎么办? 他们真的是所有值得信赖的人吗?还是当您不看书的时候,他们在经历您的事情? 确实不可能确切知道。
还有另一种选择。 您可以使用Nextcloud托管自己的云存储。 Nextcloud是一种开源云存储解决方案,可让您成为自己的云存储公司。 它具有易于使用,简洁的界面以及适用于所有设备的随附应用程序,因此您无需处理一些被黑客入侵的垃圾邮件。
本指南将重点放在将Nextcloud托管在VPS(虚拟专用服务器)上,但您也可以在家庭网络上本地运行它。 除非您设置了端口转发或正在运行VPN,否则不要指望从外部访问它。 其中一些步骤可能会有所不同,您无需购买域名或设置SSL证书。
选择一个主机
快速链接
- 选择一个主机
- 安装您需要的
- 设置防火墙
- 配置SSH
- SSH密钥
- 视窗
- Mac和Linux
- 禁止root和密码
- SSH密钥
- 配置数据库
- 配置PHP
- 获取Nextcloud
- 创建SSL证书
- 配置Nginx
- 启动Nextcloud
假设您使用的是真正的云解决方案,并且希望通过Web访问文件,则需要设置一个VPS来承载Nextcloud。 有很多不错的选择,因此请选择最适合您的选择。 如果您还没有主机,请查看Linode , DigitalOcean和Gandi 。
本指南将使用Debian 9“ Stretch”作为服务器操作系统。 Debian在默认情况下超级稳定且相当安全。 大多数托管平台也很好地支持它。 如果您对Ubuntu较为满意,则大多数功能也将直接应用于Ubuntu,因为Ubuntu基于Debian。
您还需要获取服务器的域名。 由于这将不会是公共站点,因此您可以根据自己的喜好进行设置。 每个主机和域名提供商的购买和链接域名的过程都不同,因此请务必检查您选择的服务所提供的文档。
这里的所有内容都将从Linux命令行远程处理。 因此,如果您使用的是Mac或Linux,则只需打开一个终端并使用SSH访问您的VPS。 如果您使用的是Windows,请使用PuTTY这样的SSH客户端。
安装您需要的
这个难题有很多方面。 您不妨现在就将它们全部拿走,以便从这里开始拥有所需的内容。 默认情况下,Debian通常没有安装sudo,因此请先抓住它并进行设置。
$ su -c'apt install sudo'
输入您的root密码,将安装Sudo。 然后,您需要将用户添加到sudo组。
$ su -c'gpasswd -a用户名sudo'
现在,您可以使用sudo了。 如果无法立即使用,则可能需要重新登录。 从现在开始,您将改为使用sudo,特别是因为出于安全目的将禁用root登录。
现在,从Debian的存储库中获取所有内容。
$ sudo apt install ufw mariadb-server nginx certbot php php-mysql php-fpm php-cli php-json php-curl php-imap php-gd php-xml php-zip php-intl php-mcrypt php-imagick php-mbstring
设置防火墙
您的服务器在Internet上。 没有办法解决,这意味着您将需要与攻击者打交道。 设置简单的防火墙将有助于防止许多潜在的威胁。
您可以使用UFW(非复杂防火墙)来保护系统,而不必直接使用iptables。 它具有更简单的语法,并且使用起来更容易。
首先禁用防火墙中的所有内容。 这将设置默认策略为拒绝与所有服务和端口的连接,以确保攻击者无法在某些被遗忘的端口上进行连接。
$ sudo ufw默认拒绝传入
$ sudo ufw默认拒绝转发$ sudo ufw默认拒绝转发
接下来,您可以告诉ufw您希望其允许的服务。 在这种情况下,您只需要SSH和Web访问。 您还将要启用NTP和DNS,以便您的服务器可以获取更新并设置其时钟。
$ sudo ufw允许在ssh中$ sudo ufw允许在ssh中$ sudo ufw允许在$ http中ufw允许输入53 $ sudo ufw允许输入53 $ sudo ufw允许输入67 $ sudo ufw允许输入67
您可以立即启动防火墙。 它将向您发出有关破坏SSH的警告,但是您已经允许SSH,因此可以了。
配置SSH
SSH是Linux服务器上最常见的攻击服务之一。 它是服务器上其他所有内容的网关,通常仅受密码保护。 因此,确保攻击者无法通过SSH轻松访问您的服务器很重要。
SSH密钥
首先,您需要设置一个比密码(SSH密钥)更安全的替代方法。 Windows上的过程与Mac和Linux上的过程不同,因此请按照适合您台式机的说明进行操作。
视窗
与Windows一样,您需要另一个程序来完成此简单任务。 PuTTYgen是PuTTY的RSA密钥生成器。 可从PuTTY下载页面下载 。 下载并运行。
在打开的窗口中,命名您的密钥并为其创建密码。 这是您用来登录服务器的密码。 在底部,选择SSH-2 RSA并设置至少2048位的密钥大小。 4096更好,但是2048会更快。 然后,生成您的密钥,并保存公共密钥和私有密钥。 最后,复制显示在窗口顶部的公共密钥。
使用PuTTY连接到您的服务器。 在〜/ .ssh / authorized_keys中打开一个文件,然后将密钥粘贴到其中。
返回PuTTY,在侧面菜单上找到SSH。 然后,打开“身份验证”。在私钥的字段中,浏览到刚刚保存的私钥的位置。 为您的服务器设置PuTTY中的所有内容后,保存会话。 进行测试,以确保在继续操作之前与钥匙连接。
Mac和Linux
Mac和Linux用户在这里要容易得多。 如果您还没有SSH密钥,请先生成它。 您可以选择为密钥创建密码。 它是可选的,因此您可以致电。
$ ssh-keygen -b 4096 -t rsa
现在,只需将密钥发送到服务器即可。 替换您的用户名和服务器的IP。
$ ssh-copy-id -i〜/ .ssh / id_rsa.pub
而已!
禁止root和密码
设置密钥后,可以禁用SSH的密码。 如果您设置了带有密码的密钥,请不要担心。 那是不同的,这根本不会影响它。 在/ etc / ssh / sshd_config中打开SSH配置文件。
$ sudo nano / etc / ssh / sshd_config
找到显示以下内容的行:
#PermitRootLogin禁止密码
更改为:
许可RootLogin no
接下来,找到两行:
#PasswordAuthentication是#PermitEmptyPasswords否
将它们更改为:
密码验证否PermitEmptyPasswords否
最后,找到:
UsePAM是
做了:
UsePAM否
保存文件,然后关闭它。 然后,重新启动SSH。 这可能会使您开始,因此请重新连接。
配置数据库
接下来,您需要配置数据库。 这里确实涉及的并不多,所以不必担心太多。 您只需要设置一个用户并清空数据库,供Nextcloud访问。
实际上,有一个方便的脚本可以为您设置和保护MariaDB。 首先运行它。
$ sudo mysql_secure_installation
默认的root密码为空,因此在询问时输入“ Enter”。 然后,它将要求您设置一个root密码。 去做。 对随后的每个问题回答“是”。
您可以使用刚刚设置的root密码登录数据库。
$ sudo mysql -u root -p
提示符将更改为MariaDB 1。 这是用于管理数据库服务器的控制台。 首先创建一个新的数据库。 大写在这里很重要。
创建数据库nextcloud;
接下来,为该数据库创建一个用户。
创建由“ PasswordForUser”标识的用户`nextcloud` @`localhost`;
然后,授予该用户使用数据库的权限。
将所有内容都授予nextcloud。*至`nextcloud` @`localhost`;
而已! 您现在可以退出数据库服务器。
配置PHP
Nextcloud用PHP编写。 您已经安装了Debian Stretch上可用的最新版本的PHP,以及Nextcloud需要正确运行的PHP扩展。 您仍然需要对PHP配置进行一些调整,以使其与Nginx一起更轻松地工作。
它实际上仅需要一些基本的安全性调整。 这些并不是什么大问题,但是它们将有助于提高服务器的安全性。
使用sudo和您喜欢的文本编辑器打开/etc/php/7.0/fpm/php.ini。
该文件很大,因此请使用编辑器的搜索功能来浏览。 如果您一直在使用Nano,则为Ctrl + W。 您需要找到的第一个选项是disable_functions。 最后添加add phpinfo,system,mail,exec。
然后,找到sql.safe_mode并将其打开。 接下来,将allow_url_fopen设置为off。 在文件末尾,添加以下行,保存并关闭它。
获取Nextcloud
Nextcloud尚未作为Debian的软件包提供,没关系。 您真的不需要它。 它与其他预构建的PHP Web应用程序(如WordPress)非常相似,并且包含在压缩的存档中,您可以提取要安装Nextcloud的位置。
截至目前,最新的稳定版本是Nextcloud,在阅读本文时,请仔细检查最新的版本。 该指南将参考12,但请使用最新的稳定版本。
转到要下载Nextcloud存档的目录。 然后,更改为/ var / www以将其提取。
$ cd〜/ Downloads $ wget https://download.nextcloud.com/server/releases/nextcloud-12.0.3.tar.bz2 $ cd / var / www $ sudo tar xjpf〜/ Downloads / nextcloud-12.0.3。 tar.bz2
如果将来要阅读此内容,可以在Nextcloud的服务器安装页面上找到下载链接。
最后,将您的Nextcloud安装的所有权更改为www-data。
$ sudo chown -R www-data:www-data / var / www / nextcloud
创建SSL证书
感谢Certbot,创建SSL证书非常容易。 Certbot将自动为您生成SSL证书,并将其放置在您要为其创建证书的站点的Web根目录中。 您只需要运行一个命令。
$ sudo certbot certonly --webroot -w / var / www / nextcloud -d your-domain.com -d www.your-domain.com
由于这是您第一次运行Certbot,它将要求您提供电子邮件地址。 当您的证书即将到期时,它将使用该地址来警告您。 您也可以通过一个命令轻松地更新它们。
配置Nginx
Nginx是轻量级但功能强大的Web服务器。 它将为您用来访问Nextcloud的界面提供服务。 有几个与Nginx相关的配置文件。 第一个是/etc/nginx/nginx.conf中的主要配置。 这是主要的配置文件,但具有可靠的默认值。 如果您知道自己在做什么,则可以使用它,但是也可以不理会它,也可以。
下一个配置更长,更复杂。 幸运的是,您无需全部编写。 Nextcloud开发人员已经做到了。 您只需要修改它。 配置文件位于Nextcloud的站点上 。 拿一个作为Nginx的webroot。 在/ etc / nginx / sites-available / nextcloud中创建一个新文件,并将其粘贴。
拥有文件后,您需要进行一些简单的更改。 首先,找到上游块并将其更改为如下所示:
上游php处理程序{服务器Unix:/run/php/php7.0-fpm.sock; }
然后,找到显示cloud.example.com的任何地方,并将其更改为您的域名。
您需要做的最后一件事是将Nginx指向您的SSL证书。 更改行:
ssl_certificate /etc/ssl/nginx/cloud.example.com.crt; ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key;
至:
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
而已! 接下来,您需要链接它,以便Nginx可以找到它。
$ cd / etc / nginx / sites-enabled $ sudo ln -s / etc / nginx / sites-available / nextcoud nextcloud
删除现有的默认设置。
$ sudo rm默认
重新启动PHP和Nginx,您将可以访问Nextcloud!
$ sudo systemctl重新启动php7.0-fpm $ sudo systemctl重新启动nginx
启动Nextcloud
打开您的网络浏览器并导航到您的域名。 您将会看到Nextcloud设置屏幕。 创建一个自己的管理员帐户,然后输入您创建的数据库帐户的信息。
Nextcloud将花费几分钟来进行自我配置和安装。 完成后,您将进入新的Nextcloud仪表板。 从那里,您可以创建新用户,以允许您信任的人信任您的新云存储。 您也可以立即开始上传文件。
而已! 您现在拥有自己的私有云!