From bcbaf1fe35e6e55ea0dc0aa9664176e07c5bd004 Mon Sep 17 00:00:00 2001 From: Rikuoh Date: Thu, 31 Aug 2023 09:44:49 +0900 Subject: [PATCH] =?UTF-8?q?=E7=94=BB=E5=83=8F=E3=83=AA=E3=82=B5=E3=82=A4?= =?UTF-8?q?=E3=82=BA=E5=88=B6=E9=99=90=E8=A7=A3=E9=99=A4=E3=81=AB=E3=81=A4?= =?UTF-8?q?=E3=81=84=E3=81=A6=E8=BF=BD=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ã«æ‰‹ãŒå±Šãインスタンスé‹ç”¨ã®åˆç´šãƒ†ã‚¯ãƒ‹ãƒƒã‚¯é›†.md | 55 ++++++++++++++----- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/content/post/ã‹ã‚†ã„ã¨ã“ã‚ã«æ‰‹ãŒå±Šãインスタンスé‹ç”¨ã®åˆç´šãƒ†ã‚¯ãƒ‹ãƒƒã‚¯é›†.md b/content/post/ã‹ã‚†ã„ã¨ã“ã‚ã«æ‰‹ãŒå±Šãインスタンスé‹ç”¨ã®åˆç´šãƒ†ã‚¯ãƒ‹ãƒƒã‚¯é›†.md index 8c99d08..f72b2fe 100644 --- a/content/post/ã‹ã‚†ã„ã¨ã“ã‚ã«æ‰‹ãŒå±Šãインスタンスé‹ç”¨ã®åˆç´šãƒ†ã‚¯ãƒ‹ãƒƒã‚¯é›†.md +++ b/content/post/ã‹ã‚†ã„ã¨ã“ã‚ã«æ‰‹ãŒå±Šãインスタンスé‹ç”¨ã®åˆç´šãƒ†ã‚¯ãƒ‹ãƒƒã‚¯é›†.md @@ -22,13 +22,13 @@ tags: ['tech'] æš—å·éµãŒä½œæˆã•ã‚Œã‚‹ã¨ç”»é¢ä¸Šã«æ–‡å­—列ãŒç¾ã‚Œã‚‹ã®ã§ã€é€Ÿã‚„ã‹ã«ã‚³ãƒ”ペã—ã¦æŒ‡ç¤ºé€šã‚Šã®æ‹¡å¼µå­ã§ä¿å­˜ã™ã‚‹ã€‚ã“ã®ç”»é¢ã¯å†ã³é–‹ã‘ãªã„ãŸã‚ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å‹•ã‹ã—ã¦ã„るサーãƒä¸Šã ã‘ã§ãªã安全ãªãƒ­ãƒ¼ã‚«ãƒ«ç’°å¢ƒã«ã‚‚予備をä¿å­˜ã—ã¦ãŠãã®ãŒæœ›ã¾ã—ã„。サーãƒã«ãã‚Œãžã‚Œã®éµã‚’ä¿å­˜ã—ãŸã‚‰ã€å…ˆã«Let's Encryptã§ç™ºè¡Œã—ãŸSSL証明書を削除ã™ã‚‹ã€‚以é™ã®æ“作ã¯root権é™ã§è¡Œã†ã€‚ -```bash +```zsh $ certbot revoke --cert-path /etc/letsencrypt/live/ã‚ã‚“ãŸã®ãƒ‰ãƒ¡ã‚¤ãƒ³å/cert.pem ``` 実行確èªã‚’承諾ã™ã‚‹ã¨è¨¼æ˜Žæ›¸ã¯ç›´ã¡ã«å¤±åŠ¹ã•ã‚Œã‚‹ã€‚cronを設定ã—ã¦ã„る人ã¯`crontab`を実行ã—ã¦è‡ªå‹•æ›´æ–°ã‚‚忘れãšã«è§£é™¤ã—よã†ã€‚続ã„ã¦ã€nginxã®è¨­å®šã«é€²ã‚€ã€‚手始ã‚ã«å¿…è¦ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’作æˆã—ã¦Cloudflareã®æš—å·éµã‚’移動ã™ã‚‹ã€‚ -```bash +```zsh $ mkdir /etc/ssl/certs $ mkdir /etc/ssl/private $ mv ã‚ã‚“ãŸã®ãƒ‰ãƒ¡ã‚¤ãƒ³å.pem /etc/ssl/certs/ã‚ã‚“ãŸã®ãƒ‰ãƒ¡ã‚¤ãƒ³å.pem @@ -37,7 +37,7 @@ $ mv ã‚ã‚“ãŸã®ãƒ‰ãƒ¡ã‚¤ãƒ³å.key /etc/ssl/private/ã‚ã‚“ãŸã®ãƒ‰ãƒ¡ã‚¤ãƒ³ 移動ã—ãŸã‚‰ä»»æ„ã®ã‚¨ãƒ‡ã‚£ã‚¿ã§nginxã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’編集ã™ã‚‹ã€‚ -```bash +```zsh $ vim /etc/nginx/sites-available/ã‚ã‚“ãŸã®ãƒ‰ãƒ¡ã‚¤ãƒ³å.conf ssl_certificate /etc/ssl/certs/ã‚ã‚“ãŸã®ãƒ‰ãƒ¡ã‚¤ãƒ³å.pem; @@ -56,7 +56,7 @@ ssl_certificate_key /etc/ssl/private/ã‚ã‚“ãŸã®ãƒ‰ãƒ¡ã‚¤ãƒ³å.key; 次ã«wranglerã‚’å°Žå…¥ã™ã‚‹ã€‚wranglerã¯Cloudflareã®Workerã‚’CLIã§å‹•ã‹ã™ãƒ„ールã ãŒã€**ã»ã¨ã‚“ã©ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹é‹å–¶è€…ãŒä½¿ç”¨ã—ã¦ã„ã‚‹Ubuntuã‚„Debianã§ã¯ç°¡å˜ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒè¡Œãˆãªã„。** aptコマンドã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã‚‹Node.jsã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒå¤ã™ãŽã‚‹ãŸã‚ã«ã‚¨ãƒ©ãƒ¼ã‚’èµ·ã“ã—ã¦ã—ã¾ã†ã®ã ã€‚ã—ãŸãŒã£ã¦ã€wranglerã‚’å°Žå…¥ã™ã‚‹**å‰ã«**最新ã®Node.jsをインストールã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。 -```bash +```zsh # ã™ã§ã«å¤ã„Node.jsãŒå…¥ã£ã¦ã„ã‚‹å ´åˆã¯ã‚¢ãƒ³ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã€‚ $ apt purge nodejs @@ -68,7 +68,7 @@ dpkgã«æ€’られãŒç™ºç”Ÿã—ãŸæ™‚ã¯`sudo dpkg -i --force-overwrite /var/cache/ 最新ã®Node.jsを手ã«å…¥ã‚ŒãŸã¨ã“ã‚ã§ã‚ˆã†ã‚„ãwranglerã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«å…¥ã‚‹ã€‚npmã‚’å°Žå…¥ã—ã¦ã„ãªã‘ã‚Œã°ã“れも`apt install npm`ã§äºˆã‚インストールã™ã‚‹ã€‚ -```bash +```zsh $ npm create cloudflare@latest # ã“ã®å¾Œã€è‰²ã€…訊ã‹ã‚Œã‚‹ãŒæŒ‡å®šã™ã¹ãé¸æŠžè‚¢ã¯ä»¥ä¸‹ã®é€šã‚Šã€‚ @@ -92,21 +92,21 @@ $ npm create cloudflare@latest 一旦ã€æ„šç›´ã«ã‚³ãƒ”ペã—ãŸURLã§èªè¨¼ã‚’è¡Œãªã£ã¦å¤±æ•—ã—ã¦ã¿ã‚‹ã¨ã€ãƒ–ラウザã®ã‚¢ãƒ‰ãƒ¬ã‚¹æ¬„ã‹ã‚‰localhostã®8976番ãƒãƒ¼ãƒˆã¨é€šä¿¡ã‚’試ã¿ã¦ã„ãŸå½¢è·¡ãŒã†ã‹ãŒãˆã‚‹ã€‚ã¤ã¾ã‚Šã€ã“ã®URLをサーãƒã®å›ºå®šIPアドレスã«æ›¸ãæ›ãˆã‚Œã°æœŸå¾…通りã®æŒ™å‹•ã«å¤‰åŒ–ã™ã‚‹ã¨è€ƒãˆã‚‰ã‚Œã‚‹ã€‚ãã“ã§ã¾ãšã¯ã‚µãƒ¼ãƒå´ã®8976番ãƒãƒ¼ãƒˆã‚’é–‹ã‘ã¦æº–備を整ãˆã‚‹ã€‚ufwã¯ã¨ã¦ã‚‚簡便ãªãƒ•ã‚¡ã‚¤ã‚¢ã‚¦ã‚©ãƒ¼ãƒ«ãƒ•ãƒ­ãƒ³ãƒˆã‚¨ãƒ³ãƒ‰ãªã®ã§ã€çŸ¥ã‚‰ãªãã¨ã‚‚ãœã²å°Žå…¥ã—ã¦ã¿ã¦ã»ã—ã„。 -```bash +```zsh $ ufw allow 8976 $ ufw reload ``` ãƒãƒ¼ãƒˆã‚’é–‹ã„ãŸçŠ¶æ…‹ã§ä¾‹ã®URLã®`localhost:8976`ã®éƒ¨åˆ†ã‚’`ã‚ã‚“ãŸã®ã‚µãƒ¼ãƒã®IPアドレス:8976`ã«æ›¸ãæ›ãˆã¦ã‚¨ãƒ³ã‚¿ãƒ¼ã‚’押ã™ã€‚ã†ã¾ãã„ã‘ã°ãŸã¡ã¾ã¡èªè¨¼ãŒå®Œäº†ã—ã¦ã‚µãƒ¼ãƒä¸Šã§wranglerãŒä½¿ãˆã‚‹ã‚ˆã†ã«ãªã‚‹ã€‚é–‹ã„ãŸãƒãƒ¼ãƒˆã¯ã‚‚ã†ä½¿ã‚ãªã„ã®ã§ç¢ºå®Ÿã«é–‰ã˜ã¦ãŠã。 -```bash +```zsh $ ufw deny 8976 $ ufw reload ``` 以é™ã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å‹•ã‹ã—ã¦ã„るユーザã«åˆ‡ã‚Šæ›¿ãˆã¦éžroot環境ã§ä½œæ¥­ã‚’è¡Œã†ã€‚ã“ã“ã¾ã§æ¥ãŸã¨ã“ã‚ã§ã€è©¦ã—ã«ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—作業を手動ã§å®Ÿè¡Œã™ã‚‹ã€‚ -```bash +```zsh # pg_dumpã§ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’å–å¾—ã—ã¦gzipã§å›ºã‚る。userã¨dbã®éƒ¨åˆ†ã¯å„自ã®ç’°å¢ƒã«åˆã‚ã›ã¦å¤‰æ›´ã™ã‚‹ã“ã¨ã€‚ $ sudo docker exec mastodon-db-1 pg_dump -Fc -U user db | gzip -c >> backup.gz # ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ファイルã«æ¨©é™ã‚’与ãˆã‚‹ã€‚ @@ -121,7 +121,7 @@ $ rm /home/ユーザ/インスタンスã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª/backup.gz 一連ã®å‹•ä½œãŒé–“é•ã„ãªã完了ã™ã‚‹ã®ã‚’確èªã—ãŸä¸Šã§ã€åŒæ§˜ã®å‡¦ç†å†…容をシェルスクリプトã«ã—ãŸãŸã‚る。ã“ã‚Œã§ã„ã¤ã§ã‚‚ワンタッãƒã§ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—を巨人ã®å£ã«ã­ã˜è¾¼ã‚ã‚‹ã¨ã„ã†å¯¸æ³•ã ã€‚作æˆã—ãŸã‚¹ã‚¯ãƒªãƒ—トã¯`chmod +x ファイルå.sh`ã§å®Ÿè¡Œæ¨©é™ã‚’与ãˆã¦ã‹ã‚‰`sudo ./ファイルå.sh`ã§ç™ºå‹•ã™ã‚‹ã€‚ -```bash +```zsh #!/bin/bash echo "Backup begin..." @@ -140,7 +140,7 @@ bash 上記ã®ã‚¹ã‚¯ãƒªãƒ—トをcronã«ç™»éŒ²ã™ã‚‹ã¨ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—作業ã®è‡ªå‹•åŒ–ãŒé”æˆã§ãる。 -```bash +```zsh # rootã§å®Ÿè¡Œã™ã‚‹ã€‚ sudo crontab -u root -e @@ -157,7 +157,7 @@ sudo crontab -u root -e Web UIã®ã‚µãƒ¼ãƒè¨­å®šã§ã‚‚リモートメディアを自動削除ã™ã‚‹ã‚ˆã†ã«ã§ãã‚‹ãŒã€å…·ä½“çš„ã«ä½•GBã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãŒå­˜åœ¨ã—ã¦ã„ã¦ä½•GBã¶ã‚“減らã›ãŸã®ã‹åˆ¤ã‚‰ãªã„ã¨ã“ã‚ãŒã¡ã‚‡ã£ã¨ç‰©è¶³ã‚Šãªã„。下記ã®å¹³æ˜“ãªã‚¹ã‚¯ãƒªãƒ—トã§ãれを補ãˆã‚‹ã€‚ -```bash +```zsh #!/bin/bash cd /home/ユーザ/インスタンスã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª/ @@ -180,7 +180,7 @@ echo "Done." Mastodonã¯æŠ•ç¨¿ã®èª­ã¿è¾¼ã¿æ•°ã«åˆ¶é™ãŒã‚る。ãŠãらãè² è·å¯¾ç­–ã ã‚ã†ã€‚éŽåŽ»ã®æŠ•ç¨¿ã¯æœ€å¤§ã§800ã¾ã§ã—ã‹èª­ã¿è¾¼ã‚ãªã„。ã„ã¡ãƒ¦ãƒ¼ã‚¶ã®ç«‹å ´ã§ã¯å¤‰ãˆã‚‰ã‚Œãªã„ゆãˆä¸ä¾¿ã‚’被ã£ã¦ã„る者も少ãªããªã„ã¨æ€ã‚れるãŒã€æˆ‘々ã¯åœ§å€’的権力を誇る鯖缶ã ã€‚ã„ãらã§ã‚‚好ããªæ•°å­—ã«æ›¸ãæ›ãˆã‚‰ã‚Œã‚‹ã€‚ -```bash +```ruby # mastodon/app/lib/feed_manager.rb MAX_ITEMS = 2000 @@ -189,13 +189,38 @@ MAX_ITEMS = 2000 ã•ã—ã‚ãŸã‚Šåƒ•ã¯2000ã«ã—ãŸã€‚編集後ã¯`sudo docker-compose build`ã§å†ãƒ“ルドã—ãªã‘ã‚Œã°å映ã•ã‚Œãªã„。ã“ã‚Œã§æ·±å¤œå¸¯ã«è“„ç©ã•ã‚ŒãŸæŠ•ç¨¿ã®ä¸€éƒ¨ã—ã‹èª­ã‚ãªã„ãªã©ã¨ã„ã†ç†ä¸å°½ã‹ã‚‰è§£ã放ãŸã‚Œã‚‹ã€‚ +## Mastodonã®ç”»åƒãƒªã‚µã‚¤ã‚ºåˆ¶é™ã‚’破壊ã™ã‚‹ +>**å‰æ** +>・Docker環境ã§Mastodonインスタンスを動ã‹ã—ã¦ã„る。 + +Mastodonã¯ç”»åƒã®æœ€å¤§è§£åƒåº¦ãŒ1080p相当ã«æŠ‘ãˆã‚‰ã‚Œã¦ã„る。多ãã®ãƒ¦ãƒ¼ã‚¶ã‚’é™ã‚‰ã‚ŒãŸãƒªã‚½ãƒ¼ã‚¹ã§æ”¯ãˆã‚‹çŠ¶æ³ä¸‹ã§ã¯ã‚„むをãˆãªã„制é™ã ãŒã€ã‚½ãƒ­ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã¯é–¢ä¿‚ãŒãªã„。4K画質相当ã¾ã§ä¸Šã’ã¦ã—ã¾ãŠã†ã€‚ + +```javascript +# resize_image.js + +const MAX_IMAGE_PIXELS = 8847360; +``` + +```ruby +# media_attachment.rb + + IMAGE_STYLES = { + original: { + pixels: 8_847_360, + file_geometry_parser: FastGeometryParser, + }.freeze, +``` + +ã“ã£ã¡ã‚‚å†ãƒ“ルドã¯å¿˜ã‚Œã¯ãªã‚‰ãªã„。もã¡ã‚ã‚“4Kを越ãˆã‚‹è§£åƒåº¦ã®ã‚«ãƒ¡ãƒ©ã‚„ディスプレイをæŒã£ã¦ã„る人ã¯8Kãªã©ã«ã—ã¦ã‚‚よã„。 + + ## Mastodonã®æ–‡å­—数上é™ã‚’破壊ã™ã‚‹ >**å‰æ** >・Docker環境ã§Mastodonインスタンスを動ã‹ã—ã¦ã„る。 500文字もã‚ã‚Œã°å分ã¨æ€ã„ãã‚„ã€ã“ã“一番ã®æ™‚ã«è¶³ã‚Šãªã„å ´åˆãŒæ„外ã¨ã‚ã£ãŸã‚Šã™ã‚‹ã€‚実装系ã«ã‚‚よるãŒã ã„ãŸã„ã©ã‚Œã‚‚8000文字ãらã„ã¯å—ã‘å–れるらã—ã„ã®ã§ä¸è¦ã¯åˆ¶é™ã¯äºˆã‚å–り払ã£ã¦ãŠã„ãŸæ–¹ãŒæ¥½ã ã€‚ã•ã—ã‚ãŸã‚Šåƒ•ã¯9999文字ã«è¨­å®šã—ãŸã€‚ã“ã“ã§ã¯2ã¤ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’編集ã™ã‚‹ãŒã€å½“該ã®ãƒ•ã‚¡ã‚¤ãƒ«å†…を「500ã€ã§æ¤œç´¢ã™ã‚Œã°å®¹æ˜“ã«ä¿®æ­£ç®‡æ‰€ã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãる。 -```bash +```ruby # mastodon/app/javascript/mastodon/features/compose/components/compose_from.javascript return !(isSubmitting || isUploading || isChangingUpload || length(fulltext) > 9999 || (isOnlyWhitespace && !anyMedia)); @@ -204,11 +229,11 @@ return !(isSubmitting || isUploading || isChangingUpload || length(fulltext) > 9 ``` -```bash +```ruby # mastodon/app/validators/status_length_validator.rb class StatusLengthValidator < ActiveModel::Validator MAX_CHARS = 9999 ``` -ã“ã£ã¡ã§ã‚‚å†ãƒ“ルドを忘れã¦ã¯ãªã‚‰ãªã„。余談ã ãŒã€æœ€è¿‘è¯ã€…ã—ã„リニューアルを果ãŸã—ãŸMisskeyフォークã®[Firefish](https://joinfirefish.org)ã¯ä¸€çž¬ã ã‘最大文字数を2å„„5000万文字ã«è¨­å®šã§ããŸã‚‰ã—ã„。ã„ã„心æ„æ°—ã ã€‚ +余談ã ãŒã€æœ€è¿‘è¯ã€…ã—ã„リニューアルを果ãŸã—ãŸMisskeyフォークã®[Firefish](https://joinfirefish.org)ã¯ä¸€çž¬ã ã‘最大文字数を2å„„5000万文字ã«è¨­å®šã§ããŸã‚‰ã—ã„。ã„ã„心æ„æ°—ã ã€‚