Gogs — самый простой локальный Git‑сервер
Важно: этот материал описывает установку и эксплуатацию Gogs на Linux (64‑бит), варианты базы данных, резервное копирование, безопасность и практические рабочие процессы.
Быстрые ссылки
- Проблемы облачных репозиториев
- Что такое Gogs
- Как установить Gogs
- Быстрый обзор интерфейса Gogs
- Настройка как системного сервиса (systemd)
- Резервное копирование и восстановление
- Безопасность и HTTPS (через обратный прокси)
- Миграция с GitHub/GitLab
- Роль‑ориентированные чеклисты
- Критерии приёмки
- FAQ

Проблемы облачных репозиториев
Git — ведущая система контроля версий. Облачные сервисы (GitHub, GitLab, Bitbucket) предлагают удобный веб‑интерфейс, CI/CD и интеграции. Но у облачных репозиториев есть ограничения и риски:
- плата за приватные репозитории или платные тарифы;
- ограничение хранилища, пользователей или трафика на бесплатных планах;
- потеря полного контроля над данными и политиками хранения;
- требования соответствия (комплаенс), когда код не должен покидать внутреннюю сеть.
Альтернатива — собственный Git‑сервер: локально в сети или в приватном облаке. Однако раньше это требовало много ручной настройки и поддержки. Gogs решает эти проблемы простотой установки и минимальными ресурсными требованиями.
Что такое Gogs
Gogs — лёгкий, «самодостаточный» Git‑сервис, написанный на языке Go. Его ключевые свойства:
- минимальные зависимости и быстрый запуск;
- веб‑интерфейс, похожий на популярные хосты (репозитории, README, редактирование файлов);
- поддержка нескольких СУБД (SQLite3, MySQL, MariaDB, PostgreSQL, TiDB);
- возможность работы на Raspberry Pi и слабом железе;
- гибкость: можно запускать как одиночный бинарник или как системный сервис.
Коротко: Gogs даёт привычную работу с Git, но остаётся под вашим контролем.
Кому подходит Gogs
- хобби‑разработчикам и маленьким командам;
- командам, которые хотят приватность и контроль без сложной DevOps‑инфраструктуры;
- проектам, которым не нужны весь «тяжёлый» функционал GitLab (CI/CD, контейнерный регистр и т. п.), но нужна простая веб‑панель и управление пользователями.
Как установить Gogs — быстрый план
Ниже — развернутая инструкция со служебными заметками, системными настройками и практическими подсказками.
Подготовка: что потребуется
- Linux (рекомендуется современная x86_64‑система; Raspberry Pi — отдельные бинарники);
- установленный Git;
- доступ к терминалу и правам на создание сервисов (systemd) для долговремённой работы;
- по желанию: MySQL/MariaDB/PostgreSQL, если вы не хотите использовать SQLite;
- артефакты Gogs (ZIP/архив) для вашей платформы.
Минимальная проверка:
git --version
uname -mЕсли вы видите версию Git и архитектуру x86_64 (amd64) — готово.
Скачивание бинарника
Выберите сборку по вашей платформе:
- Linux amd64 — для современных 64‑бит Linux;
- Linux 386 — для 32‑бит Linux;
- Linux armv7 — Raspberry Pi 2 и старее;
- Linux armv8 — Raspberry Pi 3/4 и др.;
- macOS amd64 — Intel Mac;
- macOS arm64 — Apple Silicon.
После скачивания файл обычно окажется в ~/Downloads. Разархивируйте ZIP через проводник или командой:
unzip gogs_*.zipВнутри появится каталог вроде gogs_0.11.91_linux_amd64 или аналогичный по версии.


Запуск вручную (для теста)
Откройте каталог gogs и запустите бинарник веб‑режима:
cd gogs
./gogs web
Gogs поднимется и по умолчанию слушает порт 3000. В браузере на той же машине откройте http://localhost:3000 или на другом устройстве http://<имя‑хоста>:3000.

Первичная настройка через веб‑интерфейс
Открыв адрес, вы увидите форму первичной конфигурации:

