Synology DS418 Paly安装Docker

去年入手了DS418 Play,一直没时间弄,春节期间正好搞一下,把Docker功能开起来。

1、DS418 Play在应用商店是没有Docker,但可以用DS418或DS918的安装文件
到官网,下载得到Docker-x64-18.09.0-0506.spk。

https://www.synology.cn/zh-cn/support/download/DS918+#packages

2、通过管理软件,网页上传安装spk文件包

3、安装后,就可以在应用界面看到docker了

4、如果网络比较好,就可以直接在应用界面开启docker

5、我这边网络比较差,所以要下载镜像后,再上传到DS418 Play
5.1、开启DS418 Play的ssh功能
5.2、找一台网速好的机器

#拉取镜像
sudo docker pull gitlab/gitlab-ce
#导出镜像
sudo docker save -o gitlab-ce.img gitlab/gitlab-ce

5.3、把镜像拷贝到DS418 Play
5.4、SSH到DS418 Play,导入镜像

#SSH登录
ssh DS418PlayIP
#导出镜像
sudo docker load -i ~/PATH_TO_IMG/gitlab-ce.img

6、创建挂载路径

mkdir /volume2/gitlab/etc
mkdir /volume2/gitlab/log
mkdir /volume2/gitlab/data

7、创建容器

sudo docker run \
--detach \
--publish 9443:443 \
--publish 9080:80 \
--name gitlab \
--restart unless-stopped \
-v /volume2/gitlab/etc:/etc/gitlab \
-v /volume2/gitlab/log:/var/log/gitlab \
-v /volume2/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

8、修改配置文件

vi /mnt/gitlab/etc/gitlab.rb

#配置gitlab上看到的项目地址
external_url 'http://群晖IP:9080'

#配置邮箱
gitlab_rails['gitlab_email_from'] = 'xxx@qq.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxx@qq.com"
gitlab_rails['smtp_password'] = "xxx"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

#关闭不需要的服务
prometheus['enable'] = false
prometheus_monitoring['enable'] = false
grafana['enable'] = false

9、刷新配置

sudo docker exec gitlab gitlab-ctl reconfigure

10、查看日志

sudo docker exec gitlab gitlab-ctl status
sudo docker exec gitlab gitlab-ctl tail gitaly

11、登录系统

http://群晖IP:9080
默认用户名为root,系统会自动提示修改密码

导致惨重代价的运维事故2020

2020年12月:Google Cloud全球服务中断
事件经过:12月14日,Google旗下的多项核心服务(包括YouTube、Gmail、Google Drive、Google Search)在全球范围内发生大规模宕机,持续约1小时。这是近5个月内Google发生的第3次全球性故障。
事故原因:内部基础设施组件故障(据推测为身份验证或负载均衡服务)。
造成损失:全球数亿用户无法访问关键生产力工具和娱乐内容,再次引发了企业界对公有云巨头服务稳定性的担忧。

2020年11月:亚马逊AWS美国东部区域宕机
事件经过:AWS Kinesis数据流式处理服务软件错误,引发连锁故障,导致大量依赖该服务的网站和应用瘫痪,持续超4小时。
事故原因:软件缺陷引发的运维故障。
造成损失:大量企业业务中断,AWS声誉受损,面临客户索赔。

2020年9月:特斯拉全球性宕机
事件经过:9月23日上午11点起,特斯拉系统遭遇全球性宕机,持续约4小时,多国车主无法通过手机App连接车辆,太阳能及储能电池用户无法监控系统状态,部分车主被锁车外、有人在充电桩处被困近两小时。
事故原因:系统级故障。
造成损失:具体经济损失未公布,严重影响车主正常用车体验,品牌形象和用户信任度遭受显著打击。

2020年8月:CenturyLink配置错误导致全球互联网中断
事件经过:美国互联网服务提供商CenturyLink因数据中心错误配置引发连锁反应,全球互联网流量下降3.5%,受影响服务包括Cloudflare、AWS、Garmin等,7小时后故障解决。
事故原因:BGP路由配置错误。
造成损失:成为有史以来最大互联网中断之一,全球大量服务无法正常访问。

2020年8月:Zoom视频会议中断
事件经过:8月24日,正值全球远程办公和在线教学高峰期,Zoom发生了部分服务中断,导致用户无法访问离线会议和在线视频会议,中断持续了3小时。
事故原因:Zoom仅在状态页面表示“找到并解决了问题”,未详细披露是代码缺陷还是容量规划问题。
造成损失:在用户依赖度最高的时期掉链子,严重影响了全球企业的线上会议、学校教学以及商务谈判的正常进行

2020年6月:T-Mobile 美国全国通信中断
事件经过:6月15日,T-Mobile美国网络遭遇了长达13个小时的全国性瘫痪。这是T-Mobile历史上持续时间最长、影响范围最广的一次中断,导致数百万用户无法拨打语音电话或发送短信。
事故原因:网络配置变更失误。起因是东南部一个第三方供应商的光纤电路故障,但由于T-Mobile自身的网络冗余设计失效,加上后续的负载均衡配置问题,导致IP池过载,最终引发全网崩溃。
造成损失:全美范围内的语音和短信服务中断;由于正值疫情期间,严重影响了用户的紧急通讯和正常生活,公司声誉受损。

