Всем привет! Тут я продолжу писать туториалы, которые помогут вам отвязаться от сервисов и сделать ваши данные именно вашим. Да, да, всё что не у вас дома на жестком диске вам не принадлежит. В этом туториале настроим сервис https://github.com/jonhadfield/soba, который будет автоматически делать бэкапы с ваших репозиториев в гитхабе. Неприятно однажды обнаружить, то ваш гитхаб аккаунт был заблокирован или по чьей-либо ошибке был удален ваш код (привет гитлаб).

Предыдущие публикации

Цифровая свобода. Часть 1. Менеджер паролей

https://unsplash.com/photos/vc3iVL_znJ8
https://unsplash.com/photos/vc3iVL_znJ8

Платформа

  • PC\Raspberry PI

  • Linux

  • Docker

  • Доступ в интернет

Настройка окружения

Здесь и далее приведены примеры на ubuntu 20

Обновляем пакеты

sudo apt update
sudo apt upgrade

Настраиваем Firewall

sudo ufw allow https
sudo ufw allow http
sudo ufw allow ssh
yes | sudo ufw enable

Установка docker

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
sudo apt install docker-ce

Токен доступа

Для доступа к вашим репозиториям нужно выдать приложению ваш токен https://github.com/settings/tokens/new.

Выберите доступы. К приватным репозиториям стоит давать доступ исключительно осознанно. Код soba находится в открытом доступе, можете провести свой аудит и решить давать доступы к приватному репо или нет.

Запуск сервиса

docker run -t -d \
             -v <your backup folder>:/backup \
             -e GIT_BACKUP_DIR='/backup' \
             -e GITHUB_TOKEN='token' \
             -e GIT_BACKUP_INTERVAL='24' \
             -e GITHUB_BACKUPS=1 \
             --restart always \
             ghcr.io/jonhadfield/soba

Немного про параметры запуска

GITHUB_TOKEN - токен доступа из гитхаба

GIT_BACKUP_INTERVAL - как часто запускать бэкап, со значением 24 запуск будет происходить один раз в сутки.

GITHUB_BACKUPS количество хранимых бандлов, достаточно будет одного для экономии места. Если сделать больше, то это обезопасит в случае, когда вдруг кто-то сделает force push в ваш репо.

--restart always с этим параметром контейнер будет запускаться после перезагрузки вашей машины.

Что бы остановить контейнер нужно сначала найти контейнер

docker ps -a

выключить restart always и остановить контейнер

docker update --restart=no e5830eb61af5
docker stop e5830eb61af5

Востановление

Сервис сохраняет bundle репозитория, востановить его можно просто с помощью git.

git clone stimulus.20220323221931.bundle

Итоги

  • сервис для бэкапа кода

  • всё происходит в автоматическом режиме, не нужно никаких ручных запусков

  • ваш код хранится у вас

  • не страшны блокировки, проблемы и прочие несчастья с GIT-сервисами

Комментарии (6)


  1. iAndrey
    24.03.2022 06:12
    +6

    Я может чего-то не понимаю, но фраза "туториалы, которые помогут вам отвязаться от сервисов и сделать ваши данные именно вашим" как-то не вяжется с "docker pull $imgname"

    Вендорлок на гитхаб меняется на вендорлок на докерхаб.


    1. thedrnic
      24.03.2022 18:05

      Однако ничего не мешает сделать так:

      #Загрузка образа из сети
      docker pull docker/compose:1.29.2

      #Сохранение образа локально
      docker save -o docker_compose_1.29.2.tar docker/compose:1.29.2

      #Загрузка образа с локального диска
      docker load < docker_compose_1.29.2.tar

      Дальше останется только выкачивать npm, pip... и т.д. репозитории, пакеты для OC, саму OC и тогда данные точно никуда не пропадут.. пока жив жёсткий диск)


      1. iAndrey
        25.03.2022 11:29

        А можно ограничиться локальным зеркалом репозитория дистрибутива и установки необходимых пакетов напрямую, без лишних прослоек. Тогда докер вообще выбросить можно будет. И тогда точно можно будет инфраструктуру с нуля развернуть.


  1. strelkan
    24.03.2022 08:01
    +7

    всё проще - ставим gitea и указываем адреса реп, с которых надо делать зеркала


    1. unsignedchar
      24.03.2022 08:10
      +5

      А просто git clone / pull нельзя в cron вписать?


    1. dimskiy
      24.03.2022 09:34
      +2

      Или просто хостим свой код на локальном gitea, а гитхаб добавляем как upstream для публикации релизов «в мир».