Open6

Synology DS223にForgejoをインストールしたい会

okuokuokuoku

まぁDockerとか入ってるし簡単でしょ多分。

okuokuokuoku

イメージの取得

DSMからやる方法はわからなかったのでコマンドラインで。。 sudo su して、

ash-4.4# docker pull codeberg.org/forgejo/forgejo:11

この方法で取得しても、ちゃんとDSMのContainer managerに表示される。

okuokuokuoku

コンテナの作成

/data にファイルを見せればOK。

okuokuokuoku

Oktaで認証させたい

Oktaのadmin consoleで新しいアプリ統合を用意して、OpenID Connect な Webアプリを指定する:

  • サインインリダイレクトURI: http://<Forgejo側のIPアドレスとポート>/user/oauth2/適当に何か文字列/callback -- 設定の下部に書かれている (★Forgejoに認証ソースを登録してから再度設定する)
  • "Organizationの全員にアクセスを許可" -- 別に後からアサインしても良いけど。。

登録すると、クライアントシークレット等が発行される。Forgejoに戻って、新しい認証ソースを追加する:

  • 認証タイプ: OAuth2
  • 認証名: 適当に何か文字列 ★ これを入れないとForgejoに表示されるcallback URLが正常に埋まらない
  • OAuth2プロバイダー: OpenID Connect
  • クライアントID と クライアントシークレットはOktaが発行したもの
  • OpenID Connect自動検出URL: https://<テナント名>.okta.com/.well-known/openid-configuration

これで、ForgejoのサインインページにOktaが追加されて、サインインできるようになる。

他のOpenID Connectプロバイダでも同様に設定できるはず。

okuokuokuoku

Git Credential Managerへの登録

Forgejoは最初からGCMや git-credential-oauth をサポートしている。

https://forgejo.org/docs/latest/user/oauth2-provider/#git-authentication

$ git config --global credential.<ForgejoのURL>.oauthClientId e90ee53c-94e2-48ac-9358-a874fb9e0662
$ git config --global credential.<ForgejoのURL>.oauthAuthorizeEndpoint "/login/oauth/authorize"
$ git config --global credential.<ForgejoのURL>.oauthTokenEndpoint "/login/oauth/access_token"

... これは Windowsだと上手く動かなかった

oauthTokenEndpoint = C:/Program Files/Git/login/oauth/access_token

みたいにパス展開されてしまう。手動で .gitconfig

[credential "<ForgejoのURL>"]
        oauthClientId = e90ee53c-94e2-48ac-9358-a874fb9e0662
        oauthAuthorizeEndpoint = /login/oauth/authorize
        oauthTokenEndpoint = /login/oauth/access_token

と書いた方が良いんだろう多分。

あと、なんか動かないと思ったら手元のGCMが超古かった:

$ git-credential-manager version
Git Credential Manager for Windows version 1.20.0

okuokuokuoku

Conan2レジストリへのログイン

ドキュメントは古いので使えない。

トークンの発行

2要素認証を使っている場合はパスワードは使えないのでトークンを発行する。アプリケーション → アクセストークンで "許可の選択" から package を "読み取りと書き込み" にしたトークンを生成させる。生成したトークンは画面に一度だけ表示されるので、それをパスワードマネージャーなりなんなりに突っ込んでおく。

リモートの追加

まず、 remote add <リモート名> のようにしてremoteを追加する。

conan remote add local https://<Forgejoのホスト名>/api/packages/okuoku/conan

その後、 login コマンドでログインする。

conan remote login local okuoku

パスワードとして発行したトークンを入力する。