Поля, которые важно заполнить:
- Database Type — выбор СУБД: SQLite3 (подходит для небольших инсталляций), MySQL/MariaDB, PostgreSQL, TiDB;
- Run User — пользователь ОС, от имени которого запустится процесс;
- Host, Port — сетевые параметры (обычно оставляют порт 3000 для теста);
- Адрес репозитория и URL — публичный адрес, по которому к серверу будут обращаться пользователи (важно для ссылок в письмах и клонирования).
Если вы выбрали SQLite3 — её бинарник и файл базы будут созданы автоматически.
Настройка email (SMTP)
Если вы хотите уведомления по почте (регистрация, подтверждение, уведомления), заполните поля SMTP.
Gogs запрашивает:
- SMTP Host — адрес и порт, например smtp.gmail.com:587;
- From — адрес отправителя (тот, который будет отображаться в письмах);
- Sender Email — тот же адрес, что и From;
- Sender Password — пароль приложения (особенно для Gmail при двухфакторной аутентификации);
- Enable Register Confirmation — подтверждение email при регистрации;
- Enable Mail Notification — включение почтовых уведомлений.
Примечание: для Gmail потребуется либо пароль приложения (app password), либо OAuth‑авторизация через Google API. Точный метод зависит от политики безопасности аккаунта.

Завершение установки
Нажмите кнопку “Install Gogs”. Система создаст конфигурационный файл и необходимые таблицы. Откроется главная страница Gogs.

Первая учётная запись, созданная через “Register”, получит права администратора.

Быстрый обзор интерфейса Gogs
Интерфейс интуитивен: Dashboard, создание репозиториев, просмотр файлов, редактирование прямо в браузере.

Создание нового репозитория — через кнопку “+”: укажите имя, приватность и описание. Можно автоматически добавить .gitignore, лицензию и README.


Gogs поддерживает просмотр файлов, рендеринг Markdown и простое редактирование через браузер.

Клонирование, правки и push — стандартными git‑командами.


Редактирование README и коммиты можно делать прямо веб‑интерфейсе.

