Cloudflare CDN

因为各种原因要用到CDN,所以记下来步骤。

CDN用的是https://cloudflare.com,毕竟是免费的。注册一下,然后按照指示会自动扫描域名的dns记录,如果要让cloudflare作CDN就要把云的颜色按成橙色。然后按照提示,去域名提供商的管理界面把dns服务器改成cloudflare的。

也需要配置SSL,在Crypto里调整,把第一条改成full(strict),因为服务器已经有了Lets的证书。下面的HSTS之类的开关看情况开。

最后就是等了,等到cloudflare接管dns和ssl证书签完就可以了。再访问网站,所有的流量都会经过cloudflare的服务器了。

安全当然是安全了一点,但是效果就是网站的速度变慢了,毕竟cloudflare的服务器在国外。

nextcloud-snap转成from-source的nextcloud

参考:
* Migrating from nextcloud snap to Nextcloud server
* 每天一个linux命令(60):scp命令
* Setup NextCloud on Ubuntu 18.04 LTS with Apache2, MariaDB and PHP 7.1 Support

前提

一台装了nexcloud-snap的服务器A;一台有足够空间装下前者保存的所有文档的服务器B。

导出备份

导出数据库

在A上执行

nextcloud.mysqldump > my-old-nextcloud.sql

导出数据库。然后scp把这个文件发到B。

备份文件

nextcloud-snap的文件在

/var/snap/nextcloud/common/nextcloud/data/

里,所以用scp把这个文件夹传输到B。scp的语法:

scp -r local_folder remote_username@remote_ip:remote_folder  

装nextcloud

环境准备

重装A的系统,用lnmp一键包装lamp,数据库用MariaDB,PHP选7以上。然后lnmp vhost add添加原来的域名,但是不新建数据库。

接下来创建nextcloud用的数据库:

mysql -u root -p
CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

然后从B把数据库备份scp回来,并且导入:

mysql -u root -p nextcloud < my-old-nextcloud.sql

部署nextcloud

nextcloud的最新release在这里看,一般来说下载链接应该是latest.zip。喜欢在哪个目录保存这个包没所谓,wget下来:

wget https://download.nextcloud.com/server/releases/latest.zip

unzip之后把nextcloud目录里的所有东西搬到/home/wwwroot/域名里面,记得把隐藏文件比如.htaccess带上。然后chown改一下wwwroot的所有者信息。

恢复备份

从B那里把备份的文件夹scp到网站域名下面,和nextcloud其他的文件同级,然后chown恢复一下所有者信息。

然后就可以输入网站域名打开了。一上来可能会让你新建一个管理员帐号,同时下面可以选用什么数据库,记得选MariaDB,输入对应的帐号密码和nextcloud数据库名字。管理员帐号的名字不能和迁移之前的那个一样。

因为之前导入了数据库的备份,所以可能会什么都输好了但是爆炸了,这样的话就要重新设置一次nextclouduser的密码了:

select host,user,password from mysql.user where user='nextclouduser'

set password for 'nextclouduser'@'localhost'=password('密码');

flush privileges;
exit;

就没问题了。

后遗症

  • 之前登录的所有客户端都要重新登录
  • nextcloud-snap上的app数据不会丢失但是需要从官方库重新安装一次
  • iOS、Android的客户端会疯狂尝试登录,然后被服务器屏蔽IP 30秒,所以先退出客户端的登录,然后等半分钟再重新授权就好了。

NTP时间同步

记录一下如何配置archlinux上的实践同步。

用到三个网站:systemd-timesyncd (简体中文)Asia — asia.pool.ntp.orgTime.is

首先根据systemd-timesyncd,

systemctl enable systemd-timesyncd.service

然后修改/etc/systemd/timesyncd.conf,找到#NTP=,去掉注释并添加Asia — asia.pool.ntp.org里的NTP服务器:

/etc/systemd/timesyncd.conf

NTP=0.asia.pool.ntp.org 1.asia.pool.ntp.org 2.asia.pool.ntp.org 3.asia.pool.ntp.org

最后用root权限完成启动和同步:

sudo systemctl start systemd-timesyncd
sudo timedatectl set-ntp true

查看同步结果:

timedatectl status

同步之后可以在Time.is上面对表。