2020年5月:AWS大规模服务中断
事件经过:AWS发生严重故障,影响Amazon.com等众多网站和服务。
事故原因:路由表配置错误,更新骨干网络时错误路由表形成流量黑洞。
造成损失:全球大量网站和APP数小时无法访问,重创电商及在线服务。

2020年4月:华为云大面积宕机
事件经过:4月10日,华为云登录及管理后台无法访问,北京、广州、上海等地用户受影响,宕机持续约3小时,故障修复后部分客户业务逐步恢复。
事故原因:部分主机异常,具体技术细节未公开。
造成损失:多家公司业务无法正常维持,影响业务连续性。

2020年4月:GitHub服务中断
事件经过:4月21日,微软旗下GitHub多个服务访问异常,持续一个半小时,是当月多次宕机事件之一。
事故原因:未公开披露具体原因。
造成损失:影响开发者源代码存储、提交及协作工作,干扰项目推进。

2020年3月:微软Azure美东数据中心服务中断
事件经过:3月3日,微软美国东部数据中心服务中断6小时,美国北部客户无法使用Azure云服务,最终通过重置冷却系统控制器、重启硬件恢复。
事故原因:冷却系统故障,楼宇自动化控制功能失灵导致气流减少,数据中心温度飙升影响设备性能。
造成损失:计算和存储实例无法访问,影响依赖该区域云服务的企业业务运转。

2020年3月:微软Teams服务中断
事件经过:3月16日,新冠疫情期间Teams平台涌入大量新用户,导致欧洲地区服务宕机2小时。
事故原因:服务支持能力不足,无法承载突发用户量激增压力。
造成损失:对依赖远程办公的企业造成较大影响,干扰正常办公秩序。

2020年3月:谷歌云平台服务中断
事件经过:3月26日,谷歌多个云服务无法访问,用户频繁遇到500、502错误代码,美国东部沿海地区用户受影响最严重。
事故原因:基础设施组件故障。
造成损失:大量用户无法正常使用谷歌云服务,业务推进受阻。

2020年3月:腾讯课堂系统崩溃
事件经过:3月4日,腾讯课堂出现登录失败问题,因凌晨系统升级时部分机器故障引发,当日8:30经紧急抢修恢复正常。
事故原因:系统升级操作不当,部分机器升级过程中出现故障。
造成损失:影响在线教育课程开展,干扰师生教学进度。

2020年2月:微盟员工恶意删库事故
事件经过:2月23日,微盟研发中心运维部核心人员贺某通过个人VPN登入内网跳板机,4分钟内删除服务器全部数据,致300余万用户无法使用SaaS产品,故障持续8天14小时。
事故原因:员工因个人精神、生活问题恶意破坏,滥用运维权限执行高危删除操作。数据最后在腾讯云的帮助下得以恢复。
造成损失:市值蒸发28亿,预计赔偿金1.5亿,直接经济损失2260余万元,含数据恢复费、商户赔偿费等。
小插曲:据悉,该工程师欠了网贷无力偿还,而且当天喝了不少酒,该工程师被判刑6年月。

Git06传输大repository失败

1、最近接手了一个项目,下载代码时,总会报错

git clone https://e.coding.net/xxx/xxx.git
error: RPC failed; curl 18 transfer closed with outstanding read data remaining

2、有建议说将缓存设置大一些,但没有用

#524288000单位为Byte,524288000B也就是 500MB
git config --global http.postBuffer 524288000

#1G
git config --global http.postBuffer 1048576000

3、最后将下载方式从https改为ssh方式就好了

ssh-keygen -t rsa -C "neohope@yahoo.com"
GIT_SSH_COMMAND="ssh -i /PATH_TO_ISA/xxx.rsa" git clone git@e.coding.net:xxx/xxx.git

Windows禁用蓝牙设备自动唤醒

蓝牙设备自动唤醒功能有时候很有用,有时候很鸡肋。
有一次把笔记本休眠,放到包里,结果被蓝牙鼠标重新唤醒了Windows,导致整个电脑暴热,还好电量耗尽
于是就想禁用蓝牙唤醒:

# 查询设备
powercfg -a
powercfg /devicequery wake_armed
powercfg /devicequery wake_programmable
# 禁用设备
powercfg /devicedisablewake "HID-compliant mouse (003)"
# 启用设备自动唤醒
powercfg /deviceenableawake "HID-compliant mouse (003)"

Windows平台上Chrome支持Custom Protocol

在Windows平台上,也可以通过Custom Protocol实现Chrome打开EXE进程,调用CS程序

1、通过注册表,实现单一用户支持Custom Protocol

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\MyProtocol]
"URL Protocol"=""
@="MyProtocol"