Запуск Gogs как системного сервиса (systemd)
Если вы планируете длительную эксплуатацию, лучше настроить Gogs как сервис. Примерный план:
- Создайте системного пользователя для Gogs (без логина):
sudo useradd --system --shell /bin/false --home /opt/gogs gogs- Переместите распакованный каталог в /opt/gogs и установите владельца:
sudo mv ~/Downloads/gogs_* /opt/gogs
sudo chown -R gogs:gogs /opt/gogs- Создайте systemd‑файл /etc/systemd/system/gogs.service со следующим содержимым:
[Unit]
Description=Gogs (Go Git Service)
After=network.target
[Service]
Type=simple
User=gogs
Group=gogs
WorkingDirectory=/opt/gogs
ExecStart=/opt/gogs/gogs web
Restart=on-failure
[Install]
WantedBy=multi-user.target- Перезагрузите systemd, включите и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now gogs.service
sudo systemctl status gogs.serviceЕсли всё корректно, Gogs будет автоматически стартовать после загрузки системы.
Резервное копирование и восстановление
План резервного копирования зависит от выбранной СУБД.
Общие рекомендации:
- сохраняйте каталог custom и data (в нём хранятся пользовательские файлы и репозитории);
- сохраняйте файл конфигурации app.ini (обычно в custom/conf/app.ini);
- делайте дампы базы данных по расписанию.
Примеры команд:
- Для SQLite3 — просто копируйте файл базы или используйте встроенную команду .backup:
# копировать файл базы
cp /opt/gogs/data/gogs.db /backup/gogs.db-$(date +%F)
# или создать дамп
sqlite3 /opt/gogs/data/gogs.db .dump > /backup/gogs_dump_$(date +%F).sql- Для MySQL/MariaDB:
mysqldump -u root -p gogsdb > /backup/gogs_mysql_$(date +%F).sql- Для PostgreSQL:
PGPASSWORD=пароль pg_dump -U gogsuser -h localhost -d gogsdb -F c -b -v -f /backup/gogs_pg_$(date +%F).dumpВсегда тестируйте восстановление в тестовой среде, прежде чем полагаться на процедуру.
Безопасность: HTTPS и обратный прокси
Не рекомендуется держать Gogs в открытом интернете без HTTPS и защиты. Стратегия — запускать Gogs на внутреннем порту (например 3000) и ставить перед ним обратный прокси (nginx или Caddy), который обеспечивает TLS.
Пример минимального конфига nginx (SSL через Let’s Encrypt или готовый cert):
server {
listen 80;
server_name git.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name git.example.com;
ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}В конфигурации Gogs укажите Root URL как https://git.example.com, чтобы ссылки в письмах и веб‑интерфейсе были корректными.
Дополнительные рекомендации по безопасности:
- отключите публичную регистрацию, если это приватный сервер;
- регулярно обновляйте Gogs и зависимости;
- используйте брандмауэр, чтобы ограничить доступ по IP или VPN;
- включите двухфакторную аутентификацию, если используете внешние плагины/интеграции.
Тонкости хранения: SQLite vs MySQL vs PostgreSQL
- SQLite3 — простая, не требует отдельного сервера, отлично подходит для хобби и небольших команд. Однако при большой активности может быть узким местом.
- MySQL/MariaDB и PostgreSQL — лучше для продакшна и команд с высокой нагрузкой; требуют отдельного управления и резервного копирования.
При выборе учитывайте: ожидаемое количество репозиториев, частоту операций push/pull и требования к отказоустойчивости.
Миграция из GitHub / GitLab
Если вы хотите перенести репозиторий из GitHub в Gogs, простой рабочий вариант для каждого репозитория:
# на локальной машине
git clone --mirror https://github.com/youruser/yourrepo.git
cd yourrepo.git
git remote set-url --push origin http://git.example.com/youruser/yourrepo.git
git push --mirror originЭто сохраняет все ветки и теги. Для большого числа репозиториев можно автоматизировать процесс скриптом.
Управление пользователями и права доступа
Gogs позволяет:
- создавать организации/команды;
- назначать роли (владельцы репозитория, коллабораторы);
- управлять приватностью репозиториев.
Админ‑панель доступна в меню профиля: откройте “Your Profile > Admin panel”.
Your Profile > Admin panelКогда Gogs — не лучший выбор (когда стоит смотреть в сторону альтернатив)
- если вам нужна встроенная CI/CD, контейнерный регистр и багтрекер — GitLab (или GitLab‑CE) может быть предпочтительнее;
- если у вас крупная корпоративная инсталляция с требованиями к интеграции SSO и управлению пользователями по LDAP/AD — рассмотрите GitLab или специальные решения с утяжелённой поддержкой SSO;
- если нужна богатая поддержка плагинов и экосистемы — Gitea или GitLab предлагают более широкий набор возможностей.
Тем не менее для многих команд Gogs — баланс простоты и полезности.
Роль‑ориентированные чеклисты
Администратор:
- создать системного пользователя gogs;
- установить Gogs и настроить systemd‑сервис;
- сконфигурировать SSL через обратный прокси;
- настроить резервное копирование (база + репозитории + конфиг);
- при необходимости подключить внешнюю СУБД;
- ограничить публичную регистрацию и проверить политики паролей.
Разработчик:
- настроить SSH‑ключи в профиле;
- клонировать репозиторий и проверить push/pull;
- настроить git config user.name и user.email;
- при необходимости подписывать коммиты (gpg).
Оператор/DevOps:
- мониторить сервис (systemd, логирование);
- проверять обновления и планировать техническое обслуживание;
- тестировать планы восстановления резервных копий.
Критерии приёмки
- веб‑интерфейс доступен по указанному Root URL через HTTPS;
- можно создать репозиторий, выполнить clone, commit и push без ошибок;
- резервная копия базы и каталога репозиториев успешно восстанавливается в тестовой среде;
- админ может добавлять/удалять пользователей и назначать права;
- автоматический запуск сервиса после перезагрузки сервера работает корректно.
Отладка — распространённые проблемы и решения
- Gogs слушает порт, но сайт недоступен из сети: проверьте брандмауэр/iptables и проброс портов на роутере.
- Ошибки при подключении к MySQL/Postgres: проверьте креденшелы, хост, порт и наличие базы данных; убедитесь, что база слушает снаружи (bind‑address).
- Письма не уходят: проверьте SMTP‑настройки, логин/пароль и требование SSL/TLS для почтового сервера.
- Ошибка записи в репозиторий: проверьте права владельца и владельца файлов в каталоге с репозиториями (обычно gogs:gogs).
Практические сценарии / тесты приёмки
- Создать репозиторий через веб‑интерфейс, инициализировать его README и .gitignore.
- Склонировать репозиторий по HTTPS и SSH (если настроен).
- Добавить файл, закоммитить и выполнить push. Проверить, что коммит виден в веб‑интерфейсе.
- Изменить README в веб‑интерфейсе и проверить, что история коммитов обновилась.
- Сделать дамп базы и восстановить его в тестовой среде; убедиться, что данные一致ны.
Альтернативы и сравнение (кратко)
- Gitea — форк, ориентированный на ту же нишу, но с более активным развитием и расширенной экосистемой.
- GitLab CE — полнофункциональная платформа с CI/CD и регистрацией контейнеров; более ресурсоёмкая.
- Bitbucket Server (ранее Stash) — корпоративное решение от Atlassian.
Выбор зависит от требуемого функционала, доступных ресурсов и готовности поддерживать сложную инфраструктуру.
Полезные команды и сниппеты (шпаргалка)
- Запуск Gogs вручную:
./gogs web- Проверка логов systemd:
sudo journalctl -u gogs.service -f- Копирование SQLite‑базы:
cp /opt/gogs/data/gogs.db /backup/gogs.db-$(date +%F)- Создание дампа MySQL:
mysqldump -u root -p gogsdb > /backup/gogs_mysql.sqlПолезные советы и эвристики
- Для одного‑двух пользователей SQLite часто проще и безопаснее; при росте перейдите на MySQL/Postgres.
- Держите резервные копии конфигурации и каталога репозиториев отдельно от базы данных.
- Настраивайте HTTPS и проверяйте Root URL в настройках Gogs — некорректный URL ломает веб‑хуки и ссылки в письмах.
Резюме
Gogs — отличное решение для тех, кто хочет собственный Git‑сервер с минимальными усилиями. Он быстро разворачивается, прост в эксплуатации и даёт полный контроль над кодовой базой. Для небольших команд и хобби‑проектов это зачастую оптимальный выбор: простота установки, малая потребность в ресурсах и базовый набор функций веб‑интерфейса.
Если вам нужны расширенные возможности (CI/CD, регистр образов, глубокая интеграция SSO), рассмотрите GitLab или другие проекты. Но если приоритет — скорость, приватность и простота — начните с Gogs.
Часто задаваемые вопросы
Можно ли запускать Gogs на Raspberry Pi?
Да — доступны сборки для armv7/armv8. На Pi Gogs работает хорошо для небольших команд, но учитывайте скорость диска и ограниченные ресурсы.
Как переключиться с SQLite на MySQL/Postgres?
Перенесите данные, создав дамп SQL из SQLite и восстановив в целевой СУБД через промежуточные инструменты (например, sqlite3 .dump + правка синтаксиса) или импорт через специализированные конвертеры. Затем обновите app.ini и перезапустите сервис.
Поддерживает ли Gogs LDAP/AD?
Gogs имеет базовую поддержку внешних авторизаций и LDAP в настройках, но функционал и интеграции могут отличаться от более тяжеловесных решений.
Как обновлять Gogs?
Обычно процесс: остановить сервис, скачать новую версию, заменить бинарник/файлы, протестировать в staging и запустить. Всегда делайте бэкап базы и каталога репозиториев до обновления.
Дополнительные ресурсы
- Официальный сайт Gogs и репозиторий проекта (поиск через браузер по запросу Gogs Git service).
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента