MyGit має повну підтримку macOS, включаючи Apple Silicon (M1/M2/M3/M4) та Intel Mac:
- Нативні ARM64 бінарники — оптимізовані для Apple Silicon
- Universal binary — один бінарник працює на Intel та Apple Silicon
- macOS 12+ Monterey, 13 Ventura, 14 Sonoma, 15 Sequoia, 26 Tahoe
Встановлення на macOS (Homebrew):
# Через curl
curl -sSL https://raw.githubusercontent.com/ajjs1ajjs/MyGit/main/install.sh | sudo bash
# Архітектура визначається автоматично: aarch64-apple-darwin (M1+) або x86_64-apple-darwin (Intel)Запуск як сервіс (launchd):
# Створіть ~/Library/LaunchAgents/com.mygit.server.plist
cat > ~/Library/LaunchAgents/com.mygit.server.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key><string>com.mygit.server</string>
<key>ProgramArguments</key>
<array>
<string>/opt/mygit/mygit</string>
<string>-port</string><string>8060</string>
</array>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.mygit.server.plistПідтримувані архітектури macOS:
| Архітектура | Позначення | Підтримка |
|---|---|---|
| Apple Silicon (M1/M2/M3/M4) | aarch64-apple-darwin |
✅ Native |
| Intel Mac | x86_64-apple-darwin |
✅ Native |
| Universal | universal-apple-darwin |
✅ Fat binary |
- Git smart HTTP — clone/push/pull через стандартний протокол (Basic auth: логін/пароль або PAT)
- Репозиторії: створення, fork, видалення; bare-репо на диску
repos/{owner}/{name}.git - Перегляд коду: дерево файлів, blob, raw, blame, коміти, гілки, теги
- Issues: створення, коментарі, стани
- Merge Requests: створення, merge
- Webhooks: CRUD
- Користувачі: реєстрація, JWT, SSH-ключі, Personal Access Tokens
- Права: superuser / рольові (owner 50, maintainer 40, developer 30, reporter 20, guest 10)
- SPA-фронтенд: Vue 3 + Tailwind (embedded через
go:embed) - SSH git: AuthorizedKeysCommand + internal API (Linux, через системний OpenSSH)
- Платформа: Linux (amd64/arm64) та Windows (amd64/arm64) — статичні бінарники
Ubuntu / Debian (одна команда і встановлює, і оновлює):
curl -sSL https://raw.githubusercontent.com/ajjs1ajjs/MyGit/main/install.sh | sudo bashWindows 10/11 / Server 2016+ (PowerShell, від імені Administrator; та ж команда встановлює і оновлює):
irm https://raw.githubusercontent.com/ajjs1ajjs/MyGit/main/install.ps1 | iexПотрібен встановлений Git for Windows (winget install Git.Git) — MyGit викликає системний git для smart HTTP. Інсталятор реєструє MyGit як Windows Service (mygit, автозапуск, авто-перезапуск при збої), дані зберігаються в %ProgramData%\mygit, бінарник — у %ProgramFiles%\mygit.
Обмеження: git-over-HTTP(S) працює повністю на обох платформах. SSH-git (
AuthorizedKeysCommand) залежить від системного OpenSSH-сервера з підтримкоюAuthorizedKeysCommand, який на Linux (Ubuntu/Debian,openssh-server) налаштовується типово. На Windows Win32-OpenSSH теоретично підтримуєAuthorizedKeysCommand, але це не входить у стандартнийinstall.ps1і потребує додаткового ручного налаштуванняsshd_config— тому SSH-git на Windows наразі не підтримується "з коробки"; використовуйте git-over-HTTP(S).
Після запуску відкрийте http://<IP>:8060/ та зареєструйте перший обліковий запис — він стане власником (superuser).
git clone http://<IP>:8060/alice/myrepo.git
cd myrepo
git add . && git commit -m "first"
git push origin main # попросить логін/пароль або PATДля PAT: Профіль → Tokens → створити; використовуйте як пароль.
| Змінна | Призначення | Дефолт |
|---|---|---|
MYGIT_BASE_DIR |
Базова директорія | поточна |
MYGIT_REPOS_ROOT |
Директорія bare-репозиторіїв | {base}/repos |
MYGIT_DB_PATH |
Шлях до SQLite | {base}/mygit.db |
MYGIT_JWT_SECRET |
Секрет JWT (авто-генерація поруч із БД) | авто |
MYGIT_INTERNAL_API_TOKEN |
Токен для git hooks/CI | авто (друкується лише в TTY) |
MYGIT_GIT_BINARY |
Шлях до git | git |
MYGIT_TLS_CERT |
Шлях до TLS-сертифіката (вмикає HTTPS) | порожньо |
MYGIT_TLS_KEY |
Шлях до TLS-ключа | порожньо |
MYGIT_BACKUP_KEY |
Ключ шифрування архівів беккапів (AES-256-GCM) | похідний від JWT secret |
MYGIT_BACKUP_UPLOAD_URL |
Базова URL для upload архівів (HTTP PUT / S3-style) | порожньо |
MYGIT_TRUST_PROXY |
Довіряти X-Forwarded-For (rate limiting) та X-Forwarded-Proto (Secure cookie, HSTS) за довіреним reverse-proxy (1/true) |
0 |
MYGIT_CUSTOM_REPOS_ROOT |
Корінь для кастомних шляхів репозиторіїв (custom_disk_path, superuser-only) |
{base} |
HTTPS: якщо задано
MYGIT_TLS_CERTіMYGIT_TLS_KEY, сервер слухає HTTPS самостійно. Інакше (рекомендовано) розмістіть MyGit за reverse-proxy (Caddy/Nginx) із TLS-termination. У режимі cookie-авторизаціїSecure-прапорець увімкнеться автоматично лише при HTTPS.
Беккапи: увімкнені розклади (
enabled) виконуються автоматично фоновими планувальником. Частота:daily/hourly/weekly+time_of_day(HH:MM[:SS]).encryptшифрує архів (AES-256-GCM),uploadвідправляє його наMYGIT_BACKUP_UPLOAD_URL(PUT, підтримує{filename}або presigned S3 URL),keep_localлишає лише останні N архівів.
Авторизація: SPA використовує HttpOnly cookies (
SameSite=Strict), токени не зберігаються уlocalStorage. Програмні клієнти (hooks/CI/CLI) можуть і надалі передавати JWT/PAT черезAuthorization: Bearerабо Basic auth.
SPA-фронтенд MyGit — це Progressive Web App (vite-plugin-pwa): встановлюється на телефон/ПК як окремий застосунок і кешує assets через Service Worker. Для цього відкрийте http://<IP>:8060/ у браузері та оберіть "Встановити додаток".
Бекенд: Go 1.25 · net/http · chi · SQLite (WAL, modernc.org/sqlite) · golang-jwt · git subprocess (smart HTTP) Фронтенд: Vue 3 · TypeScript · Vite · Tailwind (embedded)





