Гид по технологиям

Установка и настройка Gogs на Ubuntu 16.04

• 7 min read • DevOps • Обновлено 19 Nov 2025
Установка Gogs на Ubuntu 16.04
Установка Gogs на Ubuntu 16.04

Введение

Gogs — это бесплатный и открытый Git-сервис, написанный на языке Go. Он позволяет быстро развернуть собственный Git-сервер на минимальном оборудовании. Веб-интерфейс Gogs похож на GitHub и поддерживает базы данных MySQL, PostgreSQL и SQLite (а также MSSQL и TiDB).

В этом руководстве показано, как установить и настроить Gogs на Ubuntu 16.04: как установить Go, настроить PostgreSQL, собрать Gogs, запустить его как systemd-сервис и подключить Nginx в качестве обратного прокси.

Важно: Ubuntu 16.04 устарела по жизненному циклу; рассмотрите обновление до поддерживаемой LTS-версии для получения обновлений безопасности.

Требования

  • Сервер с Ubuntu 16.04
  • Привилегии root или доступ через sudo
  • Доступ к интернету для загрузки пакетов и исходников

Что мы сделаем

  1. Обновим систему
  2. Установим и настроим PostgreSQL
  3. Установим Go и Git
  4. Склонируем и соберём Gogs
  5. Настроим конфигурацию Gogs
  6. Запустим Gogs как службу systemd
  7. Настроим Nginx в роли обратного прокси
  8. Протестируем установку

Шаг 1 — Обновление системы

Перед началом обновите списки пакетов и установленные пакеты:

sudo apt update
sudo apt upgrade

Это обеспечит совместимость версий и установку последних исправлений безопасности для Ubuntu 16.04.

Шаг 2 — Установка и настройка PostgreSQL

Gogs поддерживает несколько СУБД; в этом руководстве мы используем PostgreSQL.

Установите PostgreSQL и необходимые заголовки клиента:

sudo apt install -y postgresql postgresql-client libpq-dev

Запустите и включите сервис PostgreSQL:

systemctl start postgresql
systemctl enable postgresql

Создайте базу данных и пользователя для Gogs. Переключитесь на системного пользователя postgres и откройте psql:

su - postgres
psql

В psql создайте пользователя git и базу данных gogs_production:

CREATE USER git CREATEDB;
\password git
CREATE DATABASE gogs_production OWNER git;

Создание базы данных Gogs

Теперь у вас есть пользователь postgres и база gogs_production, которыми будет пользоваться Gogs.

Совет: используйте сложный пароль для пользователя git и храните его в менеджере паролей.

Шаг 3 — Установка Go и Git

Установите Git из репозитория Ubuntu:

sudo apt install git

Добавьте системного пользователя git (без возможности входа):

sudo adduser --disabled-login --gecos 'Gogs' git

Переключитесь на пользователя git и создайте каталог для локальной установки Go:

su - git
mkdir -p /home/git/local

Перейдите в каталог и скачайте tarball с Go (в руководстве используется версия go1.9.2 как пример; загрузите актуальную стабильную версию с официального сайта при необходимости):

cd ~/local
wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz

Установка Go и Git

Распакуйте архив и удалите его:

tar -xf go1.9.2.linux-amd64.tar.gz
rm -f go1.9.2.linux-amd64.tar.gz

Установленные бинарные файлы Go появятся в ~/local/go. Настройте переменные окружения GOROOT и GOPATH, а также PATH:

cd ~
echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc
echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrc

Загрузите настройки Bash:

source ~/.bashrc

Проверьте версию go:

go version

Проверка версии Go

Теперь под пользователем git доступна команда go.

Примечание: если у пользователя по умолчанию оболочка не bash, назначьте bash как shell по умолчанию.

Шаг 4 — Установка Gogs

Под пользователем git скачайте исходники Gogs через go get и соберите их:

su - git
go get -u github.com/gogits/gogs

Исходники будут загружены в $GOPATH/src/github.com/gogits/gogs. Перейдите туда и соберите бинарник:

cd $GOPATH/src/github.com/gogits/gogs
go build

Если ошибок нет, запустите Gogs локально:

./gogs web

