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

Как установить и хостить Opengist на Ubuntu

7 min read Самохостинг Обновлено 26 Nov 2025
Установка Opengist на Ubuntu — шаг за шагом
Установка Opengist на Ubuntu — шаг за шагом

Фотография монитора с экраном, на котором виден код программы.

Для кого эта инструкция

Эта инструкция подходит системным администраторам и энтузиастам, которые хотят управлять собственным сервером для обмена текстовыми сниппетами. Требуются базовые навыки работы с Linux, Docker и DNS.

Основные варианты использования

  • Личный хостинг приватных заметок и конфигураций;
  • Внутренний шаринг сниппетов в небольшой команде;
  • Учебная площадка для изучения Git-ориентированных сервисов.

Содержание

  • Почему стоит хостить Opengist самостоятельно
  • Требования и подготовка системы
  • Установка Docker и зависимостей
  • Развёртывание Opengist через docker-compose
  • Настройка Nginx как SSL-ревёрс-прокси (Certbot)
  • Создание первой учётной записи и gist через веб
  • Создание и обновление gist через SSH (Git)
  • Чеклист безопасности и резервного копирования
  • Технические рекомендации, сценарии отказа и отладка
  • Критерии приёмки
  • Итог

Почему стоит хостить Opengist самостоятельно

Opengist напоминает Pastebin, но использует Git как хранилище. Это даёт несколько преимуществ:

  • История версий и простое восстановление через Git.
  • Локальные учётные записи и управление видимостью паст.
  • Низкие системные требования: один контейнер и папка данных.

Скриншот списка доступных gist на экземпляре Opengist.

Важно: Opengist применим для текстовых файлов, конфиденциальные данные храните с осторожностью и включайте дополнительные меры защиты (шифрование, ограничение доступа).


Требования и подготовка системы

Минимальные предположения для этой инструкции:

  • Ubuntu 24.04 (VPS или физическая машина);
  • 2 ГБ оперативной памяти и минимум 25 ГБ свободного диска;
  • Собственный домен и возможность создать A-запись на него;
  • Доступ к shell с правами sudo.

Примеры локализации: если вы используете другую версию Ubuntu, замените кодовое имя в репозиториях по необходимости.

Примечание: блок ниже ориентирован на системы семейства Ubuntu/Debian. Для других дистрибутивов используйте их менеджер пакетов и инструкции Docker проекта.


Установка Docker, Nginx и Certbot

  1. Получите и установите ключ подписи Docker и создайте каталог для ключей:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
  1. Создайте файл репозитория Docker:
sudo nano /etc/apt/sources.list.d/docker.list

Вставьте в файл следующую строку (сохраните Ctrl+O, выйдите Ctrl+X):

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable
  1. Обновите списки пакетов и обновите систему:
sudo apt update && sudo apt upgrade
  1. Установите Docker, плагин Compose и Nginx:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx
  1. Убедитесь, что пакет core для snap установлен и затем установите Certbot:
sudo snap install core
sudo snap install certbot --classic

Терминал с процессом установки зависимостей для Opengist.

Совет: если ваша система требует sudo без пароля для автоматизации, применяйте это осторожно и ограничивайте доступ.


Развёртывание Opengist через docker-compose

  1. Создайте папку для проекта и переходите в неё:
mkdir -p ~/opengist/data && cd ~/opengist
  1. Создайте файл docker-compose.yml:
nano ./docker-compose.yml
  1. Вставьте в файл следующий минимальный compose-файл и сохраните:
services:
  opengist:
    image: ghcr.io/thomiceli/opengist:1.7
    container_name: opengist
    restart: unless-stopped
    ports:
      - "6157:6157"
      - "2222:2222"
    volumes:
      - ./data:/opengist
  1. Запустите контейнер в фоне:
docker compose up -d
  1. Проверьте, что контейнеры работают:
docker ps

Терминал с запущенным контейнером Opengist.

Пояснение: порт 6157 — веб-интерфейс Opengist, 2222 — SSH-порт для приёма Git-push (если Opengist использует SSH). Папка ./data содержит все репозитории и настройки.


Настройка Nginx как SSL-ревёрс-прокси с Certbot

Чтобы открыть Opengist в интернете безопасно, настройте Nginx как обратный SSL-прокси.

  1. Создайте A-запись в DNS, указывающую SUBDOMAIN на IP вашего сервера.

  2. Создайте конфигурационный файл для сайта:

