Files

4.0 KiB
Raw Permalink Blame History

title, created, updated, type, namespace, tags, related
title created updated type namespace tags related
Gitea Config 2026-05-23 2026-09-14 tech family
infra
gitea
git
credentials
family/plans/t610-home-automation
family/how-to/truenas-access

Gitea Config

URL (внешний): https://git.mallexxx.duckdns.orgHTTPS, DNS 90.189.160.148 Версия: 1.27.3 (проверено 2026-09-14: GET /api/v1/version) Внутренний LAN endpoint: http://172.16.3.4:3000 User: git_admin (id 1, is_admin: true)

API Token

Token name: eagle-reflect Token value: f2e6...8844 (полное значение — в remote репо nolvu-landing на Mac)

Использование (проверено):

TOKEN=$(git -C ~/Developer/nolvu-landing remote get-url origin | sed -E 's|https://git_admin:([^@]+)@.*|\1|')
curl -sS -H "Authorization: token $TOKEN" https://git.mallexxx.duckdns.org/api/v1/user            # → кто я
curl -sS -H "Authorization: token $TOKEN" 'https://git.mallexxx.duckdns.org/api/v1/user/repos?limit=50'

⚠️ В inline-команде Hermes эта конструкция ломается (см. «Питфоллы») — писать скрипт файлом.

Проверено 2026-09-14 (вечер-14): GET /api/v1/userHTTP 200, login: git_admin — токен живой. Вариант извлечения без sed (устойчив к | в inline, но всё равно лучше файлом):

T=$(git -C ~/Developer/nolvu-landing remote get-url origin | sed -n 's#https://git_admin:\([^@]*\)@.*#\1#p')

Создание приватного репо через API (эталон 2026-09-14)

curl -sS -X POST -H "Authorization: token $TOKEN" -H 'Content-Type: application/json' \
  -d '{"name":"<REPO>","private":true,"auto_init":false,"default_branch":"main"}' \
  'https://git.mallexxx.duckdns.org/api/v1/user/repos' | jq '{full_name,private,clone_url}'

Рабочий паттерн remote + креды (НЕ токен в URL)

git remote add origin 'https://git.mallexxx.duckdns.org/git_admin/<REPO>.git'   # чистый URL!
git config credential.helper store
printf 'https://git_admin:%s@git.mallexxx.duckdns.org\n' "$TOKEN" >> ~/.git-credentials
chmod 600 ~/.git-credentials
git push -u origin main

Проверка: git ls-remote origin — SHA должен совпасть с git rev-parse HEAD.

Существующие репозитории (2026-09-14)

Репо Видимость
git_admin/eagle-hermes private
git_admin/kraken-docker-config private
git_admin/nolvu-landing private
git_admin/obsidian-vault public (единственный)
git_admin/reflect-app private
git_admin/HA-ZONT-Modbus private (создан 2026-09-14, см. [[family/plans/t610-home-automation]] §5-кватер-Е)

Питфоллы

  1. 🔴 Токен в URL = утечка. В .git/config репо nolvu-landing remote записан как https://git_admin:<token>@git.mallexxx.duckdns.org/... → токен светится в каждом git remote -v и в выводах команд/логах. Правильно: чистый URL + токен в ~/.git-credentials (chmod 600) + credential.helper=store. Кандидат на ротацию токена.
  2. ⚠️ Inline shell в Hermes ломается на $( … | sed -E 's|…|…|' ) — приём спотыкается на |. Решение: писать скрипт файлом (write_filebash file.sh), не инлайн. Пример: ~/tmp-t610/setup_gitea_creds.sh.
  3. 📌 Старый адрес http://git.mallexxx.duckdns.org (без s) — устарел, рабочая схема только https://.

Notes

  • External URL использует DuckDNS DDNS на домашний IP.
  • Внутренний API endpoint предпочтительнее, когда ты в домашней сети.