No description
- JavaScript 73.6%
- CSS 19.2%
- HTML 6%
- Shell 0.8%
- Dockerfile 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
deploy / deploy (push) Failing after 7s
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_014EZiYZKumPHNhzMNKHRiyr |
||
| .forgejo/workflows | ||
| deploy | ||
| public | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| compose.yaml | ||
| Dockerfile | ||
| package.json | ||
| README.md | ||
| server.js | ||
フィールドノート
写真で残す、山とキャンプと景色の記録アプリ。スマホのホーム画面に置いて使う PWA です。 公開先: https://mt.ch1w4.com
できること
| タブ | 内容 |
|---|---|
| 地図 | 写真を選ぶと EXIF の位置情報から撮影地にピンが立つ。位置情報がない写真は地図をタップして配置。長押しでその場所に記録/行きたい場所を追加 |
| 記録 | 写真タイルで一覧。年ごとの記録数・写真枚数・最高地点・山の数/キャンプ泊数 |
| 予報 | 行きたい場所ごとの7日間予報。雲海・星空・朝焼け/夕焼けのチャンス、日の出・日の入・ゴールデンアワー、月齢。週末を優先した「今週のおすすめ」 |
| 持ち物 | 日帰り登山/テント泊/キャンプ/冬・雪山/カメラのテンプレートを組み合わせたチェックリスト |
記録を保存すると、その場所の標高と、その日の天気(最高・最低気温)を自動で添えます。 写真はブラウザで長辺2400pxに縮小・再エンコードしてから送るので、EXIF はサーバーに残りません。
- 地図・地名検索:国土地理院 / 天気・標高:Open-Meteo(APIキー不要)
server.jsは依存ゼロの Node.js。データはdata/db.jsonとdata/photos/
構成(chiwa-lab)
スマホ ─ Cloudflare(mt.ch1w4.com) ─ Tunnel ─ proxy01 NPM(192.168.30.10)
└→ docker01:8090 (192.168.20.50) fieldnote コンテナ
git push → git01(Forgejo) → runner01 → SSH(command=deploy.sh) → docker01 で pull & build
| 場所 | パス |
|---|---|
| リポジトリ | https://git.ch1w4.com/chiwa/fieldnote |
| docker01 のアプリ | /opt/apps/fieldnote/app(clone 先。.env と data/ もここ) |
| docker01 の反映スクリプト | /opt/apps/fieldnote/deploy.sh(deploy/deploy.sh をコピーしたもの) |
初回セットアップ
1. docker01
sudo mkdir -p /opt/apps/fieldnote && sudo chown -R chiwa: /opt/apps/fieldnote
cd /opt/apps/fieldnote
git clone http://192.168.20.45:3000/chiwa/fieldnote.git app
cd app
cp .env.example .env && nano .env # PASSCODE と SESSION_SECRET(openssl rand -hex 32)
mkdir -p data && sudo chown 1000:1000 data
cp deploy/deploy.sh ../deploy.sh && chmod +x ../deploy.sh
../deploy.sh # 「反映しました」が出ればOK
2. 反映専用のデプロイ鍵(www とは別の鍵)
ssh-keygen -t ed25519 -N "" -C runner-deploy-fieldnote -f ~/deploy_key_fn
echo "command=\"/opt/apps/fieldnote/deploy.sh\",no-pty,no-port-forwarding,no-agent-forwarding,no-X11-forwarding $(cat ~/deploy_key_fn.pub)" >> ~/.ssh/authorized_keys
cat ~/deploy_key_fn # → Forgejo の chiwa/fieldnote → 設定 → Actions → シークレット DEPLOY_KEY に登録
rm ~/deploy_key_fn ~/deploy_key_fn.pub
3. NPM(proxy01)
プロキシホストを追加:mt.ch1w4.com → http 192.168.20.50 8090(Websockets はオフでOK、SSL 設定は不要)
4. Cloudflare
Zero Trust → Tunnels → chiwa-lab → Public Hostname に mt.ch1w4.com → HTTP npm:80 を追加。
502 になる場合は、IX2215 の dmz-in フィルタで proxy01 → docker01 の 8090 が許可されているか確認する。
更新
main に push すれば runner01 が自動で反映する。手動なら docker01 で /opt/apps/fieldnote/deploy.sh。
バックアップ
/opt/apps/fieldnote/app/data が全データ。docker01 が PBS の毎日バックアップ対象に入っているか確認しておく。
ローカルで動かす
PASSCODE=test node server.js # http://localhost:3000
環境変数
| 名前 | 既定 | 説明 |
|---|---|---|
PASSCODE |
なし | ログインの合言葉。空ならログイン不要 |
SESSION_SECRET |
PASSCODE から生成 | ログイン Cookie の署名キー |
HOST_PORT |
8090 | docker01 側の公開ポート |
PORT / DATA_DIR |
3000 / /data |
コンテナ内の設定 |