Closed19

HolloをRailwayにデプロイする(2025年1月時点)

yamanokuyamanoku

とりま実際にデプロイして挙動を見てみたいということで一番簡易的なRailwayへのデプロイという手段を選択した。

https://docs.hollo.social/ja/install/railway/

yamanokuyamanoku

自分はAmazon Route 53でドメイン管理をしておりhollo.yamanoku.netとして扱おうと思っていた。
リソース管理も同じサービスのが都合がよいのでAmazon S3を活用することにした。

yamanokuyamanoku

動かすために必要となる環境変数を載せます

  • S3_BUCKET
  • S3_ENDPOINT_URL
  • ASSET_URL_BASE
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • S3_REGION

以下から何の環境変数なのか、何の値が入るのかの説明を載せていきます。

yamanokuyamanoku

S3_BUCKET

S3互換オブジェクトストレージのバケット名の環境変数。
Amazon S3でバケットを作成するときバケット名を指定するのでそれが値になります。

私はhollo-backetsというS3バケットを作成しました。

yamanokuyamanoku

S3_ENDPOINT_URL

S3互換オブジェクトストレージのエンドポイントURL。
https://s3.{resion}.amazonaws.com という形で resion に作成時のリージョン名が入ります。

私はアジアパシフィック(東京)のため https://s3.ap-northeast-1.amazonaws.com になります。

yamanokuyamanoku

ASSET_URL_BASE

メディアファイルを提供するためのURL。
S3_BUCKETS3_ENDPOINT_URLを合わせた形になります。

私は https://hollo-backets.s3.ap-northeast-1.amazonaws.com という形になります。

yamanokuyamanoku

AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY

S3へファイルをアップロード、更新、削除するために必要となるアクセスキーとシークレットキー。

まずはIAMでユーザーを作成します。ユーザー名を入力して作成しておきます。

作成したユーザーにS3への書き込みができるIAMポリシーを付与してあげる必要があります。

ユーザー名から詳細ページに移動し、許可タブ内に「許可を追加する」より「インラインポリシー」を作成します。

ユーザーに割り当てられたポリシーの一覧を表示し、新規ポリシーを追加したり、既存のポリシーを編集したりできる画面。ポリシーの種類や適用範囲などを管理できる。

ポリシーエディタを「JSON」にして以下を登録します。

AWS IAMポリシーをJSON形式で編集できる画面。サービス、アクション、リソースを指定してアクセス許可を設定する。ビジュアルエディタとJSONエディタを切り替えて編集可能である。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "VisualEditor0",
			"Effect": "Allow",
			"Action": [
				"s3:PutObject",
				"s3:GetObject",
				"s3:ListBucket",
				"s3:DeleteObject",
			],
			"Resource": [
				"arn:aws:s3:::hollo-backets",
				"arn:aws:s3:::hollo-backets/*"
			]
		}
	]
}

Resourceについては私のバケット名となるので、実際に作成した自身のS3バケット ARNに変更してください。

次にユーザー詳細画面より「アクセスキーを作成」に移動します。
今回は「AWS の外部で実行されるアプリケーション」を選択します。

AWSアクセスキーが利用される主なユースケースの一覧。AWS CLI、ローカルコード、AWSコンピュートサービス、サードパーティサービス、AWSの一部で実行されるアプリケーションなど、様々な利用シーンが挙げられている。

次の「説明タグ値」はわかりやすい名前にしておくか、未入力のまま進めます。

最後にアクセスキーとシークレットキーが表示されるのでそれをそれぞれの環境変数に設定しておきます。

AWSのアクセスキーとシークレットアクセスキーに関する情報が表示されている。

yamanokuyamanoku

S3_REGION

S3互換オブジェクトストレージのリージョン名。

この環境変数は入力必須になっていませんが、デフォルトでautoとなっているため、リージョン名を自分のものにする必要があります。この環境変数が設定できていないとAmazon S3への書き込みが失敗してしまう可能性があります(私の場合はそのようなエラーがRailwayのログより出ており気づきました)。

  code: 'E_CANNOT_WRITE_FILE',

  [cause]: AuthorizationHeaderMalformed: The authorization header is malformed; the region 'auto' is wrong; expecting 'ap-northeast-1'

私はアジアパシフィック(東京)のため ap-northeast-1 を設定しました。

yamanokuyamanoku

デプロイが完了するとRailwayのURLが提示されます。

{production-name}.up.railway.app

もしカスタムドメインを付与したい場合は公式ドキュメントを参照ください。

yamanokuyamanoku

デプロイが問題がなければ /setup​ にアクセスしてログイン情報を登録、アカウントの設定をします。

ドメインとユーザーアカウントIDを合わせたものがアカウント固有のURLとなります。
私の場合は https://hollo.yamanoku.net/@yamanoku となります。

このスクラップは12日前にクローズされました