Follow

个人实例建设心得(那些年草履虫本虫踩过的雷) 

首先,万分感谢奈奈 @neb 的建站指南( i.nebula.moe/?p=371),让我这个完全不会编程的草履虫也依样画葫芦弄了个自己的站。然而因为本人的计算机水平实在停留在草履虫水平,所以哪怕是照着教程也踩了很多坑。特此分享一下踩坑实录,谨供未来的勇士们参考。

1. 申请域名。
我自己凭着蜜汁自信四处比较了一下价格,在namecheap上申请了域名,但是因为实在太小白,namecheap上主动提供的DNS都没有删,导致第一次彻底失败,以至于后来老老实实又按照教程在godaddy上再买了域名一步一步走终于成功。后来我研究了一下,namecheap并非不行,我一开始不敢删掉它自动的DNS才是问题关键。这里告诫大家,勇敢点,能删的都删了【】
(而且不知为何Godaddy强制要求的两步验证……我的手机号就这么给出去了。)

2. 邮件服务
这个坑是我耗时最长的坑,也是最让我翻白眼的。不知道是不是用了VPN的缘故,奈奈文中提到的Sendgrid我刚一注册就禁止我登录,换了好几个邮箱都不管用;后来其他站长推荐的Sparkpost,本来验证得好好的,没过几分钟就把我域名屏蔽了。发邮件去问,对方说因为.xyz域名被滥用所以一律不支持。本来还想争取一下,结果对方因为我使用vpn的地址不一致直接停用了我的账号,在我解释一番之后告诉我:对不起,不提供中国客户服务。——行吧!最后使用了Mailgun才顺利通过。
顺便提一个我踩的非常小白的坑。Mailgun或者Sparkpost上提供的验证方式,在host一栏都是带你自己域名的,在填到namecheap或者godaddy的DNS中时需要把你自己的域名去掉,仅留前面的前缀即可。(比如在Mailgun的host一栏会显示【pic._domainkey.你的域名】,填进godaddy时只要填【pic._domainkey】就可以。如果和你域名一样就填【@】。)这个坑比较白痴,不过也许有些人也会犯这个错误。

3. Digital Ocean
这个坑也是踩得我没脾气——在此对大家表示:注册时会让你验证付款方式,这时不要用Paypal!不要用Paypal!不要用Paypal!一旦用PayPal直接锁账号,连操作的机会都不给。我连锁两个账号并且申请解锁也不通过之后没办法只好申请第三个账号用信用卡,然后估计是因为ip或者cookie的缘故发现我申请多账号,要求我拍摄护照/身份证进行验证——真是不想提的遭遇。

4. 配置Mastodon
这里按照奈奈的操作步骤来即可。一个不值得推广的经验就是……我一开始卡在邮件服务过不去的时候想着个人站干脆就不设置邮件服务了,结果就是设置好了站长账号之后……不知道它生成的随机密码是什么 :aru_0520: 然后点忘记密码才意识到收不到邮件 :aru_0520:
不过如果你不是像我一样强迫症受不了一个空账号占用我邮箱地址的话,其实可以后台用命令行再创建一个账号( docs.joinmastodon.org/zh-cn/ad )。这时会显示密码,登录进去修改即可。

5. 挺管用的基础小白操作(真的,有一点点基础的都不用看):
转至mastodon用户:su - mastodon
转回根目录:exit
转到文件夹:cd 【文件夹名】(一般好像都在live里操作?)
重启(在root目录下):
systemctl restart mastodon-sidekiq
systemctl reload mastodon-web

6. 修改字数
使用了 @bgme 的脚本:bgme.me/@bgme/1017076666732703
第一次上限改成10000之后显示compile失败,后来再改就一直显示nothing to do。然后按照 things.bleu255.com/runyourown/ 教程用nano命令逐个修改文档,会发现其实文档里的字数已经改成了10000,但是在外依旧显示500。
后来干脆再运行一次脚本,ORIGIN_CHARS=10000,MAX_CHARS=5000,然后就compile成功了,字数也成功地改成了5000。因为不止我一个个人站出现了这个问题,怀疑是否和内存有关?

7. 全文搜索
按照文档操作后,显示启动,但是搜索结果一直为0。
后来在 @star 站长的帮助下排查错误,主要是2G内存不够的原因。找到 /etc/elasticsearch/jvm.options
这个文件 最开头有个 -Xms512m -Xms1g 这种类似的参数,改成 -Xms384m 后保存重启ElasticSearch,成功。
(排查:ps -ef | grep elas 如果显示只有1行,则Elasticsearch进程没有启动。systemctl status elasticsearch 可看有无报错。)
一看果然内存就只剩下了几百M,为了防止爆站,按照 digitalocean.com/community/tut 添加了SWAP虚拟内存。感觉这50G会很快被我玩死,也想顺便求教各位大佬手把手教一下怎么上传至云端之类 :0130:

