yányào.com

Recent posts

Dec 1, 2020
Self Host Maddy Mail Servermaddy Composable all-in-one mail server. https://github.com/foxcpp/maddy 准备自建系列服务替换掉 google 全家桶,先试了传统的 Postfix, Dovecot, OpenDKIM, OpenSPF, OpenDMARC 套餐,但是本人水平菜,机器配置也不高,折腾两天还没跑起来,正好看到订阅的 changelog 推荐了 maddy 1 于是搓搓手气试试这个邮局方案,以下是满足个人喜好的优点 基于 golang 生态依赖少,方便打镜像 验证数据存在 sqlite 里也很轻量 没有 web 端,只需要 imap + thunderbird 即可 配置文件相对简单 install mkdir -p /data/maddy # hard link caddy's crt and key to maddy ln var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/${domain}/${domain}.crt /data/maddy/${domain}.crt ln var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/${domain}/${domain}.key /data/maddy/${domain}.key # foxcpp/maddy:v0.4.2 podman run \ --name maddy \ -v /data/maddy:/data \ -p 25:25 \ -p 143:143 \ -p 587:587 \ -p 993:993 \ -p 465:465 \ yanyaoer/maddy:master # add user podman run --rm -it -v /data/maddy:/data --entrypoint /bin/maddyctl yanyaoer/maddy:master creds create yanyao@mail.…
Oct 30, 2020
Utteranc Commentsutterances - A lightweight comments widget built on GitHub issues. Use GitHub issues for blog comments, wiki pages and more! install install utterances on your repo add the script to your template <script src="https://utteranc.es/client.js" repo="[ENTER REPO HERE]" issue-term="pathname" theme="github-light" crossorigin="anonymous" async> </script> for exsamples https://github.com/yanyaoer/yanyaoer.github.io/commit/f2508ce7557d372f909f68ee32371f86895fd92f done.…
Jul 2, 2020
Zotero as personal knowledge managementZotero 常用于科研的文献管理,由 firefox 浏览器插件发展到现在有了独立的桌面和移动客户端。 本身具备简易的 rss 订阅功能可以用来追踪论文的更新 注册在线账户后支持导出资料库给其他同学订阅 浏览器插件 zotero connectors 则类似各类笔记应用的 web clipper,方便导入各种资料。注意科学上网加载完整页面后再进行保存 通过插件可以扩展出许多其他功能,比如文件同步、高级档案管理 quickstart brew cask install zotero 这里简单用 caddy2 搭建 webdav 来同步附件,就没用高级的 zotfile 至于自带的笔记功能怎么说呢~ 已经适应不能这种风格了 add-ons link quicklook https://github.com/mronkko/ZoteroQuickLook/releases markdown https://addons.thunderbird.net/zh-cn/thunderbird/addon/markdown-here-xul/ subscription https://arxiv.org/list/cs/recent 康奈尔大学提供的免费论文预览平台,主要订阅 cs.SD 音频相关更新 https://scholar.google.com/ https://academic.microsoft.com/ 谷歌学术、微软学术也可以用来搜索一些关键词并订阅推送 https://www.storkapp.me/ 提供关键词订阅推送到邮箱 https://sci-hub.tw/ 实在找不到的下载就靠毛子的共享服务…
Jun 23, 2020
Rss2email距离上次从 https://blogtrottr.com 迁移 rss 订阅到 feedly 差不多五六年了, 这会网络不可用的状况又变得严重些,干脆还是用自建服务来接收感兴趣的内容, 当然备选方案也不少: https://github.com/miniflux/miniflux https://github.com/SSilence/selfoss https://github.com/FreshRSS/FreshRSS https://git.tt-rss.org/fox/tt-rss 出于复古心理顺便减少对应的 app 安装选择问题,又选择了回归 email 方式订阅更新 安装配置 rss2email 的安装到简单,参考 官方文档 直接 apt install rss2email,默认配置会发送文本邮件,修改 html-mail=True, 在我的环境里 smtp over sendgrid 很容易超配额,sendmail 基本发送不出去, 就配上 imap.google 账户自己发给自己啦~ 从 feedly 导出 opml 文件然后 r2e opmlimport 完事大吉 需要注意的是,在 r2e run 的执行过程中对配置文件进行修改非常容易被覆盖 1,不要同时搞太多操作就好, update: 2020-09-18 17:34:49 修改参数 force-from = True,默认会从 feed 里优先提取作者或者发布站点的邮箱,导致 gmail 过滤器失败 定时任务 现代 linux 发行版本(比如这里用的 ubuntu 20.04),默认不带 cronjob 服务,改为 systemd 来管理各种服务,定时任务的写法稍微麻烦了些,先用当前 user 权限来 $HOME/.…
Jun 4, 2020
Deploy bitwarden_rs with podmanbitwarden_rs1 是个用 rust/rocket 编写的非官方 api 实现, dotnet 版本有点儿不太适合手头的部署环境 这里用比较现代的 podman2 来运行 docker 服务 podman run -d --name bitwarden -v /bw-data/:/data/:Z -e ROCKET_PORT=8080 -p 8080:8080 bitwardenrs/server:latest podman generate systemd --name bitwarden --files mv container-bitwarden.service /etc/systemd/system/ systemctl --user enable /etc/systemd/system/container-bitwarden.service systemctl --user start container-bitwarden.service 然后用 nginx 或者 caddy 代理一下 8080 端口即可连接客户端 brew install bitwarden-cli # npm install -g @bitwarden/cli bw config server https://bw.myserver.com https://github.com/dani-garcia/bitwarden_rs/wiki/Using-Podman ↩︎ https://podman.io/getting-started/installation.html ↩︎ …
Jun 2, 2020
Minio Storage Servicemin.io 来自前 glusterFS 团队的分布式存储项目, 兼容 aws s3 / google cloud storage 接口,支持多磁盘、多节点,伸缩扩容方便, golang 编写+单执行文件部署,非常适合用 k8s 编排复制来搭建私有对象存储服务 没有生产环境的使用经验,以下仅用于业余尝鲜 六一节礼物 GNU/Linux 下载安装 wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio chmod +x /user/local/bin/minio 添加用户、组和配置文件 groupadd --system minio useradd --system --gid minio --shell /usr/sbin/nologin --comment "Minio file server" minio mkdir -p /data/minio chown -R minio:minio /data/minio # replace minio.service with your own config, eg. User,Group wget https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service -O /etc/systemd/system/minio.service 配置端口和密钥 # optional. run `uuidgen` to creates AK/SK cat <<EOF >> /tmp/minio MINIO_VOLUMES="/data/minio/" MINIO_OPTS="--address :9199" MINIO_ACCESS_KEY=`uuidgen` MINIO_SECRET_KEY=`uuidgen` EOF 启动服务 systemctl enable minio.…
May 15, 2020
Pour Over Coffee Makers办公室日常用品 hario v60 2人份玻璃滤杯 1 hario v60 600ml 云朵分享壶 2 comandante c40 手摇磨豆机 3 kalita 700ml 细嘴壶 4 rivers seek 随手杯 5 2020-0615 新购入 Mr.clever 聪明杯 6 2020-0622 新购入 hario drip kettle air 7, 用了两次手感偏轻水流控制得不稳 T_T 2020-1027 新购入 fellow ode 电动磨豆机 8 2020-1109 新购入 fellow stagg ekg 温控壶 9 每天一早 中午 到公司开始烧水,然后吭呲吭呲摇 40g 豆子兑 600ml 左右的水 手法就比较 随意 业余啦,主要参考下面两个视频,出品大概率自己都还挺喜欢的 按比例加注水量翻倍…
May 15, 2020
MastodonMastodon 长毛象1 – 基于 rubyonrails/reactjs/nodejs 开发的分布式 & 去中心化 twiter clone。利用空闲时间在 aws lightsail 上开了个实例把服务跑了起来 一开始走了些弯路,因为选机房和省钱的缘故,重建了若干次操作系统,最后的选择是 tokyo+cloudflare,没错我又套了 cdn,实在是海外线路到北京联通不稳定 安装步骤没有使用 docker 而是参考文档从源码安装2,原因和解决方案如下: 机器用 $3.5/mo 512mem 最便宜的那档消费降级(512M 内存重启会拉垮弱鸡,服务已迁移到 oraclecloud),出于 net/io 性能考虑就不使 docker 啦 内存问题,RAILS_ENV=production bundle exec rake mastodon:setup 这一步骤执行到 rails assets:precompile, 不管是在 docker 里跑还是直接运行都会报 swap 分区不足,找到两个方案来解决: # create swapfile <https://linuxize.com/post/create-a-linux-swap-file/> $ sudo fallocate -l 2G /swapfile $ sudo chmod 600 /swapfile $ sudo mkswap /swapfile $ sudo swapon /swapfile # verify active $ sudo swapon --show # optional: low value is better for production $ sudo sysctl vm.…
May 9, 2020
Gitlab Repogitlab 里面已经有十来个 group,几百个 project,虽然不一定会每个项目都参与, 但是为了快速同步代码,又捡起了 android 开发常用的 repo 命令来管理多项目代码。 这里使用了 gitlab graphql 接口来遍历项目生成分组的 manifest 文件 #!/usr/bin/env python import argparse import json import os import urllib2 GITLAB_HOST = "gitlab.mydomain.com" GITLAB_SSH_URL = "ssh://git@" + GITLAB_HOST GITLAB_GRAPHQL_URL = "https://" + GITLAB_HOST + "/api/graphql" GITLAB_TOKEN = "" GITLAB_GROUP = [""] BLACK_LIST = ("",) # 以上配置修改为自己的设定 template = """<?xml version="1.0" encoding="UTF-8"?> <!-- autogen by gen.py, do not edit this file --> <manifest> <remote name="origin" fetch="{ssh_url}" /> <default revision="master" remote="origin" sync-c="true" sync-j="4" /> {content} </manifest>""" def write_file(content, filename="default.…
May 7, 2020
Dash Replacement with tmux通过 tmux 快捷集成替换 dash.app 查询开发文档 $ brew install dasht $ dasht-docsets | tr 'A-Z' 'a-z' go javascript python_3 rust tornado # tmux.conf quick start bind -n S-up command-prompt -p 'docset:' "splitw -h -fb -l 80 dasht '%%'" …