🚀 はじめに:この記事でできること
Android端末上のTermux環境で、Git/GitHubを安全に使うための実践フローを、SSH鍵作成→GitHub登録→ghログイン→clone/commit/pushまで手順化します。
さらに、Hugo(PaperMod) の記事を GitHub Actions → GitHub Pages で自動公開する最小構成も併せて整えます。
補足
本記事は 初心者が混乱しやすい前提(Termux独自パッケージ、共有ストレージ権限、拡張Hugoの有無)を先に明示し、各Stepを 操作 → 目的 → 結果 → 注意/補足 の順で進めます。
🧭 前提:環境と基本方針
Termuxは通常のLinuxと異なる点があり、公式パッケージ(pkg)優先・外部配布物を直接入れないことが安全運用の鍵です。共有ストレージ権限やパスの違いも混乱の元になるため、最初に整理します。
操作
- Termuxアプリをインストールし、起動
- 以降のセットアップは pkg を用いる(aptは可能だが推奨はpkg)
目的
- Termux環境を最新化し、Git/SSH/gh を公式ビルドで導入して安定運用する
前提
- Android端末でTermuxが正常動作(ネット接続可)
- ファイル操作は $HOME(例:
~/)を基本に行う
結果(この時点でできること)
- 後続のインストールや鍵作成が 権限・互換性の問題を回避 しながら進められる
注意
Termuxで外部レポジトリや他ディストリのdebを直接導入すると破損の原因になります。必ず Termux公式のパッケージ を利用しましょう。
📱 Step 1:Termuxの初期セットアップ(更新・権限・導入)
Termuxを最新化し、共有ストレージ権限を付与、必要なパッケージを導入します。
操作(目的/前提を読んでから実行)
目的
- パッケージを最新化し、ストレージ操作とGit/GitHubに必要なコマンド群を整える
前提
- Termuxが起動可能
- インターネット接続が安定している
# パッケージの最新化
pkg update && pkg upgrade -y
# 共有ストレージへのアクセス(初回のみ)
termux-setup-storage
ls ~/storage/shared
# 必要パッケージの導入(Git / OpenSSH / GitHub CLI)
pkg install git openssh gh -y
# (任意)クリップボード操作を使う場合
pkg install termux-api -y
結果(この時点でできること)
git,ssh,ghが利用可能~/storage/sharedに共有ストレージのリンクが見える(初回許可後)
注意/補足
termux-setup-storage後に権限再許可が必要になることがあります。ダイアログが出たら 必ず許可 してください。termux-clipboard-set/getは公開鍵のコピー等で便利(Termux:APIが必要)。
⚙️ Step 2:Git/GitHubの基本設定(ユーザー情報・SSH鍵・接続テスト)
Gitの利用者情報を設定し、GitHub向けのed25519鍵を作成して登録、SSH接続を確認します。
操作(目的/前提を読んでから実行)
目的
- すべてのリポジトリで共通の署名情報を設定し、パスワード不要のSSH認証でGitHubへ安全に接続する
前提
- Git/GitHubのアカウントを保有
- Step 1で
git,sshが導入済み
# Gitの初期設定(グローバル)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global init.defaultBranch main
git config --global core.editor "nano"
結果(この時点でできること)
- 以降のコミットに正しい署名情報が付与される
補足
git configはグローバル(~/.gitconfig)とローカル(./.git/config)で階層が分かれます。まず グローバル を設定しましょう。
操作(目的/前提を読んでから実行)
目的
- GitHub推奨の ed25519 で鍵を作成し、公開鍵をGitHubに登録する
前提
- GitHubへログイン可能(ブラウザ準備)
~/.sshディレクトリが作成可能
# ed25519鍵の作成(メールはGitHub登録メール推奨)
ssh-keygen -t ed25519 -C "your.email@example.com"
# 公開鍵の表示(手動コピー)
cat ~/.ssh/id_ed25519.pub
# (任意)クリップボードへ送る場合
cat ~/.ssh/id_ed25519.pub | termux-clipboard-set
結果(この時点でできること)
- GitHubアカウントの Settings > SSH and GPG keys で公開鍵を登録し、SSH接続準備が整う
注意
DSA鍵は非対応、RSAはSHA‑2署名など要件があり、初心者は ed25519 が安全・簡単です。
操作(目的/前提を読んでから実行)
目的
- GitHubへのSSH接続が成功するかを検証する
前提
- 公開鍵がGitHubに登録済み
# SSH接続のテスト(初回は指紋確認あり)
ssh -T git@github.com
# 成功例:
# "Hi <USERNAME>! You've successfully authenticated, but GitHub does not provide shell access."
結果(この時点でできること)
- 成功メッセージが出れば SSH認証が正しく構成 されている
注意/補足
Permission denied (publickey)が出る場合、公開鍵の未登録/別鍵 の可能性。GitHubのキー一覧を再確認してください。
🧩 Step 3:リポジトリ操作(clone/commit/push/gh)
SSH経由でリポジトリを操作し、gh を併用して認証・作成・クローンまで実施します。
操作(目的/前提を読んでから実行)
目的
- 既存リポジトリをクローンし、変更をコミットしてリモートへ
pushする基本フローを習得する
前提
- Step 2のSSHテストが成功
- 対象リポジトリのURL(SSH形式)を把握
# リポジトリのクローン(SSH形式)
git clone git@github.com:<username>/<repo>.git
cd <repo>
# 変更作成・ステージング・コミット
echo "# Hello Termux" > README.md
git add README.md
git commit -m "Add README from Termux"
# リモートへpush(mainブランチ)
git push origin main
結果(この時点でできること)
- 端末から安全に変更を反映できる(移動中の軽微な修正に最適)
補足
共有ストレージ配下でfatal: detected dubious ownership in repositoryが出たら safe.directory の設定を追加します。
git config --global --add safe.directory /storage/emulated/0/your-repo
操作(目的/前提を読んでから実行)
目的
- GitHub CLI(
gh)でログインし、リポジトリ作成〜クローンまで対話的に行う
前提
- Step 1で
gh導入済み - ブラウザによる認証が可能
# GitHub CLIにログイン(対話式)
gh auth login
# 新規リポジトリ作成&クローン(例)
gh repo create my-sample --public --clone
結果(この時点でできること)
- PR/Issueなどをターミナルから操作できるようになり、開発効率が向上する
注意/補足
ghは ブラウザ連携認証 が簡便。Termuxでは外部インストールスクリプトではなく pkg導入 が確実です。
🛠️ Step 4:実用例(Hugo+PaperModをGitHub Pagesで自動公開)
スマホ側では記事編集と git push に集中し、ビルドはGitHub Actionsで行い、Pagesに公開します。
操作(目的/前提を読んでから実行)
目的
- GitHub Pagesのソースを GitHub Actions に設定し、Hugoのビルド成果物を自動で公開する
前提
- Hugoサイトのリポジトリを保有
- Pages設定にアクセス可能(権限あり)
# GitHubのWeb UI上で設定(説明用)
# Settings > Pages > Build and deployment > Source: GitHub Actions に変更
結果(この時点でできること)
- Actionsのワークフローが成功すると、Pagesが自動更新される
注意/補足
PaperMod は Hugo Extended を必要とする構成が一般的。Actionsで extended ビルドを用いるYAMLを配置します。
操作(目的/前提を読んでから実行)
目的
- Pages公開用のActionsワークフローを設置し、
pushトリガーで自動ビルド・デプロイする
前提
- リポジトリのルートで
.github/workflows/を作成可能 - Hugoバージョンは適宜更新(Extended版)
# .github/workflows/hugo.yaml(一例)
name: Build and deploy
on:
push:
branches: ["main"]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
env:
HUGO_VERSION: 0.154.4 # 例:PaperModは extended が必要
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Install Hugo (extended)
run: |
curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz"
mkdir -p "$HOME/.local/hugo"
tar -C "$HOME/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz"
echo "$HOME/.local/hugo" >> "$GITHUB_PATH"
- name: Build with Hugo
env:
HUGO_ENVIRONMENT: production
HUGO_ENV: production
run: |
hugo --gc --minify --baseURL "${{ steps.pages.outputs.base_url }}/"
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
with:
path: ./public
deploy:
environment:
name: github-pages
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v3
結果(この時点でできること)
mainへpushするだけで、Hugoビルド→Pages公開まで自動化される
注意/補足
Hugoの バージョン更新 と Extended版 の維持に留意。PaperModのサブモジュール利用時はsubmodules: recursiveが必要です。
操作(目的/前提を読んでから実行)
目的
- PaperModの記事をページバンドルで追加し、OGP画像や相対参照を安定させる
前提
- リポジトリ構成はHugo標準
- PaperModのcover画像を用意済み
# 記事ページバンドル(推奨)
mkdir -p content/posts/termux-git-flow-intro/
mv path/to/local/index.md content/posts/termux-git-flow-intro/index.md
# カバー画像を同フォルダに配置(相対参照)
cp cover-termux-git-flow.png content/posts/termux-git-flow-intro/
# 変更をコミット&push(Actionsが自動ビルド)
git add .
git commit -m "Add new post from Termux"
git push origin main
結果(この時点でできること)
- 記事追加〜公開までスマホから完結し、OGP画像の崩れ(404)も起きにくい
注意/補足
cover.relative: trueを用いると、ページバンドル内の画像参照が安定します。
⚠️ よくある注意点(Termuxと通常Linuxの違い)
Termuxのパッケージ・権限・ビルド要件には独自仕様があり、以下に留意します。
操作
- pkg を優先し、外部スクリプトや他ディストリ向け手順の流用を避ける
- 共有ストレージ配下でのGit操作は safe.directory を適宜設定する
目的
- 破損リスク・権限エラーを回避し、継続運用できる環境を保つ
結果(この時点でできること)
- インストール失敗や権限問題を未然に防ぎ、安定した開発フローを維持
補足
公開Wi‑Fiでは VPNの併用 を検討。SSH鍵には 強固なパスフレーズ を設定すると安全性が高まります。
✅ つまずきポイント(チェックリスト)
-
ssh -T git@github.comが 成功メッセージ を返す(SSH鍵がGitHubに登録済み) -
Permission denied (publickey)の場合、公開鍵の未登録/別鍵 の可能性を再確認した - 共有ストレージ配下で
fatal: detected dubious ownership→ safe.directory を設定した -
ghは pkg導入 の上、ブラウザ連携認証 でログインした - 公開鍵コピーに Termux:API + termux-clipboard-set を利用できる
- PaperModの cover画像 はページバンドル内に配置し、
relative: trueを設定した - GitHub Pagesの Source を GitHub Actions に切り替えた
- ActionsのYAMLで Hugo Extended を用い、
submodules: recursiveを指定した -
push後、Pagesが 200応答 で公開されることを確認した - エラー時は pkg更新 → 権限再付与 → SSH鍵/設定再確認 → 実URLチェック の順で復旧した
📚 参考リンク
- Termux:Package Management(pkgの利用) — https://wiki.termux.com/wiki/Package_Management
- Termux:
termux-setup-storage— https://wiki.termux.com/wiki/Termux-setup-storage - GitHub:SSH鍵の生成・登録(ed25519推奨) — https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
- GitHub:SSH接続のテスト — https://docs.github.com/en/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection
- Hugo:GitHub Pagesにホスト(Actions構成) — https://gohugo.io/host-and-deploy/host-on-github-pages/
🎯 まとめ
- Termux + Git/GitHub で、スマホから安全な開発フローを構築できます。
- ed25519鍵 + SSH認証 を基本に、
ssh -Tの成功を起点に進めましょう。 - gh は pkg導入 と ブラウザ認証 が簡便で確実。
- Hugo(PaperMod) は Actions + Pages で自動公開するとスマホ運用と相性良好。
- 本記事の手順に沿えば、記事編集 → push → 自動公開 の一連がスマホだけで完結します。
