云服务器安装黑群晖

前言 最近在考虑是否要买个NAS,但是价格太贵,很多人买回去又吃灰 之前在论坛看到52Fancy大佬分享云服务器安装黑群晖的教程,原帖:https://hostloc.com/thread-1006309-1-1.html 这不正好先试用一下,合适的话再考虑入正 折腾了一下午,终于弄好了 以下是安装过程记录,解决了原教程遇到的问题 先前准备 检查是否支持virtio_blk lsmod | grep virtio_blk 如果有输出可以继续,没有的话不用往下看了 将系统重装为debian系统 我选了debian10 最好有两台服务器 dd系统时只能使用外部链接,无法使用本地文件 我采用一台国外的云服务器修改和打包镜像(带宽高的原因),通过配置nginx使得外部可以直接获取镜像文件 为了方便,下文将要装黑群晖的服务器称为M1,海外的云服务器称为M2 修改镜像 获取mac地址 在M1中,获取mac地址 cat /sys/class/net/eth0/address 本地挂载,修改img镜像/boot/grub/grub.cfg的mac地址,并压缩 在M2中,把下面的命令中yourmac换成M1的mac地址,并将:去掉,执行 wget https://189.xinai.de/dd/DS3617xs_6.17up3_virtio.img.gz gunzip DS3617xs_6.17up3_virtio.img.gz mount -o loop,offset=$((9177088*512)) DS3617xs_6.17up3_virtio.img /mnt sed -i 's/mac1=0011322CA603/mac1=yourmac/g' /mnt/boot/grub/grub.cfg umount /mnt gzip DS3617xs_6.17up3_virtio.img 执行脚本 下载脚本 在M1中 wget https://cdn.jsdelivr.net/gh/MoeClub/Note/InstallNET.sh 我的M1是国内产商的云服务器,下载国外文件很慢,将脚本中204行的源站改为国内的域名,我这里改为 http://mirrors.163.com/xxx 最后 bash InstallNET.sh -dd 'http://M2-ip/DS3617xs_6.17up3_virtio.img.gz' 等待十多分钟后,访问 http://ip:5000 ,如果进入注册页面即安装成功

August 16, 2022 · 1 min

随记-20220704

半年没有更新了,现记录一下近况。 首先是我的博客域名改为了现在的域名,既然是个人博客,找个和我有关的并且短些的域名不是更好些。等待了将近一个月后终于完成了备案。之后我就将博客和一些常用的工具转移到新的域名上,之前的域名目前只保留了一个页面,并且指向现在的域名,以后将继续持有打算个人测试用。 工作方面,很多的同事年后选择离开,这也实属正常,毕竟当时我也想走了。在五月初得知我们原本的开发团队即将解散,人员分布到其他项目组,项目交接给成都的开发团队做。我们在端午前完成最后一个项目翻新后就转移到了新的项目组。另一件是6月底实习生“毕业”的事,暂不详谈,希望今此一别,前程似锦。 五一时买了个南京旅游年卡,在南京待了八年的我终于要出去逛逛了!目前去了总统府、科举博物馆、大报恩寺、江宁织造博物馆、夫子庙。 五月初,我捡起了六年前曾吐槽过的《罪与罚》,角色名称曾让我看了几页就看不下去了(顺便吐槽一下,《红楼梦》我看了几次,每次就没超过30回,因为我已经分不清谁是谁了)。经过四十多天的努力,终于看完了?。以下是当时整理的角色关系表。 名称 性别 角色 拉斯科尔尼科夫、罗佳、罗季昂·罗曼诺维奇 男 主角,退学大学生 马尔美拉多夫 男 年过半百,退伍军官,后被马踢死 卡捷琳娜·伊万诺夫娜 女 马夫太太 校级军官的女儿 阿廖娜·伊万诺夫娜 女 死者,当铺老板 索菲娅·谢苗诺夫娜·马尔美拉多娃、索涅奇卡 女 马夫前妻生的女儿 妓女 娜斯塔西娅 女 主角房东的女仆 拉祖米兴、德米特里·普罗科菲依奇 男 主角同学 阿夫多季雅·罗曼诺夫娜、杜尼雅、杜涅奇卡 女 主角妹妹 普尔赫里雅·亚历山大罗夫娜 女 主角母亲 彼得·彼德罗维奇、卢仁 男 杜尼雅未婚夫 左西莫夫 男 医生 普拉斯科维雅·巴普洛夫娜、扎尔尼采娜 女 主角房东 波尔菲里·彼德罗维奇 男 拉祖米兴亲戚,在办理这个案件 安德烈·谢苗诺维奇、列别兹雅特尼柯夫 男 卢仁室友,打过卡娜 阿尔卡奇·伊凡诺维奇、斯维德里加伊洛夫 男 爱慕杜尼雅,妻子已死,留下大笔遗产 我从2015年开始看无限挑战,这节目很难入坑,节目中他们谈近况和闲聊的片段多且长,曾一度让我觉得他们废话好多。但是在2016年后,我开始羡慕起他们,有这么一档节目记录着大家的十多年的变化,记录着成员搬家、看病、入伍、结婚生子这些除节目外的变化。现在有很多人做vlog分享自己的生活,但是我并不想分享只是想做个记录,并且剪辑和存储视频的成本还是有的。在最近两月的迷茫期间,我开始关注起了鲁迅,并且了解到他有写日记的习惯,流水账般的记录下来。之后我便开始尝试这么记录日常的生活,我还是更喜欢文字形式的记录。现在使用电子文档还是很方便的,后面弄个从库避免数据丢失就好了。 这一篇已经准备一周了,最终将近期考虑的问题删除。这半年期间也有写一些东西,但是考虑后没有发布。有些是不合适,毕竟备案不易,而有些则是没必要。下半年尽量更新,主要还是生活为主。

July 4, 2022 · 1 min

2021年终总结

在年初,我定了四个目标,分别是:拿驾照、减肥、换工作和找对象。 驾照原有机会在元旦前拿到,我在考完科目三后由于指纹和报名时录入的有变化而无法考试,无奈取消了当天的考试。后又申请更换指纹,十天的等待后指纹依旧无法录入。最后申请代录指纹顺利拿证✌。 减肥就是源于一句玩笑话“你脸大了一圈”,确实我这几年胖了不少。我于前一年的9月份开始减肥,一直到年底的时间里,一边要减肥,一边周末早起赶驾校的班车?,年前完成计划。 工作方面,我离开了工作三年的公司,这也是我第一次跳槽。在经历了大量的线上线下面试后,最终确定了新的公司。在这期间,我学到了很多,也意识到自身的不足。 一年过去了,最后一个目标还是没有实现?。这一年,我开始接受了相亲以及别人的介绍,之前我都会以没时间为由拒绝。或许是单身久了,或许是年纪大了,又或许是不玩游戏后没人交流了使我改变了态度。有一点我觉得很奇怪,为什么给我介绍的人,不管是谁,从来没有问过我的要求呢? 关于游戏,6月份时lol就不怎么玩了,7月中旬光速退役,这款游戏玩起来不再能给我带来一开始的乐趣了。国庆期间捡起了coc。 今年看的书只有五本,分别是《挪威的森林》、《围城》、《梦幻花》、《鼠疫》和《白鹿原》。 关于电影,我在1月份的时候看了一部电影,看完之后我就决定这肯定是今年看的最佳电影了,电影名为About Time,中文译名为《时空恋旅人》,讲述了一个拥有穿越时间能力的男人的故事。这个译名并不好,英文名更为贴切。百度百科的一句介绍很不错:他发现怎么穿越时空都不能让不爱你的人爱上你。 还有一处变化就是头发,5月底是我这一年最后一次剪头发。之前短发时觉得头发长得好快,现在却觉得好慢。目前还没有计划,8月份左右应该会剪掉。 这并非是第一次写年终总结,之前的都没有公开。这次删了很多啰嗦的内容,最终将一年的历程以流水账的形式记录下来,遗漏的等想到再改吧。 最后,新的一年希望大家身体健康,快乐我可以给你?。

January 3, 2022 · 1 min

canal-adapter-v1.1.5的坑汇总

1.canal.adapter启动报错Could not resolve placeholder ‘HOSTNAME%%.*‘ Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'HOSTNAME%%.*' in value "history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"" 配置里面根本就不需要用到HOSTNAME%%.*,问题就是系统的变量读取方法${}跟spring boot那一套冲突了,解决的办法就是在conf/application.yml配置文件中增加${}里的相关变量并赋空值(变量冒号后为空), PWD/#$HOME/~: HOSTNAME%%.*: USER: 2.java.lang.ClassCastException: com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource 原因是 druid 包冲突导致的,解决办法如下 下载源码包 wget https://github.com/alibaba/canal/archive/refs/tags/canal-1.1.5.tar.gz 解压后,使用IDEA打开,定位到 client-adapter.escore 模块的 pom.xml 的 druid 更新为 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <scope>provided</scope> </dependency> 更新后,在项目根目录下执行 mvn clean package 然后到 canal-canal-1.1.5/client-adapter/es7x/target 下 将打包好的 client-adapter.es7x-1.1.5-jar-with-dependencies.jar 替换掉 canal-adapter/plugin 下原来的jar包 重启 Canal Adapter,发现日志不再报错,问题成功解决。 Reference https://www.cnblogs.com/agilestyle/p/15075936.html

November 11, 2021 · 1 min

使用canal-adapter同步数据到es

本文使用v1.1.5版本 1.下载并解压 canal.adapter-1.1.5.tar.gz 2.修改conf/application.yml server: port: 8081 spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 default-property-inclusion: non_null canal.conf: mode: kafka #tcp kafka rocketMQ rabbitMQ flatMessage: true zookeeperHosts: syncBatchSize: 1000 retries: 3 timeout: accessKey: secretKey: consumerProperties: # kafka consumer kafka.bootstrap.servers: 150.158.190.205:9093 kafka.enable.auto.commit: false kafka.auto.commit.interval.ms: 1000 kafka.auto.offset.reset: earliest kafka.request.timeout.ms: 40000 kafka.session.timeout.ms: 30000 kafka.isolation.level: read_committed kafka.max.poll.records: 1000 srcDataSources: testDS: url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: root password: pwd canalAdapters: - instance: testTopic # canal instance Name or mq topic name groups: - groupId: testgroup outerAdapters: - name: logger - name: es7 hosts: http://127.0.0.1:9200 # 127.0.0.1:9200 for rest mode properties: mode: rest # or rest # security.auth: test:123456 # only used for rest mode cluster.name: docker-cluster PWD/#$HOME/~: HOSTNAME%%.*: USER: 3.在conf/es7目录下新建test.yml 配置内容如下: ...

November 11, 2021 · 1 min

使用canal-admin和canal-deployer同步MySQL数据到kafka