По умолчанию Gogs слушает порт 3000.

Запуск Gogs

Откройте в браузере http://:3000, чтобы увидеть веб-инсталлятор Gogs.

Веб-инсталлятор Gogs

Нажмите Ctrl+C в терминале, чтобы остановить временный процесс и перейти к конфигурации как службы.

Шаг 5 — Настройка Gogs

Создайте каталог custom/conf и скопируйте туда файл app.ini для редактирования:

cd $GOPATH/src/github.com/gogits/gogs
mkdir -p custom/conf/
cp conf/app.ini custom/conf/app.ini
vim custom/conf/app.ini

В секции [server] измените адрес прослушивания на localhost:

[server]
PROTOCOL = http
DOMAIN = localhost
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
HTTP_ADDR = 127.0.0.1
HTTP_PORT = 3000

В секции [database] укажите параметры PostgreSQL (замените PASSWD на ваш пароль):

[database]
DB_TYPE = postgres
HOST = 127.0.0.1:5432
NAME = gogs_production
USER = git
PASSWD = aqwe123@#

Сохраните и запустите Gogs для проверки:

./gogs web

Проверка конфигурации

Gogs должен успешно подключиться к базе и открывать страницу установки на localhost:3000.

Совет: храните custom/conf/app.ini под управлением прав доступа, чтобы файл конфигурации и пароль базы не были доступны другим пользователям.

Шаг 6 — Запуск Gogs как службы systemd

Создайте unit-файл systemd, чтобы Gogs стартовал автоматически и работал в фоне.

Откройте /etc/systemd/system/gogs.service и вставьте конфигурацию:

cd /etc/systemd/system
vim gogs.service

Содержимое service-файла:

[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mariadb.service mysqld.service postgresql.service memcached.service redis.service

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/go/src/github.com/gogits/gogs
ExecStart=/home/git/go/src/github.com/gogits/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git

[Install]
WantedBy=multi-user.target

Перезагрузите systemd, затем запустите и включите сервис:

systemctl daemon-reload
systemctl start gogs
systemctl enable gogs

Проверьте статус и прослушиваемые порты:

netstat -plntu
systemctl status gogs

Gogs слушает сетевой интерфейс

Шаг 7 — Настройка Nginx в качестве обратного прокси

Рекомендуется использовать обратный прокси (Nginx) для SSL-терминации, виртуальных хостов и управления HTTP-заголовками.

Добавьте репозиторий Nginx и установите сервер:

sudo add-apt-repository -y ppa:nginx/stable
sudo apt update
sudo apt install nginx -y

Создайте виртуальный хост в /etc/nginx/sites-available/gogs и вставьте конфигурацию (измените server_name на ваш домен):

cd /etc/nginx/sites-available
vim gogs
server {
    listen 80;
    server_name git.hakase-labs.co;

    location / {
        proxy_pass http://localhost:3000;
    }
}

Примечание: замените server_name на ваш домен.

Активируйте сайт и проверьте конфигурацию nginx:

ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Рассмотрите использование Certbot для установки HTTPS и автоматического продления сертификатов.

Шаг 8 — Тестирование

Откройте браузер и перейдите на URL вашего Gogs (например, http://git.hakase-labs.co). На странице установки введите параметры БД и создайте административный аккаунт.

Инсталлятор Gogs

Заполните Admin account settings — имя пользователя, пароль и e-mail — затем нажмите Install Gogs. После успешной установки вы попадёте на панель управления Gogs.

Панель Gogs

Админская панель Gogs

Gogs теперь работает с PostgreSQL и Nginx на Ubuntu 16.04.

Рекомендации по безопасности и эксплуатации

  • Всегда используйте HTTPS с доверенным сертификатом (Let’s Encrypt или коммерческий CA).
  • Закройте доступ к порту 3000 извне — проксируйте трафик через Nginx и слушайте на localhost.
  • Ограничьте доступ к файлу custom/conf/app.ini (chmod 600).
  • Регулярно обновляйте Gogs, Go и СУБД; протестируйте обновления на тестовой среде.

Жёсткая настройка

  • Настройте firewall (ufw) и разрешите только нужные порты (80/443 для веба, 22 для SSH при необходимости).
  • Используйте fail2ban для защиты от брутфорса на SSH и веб-интерфейс.
  • Если нужны внешние репозитории, используйте SSH-ключи для доступа пользователей.

Резервное копирование и откат

  • Регулярно делайте дампы базы данных:
pg_dump -U git -h 127.0.0.1 -Fc gogs_production > gogs_production_$(date +%F).dump
  • Бэкапьте каталог custom и репозитории (обычно находятся в каталогах data или custom/services/git).
  • Для отката: восстановите дамп через pg_restore и восстановите файлы конфигурации и репозиториев.

Альтернативные подходы

  • Использование SQLite для небольших инстансов — проще в настройке, но менее масштабируемо.
  • Использование MySQL/MariaDB вместо PostgreSQL при наличии требований инфраструктуры.
  • Развёртывание в Docker-контейнерах для упрощения перемещения между хостами.

Когда Gogs подходит, а когда нет

Подходит:

  • Малые и средние команды, которым нужен лёгкий самостоятеленый Git-хост.
  • Быстрая доставка репозиториев без излишних фич.

Не подходит:

  • Проекты, требующие сложной интеграции с CI/CD на уровне поставщика (можно интегрировать, но потребуются дополнительные инструменты).
  • Среды, где требуется корпоративная поддержка с SLA (Gogs — проект с сообществом).

Роль‑ориентированные чек-листы

Администратор:

  • Обновить систему и применить патчи.
  • Настроить бэкап БД и файлов.
  • Настроить HTTPS и fail2ban.

DevOps:

  • Настроить systemd unit и мониторинг (Prometheus, Grafana, либо простой сервисный мониторинг).
  • Автоматизировать развёртывание (Ansible, Terraform + cloud-init).

Разработчик:

  • Создать SSH-ключ и загрузить в профиль Gogs.
  • Проверить клонирование, пуш и создание pull/merge request.

Критерии приёмки

  • Сервис Gogs запущен как systemd unit и активен после перезагрузки.
  • Веб-интерфейс доступен по домену через HTTPS и проксируется Nginx.
  • Пользователь администратор создан, можно создать и клонировать репозиторий.
  • Ежедневный бэкап БД и репозиториев настроен.

Быстрый справочник (fact box)

  • По умолчанию порт: 3000
  • Типичные пути: $GOPATH/src/github.com/gogits/gogs
  • Systemd unit: /etc/systemd/system/gogs.service
  • Поддерживаемые СУБД: MySQL, PostgreSQL, SQLite, MSSQL, TiDB

Модель принятия решений (ментальная схема)

  • Нужна простота и лёгкость администрирования → Gogs
  • Нужна интеграция и богатый функционал (CI, Marketplace) → рассмотреть GitLab или GitHub Enterprise
flowchart TD
  A[Обновление системы] --> B[Установка PostgreSQL]
  B --> C[Установка Go и Git]
  C --> D[Сборка Gogs]
  D --> E[Настройка Gogs]
  E --> F[Запуск как service]
  F --> G[Настройка Nginx]
  G --> H[Тестирование]

Краткий словарь

  • Gogs — легковесный Git-сервер на Go.
  • GOROOT — директория установки Go.
  • GOPATH — рабочая директория Go-проектов.
  • systemd — системный менеджер служб в Linux.

Тест-кейсы и приёмочные проверки

  • Попытка клонирования репозитория по HTTPS и по SSH.
  • Проверка создания и удаления репозитория через веб-интерфейс.
  • Проверка, что служба gogs автоматически перезапускается после kill и перезагрузки сервера.

Советы по миграции и совместимости

  • При переносе между версиями Gogs делайте бэкап базы и репозиториев.
  • Проверяйте release notes Gogs на предмет несовместимых изменений в схемах базы.
  • При переходе с SQLite на PostgreSQL экспортируйте и импортируйте данные аккуратно.

Заключение

Это руководство даёт практический набор шагов для развёртывания Gogs на Ubuntu 16.04 с PostgreSQL и Nginx. После установки уделите внимание безопасности, резервному копированию и регулярным обновлениям.

Ресурсы

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро