Как самохостинг может защитить вас от неожиданных изменений Google: Полное руководство

Узнайте, как самостоятельно размещать сервисы, чтобы избежать зависимости от Google и сохранить контроль над своими данными. Практическое руководство по замене сервисов Google.

Продвинутый

Понимание концепции самохостинга

Самохостинг предлагает альтернативный подход к управлению вашими данными, при котором вы самостоятельно управляете сервисами на собственном оборудовании. Это дает полный контроль над данными и защиту от внезапных изменений со стороны корпораций.

Подготовка инфраструктуры

Для самохостинга потребуется сервер или компьютер, операционная система (рекомендуется Linux), доменное имя и статический IP-адрес или динамический DNS.

Установка Docker и Docker Compose

Docker упрощает развертывание приложений, изолируя их в контейнерах. Необходимо установить Docker и Docker Compose на вашем сервере.

# Обновляем систему
sudo apt update && sudo apt upgrade -y

# Устанавливаем зависимости
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

# Добавляем официальный репозиторий Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Устанавливаем Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# Добавляем пользователя в группу docker
sudo usermod -aG docker $USER

# Устанавливаем Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Создание структуры директорий

Необходимо создать структуру директорий для каждого сервиса, который вы планируете развернуть.

# Создаем директорию для наших сервисов
mkdir ~/selfhosted
cd ~/selfhosted

# Создаем директории для каждого сервиса
mkdir -p photos drive mail calendar notes backups

Миграция данных из Google сервисов

Перенос данных из Google сервисов (Photos, Drive, Gmail) в самохостинговые альтернативы. Для фотографий и файлов можно использовать Google Takeout, для почты - IMAP синхронизацию.

# Для переноса фотографий
mkdir -p ~/selfhosted/photos/originals
cp -r ~/Загрузки/google_photos_archive/* ~/selfhosted/photos/originals/
chmod -R 755 ~/selfhosted/photos/originals

# Для переноса файлов
mkdir -p ~/selfhosted/drive/data
cp -r ~/Загрузки/google_drive_archive/* ~/selfhosted/drive/data/
chmod -R 755 ~/selfhosted/drive/data

# Для переноса почты
imapsync \
--host1 imap.gmail.com \
--user1 ваш_адрес@gmail.com \
--password1 ваш_пароль_от_gmail \
--host2 ваш_сервер \
--user2 ваш_новый_адрес@ваш_домен.com \
--password2 ваш_новый_пароль

Развертывание PhotoPrism (альтернатива Google Photos)

PhotoPrism - приложение для организации медиафайлов с ИИ для распознавания объектов и лиц. Развертывается через Docker Compose.

version: '3.7'

services:
  photoprism:
    image: photoprism/photoprism:latest
    ports:
      - "2342:2342"
    volumes:
      - ./photos/storage:/photoprism/storage
      - ./photos/originals:/photoprism/originals
    environment:
      - PHOTOPRISM_ADMIN_PASSWORD=ваш_надежный_пароль
      - PHOTOPRISM_SITE_TITLE=Мои Фотографии
    restart: unless-stopped

Развертывание Nextcloud (альтернатива Google Drive)

Nextcloud - комплексное решение для файлового хранилища с возможностями совместной работы. Развертывается через Docker Compose с MariaDB.

version: '3.7'

services:
  nextcloud:
    image: nextcloud:latest
    ports:
      - "8080:80"
    volumes:
      - ./drive/html:/var/www/html
      - ./drive/data:/var/www/html/data
    environment:
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=надежный_пароль
      - MYSQL_HOST=db
    restart: unless-stopped
    depends_on:
      - db

  db:
    image: mariadb:latest
    environment:
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=надежный_пароль
      - MYSQL_ROOT_PASSWORD=очень_надежный_пароль
    volumes:
      - ./drive/db:/var/lib/mysql
    restart: unless-stopped

Развертывание Mailcow (альтернатива Gmail)

Mailcow - комплексное решение для организации почтового сервера. Требует настройки DNS и SSL-сертификатов.

# Клонируем репозиторий
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized

# Запускаем установку
./generate_config.sh

# Настройка SSL
sudo apt install certbot
sudo certbot certonly --standalone -d ваш_домен.com

Развертывание Baikal (альтернатива Google Calendar)

Baikal - простой и легковесный CalDAV-сервер для организации календарей. Развертывается через Docker Compose.

version: '3.7'

services:
  baikal:
    image: sandrobaeuerle/baikal:latest
    ports:
      - "8081:80"
    volumes:
      - ./calendar/html:/var/www/html
      - ./calendar/db:/var/db
    restart: unless-stopped

Развертывание Nextcloud Notes (альтернатива Google Keep)

Nextcloud Notes - приложение для создания заметок, которое активируется в настройках Nextcloud после его установки.

Активация приложения в веб-интерфейсе Nextcloud:
1. Войдите в Nextcloud
2. Перейдите в раздел 'Приложения'
3. Найдите 'Notes' и активируйте его

Настройка доступа и безопасности

Настройка HTTPS через Let's Encrypt, обратного прокси через Nginx и регулярного резервного копирования данных.

# Скрипт резервного копирования
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf ~/backups/backup_$DATE.tar.gz -C ~/selfhosted . --exclude=drive/data

docker exec nextcloud-db mysqldump -u nextcloud -p nextcloud > ~/backups/nextcloud_db_$DATE.sql

docker exec mailcow-dockerized-mailcow-mailcow-1 tar -czf - /var/vmail > ~/backups/mail_vmail_$DATE.tar.gz
docker exec mailcow-dockerized-mailcow-mailcow-1 mysqldump -u root -p mailcow > ~/backups/mailcow_db_$DATE.sql

Мониторинг и обновление сервисов

Настройка мониторинга через Prometheus и Grafana, а также автоматическое обновление сервисов через cron.

# Скрипт обновления сервисов
#!/bin/bash
for service in photos drive mail calendar notes; do
  if [ -d "$HOME/selfhosted/$service" ]; then
    cd "$HOME/selfhosted/$service"
    docker-compose pull
    docker-compose up -d
  fi
done

# Добавление в cron
crontab -e
# 0 3 * * 0 /home/ваш_пользователь/update_services.sh