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

Для кого эта инструкция
Эта инструкция подходит системным администраторам и энтузиастам, которые хотят управлять собственным сервером для обмена текстовыми сниппетами. Требуются базовые навыки работы с Linux, Docker и DNS.
Основные варианты использования
- Личный хостинг приватных заметок и конфигураций;
- Внутренний шаринг сниппетов в небольшой команде;
- Учебная площадка для изучения Git-ориентированных сервисов.
Содержание
- Почему стоит хостить Opengist самостоятельно
- Требования и подготовка системы
- Установка Docker и зависимостей
- Развёртывание Opengist через docker-compose
- Настройка Nginx как SSL-ревёрс-прокси (Certbot)
- Создание первой учётной записи и gist через веб
- Создание и обновление gist через SSH (Git)
- Чеклист безопасности и резервного копирования
- Технические рекомендации, сценарии отказа и отладка
- Критерии приёмки
- Итог
Почему стоит хостить Opengist самостоятельно
Opengist напоминает Pastebin, но использует Git как хранилище. Это даёт несколько преимуществ:
- История версий и простое восстановление через Git.
- Локальные учётные записи и управление видимостью паст.
- Низкие системные требования: один контейнер и папка данных.

Важно: Opengist применим для текстовых файлов, конфиденциальные данные храните с осторожностью и включайте дополнительные меры защиты (шифрование, ограничение доступа).
Требования и подготовка системы
Минимальные предположения для этой инструкции:
- Ubuntu 24.04 (VPS или физическая машина);
- 2 ГБ оперативной памяти и минимум 25 ГБ свободного диска;
- Собственный домен и возможность создать A-запись на него;
- Доступ к shell с правами sudo.
Примеры локализации: если вы используете другую версию Ubuntu, замените кодовое имя в репозиториях по необходимости.
Примечание: блок ниже ориентирован на системы семейства Ubuntu/Debian. Для других дистрибутивов используйте их менеджер пакетов и инструкции Docker проекта.
Установка Docker, Nginx и Certbot
- Получите и установите ключ подписи 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- Создайте файл репозитория 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- Обновите списки пакетов и обновите систему:
sudo apt update && sudo apt upgrade- Установите Docker, плагин Compose и Nginx:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx- Убедитесь, что пакет core для snap установлен и затем установите Certbot:
sudo snap install core
sudo snap install certbot --classic
Совет: если ваша система требует sudo без пароля для автоматизации, применяйте это осторожно и ограничивайте доступ.
Развёртывание Opengist через docker-compose
- Создайте папку для проекта и переходите в неё:
mkdir -p ~/opengist/data && cd ~/opengist- Создайте файл docker-compose.yml:
nano ./docker-compose.yml- Вставьте в файл следующий минимальный compose-файл и сохраните:
services:
opengist:
image: ghcr.io/thomiceli/opengist:1.7
container_name: opengist
restart: unless-stopped
ports:
- "6157:6157"
- "2222:2222"
volumes:
- ./data:/opengist- Запустите контейнер в фоне:
docker compose up -d- Проверьте, что контейнеры работают:
docker ps
Пояснение: порт 6157 — веб-интерфейс Opengist, 2222 — SSH-порт для приёма Git-push (если Opengist использует SSH). Папка ./data содержит все репозитории и настройки.
Настройка Nginx как SSL-ревёрс-прокси с Certbot
Чтобы открыть Opengist в интернете безопасно, настройте Nginx как обратный SSL-прокси.
Создайте A-запись в DNS, указывающую SUBDOMAIN на IP вашего сервера.
Создайте конфигурационный файл для сайта:
sudo nano /etc/nginx/sites-available/opengist- Вставьте корректную конфигурацию (замените 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;
}
}- Включите сайт, создав символическую ссылку:
sudo ln -s /etc/nginx/sites-available/opengist /etc/nginx/sites-enabled/- Проверьте конфигурацию Nginx и перезапустите сервис:
sudo nginx -t && sudo systemctl enable --now nginx.service
- Зарегистрируйтесь в EFF и получите сертификат через Certbot:
sudo certbot register --agree-tos -m YOUR@EMAIL.ADDRESS
sudo certbot --nginx -d SUBDOMAIN.YOUR-ROOT.DOMAIN- Проверьте доступность сайта по https://SUBDOMAIN.YOUR-ROOT.DOMAIN

Важно: Certbot настроит автоматическое обновление сертификатов через systemd timer. Убедитесь, что почта указана верно для уведомлений о проблемах.
Создание первой учётной записи и gist через веб
Opengist не создаёт администратора автоматически. Зарегистрируйте первую учётную запись через интерфейс:
- Откройте в браузере https://SUBDOMAIN.YOUR-ROOT.DOMAIN
- Нажмите кнопку Register в правом верхнем углу.

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

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

Поделитесь ссылкой на gist, скопировав адрес из адресной строки браузера.
Создание и обновление gist через SSH (Git)
Opengist поддерживает приём репозиториев через Git. Это удобно для терминальных сессий.
- Создайте локальную папку для gist и инициализируйте репозиторий:
mkdir ~/my-gist && cd ~/my-gist
cp ~/my-text-file.txt ~/my-gist/
git init
- Добавьте файлы и сделайте первый коммит:
git add .
git commit -m "My first Opengist commit."- Добавьте удалённый адрес Opengist и отправьте изменения (пример для HTTPS):
git remote add origin https://SUBDOMAIN.YOUR-ROOT.DOMAIN/init
git push -u origin masterЕсли Opengist ответит специальной командой для настройки удалённого origin — скопируйте её и выполните на локальной машине.

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

Чеклист безопасности и резервного копирования
Рекомендуемые действия перед публикацией в продакшн:
- Включите брандмауэр (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Отладка и распространённые проблемы
Контейнер не стартует:
- Посмотрите логи: docker logs opengist
- Проверьте права на папку ./data
Nginx выдаёт 502:
- Убедитесь, что Opengist слушает локально на 6157: docker ps и netstat/ss.
- Проверьте proxy_pass URL и синтаксис конфигурации Nginx.
Проблемы с Certbot:
- Убедитесь, что домен указывает на IP сервера и 80 порт открыт.
- Просмотрите логи /var/log/letsencrypt/letsencrypt.log
Ошибка 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)
- Если контейнер упал — перезапустить: docker compose restart
- Если данные повреждены — восстановить из последнего архива бэкапа в ./opengist/data
- Если 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.
- Поддерживайте резервные копии и базовые меры безопасности.
Похожие материалы
Восстановление кэша значков в Windows
Стрелки не работают в Excel — быстрое решение
Шифрование USB‑накопителя с VeraCrypt
PowerShell: история команд — просмотр и сохранение
Nandroid — полная резервная копия Android