8. 一些其他的CSS改造:
pullopen.xyz/custom.css
↑本站css,四个部分:
放大emoji
拉宽高级web模式以适应屏幕
长图补丁(鼠标放上去放大长图)
我自己比较喜欢的主题
主题可以参考 userstyles.org/styles/browse?s ,复制CSS代码(去掉开头地址和结尾的“}”)
改完记得ctrl+shift+r强制刷新。

最后万分感谢 @stand @kishinami@digforfire 还有文中各位站长大佬们提供的帮助!以后肯定还会继续打扰各位的,先行说一声不好意思 :aru_0180:

个人实例建设心得 Part 2 媒体文件上云 

前段时间折腾git命令研究半天搞了自己的repo,但是考虑到目前还没研究透,搞不好下次升级就要悲剧了,所以暂且搁置,下次升级成功了再分享踩坑日志。

先提一下上云。

考虑到个人实例用不了多少(目前用量是6天2G左右),在 @bgme 站长建议下使用了Scaleway,先白嫖一段时间的75G免费空间再说,毕竟Wasabi虽然便宜但是最低月费也要6刀。(按$0.01/G的价格,Scaleway撑到wasabi最低月费之前大概可以撑好几年?)
参考文献是我们大家都知道的:stanislas.blog/2018/05/moving-
还有Scaleway官方文档:
scaleway.com/en/docs/object-st

OK,按照参考文献开始。

1. 注册Scaleway,点击左侧的Object Storage,新建public bucket(这里有个坑稍后再说)。

2. 然后我废了老大劲儿才找到哪里去生成API Key:右上角头像-点开Organization-Credentials-API Tokens,然后会生成Access Key和Secret Key。注意一定要复制到本地,Secret Key只出现一次。

Scaleway不让你自己填写Policy,所以Policy两步都跳过。

3. 按照文中安装aws-cli,然后configure。这里参考文献给我的一个坑是,作者是在root用户底下configure的,而实际上应该转到mastodon用户后再进行configure,根据 @AstroProfundis 的说法,这个信息是存在每个用户自己的目录下的(感谢!)。如果在root里设置,就会和我一样在下一步出现Unable to locate credentials。

在configure的时候我同时也设置了Region为fr-par。如果选择荷兰应该是nl-ams,下同。

4. 下一步就是魔法步骤:同步已有媒体!转到live文件夹,执行命令:
aws s3 sync public/system s3://【你的bucket名】/ --endpoint-url=s3.fr-par.scw.cloud --acl public-read

请注意这个教程里没有的--acl public-read,这个一定要有,否则Scaleway默认每个上传文件可见性都是Private,并且没有一键改动的方式……当我第一遍吭哧吭哧传了一千多个文件之后发现所有文件都是Private站外看不见之后内心真的,挺崩溃的【】而且修改bucket可见性并不会对每个具体文件造成影响——这也太坑了!

@bgme 提供了一键修改可见权限的方式: stackoverflow.com/questions/53 ,需要一个个文件夹去改,不知道管不管用 :aru_2020: 我后来是重新建了一个bucket重传了一遍解决的。

5. 设置Nginx,这步实在看不懂,放弃了。理论上这个步骤可以降低S3储存的流量费用,并且让Scaleway读取图片的速度和你服务器速度一样,大家有兴趣可以多研究一下。

Scaleway同样提供了75G免费流量,但看起来好像是累积制,超过了75G也是要收取相应费用的。以后我再慢慢学习。(其实我就是想知道这个Nginx.conf文件到底应该在哪个用户哪个文件夹里找啊……root还是mastodon?要进live吗?具体文件需要替换哪些参数?——天哪还是问题好多。)

6. 修改.env.production。添加如下内容:

S3_ENABLED=true
S3_BUCKET=mstdn-media
AWS_ACCESS_KEY_ID=【你的Access key】
AWS_SECRET_ACCESS_KEY=【你的Secret key】
S3_PROTOCOL=https
S3_HOSTNAME=s3.fr-par.scw.cloud
S3_ENDPOINT=s3.fr-par.scw.cloud/
S3_REGION=fr-par

同样如果是荷兰机房就把fr-par改成nl-ams。

7. 不放心可以再魔法步骤一下,把你这段时间出来的图片也弄进去。
重启mastodon
systemctl restart mastodon-sidekiq
systemctl reload mastodon-web

