banner
老孙

老孙博客

资深网民孙先生
mastodon
email

在fly.io部署Gotosocial

關於 Gotosocial#

GoToSocial 是一個非常輕量(輕量到甚至沒有使用者介面,需要使用第三方程式登入、相容 Mastodon 應用程式進行使用)的 ActivityPub 聯邦社交網路程式,自建 GoToSocial 可以避免您的資訊因為所在實例倒閉、不可抗力等原因化為烏有。

準備#

  • 註冊 Fly.io 帳號,並綁卡(避免濫用);
  • 註冊 Cloudflare 並啟用 R2,啟用 R2 需要綁卡。新建一個儲存桶並建立一個 API 令牌。
  • 註冊 render.com 並新建一個 POSTGRESQL 資料庫,並記錄下資料庫密碼等資訊

安裝 flyctl#

  • Linux
curl -L https://fly.io/install.sh | sh
  • macOS
curl -L https://fly.io/install.sh | sh
  • Windows,需要開啟 RemoteSigned: 管理員執行
 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
powershell -Command "iwr https://fly.io/install.ps1 -useb | iex"

登入#

flyctl auth login

# 若登入失敗使用
# flyctl auth login -i 
# 輸入帳號密碼進行登入

建立 APP#

YOURAPPNAME更改為自己希望設定的名稱

flyctl launch --name YOURAPPNAME --image=superseriousbusiness/gotosocial:latest --region hkg --no-deploy

建立儲存卷#

flyctl volumes create social_data --region hkg --size 1

編輯配置#

編輯根目錄下的 fly.toml 配置檔案,參考下方

app = "gotos" ## 自定義名稱
primary_region = "hkg" ##伺服器節點,當前為香港

[experimental]
  vm = true

[build]
  image = "superseriousbusiness/gotosocial:latest"

[env]
  GTS_DB_ADDRESS = "#資料庫地址"
  GTS_DB_DATABASE = "#資料庫名稱"
  GTS_DB_PORT = "5432"
  GTS_DB_TLS_MODE = "enable"
  GTS_DB_TYPE = "postgres"
  GTS_DB_USER = "資料庫使用者名稱"
  GTS_HOST = "GTS的域名"
  GTS_LETSENCRYPT_ENABLED = "false"
  GTS_STORAGE_BACKEND = "s3"
  GTS_STORAGE_S3_BUCKET = "BUCKET名稱"
  GTS_STORAGE_S3_ENDPOINT = "#S3 API"
  GTS_STORAGE_S3_ACCESS_KEY = "#api-tokens"
  GTS_STORAGE_S3_SECRET_KEY = "#api-tokens"
  GTS_STORAGE_S3_PROXY = "true"

[[mounts]]
  source = "social_data"
  destination = "/gotosocial/storage"

[http_service]
  internal_port = 8080
  force_https = true
  auto_stop_machines = false
  auto_start_machines = true
  min_machines_running = 1
  processes = ["app"]

以上配置中GTS_STORAGE_S3_ENDPOINT不需要帶https:和最後的/BUCKET名稱

部署#

flyctl deploy

啟動成功後會顯示一個 URL, 能成功訪問則代表部署成功。

建立使用者和管理員#

fly.toml 檔案目錄執行

flyctl ssh console
  • 建立使用者
/gotosocial/gotosocial admin account create --username YOUR_USERNAME --email YOUR@EMAIL.COM --password 'SOME_VERY_GOOD_PASSWD'

YOUR_USERNAME為使用者名稱
YOUR@EMAIL.COM為郵箱
SOME_VERY_GOOD_PASSWD為密碼,需設定足夠複雜,太簡單會提示密碼不夠安全,需重新設定

  • 設定管理員
/gotosocial/gotosocial admin account promote --username YOUR_USERNAME

演示#

https://m.ima.cm

https://m.ima.cm/@jkjoy

下載資料庫#

fly.toml 檔案目錄執行

flyctl sftp get /gotosocial/storage/sqlite.db
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。