[HKEY_CURRENT_USER\SOFTWARE\Classes\MyProtocol\DefaultIcon]
@="FULL_PATH_TO_MYAPP\\MYAPP.exe.exe, 1"

[HKEY_CURRENT_USER\SOFTWARE\Classes\MyProtocol\Shell]

[HKEY_CURRENT_USER\SOFTWARE\Classes\MyProtocol\Shell\Open]

[HKEY_CURRENT_USER\SOFTWARE\Classes\MyProtocol\Shell\Open\command]
@="\"FULL_PATH_TO_MYAPP\\MYAPP.exe\" \"%1\""

2、通过注册表,让全体用户支持Custom Protocol,需要管理员权限

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Classes\MyProtocol]
"URL Protocol"=""
@="MyProtocol"

[HKEY_CURRENT_USER\SOFTWARE\Classes\MyProtocol\DefaultIcon]
@="FULL_PATH_TO_MYAPP\\MYAPP.exe.exe, 1"

[HKEY_CURRENT_USER\SOFTWARE\Classes\MyProtocol\Shell]

[HKEY_CURRENT_USER\SOFTWARE\Classes\MyProtocol\Shell\Open]

[HKEY_CURRENT_USER\SOFTWARE\Classes\MyProtocol\Shell\Open\command]
@="\"FULL_PATH_TO_MYAPP\\MYAPP.exe\" \"%1\""

Ubuntu18.0.4LTS蓝牙鼠标无法重连

Ubuntu18.0.4LTS安装后,蓝牙鼠标经常无法重连,休眠、重启后,都需要重新配对连接。现在咱们来解决这个问题。

1、首先删掉配对的鼠标

2、打开Terminal

bluetoothctl

# 查看蓝牙控制器,一般只有一个
>>> list

# 选择蓝牙控制器
>>> select 01:23:45:67:89:AB

# 查看控制器情况
>>> show

# 启动
>>> power on

# 扫描,记录蓝牙鼠标地址
>>> scan on

# 关闭扫描
>>> scan off

# 开启agent
>>> agent on

# 配对
>>> pair 34:88:5D:87:C0:A6

# 连接
>>> connect 34:88:5D:87:C0:A6

# 信任设备
>>> trust 34:88:5D:87:C0:A6

# 退出

3、 再试一下,是不是好了

SonarQube集成代码覆盖率

Java项目

#清理,并构建
mvn clean install javadoc:aggregate -Dadditionalparam=-Xdoclint:none surefire-report:report -Daggregate=true

#sonar收集信息
mvn sonar:sonar -Dsonar.host.url=http://127.0.0.1:9000 -Dsonar.scm.disabled=True -Dsonar.junit.reportPaths=target/surefire

.Net项目

#准备收集信息
MSBuild.SonarQube.Runner.exe begin /k:"MyProject" /n:"MyProject" /v:"1.0" /d:sonar.host.url=http://127.0.0.1:9000 /d:sonar.scm.disabled=True /d:sonar.cs.vstest.reportsPaths="%CD%\*.trx" /d:sonar.cs.vscoveragexml.reportsPaths="%CD%\MyProject.coverage.xml"

#清理并构建项目
msbuild MyProject /t:Clean /t:Rebuild

#进行单元测试并生成测试报告
"%VSINSTALLDIR%\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" collect /output:"%CD%\MyProject.coverage" /verbose "%VSINSTALLDIR%\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" /Logger:trx "MyProject\bin\Debug\MyProject.dll"

#报告转换为xml格式
"%VSINSTALLDIR%\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" analyze /output:"%CD%\MyProject.coverage.xml" "%CD%\MyProject.coverage"

#结束分析
MSBuild.SonarQube.Runner.exe end

Ubuntu18使用root登录

为了系统安全,ubuntu默认是禁用root登录的,更是禁用root登录gui。所以,以下的操作,仅用于开发、测试里很特殊的情况,用完后,建议关闭。

#1、为root创建密码,创建密码后就可以su,也可以在cui登录root账号
sudo passwd root

#2、设置gdm运行root登录
sudo vi /etc/gdm3/custom.conf
#开启AllowRoot一行
[security]
AllowRoot=true

#3、设置gdm允许root登录
sudo vi /etc/pam.d/gdm-password
# 将下面一行注释掉
# auth required pam_succeed_if.so user != root quiet_success

#4、编辑.profile文件
sudo vi /root/.profile
# executed by Bourne-compatible login shells.
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi

# 最后一行替换成这个
if `tty -s`; then
mesg n
fi

#5、重启
sudo reboot

Ubuntu18设置静态IP

1、编辑配置文件

#打开配置文件
vi /etc/netplan/xxx.ymal

#其中enp0s3为固定ip
#其中enp0s8为dhcp
network:
    ethernets:
        enp0s3:
            addresses: [172.16.172.100/24]
            dhcp4: false
            gateway4: 172.16.172.2
            dhcp6: false
            optional: true
        enp0s8:
            addresses: []
            dhcp4: true
            optional: true
    version: 2

2、启用配置

netplan apply