然后应该就可以成功了。

总之又是一个小白踩坑日志,供站长们参考。大神就不要看了 :aru_0520:

再次鞠躬感谢各位站长的帮助!!!真的太叨扰各位了 :blobcatheart: 给大佬们比心

@dmonad @star @neb

Show thread

又及,Scaleway的墙内速度真的贼他妈慢,我一时竟然说不上来是digital ocean更慢还是Scaleway更慢【】

Show thread

于是测试了一下玩玩:
你烂我更烂.jpg
(左边是媒体储存,右边是本站在Digital Ocean上服务器。)
(我还是挂着梯子上算了【】)

Show thread

问了下客服,Scaleway是每月75G流量。好了我这辈子都不用担心超了【】

Show thread

(好了反正Scaleway速度比我站快而且流量每月75G妥妥够用所以不折腾Nginx了!【】)
(下次升级完就开门迎【自带梯子的】亲友【】)

Show thread

个人实例建设心得 Part 2 媒体文件上云 

改.env.production的时候要把bucket名也换了!这里忘记说了……
反正还是参考我的博文比较妥当。

Show thread

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@flyover 补充一下:godaddy的两步验证可以用身份验证器的,Google身份验证器就行,和steam令牌差不多(

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@kishinami 我是直接用它推荐的Authy……理论上我的手机号应该是给Authy不是给Godaddy的吧……应该还好?
(最让我郁闷的还是Digital Ocean的护照验证……虽然好像也是给了第三方但是!!!好不爽啊!!!)

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@flyover 我也搞不懂为什么您开启了hrad模式(。)我当时建站就按照奈奈的推荐一路做了下来,包括DO我也是用paypal氪的金 :sweating:

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@kishinami 我也很想知道!!!当真是一路被block过来……

感觉就是肉身在国内搞这类操作就是特别不方便。主要是什么水军,出征一类的事情搞得一些海外服务商对中国IP和疑似VPN都存在顾虑。我以前也想过他们不是不想做中国人的生意,有可能是做了中国人的生意如果碰上对方搞攻击和文化渗透(理由是不是挺可笑的?)被美国警告也不好玩。

何况国内什么阿里云腾讯云体量实在是太特么大了,这种生意根本挤不进去,所以会对中国客户抱着有的没的无所谓的态度,我瞎猜的。

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@flyover @neb @bgme @star @stand @kishinami @digforfire 想学习,如何做对象存储。我这一天增加1G空间。

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@flyover 云存储要搞的话最好早点搞,不然后面本地文件多了从本地copy到云上很费时间(个人感觉……) 上个月我站迁移媒体文件到wasabi上7个G传了4个小时(小文件多),把我困得………

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@star 所以具体要怎么操作呢?有没有指南或者教程参考呀? :0130: 或者大致的方向?

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@star wasabi会出现大陆访问不佳的情况吗?

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@flyover 很慢,但是从你服务器上做个反代,速度就和访问你的站点一样了。用wasabi的原因只有一个:便宜……(每月6刀,其他的像亚马逊s3至少wasabi两倍起步了

主要流程就是挂梯子注册wasabi,验证信用卡,用rclone挂载到服务器上。然后mastodon停机,转移媒体文件到wasabi上,配置nginx反代,修改mastodon配置文件,重启mastodon和nginx。

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@star :aru_0190: 好的我再补习研究一下……

@flyover @neb @bgme @star @stand @kishinami @digforfire

第 6 步那里,不光是修改字数时,如果未来升级程序时 compile 静态文件出了问题都可以这样做:

删除这个目录(或者先移动到别的地方去):

`/mastodon/live/public/packs`

然后重新执行 compile 命令。

出错一般就是内存不够了,毕竟静态文件(JS、CSS 之类)太多太大了。

@dimlau @flyover @neb
第6个问题正确的做法是开一个swapfile,有足够swap以后就不会挂了。然后
RAILS_ENV=production bundle exec rake tmp:cache:clear
删除缓存,然后再重新执行预编译。
不应该直接删除pack目录,如果是很多人在用的站点会挂的。一个人倒是无所谓了

@flyover @neb

2. 可以直接使用 Gmail 或者其他電郵服務;
3. 可以使用 Vultr 或者其他任何 VPS;

嘟主有意願和能力去研究,就可以不用完全按照保姆級教程來,只要領會精髓就可以了。另外還是歡迎新的實例加入。

@SakuragawaAsaba @neb 谢谢推荐!只是对于我这样之前接触的最高级东西就是Excel、连怎么编辑都要从头查命令、对各种语言一窍不通的电脑草履虫而言,意愿和能力也是不够的,还是需要保姆级教程😂 之所以和Digital Ocean折腾也是因为它一键导入Mastodon的优势,也只有先上车才能慢慢摸索出怎么开……
其实最大的重点还是:如果连我这样的技术草履虫在各种hard模式下也能建站成功,那么别人会比我更容易……
等熟悉了之后也许就能开开不同的车了 :0510:

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@flyover @neb
关于2邮件服务:如果你自己一个人用的话直接本地安装postfix然后用Gmail之类的发邮件就可以了。一分钱不用花,不用额外注册,Gmail有频率限制但一个人用永远不会超的。
关于云存储:如果一个人用,除非你关注了很多图片bot之类的,可以不用把媒体文件放云存储上。我自己有个个人实例关注了很多个图片bot,一年下来现在才用了45G云存储,如果你不是这么用的话可以不折腾。

@dmonad

这我倒是真的有可能,我自己确实有关注了不少图片bot……
(不过如果能撑一年那我也可以先撑着,顺便学习一下技术…… :ablobattention:
顺便有什么比较稳定的存储服务推荐吗?

@flyover DigitalOcean Spaces就够用了,价格你看一下能不能接受。
Wasabi也可以,建议选新开的地区,老的不稳定

@dmonad
谢谢帮助!
网上搜了一圈,wasabi教程更多,我要仔细研究一下怎么应用到digital ocean space上去……

@dmonad
主要也是搜到不少反映wasabi不稳定的repo,尤其是mastodon这边。
不知道digital ocean在250G范围能不能满足😂媒体储存是只会越来越多是吗?

@flyover 你完全不需要着急。个人站图片并没有那么大,而且媒体是可以清理的。你完全可以在快满了的时候清理,也可以设置crontab每周执行清理。
至于以后传云存储要几个小时这个也不构成问题,你完全可以开一个screen然后让它在后台慢慢传就可以了。
清理媒体的方法:
RAILS_ENV=production bin/tootctl media remove
RAILS_ENV=production bin/tootctl media remove-orphans
文档docs.joinmastodon.org/admin/to
我自己是从来没有清理过的,因为空间够用。

@flyover 关于云存储,所谓云存储就是把你的文件上传,然后配置一下长毛象程序,以后用云端来serve你的文件。常见的云存储基本上都是S3兼容的,也就是说你用适合aws s3的工具用在它们上操作基本上是一样的。
我是DigitalOcean Spaces,用的这两篇教程做的。我用的不是rclone, S3cmd和aws-cli差不多。
github.com/cybrespace/cybrespa
stanislas.blog/2018/05/moving-
DigitalOcean Spaces不需要配置bucket policy.
传完了文件以后,比方说你的bucket name是alice,你选的nyc3数据中心,那么长毛象配置就是
S3_ENABLED=true
S3_BUCKET=alice
AWS_ACCESS_KEY_ID={your_key_id}
AWS_SECRET_ACCESS_KEY={your_key}
S3_REGION=nyc3
S3_PROTOCOL=https
S3_HOSTNAME=nyc3.digitaloceanspaces.com
S3_ENDPOINT=nyc3.digitaloceanspaces.com
# S3_ALIAS_HOST=alice.nyc3.cdn.digitaloceanspaces.com
# 或者 S3_ALIAS_HOST=你自己的反代地址

#号是注释行。我自己是不用它那个CDN的,所以两个加#的行我都不用

@flyover 关于反代,我认为实际上没有必要。个人站没有必要非得把bucket藏起来,bgme以前也是没有藏的。反代主要目的是,把云存储地址藏起来,还有就是加速国内访问,但现在DigitalOcean速度也不快。

@dmonad 太感谢啦!我先观察一下我这个站的使用情况!
(主要是开头两天涨得确实有些快😂 想学习一下,以后备用。)

个人实例建设心得 Part 2 媒体文件上云 

@flyover @bgme @dmonad @star @neb nginx 配置在 /etc/nginx 这是一般的默认位置,用 root 修改之后 systemctl reload nginx 来重新加载配置;实际上要做的事情是给你用的存储做一个反向代理,和一开始建站的时候干的事情差不多,但要更简单一些

比如我站的栗子 pastebin.com/c8w8ZZwn (里面域名和 bucket 名之类的抹掉了,需要自己修改)

个人实例建设心得(那些年草履虫本虫踩过的雷) 

@flyover 恭喜恭喜
Sign in to participate in the conversation
蓝盒子

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!