sudo nano /etc/nginx/sites-available/opengist
  1. Вставьте корректную конфигурацию (замените SUBDOMAIN.YOUR-ROOT.DOMAIN на ваш поддомен):
server {
  listen 80;
  server_name SUBDOMAIN.YOUR-ROOT.DOMAIN;

  location / {
    proxy_pass http://127.0.0.1:6157;
    proxy_http_version 1.1;
    proxy_redirect off;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
  }
}
  1. Включите сайт, создав символическую ссылку:
sudo ln -s /etc/nginx/sites-available/opengist /etc/nginx/sites-enabled/
  1. Проверьте конфигурацию Nginx и перезапустите сервис:
sudo nginx -t && sudo systemctl enable --now nginx.service

Терминал с запущенным обратным прокси Nginx на сервере.

  1. Зарегистрируйтесь в EFF и получите сертификат через Certbot:
sudo certbot register --agree-tos -m YOUR@EMAIL.ADDRESS
sudo certbot --nginx -d SUBDOMAIN.YOUR-ROOT.DOMAIN
  1. Проверьте доступность сайта по https://SUBDOMAIN.YOUR-ROOT.DOMAIN

Скриншот Opengist, работающего через HTTPS.

Важно: Certbot настроит автоматическое обновление сертификатов через systemd timer. Убедитесь, что почта указана верно для уведомлений о проблемах.


Создание первой учётной записи и gist через веб

Opengist не создаёт администратора автоматически. Зарегистрируйте первую учётную запись через интерфейс:

  1. Откройте в браузере https://SUBDOMAIN.YOUR-ROOT.DOMAIN
  2. Нажмите кнопку Register в правом верхнем углу.

Скриншот с выделенной кнопкой Register в правом верхнем углу интерфейса Opengist.

  1. Укажите имя пользователя и пароль, затем нажмите Register.

Скриншот процесса регистрации первой учётной записи Opengist.

После регистрации вы попадёте на страницу создания gist. Введите текст в поле и нажмите Create Public Gist (или выберите приватность через стрелку рядом с кнопкой).

Скриншот интерфейса создания нового gist в Opengist.

Поделитесь ссылкой на gist, скопировав адрес из адресной строки браузера.


Создание и обновление gist через SSH (Git)

Opengist поддерживает приём репозиториев через Git. Это удобно для терминальных сессий.

  1. Создайте локальную папку для gist и инициализируйте репозиторий:
mkdir ~/my-gist && cd ~/my-gist
cp ~/my-text-file.txt ~/my-gist/
git init

Терминал с процессом создания локального Git-репозитория для gist.

  1. Добавьте файлы и сделайте первый коммит:
git add .
git commit -m "My first Opengist commit."
  1. Добавьте удалённый адрес Opengist и отправьте изменения (пример для HTTPS):
git remote add origin https://SUBDOMAIN.YOUR-ROOT.DOMAIN/init
git push -u origin master

Если Opengist ответит специальной командой для настройки удалённого origin — скопируйте её и выполните на локальной машине.

Терминал с подсказкой ввода учётных данных для Opengist.

Проверьте результат в веб-интерфейсе.

Скриншот новой страницы gist в интерфейсе Opengist.


Чеклист безопасности и резервного копирования

Рекомендуемые действия перед публикацией в продакшн:

  • Включите брандмауэр (ufw) и разрешите только нужные порты (80, 443, SSH только при необходимости).
  • Настройте fail2ban для защиты от brute-force на SSH и, при необходимости, на веб-интерфейс.
  • Шифруйте диск или используйте зашифрованные тома для хранения ./opengist/data.
  • Делайте регулярные бэкапы папки ./opengist/data и конфигураций Nginx/Certbot.
  • Ограничьте доступ к Docker сокету: не давайте нежелательным пользователям права на docker.
  • Используйте надёжные пароли и при возможности двухфакторную аутентификацию во внешних системах (если интегрируете).

Пример бекапа (вручную):

sudo tar -czf /backups/opengist-data-$(date +%F).tgz -C ~/opengist data