本文使用的canal-admin、canal-deployer都是v1.1.5版本 官方文档 1.下载并解压canal-admin canal.admin-1.1.6-SNAPSHOT.tar.gz 2.新建canal_manager数据库,执行canal-admin/conf目录下的canal_manager.sql脚本 3.修改canal-admin/conf/application.yml server: port: 8089 spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 spring.datasource: address: 127.0.0.1:3306 database: canal_manager username: root password: pwd driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false hikari: maximum-pool-size: 30 minimum-idle: 1 canal: adminUser: admin adminPasswd: admin 4.启动canal-admin sh bin/startup.sh 5.进入管理页面 http://127.0.0.1:8089 默认账号/密码:admin/123456 6.集群管理 新建集群,例如test 主配置 ################################################# ######### common argument ############# ################################################# # tcp bind ip canal.ip = # register ip to zookeeper canal.register.ip = canal.port = 11111 canal.metrics.pull.port = 11112 # canal instance user/passwd # canal.user = canal # canal.passwd = E3619321C1A937C46A0D8BD1DAC39F93B27D4458 # canal admin config #canal.admin.manager = 127.0.0.1:8089 canal.admin.port = 11110 canal.admin.user = admin canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441 # admin auto register #canal.admin.register.auto = true #canal.admin.register.cluster = #canal.admin.register.name = canal.zkServers = # flush data to zk canal.zookeeper.flush.period = 1000 canal.withoutNetty = false # tcp, kafka, rocketMQ, rabbitMQ canal.serverMode = kafka # flush meta cursor/parse position to file canal.file.data.dir = ${canal.conf.dir} canal.file.flush.period = 1000 ## memory store RingBuffer size, should be Math.pow(2,n) canal.instance.memory.buffer.size = 16384 ## memory store RingBuffer used memory unit size , default 1kb canal.instance.memory.buffer.memunit = 1024 ## meory store gets mode used MEMSIZE or ITEMSIZE canal.instance.memory.batch.mode = MEMSIZE canal.instance.memory.rawEntry = true ## detecing config canal.instance.detecting.enable = false #canal.instance.detecting.sql = insert into retl.xdual values(1,now()) on duplicate key update x=now() canal.instance.detecting.sql = select 1 canal.instance.detecting.interval.time = 3 canal.instance.detecting.retry.threshold = 3 canal.instance.detecting.heartbeatHaEnable = false # support maximum transaction size, more than the size of the transaction will be cut into multiple transactions delivery canal.instance.transaction.size = 1024 # mysql fallback connected to new master should fallback times canal.instance.fallbackIntervalInSeconds = 60 # network config canal.instance.network.receiveBufferSize = 16384 canal.instance.network.sendBufferSize = 16384 canal.instance.network.soTimeout = 30 # binlog filter config canal.instance.filter.druid.ddl = true canal.instance.filter.query.dcl = false canal.instance.filter.query.dml = false canal.instance.filter.query.ddl = false canal.instance.filter.table.error = false canal.instance.filter.rows = false canal.instance.filter.transaction.entry = false canal.instance.filter.dml.insert = false canal.instance.filter.dml.update = false canal.instance.filter.dml.delete = false # binlog format/image check canal.instance.binlog.format = ROW,STATEMENT,MIXED canal.instance.binlog.image = FULL,MINIMAL,NOBLOB # binlog ddl isolation canal.instance.get.ddl.isolation = false # parallel parser config canal.instance.parser.parallel = true ## concurrent thread number, default 60% available processors, suggest not to exceed Runtime.getRuntime().availableProcessors() #canal.instance.parser.parallelThreadSize = 16 ## disruptor ringbuffer size, must be power of 2 canal.instance.parser.parallelBufferSize = 256 # table meta tsdb info canal.instance.tsdb.enable = true canal.instance.tsdb.dir = ${canal.file.data.dir:../conf}/${canal.instance.destination:} canal.instance.tsdb.url = jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL; canal.instance.tsdb.dbUsername = canal canal.instance.tsdb.dbPassword = canal # dump snapshot interval, default 24 hour canal.instance.tsdb.snapshot.interval = 24 # purge snapshot expire , default 360 hour(15 days) canal.instance.tsdb.snapshot.expire = 360 ################################################# ######### destinations ############# ################################################# canal.destinations = # conf root dir canal.conf.dir = ../conf # auto scan instance dir add/remove and start/stop instance canal.auto.scan = true canal.auto.scan.interval = 5 # set this value to 'true' means that when binlog pos not found, skip to latest. # WARN: pls keep 'false' in production env, or if you know what you want. canal.auto.reset.latest.pos.mode = false canal.instance.tsdb.spring.xml = classpath:spring/tsdb/h2-tsdb.xml #canal.instance.tsdb.spring.xml = classpath:spring/tsdb/mysql-tsdb.xml canal.instance.global.mode = spring canal.instance.global.lazy = false canal.instance.global.manager.address = ${canal.admin.manager} #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/file-instance.xml #canal.instance.global.spring.xml = classpath:spring/default-instance.xml ################################################## ######### MQ Properties ############# ################################################## canal.mq.flatMessage = true canal.mq.canalBatchSize = 50 canal.mq.canalGetTimeout = 100 # Set this value to "cloud", if you want open message trace feature in aliyun. canal.mq.accessChannel = local canal.mq.database.hash = true canal.mq.send.thread.size = 30 canal.mq.build.thread.size = 8 ################################################## ######### Kafka ############# ################################################## kafka.bootstrap.servers = 127.0.0.1:9093 kafka.acks = all kafka.compression.type = none kafka.batch.size = 16384 kafka.linger.ms = 1 kafka.max.request.size = 1048576 kafka.buffer.memory = 33554432 kafka.max.in.flight.requests.per.connection = 1 kafka.retries = 0 kafka.kerberos.enable = false kafka.kerberos.krb5.file = "../conf/kerberos/krb5.conf" kafka.kerberos.jaas.file = "../conf/kerberos/jaas.conf" 7.启动canal-deployer 下载并解压canal.deployer-1.1.5.tar.gz 修改conf/canal_local.properties # register ip canal.register.ip = 127.0.0.1 # canal admin config canal.admin.manager = 127.0.0.1:8089 canal.admin.port = 11110 canal.admin.user = admin canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441 # admin auto register canal.admin.register.auto = true canal.admin.register.cluster = test canal.admin.register.name = 启动canal-deployer sh bin/startup.sh local canal-deployer注册到canal-admin中,在Server管理中可以看到 ...

November 11, 2021 · 4 min

docker安装es+kibana

