From 5888f17db74f7f13308fe866990226bda89f649f Mon Sep 17 00:00:00 2001 From: Rikuoh Tsujitani Date: Tue, 28 Nov 2023 10:13:24 +0900 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=A8=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ã«æ‰‹ãŒå±Šãインスタンスé‹ç”¨ã®åˆç´šãƒ†ã‚¯ãƒ‹ãƒƒã‚¯é›†.md | 182 ++++++++---------- 1 file changed, 78 insertions(+), 104 deletions(-) diff --git a/content/post/ã‹ã‚†ã„ã¨ã“ã‚ã«æ‰‹ãŒå±Šãインスタンスé‹ç”¨ã®åˆç´šãƒ†ã‚¯ãƒ‹ãƒƒã‚¯é›†.md b/content/post/ã‹ã‚†ã„ã¨ã“ã‚ã«æ‰‹ãŒå±Šãインスタンスé‹ç”¨ã®åˆç´šãƒ†ã‚¯ãƒ‹ãƒƒã‚¯é›†.md index 8e8c6b4..d0ff81c 100644 --- a/content/post/ã‹ã‚†ã„ã¨ã“ã‚ã«æ‰‹ãŒå±Šãインスタンスé‹ç”¨ã®åˆç´šãƒ†ã‚¯ãƒ‹ãƒƒã‚¯é›†.md +++ b/content/post/ã‹ã‚†ã„ã¨ã“ã‚ã«æ‰‹ãŒå±Šãインスタンスé‹ç”¨ã®åˆç´šãƒ†ã‚¯ãƒ‹ãƒƒã‚¯é›†.md @@ -46,110 +46,84 @@ ssl_certificate_key /etc/ssl/private/ã‚ã‚“ãŸã®ãƒ‰ãƒ¡ã‚¤ãƒ³å.key; 編集後ã€å¿µã®ãŸã‚ã«`nginx -t`ã§ã‚¨ãƒ©ãƒ¼ã‚’確èªã—ã¦å•é¡ŒãŒãªã‘ã‚Œã°`systemctl restart nginx`ã§nginxã‚’å†èµ·å‹•ã™ã‚‹ã€‚Web UIã«æŽ¥ç¶šã—ã¦è¨¼æ˜Žæ›¸ã®æœ‰åŠ¹æ€§ãŒç¢ºèªã§ããŸã‚‰ä½œæ¥­ã¯å®Œäº†ã ã€‚ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +## データベースã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’Cloudflareã«ä¸¸æŠ•ã’ã™ã‚‹ +>**å‰æ** +>・Docker環境ã§ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å‹•ã‹ã—ã¦ã„る。 + +**â– 2023å¹´11月28日改訂 +以å‰ã¯ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ツールã«wranglerを採用ã—ã¦ã„ãŸãŒã€è»¢é€å®¹é‡ã«åˆ¶é™ãŒã‚ã‚‹ã“ã¨ã‹ã‚‰rcloneを利用ã™ã‚‹å½¢ã«æ”¹ã‚ãŸã€‚** + + +誉れ高ã丸投ã’シリーズãã®2。ã©ã‚“ã©ã‚“丸投ã’ã—ã¦ã„ã“ã†ã€‚我々ã¯ã™ã§ã«å·¨äººã®è‚©ã«ä¹—ã£ã¦ã„ã‚‹ã—ã€ã©ã†ã›ä»Šã•ã‚‰é™ã‚Šã‚‹ã“ã¨ãªã©ã§ããªã„。Cloudflareã®ãƒšãƒ¼ã‚¸ã§**R2 → 概è¦**ã¨é€²ã‚“ã§ãƒã‚±ãƒƒãƒˆã‚’作æˆã™ã‚‹ã€‚ãƒã‚±ãƒƒãƒˆã®åå‰ã¯ãªã‚“ã§ã‚‚構ã‚ãªã„。ã¤ã„ã§ã«è¨­å®šã‹ã‚‰è‡ªå‹•å‰Šé™¤ã‚’スケジュールã™ã‚‹ã¨å®¹é‡ã®ç¯€ç´„ã«ãªã‚‹ã€‚ + +![](/img/201.png) + +次ã«rcloneã‚’å°Žå…¥ã™ã‚‹ã€‚rcloneã¯å„種オンラインストレージã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’転é€ã™ã‚‹ãƒ„ールã ã€‚Amazon S3ã«å¯¾å¿œã—ã¦ã„ã‚‹ãŸã‚ã€S3互æ›ã‚’æŒã¤Cloudflare R2ã«ã‚‚使用ã§ãる。 + +```zsh +$ apt install rclone +``` + +導入後ã€é€šå¸¸ã¯`rclone config`ã§å¯¾è©±å½¢å¼ã®ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ウィザードを起動ã™ã‚‹æ–¹æ³•ãŒä¸€èˆ¬çš„ã ãŒã€æœ¬ç¨¿ã§ã¯`root/.config/rclone/rclone.conf`ã«å‰ã‚‚ã£ã¦è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã¶ã¡è¾¼ã‚“ã§ãŠã。ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯è‡ªå‹•åŒ–ã®éƒ½åˆä¸Šã€root以下ã«ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚る。 + +```ini +[r2] +type = s3 +provider = Cloudflare +access_key_id = ã‚ã‚“ãŸã®ã‚¢ã‚¯ã‚»ã‚¹ã‚­ãƒ¼ +secret_access_key = ã‚ã‚“ãŸã®ã‚·ãƒ¼ã‚¯ãƒ¬ãƒƒãƒˆã‚­ãƒ¼ +endpoint = https://ã‚ã‚“ãŸã®S3API.r2.cloudflarestorage.com +acl = private +``` + +アクセスキーãŠã‚ˆã³ã‚·ãƒ¼ã‚¯ãƒ¬ãƒƒãƒˆã‚­ãƒ¼ã¯R2ã®ãƒˆãƒƒãƒ—ç”»é¢å³å´ã®ã€ŒR2 API トークンを管ç†ã€ã‹ã‚‰ç™ºè¡Œã™ã‚‹ã€‚発行直後ã®ä¸€åº¦ãã‚Šã—ã‹è¡¨ç¤ºã•ã‚Œãªã„ã®ã§ç´›å¤±ã«æ³¨æ„ã™ã‚‹ã“ã¨ã€‚準備ãŒæ•´ã„次第ã€ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—スクリプトã®ä½œæˆã«ç§»ã‚‹ã€‚ + +```zsh +#!/bin/env bash +set -euo pipefail + +# Configurable variables +INSTANCE_DIR="/home/ã‚ã‚“ãŸã®ãƒ¦ãƒ¼ã‚¶å" +BACKUP_DIR="/home/ã‚ã‚“ãŸã®ãƒ¦ãƒ¼ã‚¶å/ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ファイルã®ä¿å­˜å ´æ‰€" +BACKUP_LIFETIME_DAYS=ローカルã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä¿å­˜ã—ãŸã„日数 +DATE_FORMAT="%Y%m%d_%H-%M-%S" +DB_CONTAINER="mastodon-db-1" +DB_USER="mastodon_user" +DB_NAME="mastodon_db" +RCLONE_DESTINATION="r2:R2ã®ãƒã‚±ãƒƒãƒˆå" + +# Error handling +trap 'echo "😢 An error occurred. Exiting." && exit 1' ERR + +# Start backup +echo "🚀 Backup ready..." +cd "$INSTANCE_DIR" + +# Database backup +BACKUP_FILE="$BACKUP_DIR/$(date +$DATE_FORMAT).gz" +docker exec $DB_CONTAINER pg_dump -Fc -U $DB_USER $DB_NAME | gzip -c >"$BACKUP_FILE" +echo "✅ Success!" + +# Sync backup +echo "🔄 Syncing..." +find "$BACKUP_DIR" -mtime +$BACKUP_LIFETIME_DAYS -name "*.gz" -exec rm -f {} \; +rclone copy "$BACKUP_DIR" $RCLONE_DESTINATION + +echo "👠Mastodone." +``` + +Mastodon以外ã®AP実装をé‹ç”¨ã—ã¦ã„る人ã¯å„自ã€æ°—ã®åˆ©ã„ãŸã‚¸ãƒ§ãƒ¼ã‚¯ã§æœ«å°¾ã®å†…容を置ãæ›ãˆãªã‘ã‚Œã°ãªã‚‰ãªã„。(義務) 上記ã®ã‚¹ã‚¯ãƒªãƒ—トをcronã«ç™»éŒ²ã™ã‚‹ã¨ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—作業ã®è‡ªå‹•åŒ–ãŒé”æˆã§ãる。 + +```zsh +# rootã§å®Ÿè¡Œã™ã‚‹ã€‚ +sudo crontab -u root -e + +# 毎日åˆå‰5時ã«æŒ‡å®šã•ã‚ŒãŸå ´æ‰€ã®ã‚¹ã‚¯ãƒªãƒ—トを実行ã™ã‚‹ã€‚別ã«å¥½ããªæ™‚é–“ã§ã„ã„。 +0 5 * * * sh /home/ユーザ/ファイル.sh +``` + +最高ã ã­ã€‚é¢å€’ãªã“ã¨ã¯å…¨éƒ¨æ©Ÿæ¢°ã«ã‚„らã›ã‚ˆã†ã€‚ãŸã ã—ã€cronã®ã‚„ã¤ã¯æ²¹æ–­ã™ã‚‹ã¨è£åˆ‡ã‚‹ã®ã§ãŸã¾ã«Cloudflareã®ãƒã‚±ãƒƒãƒˆã‚’見ã«è¡Œã£ãŸæ–¹ãŒã„ã„ã‹ã‚‚ã—ã‚Œãªã„。 ## Mastodonã®ãƒªãƒ¢ãƒ¼ãƒˆãƒ¡ãƒ‡ã‚£ã‚¢ã‚’確èªã—ã¦å‰Šé™¤ã™ã‚‹ >**å‰æ**