Freeshell HTTP Proxy 支持个人域名 SSL 证书

在 freeshell 管理后台首先添加个人域名,如下图所示。

DeepinScreenshot20140628225948

然后点击域名旁边的 “Setup SSL”,进入下图所示的界面。上传 SSL key、有效的站点证书和证书签发者的中级证书,如果提示成功,就大功告成啦!

DeepinScreenshot20140628230024

如何得到有效的 SSL 证书呢?可以使用免费的 StartSSL,证书有效期一年,到期需重新申请。(证书申请教程传送门,请注意 StartSSL 提供的私钥是加密的,必须用 openssl rsa -in encrypted.key -out decrypted.key 解密后再上传)

Blog 支持绑定个人域名和 SSL 证书

要绑定您自己的域名,请您把域名 CNAME 解析到 p.blog.ustc.edu.cn。登录 blog 后台,在 “设置” => “常规” 中修改 “站点地址” 为您的域名,格式为 http(s)://example.com。

为达到最佳访问效果,避免 http 与 https 链接的不兼容问题,建议您申请一个有效的 SSL 证书并上传,就可以通过 https://example.com 安全访问您的站点了。可以使用免费的 StartSSL,证书有效期一年,到期需重新申请。(证书申请教程传送门,请注意 StartSSL 提供的私钥是加密的,必须用 openssl rsa -in encrypted.key -out decrypted.key 解密后再上传到 blog 后台)

DeepinScreenshot20140627102446

如果您在使用第三方域名或上传 SSL 证书时遇到问题,请联系 support (AT) blog.ustc.edu.cn。您可以随时把 “站点地址” 修改为与 “Wordpress 地址” 相同,也就是默认的状态。

如何排查 freeshell 能 ping 通但无法 SSH

使用 ssh -v 选项来连接 freeshell,如果出现如下所示的 Connection established,但没有出现 debug1: Remote protocol version 2.0, remote software version xxx 一行,就是本文所述的问题。

$ ssh -v servmon.6.freeshell.ustc.edu.cn
OpenSSH_6.6.1, OpenSSL 1.0.1h 5 Jun 2014
debug1: Reading configuration data /home/boj/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to servmon.6.freeshell.ustc.edu.cn [2001:da8:d800:71::987] port 22.
debug1: Connection established.
debug1: identity file /home/boj/.ssh/id_rsa type 1
debug1: identity file /home/boj/.ssh/id_rsa-cert type -1
debug1: identity file /home/boj/.ssh/id_dsa type -1
debug1: identity file /home/boj/.ssh/id_dsa-cert type -1
debug1: identity file /home/boj/.ssh/id_ecdsa type -1
debug1: identity file /home/boj/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/boj/.ssh/id_ed25519 type -1
debug1: identity file /home/boj/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1

先说解决方法:在 freeshell.ustc.edu.cn 控制面板里用 “Reboot” 功能重启。如果重启后仍然出现上述情况,请联系技术支持(support AT freeshell.ustc.edu.cn)。

原因可能是:

  • 内存不足,虚拟机内存达到限制或物理节点内存不足。
  • 进程数量达到限制(500 个)。
  • 磁盘已满,无法写入日志。请注意磁盘空间有 24 小时的宽限期,在宽限期内可以使用超过限制 2 G 的磁盘,如果宽限期内使用了超限的磁盘空间,宽限期过后磁盘就不能分配新空间了。遇到这种情况,重启是不管用的。

Gitlab升级至7.0

本次维护历时1小时15分钟,服务共中断49分钟。

Gitlab7.0放弃了对ruby-1.9.3的支持,最低版本为ruby-2.0.0。由于官方安装说明指出:使用rvm等自动工具安装ruby,可能导致ssh操作仓库异常,因此手动编译了ruby-2.0.0-p481。

在安装编译环境和ruby依赖时发现apt-get中许多软件包的依赖关系有问题,经过修复解决了一部分依赖问题,到目前为止仍然有部分包的依赖关系不正确。

由于重装了ruby-gem,因此需要重装Gitlab所需的所有gems

安装rubygem:mysql时,提示:

unable to convert “\xE0” from ASCII-8BIT to UTF-8 for lib/mysql2/mysql2.so, skipping

这是由于locale设置错误引起的

解决办法:

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

另外,为nginx配置增加了X-Forwarded-Forh和X-Frame-Options字段.

Gitlab官方升级教程存在缺陷,本次的升级脚本添加了service启动脚本的替换。

目前遗留问题:

  1. Gitlab给出了nginx的https配置模板,但是,我为当前配置添加X-Forwarded-Proto字段时报错“could not build the proxy_headers_hash, you should increase either proxy_headers_hash_max_size: 512 or proxy_headers_hash_bucket_size: 64”
  2. Gitlab的主配置文件config.yml过期,之前升级版本时都没有注意更新,导致最新版本的配置和当前配置相差较大,合并较困难。幸运的是,这暂时还没有引发问题。

7.0主要特性:

  • 受保护的分支不能被删除
  • 开发人员可以使用UI清除普通分支
  • 增强对第三方CI工具的支持
  • 通过向markdown文本拖动图片,即可将图片上传并插入到markdown中(赞)
  • 允许对huge push设置提醒
  • 支持LDAP过滤器
  • 移除wall功能
  • 增强对移动客户端的支持
  • 其他逻辑改进
  • 其他安全性改进
  • 其他UI改进

Freeshell IPv6 访问国外网站也不会被墙了

如题。从 freeshell 主动向国外 IPv6 地址发起的连接会走国外 VPS。可以在 freeshell 里执行 curl -6 googleblog.blogspot.com 来测试(需要安装 curl 工具),应当看到完整的 HTML 页面。而之前这个结果应当是 connection reset。至此,从 freeshell 通过 IPv4 和 IPv6 访问国外网站都不用担心被墙了。

从国外、国内任何地方访问 freeshell 的固定 IPv6 地址都不受影响。

Blog 允许自行升级语言包

杨博远 反映 blog 升级语言包时出错,这是由于所有 blog 的语言包链接到了公共的只读语言包,blog 没有权限自己升级语言包。现在已经把语言包为每个 blog 复制了一份,每个 blog 均可写,这样升级语言包就不会出错了。

Freeshell 修复 shell 命令转义问题

用户创建 freeshell 时,如果密码包含特殊字符 $,freeshell 会创建失败,这是由于 shell 命令转义的一处 bug,双引号内只记得对单双引号转义了,忘了对 $ 进行转义。

由于双引号转义较为麻烦,现在参数改用单引号,参数内只需要对单引号(’)进行转义。shell 中单引号的转义方法是把(’)替换成(’\”),即首先关闭引用,插入单引号(由于在引用区域之外,需要用 \ 转义),再打开引用,也就是一个字符变成了四个字符。

修复 shell 命令转义的 commit