一、安装es 1.下载运行镜像 docker pull docker.io/elasticsearch:7.14.2 docker run -d --name elasticsearch -v /home/es/:/use/share/elasticsearch/ -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.io/elasticsearch:7.14.2 2.进入容器内部 docker exec -it elasticsearch bash 二、安装kibana docker pull kibana:7.14.2 docker run -d --name kibana -p 5601:5601 kibana:7.14.2 修改配置文件 docker exec -it kibana bash vi /usr/share/kibana/config/kibana.yml host改为自己的ip 并加上 i18n.locale: "zh-CN" 显示中文 浏览器访问ip:5601进入kibana网址

November 11, 2021 · 1 min

随记-20210913

又是一个失眠夜-_-,我不清楚为什么每次周日都会睡不着,不可能是想到要上班而激动,不可能不可能的。 将近两个月没有更新了,其实并非如此,有些是没有整理完或者在考虑是否必要公开的问题。有时会将一些东西或者截取的片段记录在博客里,对我来说是有点用或者有意思的,可能对别人来说没什么意思的东西,所以没有公开。 自知目前是睡不着了,那就记录一下这两天好了。 11号和真伪打乒乓球一事都是有因果关系的: 早上起床发现外面很热 => 我放下原计划穿的黑色衣服,穿了白色的T恤; 真伪没有带换洗的衣服,并且打算打完球晚上吃完饭后直接回去 => 我不会回来换洗衣服,我也不想为了一件衣服带一个包; 结果就是我们打完球衣服全湿并且没有换的衣服,只好穿着几乎透视的上衣在路上慢慢走等着风干?,万幸的是路上人不多。在桥上停留了一会就几乎干了,还好没有感冒。 这一次打球发现了两个现象,一是生疏了,上一次打还是在去年五一期间;二是我经过将近一年的减肥锻炼,体力明显提升了很多。唯一可惜的是因为穿的船袜导致两边的脚后跟都磨破了,走路都不方便。 下午得知爱春来到南京,准备周末把东西搬过去,晚上就三人一起去吃的饭。说来也巧的是,上一次我去真伪那里后晚上去的爱春那蹭饭,这一次又是同一天见到他们两人。 12号中午去爱春那里蹭饭,去的店还是挺不错的,火锅和串串结合,火锅配菜按盘子算,串串按签算,两人吃了两百六十多,把我撑的不想动了?。然后就是看他收拾东西,五点他就随着货拉拉返回泰兴。 晚上九点多我捡起了看了一半的东野圭吾的《梦幻花》,原本打算周末两天抽空看看就看完了,结果打球和搬家导致计划破产。简单介绍一下这本书的内容吧: 正文开始之前是两段小故事,一是一男子持武士刀大街上杀人,二是初中生小男孩蒲生苍太在花展上遇到一个同龄女孩伊庭孝美,因为一点小事两人渐渐熟悉、交往,但是没多久女孩就突然断绝联系。之后就是正文内容。 前10%主要内容是秋山梨乃的哥哥自杀、爷爷被害,并且提到了一朵黄色的花。后面80%的内容从巡查部长早濑亮介、梨乃+苍太两组视角的调查方向使得真相慢慢浮出水面。最后的10%由凶手说明事情的起因和经过,仓太的哥哥介绍了家族与梦幻花的关系。故事结束。 整本书在看完后觉得很平淡的一个故事,但是读的时候莫名有紧张感。这是我看的东野圭吾的不知道第几本书了,总是能在不经意间抓住我的胃口。 今天看的是后一半的书,用时三个小时左右,我看书实在是太慢了。有的人能几秒钟看一页,我完全做不到。教练,我想学!!! 2021-09-13 02:26

September 13, 2021 · 1 min

随记-20210607

好消息,好消息,本站和腾讯达成合作啦(其实是我买了腾讯的服务,之前一直白嫖百度云加速?) 老早就发现图片和视频的加载速度特别慢,是因为一直存放在服务器中,体验很不好 现在本站通过腾讯CDN进行加速,并且图片和视频存放在OSS中,访问速度有了明显的提升啦 会尽快把站点移到国内的服务器上 以后可能会分享一些游戏视频 这是我睡不着爬起来水的一篇博客(2021-6-7 2:29) over

June 7, 2021 · 1 min

随记-20200518

在我感冒、发烧,或是身体有其它一些小问题的时候,我就会想:为什么平时不好好锻炼?为什么不好好 穿衣服?为什么不在身体健康的时候认真学习? 每次生病的时候就是我反思人生的时候。 一位身患重症无法治愈的老人,会怎么想,死亡是否是解脱。 R.I.P.

May 18, 2020 · 1 min