Linux 使いになりたい人向けの Intel N100 ミニ PC で構築する開発環境(6)- Windows 版 Gitea
はじめに
これは、Linux 使いになりたい人向けに Intel N100 ミニ PC を使って開発環境を構築する方法を解説する記事の第6弾です。第1弾はLinux 使いになりたい人向けの Intel N100 ミニ PC で構築する開発環境(1) - 構築する開発環境について にあり、そこから第2弾へと続いています。そちらからご覧ください。
ここで使用する Intel N100 ミニ PC の仕様は次のものを前提とします。
項目 | 内容 |
---|---|
OS | Windows 11 Pro |
CPU | Intel N100 |
メモリ | 16GB |
ストレージ | SSD 512 GB |
画面出力端子 | HDMI×2 |
WiFi | 5G/2.4G |
イーサネット | RJ45×1 |
Bluetoot | BT4.2 |
USB | USB3.0×2/USB2.0×2 |
このマシンで最終的に Windows と Ubuntu Desktop が使えるように環境構築することを目指します。zenn.dev を購読している人のレベルを考えると、画面キャプチャはそれほど必要がないと考えているため少なめです。また、説明についても明示しないとわかりにくいと思われるものに絞っているので少なめです。
なお、実際に作業するときは、ネットワーク回線については数GBのデータをダウンロードしても問題ないものを使うようにしてください。作業の中には、数GBのデータをダウンロードするものも含まれてますので、テザリング環境では使用可能なパケットを使い切ってしまうこともあります。
試してみるソフトウェア
今回、Hyper-V 仮想マシンで試してみるソフトウェアは次のとおりです。
ソフトウェア名 | 説明 |
---|---|
OpenSSH Server | SSH サーバー |
Gitea | Git リポジトリ管理システム |
Gitea を Windows マシンで稼働させることを基本目標とします。Gitea を使用するにあたっては SSH クローンができるようにしたいので、OpenSSH Server も稼働させることにします。
Gitea と OpenSSH Server
前回までで Docker Desktop を使った Gitea の動作確認、試用ができたので、Windows 版をインストールして使ってみることにします。
ここで、Windows 版でも Gitea のビルトイン版の SSH サーバーが使えると思っていたのですが、実際に試してみたところ動作しませんでした。いろいろ調べてみましたが動作しない原因がよくわかりませんでした。ビルトイン版の SSH サーバーはプログラミング言語 Go で実装されているモジュールを使っているようだったので、動いても良いはずなのですが、START_SSH_SERVER = true
を指定しても起動しませんでした。
そのため、ビルトイン版を使うのは諦めて、Windows の OpenSSH Server と組み合わせて利用する方法を試してみました。そうしたところ、こちらの方法だと SSH クローンができるようになりました。ということで、この設定方法で動かすことにします。
管理者としてプログラムを実行
この後、管理者としてプログラムを実行することが何度かあるので、Git Bash や PowerShell といったシェルから管理者としてプログラムを実行する方法について説明しておきます。
最初に PowerShell
コマンドに -Command
オプションでコマンドを指定すると、そのコマンドを PowerShell で実行できることを理解しておきましょう。
PowerShell -Command <コマンド>
ここで、Start-Process
というコマンドがあり、これはパラメーターへ実行ファイルのパスを指定すると、そのファイルを実行してプロセスを開始することができます。また、このコマンドには -Verb
オプションというものがあり、このオプションへ RunAs
を指定すると、管理者としてプロセスを起動することができます。
たとえば、実行ファイルのパスに PowerShell の C:\Program Files\PowerShell\7\pwsh.exe
を指定すると、管理者として実行する PowerShell を起動することができます。
Start-Process 'C:\Program Files\PowerShell\7\pwsh.exe' -Verb RunAs
また、実行ファイルのパスに Git Bash の C:\Program Files\Git\bin\bash.exe
を指定すると、管理者として実行する Git Bash を起動することができます。
Start-Process 'C:\Program Files\Git\bin\bash.exe' -Verb RunAs
これを Git Bash、PowerShell のどちらからでも実行できるようにするには、PoserShell
コマンドと組み合わせます。
PowerShell -Command "Start-Process '実行ファイルのパス' -Verb RunAs"
このコマンドを実行すると、実行ファイルについて、「このアプリがデバイスに変更を加えることを許可しますか?」と確認する画面が表示されます。「はい」をクリックすると、管理者で実行ファイルが起動されます。
OpenSSH for Windows
Windows で OpenSSH を使うには、公式に用意されている OpenSSH for Windows をインストールするのが良いです。
OpenSSH for Windows のインストールについては、Get started with OpenSSH for Windows に PowerShell を使ってインストールする方法の説明があります。
Git Bash で「管理者として実行する PowerShell」を起動します。
PowerShell -Command "Start-Process 'C:\Program Files\PowerShell\7\pwsh.exe' -Verb RunAs"
このコマンドを実行すると、PowerShell について、「このアプリがデバイスに変更を加えることを許可しますか?」と確認する画面が表示されます。「はい」をクリックすると 「管理者として実行する Git Bash」が起動します。
次に、「管理者として実行する PowerShell」で OpenSSH をインストールするにあたってオブジェクト名を確認します。そのためには Get-WindowsCapability
と Where-Object
コマンドをパイプライン |
で組み合わせます。
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
OpenSSH にはクライアント用のものと、サーバー用のものがあり、どちらもインストールされていないと、このコマンドの実行結果は次のようになります。
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
今回使用している Windows 評価版では、クライアント用の OpenSSH.Client~~~~0.0.1.0
の方はインストールされていました。ということで、ここではサーバー用の OpenSSH をインストールします。インストールするには Add-WindowsCapability
コマンドを使います。
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
インストールには少し時間がかかります。気長に待ちましょう。
ちなみに、クライアント用の OpenSSH.Client~~~~0.0.1.0
の方をインストールする場合のコマンドは次のようになります。
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
OpenSSH for Windows は C:\Windows\System32\OpenSSH
へインストールされます。dir
コマンドで確認することができます。
dir C:\Windows\System32\OpenSSH
インストールが終わったら、SSH サーバー用のサービスである sshd
サービスが Windows のサービスへ追加されます。これを起動するには、Start-Service
コマンドを使います。また、自動起動を有効にするには、Set-Service
コマンドを使います。
具体的に実行するコマンドは次のようになります。
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
公開鍵の作成と登録
次に SSH ログイン用のキーペアを ssh-keygen
コマンドで作成しておきます。Gitea 用のものは SSH クローン用に使うため、別に用意しておかないと、SSH ログインができなくなるからです。
すでに作成してある ~/.ssh/id_ed25519_gitea
とは別のものを用意するので、今回はデフォルトのファイル名で作成します。また、コメントとして User@Win11Eval-win
をつけて区別できるようにします。
ssh-keygen -t ed25519 -C "User@Win11Eval-win"
このようにして作成すると ~/.ssh/id_ed25519
と ~/.ssh/id_ed25519.pub
が作成されます。
次に、SSH ログインができるように OpenSSH 用の公開鍵を登録したファイルを用意します。
このファイルについて、Linux 系では ~/.ssh/authorized_keys
にファイルを用意するのが基本ですが、Windows では一般ユーザーと管理者とでファイルのパスが変わるので注意しましょう。Git Bash でのパス表現を使うと、Windows の一般ユーザーは ~/.ssh/authorized_keys
を使い、管理者は /c/ProgramData/ssh/administrators_authorized_keys
を使います。
今回使用する Windows 評価版のユーザーである User は管理者なので、/c/ProgramData/ssh/administrators_authorized_keys
を使います。ファイルを編集するには管理者権限が必要です。
ここでは「管理者として実行する Git Bash」を起動して作業しましょう。コマンドでの作業が苦手な場合は、メモ帳を管理者で実行して、ファイルが存在しない場合は新しくファイルを作成し、すでに存在する場合はファイルを編集します。いずれにせよ、ファイルへ ~/.ssh/id_ed25519.pub
の内容を追加するというのでも良いです。
Git Bash で「管理者として実行する Git Bash」を起動するには、次のコマンドを実行します。
PowerShell -Command "Start-Process 'C:\Program Files\Git\bin\bash.exe' -Verb RunAs"
このコマンドを実行すると、Git for Windows について、「このアプリがデバイスに変更を加えることを許可しますか?」と確認する画面が表示されます。「はい」をクリックすると 「管理者として実行する Git Bash」が起動します。
この Git Bash を使ってファイルを用意します。まず、ls
コマンドでファイルの存在を確認します。
ls /c/ProgramData/ssh/administrators_authorized_keys
ファイルが存在している場合と、していない場合とで、作業が変わります。
administrators_authorized_keys が存在しない場合
次のように、No such file or directory
と表示されて、ファイルが存在しない場合です。
User@WinDev2401Eval MINGW64 ~
$ ls /c/ProgramData/ssh/administrators_authorized_keys
ls: cannot access '(略)_authorized_keys': No such file or directory
この場合は、cp
コマンドで ~/.ssh/id_ed25519.pub
をコピーします。
User@WinDev2401Eval MINGW64 ~
$ cp ~/.ssh/id_ed25519.pub /c/ProgramData/ssh/administrators_authorized_keys
確認は cat
コマンドを使ってします。
User@WinDev2401Eval MINGW64 ~
$ cat /c/ProgramData/ssh/administrators_authorized_keys
ssh-ed25519 AAAA(略)33 User@Win11Eval-win
administrators_authorized_keys が存在する場合
ls
コマンドを実行した結果、No such file or directory
が表示されなかった場合は、こちらの作業をします。
その場合は、cat
と tee
コマンドをパイプライン |
で組み合わせて ~/.ssh/id_ed25519.pub
の内容を /c/ProgramData/ssh/administrators_authorized_keys
へ追加します。
追加するテキストの内容を持つファイルを入力ファイルとし、テキストを追加する先のファイルを出力ファイルとします。次のようにコマンドを組み合わせて実行することで、入力ファイルの内容を出力ファイルへ追加することができます。
cat <入力ファイルのパス>| tee -a <出力ファイルのパス>
実際に実行するときは、先にすでに登録されている公開鍵の内容を cat
コマンドで確認しておきます。
User@WinDev2401Eval MINGW64 ~
$ cat /c/ProgramData/ssh/administrators_authorized_keys
(すでに登録されている公開鍵の内容)
それから、公開鍵を登録します。
User@WinDev2401Eval MINGW64 ~
$ cat ~/.ssh/id_ed25519.pub | tee -a /c/ProgramData/ssh/administrators_authorized_keys
ssh-ed25519 AA(略)33 User@Win11Eval-win
再度 cat
コマンドを使って、公開鍵が登録できたことを確認します。
User@WinDev2401Eval MINGW64 ~
$ cat /c/ProgramData/ssh/administrators_authorized_keys
(すでに登録されている公開鍵の内容)
ssh-ed25519 AA(略)33 User@Win11Eval-win
SSH ログインの確認
準備ができたら、Git Bash から ssh
コマンドを使って SSH 接続してみましょう。ssh
コマンドの使い方は次のようになります。
ssh -i <秘密鍵のファイルパス> -p <ポート番号> <ユーザー名>@<ホスト名>
Windows で用意した OpenSSH Server はホスト名が localhost で、ポート番号 22 で接続待機しています。ユーザー名は User で、今回使用する秘密鍵のファイルパスは ~/.ssh/id_ed25519
になります。そのため、次のコマンドを実行すれば良いということになります。
ssh -i ~/.ssh/id_ed25519 -p 22 User@localhost
このコマンドを実行して SSH ログインが成功すると、Git Bash の画面がコマンドプロンプトの画面になります。これは OpenSSH Server へリモートログインしたときに使用するシェルプログラムにコマンドプロンプトが指定されているからです。
リモート接続の動作確認ができたら exit
コマンドを実行します。すると、リモート接続が終了して、Git Bash の画面に戻ります。
Windows 版 Gitea のインストールと設定
ここでは Windows 版 Gitea のインストールについて説明します。Gitea Official Website を参考にしてインストールします。インストールするバージョンについては執筆時点で最新の 1.21.4 を使います。インストール用のファイルのダウンロードは https://dl.gitea.com/gitea/1.21.4/ からできます。
また、インストール先は /c/gitea
ディレクトリーとします。Gitea は本格的なリレーショナルデータベース(RDB)と組み合わせて利用することができますが、ここでは本格的な使用をするわけではないので、手軽に使える SQLite で動かすことにします。
Gitea のダウンロード
Git Bash を起動して、/c/gitea
ディレクトリーを作成してから、ファイルをダウンロードします。記事執筆時点で公式サイトでダウンロードを推奨される gitea-1.21.4-gogit-windows-4.0-amd64.exe
をダウンロードします。ファイル検証用に gitea-1.21.4-gogit-windows-4.0-amd64.exe.asc
もダウンロードします。
具体的に実行するコマンドは次のようになります。curl
コマンドは Git Bash に同梱されているもので、Web サイトからファイルをダウンロードするときによく使われるものです。
mkdir /c/gitea && cd /c/gitea
curl -s -o gitea.exe https://dl.gitea.com/gitea/1.21.4/gitea-1.21.4-gogit-windows-4.0-amd64.exe
curl -s -o gitea.exe.asc https://dl.gitea.com/gitea/1.21.4/gitea-1.21.4-gogit-windows-4.0-amd64.exe.asc
なお、gitea-1.21.4-windows-4.0-amd64.exe
というのもあります。gogit
がついている方で調子が悪いときは、こちらの方を試してみると良いようです。
gitea.exe
のファイルの検証をするには gpg
コマンドと gitea.exe.asc
ファイルを使います。
まず、検証のための準備として、gpg
コマンドの --keyserver
オプションへ「<キーサーバー>」、--recv
オプションへ「<キー ID>」を指定して実行します。
gpg --keyserver <キーサーバー> --recv <キー ID>
ここでは、keys.openpgp.org
のサーバーから gitea.exe
の電子署名で使われている キー ID が 7C9E68152594688862D62AF62D9AE806EC1592E2
の Teabot
のものを入手するので、次のコマンドを実行します。
gpg --keyserver keys.openpgp.org \
--recv 7C9E68152594688862D62AF62D9AE806EC1592E2
それから gpg
コマンドの --verify
オプションを使って検証します。パラメーターには「<検証用ファイル>」と「<対象ファイル>」を指定します。
gpg --verify <検証用ファイル> <対象ファイル>
ここで使用する検証用ファイルは gitea.exe.asc
で、対象は gitea.exe
となるので、次のコマンドを実行します。
gpg --verify gitea.exe.asc gitea.exe
コマンド実行時のメッセージに Good signature from "Teabot <(略)>"
とあれば検証は成功です。Teabot <(略)>
の鍵自体は信頼できる第3者機関の電子署名がされたものではないのですが、公式 Web サイトの手順に従い、公式 Web サイトに記載のキー ID で取得したものを使っているので、正しいものだと考えて良いでしょう。
ファイルのダウンロードからインストールまでのコマンドを実際に実行すると次のようになります。
ここまでのコマンドを実際に実行したときの結果は次のようになります。
User@WinDev2401Eval MINGW64 ~
$ mkdir /c/gitea && cd /c/gitea
User@WinDev2401Eval MINGW64 /c/gitea
$ curl -s -o gitea.exe https://dl.gitea.com/gitea/1.21.4/gitea-1.21.4-gogit-windows-4.0-amd64.exe
User@WinDev2401Eval MINGW64 /c/gitea
$ curl -s -o gitea.exe.asc https://dl.gitea.com/gitea/1.21.4/gitea-1.21.4-gogit-windows-4.0-amd64.exe.asc
User@WinDev2401Eval MINGW64 /c/gitea
$ gpg --verify gitea.exe.asc gitea.exe
gpg: Signature made Wed Jan 17 12:23:08 2024 TST
gpg: using RSA key CC64B1DB67ABBEECAB24B6455FC346329753F4B0
gpg: Good signature from "Teabot <(略)>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 7C9E 6815 2594 6888 62D6 2AF6 2D9A E806 EC15 92E2
Subkey fingerprint: CC64 B1DB 67AB BEEC AB24 B645 5FC3 4632 9753 F4B0
Gitea のインストール
あとは、Git Bash で /c/gitea/gitea
のパラメーターへ web
を指定して実行します。また、--install-port 13000
も指定します。こうすると、インストール時にポート番号 13000 で Gitea が起動するので、初期設定すれば自動で Gitea の画面に遷移するようになります。
/c/gitea/gitea web --install-port 13000
なお、インストール時に Windows のファイアーウォールを許可する設定がでたら、「キャンセル」を選択します。ここではローカルマシンからしか使わないので、ファイアウォールの防御を緩和する必要はありません。
gitea.exe をブロックを解除する確認の画面(「キャンセル」を選択)
なお、Gitea の起動は、gitea
コマンド(gitea.exe
コマンド)の出力結果から確認することができます。このコマンドを実際に実行すると次のような結果となります。
User@WinDev2401Eval MINGW64 /c/gitea
$ /c/gitea/gitea web --install-port 13000
2024/02/10 16:11:26 .../setting/security.go:168:loadSecurityFrom() [W] Enabling Query API Auth tokens is not recommended. DISABLE_QUERY_AUTH_TOKEN will default to true in gitea 1.23 and will be removed in gitea 1.24.
2024/02/10 16:11:26 cmd/web.go:242:runWeb() [I] Starting Gitea on PID: 7768
2024/02/10 16:11:26 cmd/web.go:111:showWebStartupMessage() [I] Gitea version: 1.21.4 built with GNU Make 4.3, go1.21.5 : bindata, sqlite, sqlite_unlock_notify
2024/02/10 16:11:26 cmd/web.go:112:showWebStartupMessage() [I] * RunMode: prod
2024/02/10 16:11:26 cmd/web.go:113:showWebStartupMessage() [I] * AppPath: C:/gitea/gitea.exe
2024/02/10 16:11:26 cmd/web.go:114:showWebStartupMessage() [I] * WorkPath: C:\gitea
2024/02/10 16:11:26 cmd/web.go:115:showWebStartupMessage() [I] * CustomPath: C:\gitea\custom
2024/02/10 16:11:26 cmd/web.go:116:showWebStartupMessage() [I] * ConfigFile: C:\gitea\custom\conf\app.ini
2024/02/10 16:11:26 cmd/web.go:117:showWebStartupMessage() [I] Prepare to run install page
2024/02/10 16:11:27 cmd/web.go:304:listen() [I] Listen: http://0.0.0.0:13000
2024/02/10 16:11:27 cmd/web.go:308:listen() [I] AppURL(ROOT_URL): http://localhost:13000/
2024/02/10 16:11:27 ...s/graceful/server.go:70:NewServer() [I] Starting new Web server: tcp:0.0.0.0:13000 on PID: 7768
最後の出力メッセージから Gitea が起動してポート番号 13000 でアクセス待機状態となったことがわかります。そうしたら、Web ブラウザから http://localhost:13000/ にアクセスします。すると、初期設定画面が表示されます。
画面にあるように指定します。
Gitea for Windows 初期設定画面 その1
画面をスクロールしたら、こちらも画面にあるように指定します。
Gitea for Windows 初期設定画面 その2
「Gitea をインストール」をクリックすると、Gitea のインストールが始まります。
Gitea のインストール画面
インストールが終わると Gitea のトップページとなります。
Gitea のトップページ
Gitea インストール後の設定
トップページの右上にある「登録」をクリックして、アカウントの登録画面を表示します。この画面でユーザーが登録できます。Windows のユーザー名(Windows 評価版 だと User)は Gitea で内部的に利用するので他のユーザー名で登録します。ここでは user001 を登録します。
Gitea のアカウントの登録画面
必要な情報を指定してから「アカウントを登録」をクリックすると、指定したユーザーのアカウントが登録されて、自動でサインインします。サインインしたら、アカウント用メニューの「サイト管理」をクリックしてサイト管理のページを開きます。
Gitea アカウント用メニューの「サイト管理」
それから、「サイト管理」のページにある「設定」を開きます。URL だと http://localhost:13000/admin/config になります。SSH の項目で、ビルトインサーバーが起動していないことを確認します。
Gitea 「サイト管理」のページにある「設定」
次に、アカウント用メニューの「設定」をクリックし「ユーザー設定」のページを開きます。URL だと http://localhost:13000/user/settings になります。
それから「SSH / GPG キー」を開きます。URL だと http://localhost:13000/user/settings/keys になります。「SSH キーの管理」で、user001 用の公開鍵として ~/.ssh/id_ed25519_gitea.pub
内のテキストを追加します。
Gitea SSH 公開鍵の登録
必要な指定をしたら「キーを追加」をクリックすると、「SSH キーの管理」の項目に登録した公開鍵の情報が表示されます。
Gitea 「SSH / GPG キー」のページ
Windows サービスへ登録するための事前設定
Windows 版 Gitea のインストールが済んだら、Windows サービスへ登録するための事前設定をします。
設定にあたって、コンピュータ名の確認が必要です。Git Bash で確認するには echo
コマンドを使って環境変数の ${COMPUTERNAME}
を表示します。
User@WinDev2401Eval MINGW64 ~
$ echo ${COMPUTERNAME}
WINDEV2401EVAL
Git Bash からメモ帳を起動して /c/gitea/custom/conf/app.ini
(C:\gitea\custom\conf\app.ini
)ファイルを編集します。
notepad /c/gitea/custom/conf/app.ini
ここで変更が必要なのは、RUN_USER
です。これに <コンピュータ名>$
を指定します。また、[server]
の SSH_USER
がインストール時に使ったアカウントのユーザー名となっていることを確認します。
今回の Windows 評価版では、コンピュータ名が WINDEV2401EVAL
で、ユーザーが User
となっています。そのため、Gitea の app.ini
については、次のようになります。
RUN_USER = WINDEV2401EVAL$
(略)
[server]
(略)
SSH_USER = User
(略)
なお、app.ini
ファイルのサンプルは GitHub の gitea/custom/conf/app.example.ini にあります。さらにカスタマイズをしたい場合は、そちらも参考にすると良いでしょう。
設定を変更したら、それを反映するために Ctrl+C で gitea
コマンドを終了させます。それから、今度は --install-port
をつけないで起動します。
/c/gitea/gitea web
Windows 版 Gitea の動作確認とサービスへの登録
ここまでの作業で Windows 版 Gitea が使えるようになったので、動作を確認してからサービスへ登録します。動作確認としては、リポジトリのクローンについて HTTP と SSH の両方で試してみます。ただし、SSH クローンについては、もう少し設定の追加が必要です。
Gitea へ user001 のアカウントでサインインして、新規にリポジトリ proj を作成してから、Git Bash でクローンを実行します。
Gitea で新規リポジトリ作成
最初にリポジトリを作成してみましょう。サインインした後の画面で右上にある「+」をクリックすると表示されるメニューで「新しいリポジトリ」をクリックします。
新しいリポジトリを作成する画面が表示されるので、リポジトリ名を入力します。また、「公開/非公開」の欄はチェックをいれてプライベートなリポジトリとします。設定を間違えて Git リポジトリ管理システムが他のマシンからも参照できる状態となってしまったとしても、このように指定しておけば公開されません。
ここではリポジトリ名に「proj001」を指定することにします。さらに「リポジトリの初期設定」の欄もチェックします。こうしておくと、Git リポジトリを使うときによく用意されるファイルが自動で作られます。
それから「リポジトリを作成」をクリックすると、リポジトリが作成され、画面の URL は http://localhost:13000/user001/proj001 へ遷移します。
リポジトリの URL は HTTP 版は http://localhost:13000/user001/proj001.git
となります。この URL を使った Git クローンの方はできるようになっています。
なお、リポジトリの URL を SSH とすると User@localhost:user001/proj001.git
となります。
Windows 版 Gitea でリポジトリのクローン
それでは、Windows 版 Gitea でリポジトリのクローンをしてみましょう。Git Bash で git
コマンドを使って HTTP の URL でリポジトリをクローンします。
git clone http://localhost:13000/user001/proj001.git
これで Gitea のリモートリポジトリ http://localhost:13000/user001/proj001.git と連携する proj001
ディレクトリーが作成されて、Git リポジトリが使えるようになるはずです。
Gitea のリポジトリを SSH クローンするための設定
次に Windows 版 Gitea でリポジトリの SSH クローンができるようにします。
Gitea 用に用意したキーペアのうち、~/.ssh/id_ed25519_gitea.pub
ファイルの内容を使って command=
のテキストを作成し、それを /c/ProgramData/ssh/administrators_authorized_keys
(一般ユーザーの場合は ~/.ssh/id_ed25519_gitea.pub
) ファイルへ追加します。
例えば、~/.ssh/id_ed25519_gitea.pub
ファイルの内容が次のようになっていたとします。
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ8y1Xi6eEBXD2L4WPz9Kyp/MFYEtOt8rJJ0q5u/Z402 User@Win11Eval
次に、追加するテキストを作成します。最初に command=
の行を追加します。command の内容は次になります。
command="C:\gitea\gitea.exe --config=C:\gitea\custom\conf\app.ini serv key-1"
他にも設定がいくつか必要で、先程の内容へ ,
をつけて、続けて下記の指定もします。この指定内容は Gitea の公式ドキュメントに説明があるものをそのまま使っています。
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict <公開鍵の内容>
テキストが用意できたら、コピーします。管理者でメモ帳を起動し、/c/ProgramData/ssh/administrators_authorized_keys
に対応する C:\ProgramData\ssh\administrators_authorized_keys
を開き、すでに登録済みの ssh-ed25519 AA(略)33 User@Win11Eval-win
の前に command=(略)
の内容をペーストして保存します。一般ユーザーの場合はメモ帳を起動し C:\User\<ユーザーID>\.ssh\authorized_keys
を編集します。
これで administrators_authorized_keys
(または authorized_keys
)は次の内容となります。
command="C:\gitea\gitea.exe --config=C:\gitea\custom\conf\app.ini serv key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ8y1Xi6eEBXD2L4WPz9Kyp/MFYEtOt8rJJ0q5u/Z402 User@Win11Eval
ssh-ed25519 AA(略)33 User@Win11Eval-win
administrators_authorized_keys
(一般ユーザーの場合は authorized_keys
)の用意が出来たら、SSH クローンのための準備はおしまいです。
Windows 版 Gitea でリポジトリの SSH クローン
以上の準備ができたら Git Bash から接続確認をしてみましょう。すでに HTTP の URL でクローンしたリポジトリがある場合は削除してから実行します。
rm -fr proj001
SSH で使用する秘密鍵ファイルを指定して git
コマンドを実行する必要があるので、SSH でクローンする場合は次のようなコマンドになります。
git clone -c "core.sshCommand=ssh -i ~/.ssh/id_ed25519_gitea -F /dev/null" \
User@localhost:user001/proj001.git
これで、SSH クローンができるはずです。User@localhost:user001/proj001.git
でうまくいかない場合は ssh://User@localhost/user001/proj001.git
を試してみてください。
Windows サービスで Gitea 自動起動
動作確認が出来たので、Windows サービスで Gitea が自動起動するように設定しましょう。Gitea を起動している場合は Ctrl+C で停止しておきましょう。
Windows サービスで Gitea が自動起動するように設定するには sc.exe
コマンドを使います。実行にあたっては、「管理者として実行するコマンドプロンプト」を使います。
それでは Git Bash から PowerShell
コマンドで「管理者として実行するコマンドプロンプト」を開きましょう。
PowerShell -Command "Start-Process 'C:\Windows\System32\cmd.exe' -Verb RunAs"
Windows ターミナルのメニューから起動することも出来ます。
Windows ターミナルからコマンドプロンプトを「管理者として実行する」メニュー
開いたコマンドプロンプトの画面で、次のコマンドを実行します。
sc.exe create gitea start= auto ^
binPath= "\"C:\gitea\gitea.exe\" web --config \"C:\gitea\custom\conf\app.ini\""
実際に実行したときの画面は次のようになります。こちらではコマンドを1行で実行しています。
Windows サービスで Gitea が自動起動するコマンドの実行
これで、Windows サービスに Gitea が登録されて、自動起動するようになります。
Windows サービスについて確認するには、Windows のサービスアプリを使います。これを起動するには、Windows のエクスプローラーで C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\
を開くと一覧に表示される「サービス」をクリックします。
コマンドプロンプトで explorer
コマンドを使って、この場所を Windows エクスプローラーで開いてから、「サービス」をクリックしても良いです。
explorer "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\"
サービスアプリでの gitea の表示は次のようになります。
サービスに登録された gitea
登録直後はサービスが開始されていません。マウス右クリックで表示されるコンテキストメニューの「開始」をクリックすると、サービスが開始され、Windows 版 Gitea が起動します。
gitea サービスの開始
ちなみに、Windows サービスから Gitea を解除する場合は次のコマンドを実行します。
sc.exe delete gitea
ファイアウォールの確認
OpenSSH Server と Gitea について、ファイアウォールの設定を確認します。どちらも localhost で使えれば良いのでファイアウォールで許可するアプリからは解除しておきます。なお、OpenSSH Server については、外部のマシンからログインできるようにしたい場合は、使うときだけ許可すれば良いでしょう。
アプリケーションに対してファイアウォールの確認や許可をするには「ファイアウォールによるアプリケーションの許可」の画面を使います。
この画面を表示するには、まずは「ファイアウォールとネットワーク保護」の画面を開きます。「ファイアウォールとネットワーク保護」の画面は、Windows の設定アプリで、「プライバシーとセキュリティ」-「Windows セキュリティ」-「ファイアウォールとネットワーク保護」をクリックすると表示できます。
「Windows セキュリティ」の画面
次に、この画面にある「ファイアウォールによるアプリケーションの許可」をクリックします。
「ファイアウォールとネットワーク保護」の画面
すると、「ファイアウォールによるアプリケーションの許可」の画面が表示されます。
まず、OpenSSH Server について確認しておきましょう。OpenSSH Server については、他のマシンからリモートログインして使うなら、そのままにしておきます。使用する予定がないなら、「設定の変更」をクリックしてから、OpenSSH Server の行のチェックをすべてはずしてから「OK」をクリックして保存します。
ファイアウォールでの OpenSSH Server の設定
次に gitea について確認しておきましょう。名前の欄にチェックがなければ、ファイアウォール通過を許可しないということになるので大丈夫です。
ファイアウォールでの gitea の設定
ちなみに、gitea を他のマシンからも使えるように有効にしたい場合は、ファイアウォール通過を許可すれば良いので次のようにします。ただし、現状だと localhost の URL でサービスを提供しているため、実質的に他のマシンからは使えません。
gitea のファイアウォール通過用の設定
これで Gitea for Windows の試用環境を構築する方法についての説明はおしまいです。個人で日常的に使用している Windows マシンで使うということなら、これで十分でしょう。これを使って、ファイルのバージョン管理をしてみると良いでしょう。
あと、そろそろ,Git Bash にも慣れてきたのではないでしょう。Bash に慣れてきたら、Linux 使いに一歩近づいたことになります。
なお、本格的に使う場合は、今回紹介した設定以外に、https://gitea.example.jp のような URL でアクセスできるように、HTTPS の設定や名前解決のための設定が必要となります。また、DB も SQLite よりも本格的な PostgreSQL や MariaDB といったものを設定して連携させることになります。
Linux に慣れていると、Windows で Git リポジトリ管理システムを稼働させる設定を完了するまでに GUI も使いながらとなるので、結構大変だという印象です。本格的に使うとなると、別マシンで環境構築したくなることでしょう。そういった場合は別途 Windows マシンを購入するより、Linux マシンで構築して使うのが安価で済みます。構築のためのスキルを身につけるための時間は余計にかかりますが、そのスキルはソフトウェア開発を続けるなら、どこかで役に立つようになります。
Discussion