Отладка и распространённые проблемы

  1. Контейнер не стартует:

    • Посмотрите логи: docker logs opengist
    • Проверьте права на папку ./data
  2. Nginx выдаёт 502:

    • Убедитесь, что Opengist слушает локально на 6157: docker ps и netstat/ss.
    • Проверьте proxy_pass URL и синтаксис конфигурации Nginx.
  3. Проблемы с Certbot:

    • Убедитесь, что домен указывает на IP сервера и 80 порт открыт.
    • Просмотрите логи /var/log/letsencrypt/letsencrypt.log
  4. Ошибка push через Git:

    • Проверьте URL удалённого репозитория и учётные данные.
    • Для SSH-пушей настройте ключи и убедитесь, что сервер принимает SSH на ожидаемом порту.

Модели принятия решений и альтернативы

Когда Opengist подходит:

  • Нужна лёгкая служба для текстовых сниппетов с версионированием.
  • Желаете хранить данные локально в Git-репозиториях.

Когда Opengist не подходит:

  • Нужна поддержка бинарных файлов/медиа в больших объёмах — лучше использовать специализированное хранилище.
  • Требуется интеграция с корпоративной аутентификацией сразу из коробки — рассмотрите GitLab или Gitea с расширенной интеграцией LDAP/SSO.

Альтернативы:

  • Gitea — полный self-hosted Git-сервис с более широким набором функций;
  • GitLab CE — тяжёлый, но мощный инструмент для команд и CI;
  • Простые Pastebin/self-hosted заметочники — при простых требованиях.

Рольные чеклисты

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

  • Настроить DNS и SSL;
  • Обеспечить резервное копирование и мониторинг;
  • Настроить брандмауэр и fail2ban.

Разработчик (пользователь):

  • Зарегистрировать учётную запись;
  • Настроить локальный Git и SSH-ключи;
  • Пушить изменения и проверять историю коммитов.

Оператор (инфраструктура):

  • Обновлять контейнеры и систему;
  • Проверять логи и тестировать бэкапы;
  • Проводить ротацию сертификатов и ключей при необходимости.

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

  • Opengist доступен по HTTPS и показывает страницу входа/регистрации.
  • Успешная регистрация первой учётной записи и создание public gist.
  • Умение пушить локальный репозиторий и видеть изменения в веб-интерфейсе.
  • Наличие регулярного бэкапа данных и настроенного обновления сертификатов.

Быстрый план восстановления (runbook)

  1. Если контейнер упал — перезапустить: docker compose restart
  2. Если данные повреждены — восстановить из последнего архива бэкапа в ./opengist/data
  3. Если SSL истёк — запустить sudo certbot renew –force-renewal и перезапустить nginx

Краткое руководство по безопасности (шорт-хитс)

  • Закрыть прямой доступ к Docker сокету для непривилегированных пользователей.
  • Использовать TLS между прокси и бэкендом при развёртывании в распределённой среде.
  • Хранить бэкап в удалённом хранилище с ограниченным доступом.

Итог

Opengist — хороший выбор для простого, Git-ориентированного обмена текстовыми сниппетами. Развёртывание на Ubuntu в Docker занимает немного времени: установка Docker, запуск контейнера, настройка Nginx и получение сертификата Certbot — и сервис готов к использованию. Не забудьте про базовую безопасность и регулярные бэкапы.

Быстрые ссылки и рекомендации

  • Проверяйте логи docker logs opengist при ошибках.
  • Для развёртывания в продакшн используйте систему мониторинга и автоматические бэкапы.

Image credit: Joan Gamell via Unsplash. Все изменения и скриншоты — Ramces Red.


Summary

  • Opengist можно быстро развернуть на Ubuntu 24.04 с помощью Docker.
  • Nginx + Certbot обеспечат доступ по HTTPS.
  • Поддерживайте резервные копии и базовые меры безопасности.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Восстановление кэша значков в Windows
Windows

Восстановление кэша значков в Windows

Стрелки не работают в Excel — быстрое решение
Excel

Стрелки не работают в Excel — быстрое решение

Шифрование USB‑накопителя с VeraCrypt
Безопасность

Шифрование USB‑накопителя с VeraCrypt

PowerShell: история команд — просмотр и сохранение
PowerShell

PowerShell: история команд — просмотр и сохранение

Nandroid — полная резервная копия Android
Android.

Nandroid — полная резервная копия Android

Ошибка 0x800f0806 в Windows 11 22H2
Windows 11

Ошибка 0x800f0806 в Windows 11 22H2