Photoprism: развёртывание на собственном сервере

Полный гайд по установке Photoprism в Homelab: сравнение Docker и Proxmox, настройка Nginx Proxy Manager, подключение MinIO/S3 и ускорение ИИ‑распознавания.

Не указано
Алексей Кузнецов
Алексей Кузнецов
Системный администратор15 января 2026 г.

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

Обновите систему и установите необходимые пакеты для работы Docker.

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
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
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
newgrp docker

Установка Docker Compose

Скачайте и установите бинарный файл 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

Создание директории и файла конфигурации

Создайте папку для проекта и файл docker-compose.yml с конфигурацией Photoprism и базы данных MariaDB.

mkdir ~/photoprism && cd ~/photoprism

Настройка docker-compose.yml

Создайте файл docker-compose.yml с настройками контейнеров Photoprism и MariaDB. Укажите пароли и пути к папкам с фотографиями.

version: '3.8'

services:
  photoprism:
    image: photoprism/photoprism:latest
    container_name: photoprism
    restart: unless-stopped
    ports:
      - "2342:2342"
    environment:
      PHOTOPRISM_ADMIN_PASSWORD: "ВашСложныйПароль123!"
      PHOTOPRISM_AUTH_MODE: "password"
      PHOTOPRISM_SITE_URL: "https://photos.example.com"
      PHOTOPRISM_SITE_TITLE: "Моя Фототека"
      PHOTOPRISM_DATABASE_DRIVER: "mysql"
      PHOTOPRISM_DATABASE_SERVER: "db:3306"
      PHOTOPRISM_DATABASE_NAME: "photoprism"
      PHOTOPRISM_DATABASE_USER: "photoprism"
      PHOTOPRISM_DATABASE_PASSWORD: "DBPassword123!"
      PHOTOPRISM_EXIF_BRUTEFORCE: "true"
      PHOTOPRISM_FFMPEG: "true"
    volumes:
      - ./photoprism/storage:/photoprism/storage
      - /путь/к/вашим/фото:/photoprism/import
      - /путь/к/вашим/фото:/photoprism/originals
    depends_on:
      - db
    networks:
      - photoprism-net

  db:
    image: mariadb:10.11
    container_name: photoprism-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "RootDBPassword123!"
      MYSQL_DATABASE: "photoprism"
      MYSQL_USER: "photoprism"
      MYSQL_PASSWORD: "DBPassword123!"
    volumes:
      - ./mariadb:/var/lib/mysql
    networks:
      - photoprism-net

networks:
  photoprism-net:
    driver: bridge

Запуск контейнеров

Запустите контейнеры Photoprism и MariaDB в фоновом режиме.

docker-compose up -d

Первоначальная настройка

Проверьте логи на наличие ошибок, затем откройте веб-интерфейс по адресу http://IP_сервера:2342. Войдите с логином 'admin' и паролем, указанным в конфиге. Перейдите в Settings -> Library и нажмите 'Start Indexing' для сканирования фотографий.

docker-compose logs -f photoprism

Настройка доступа через Nginx Proxy Manager

Для безопасного доступа из интернета добавьте Nginx Proxy Manager в docker-compose.yml. Запустите его, зайдите на порт 81, настройте Proxy Host на ваш домен,指向 на photoprism:2342, и получите SSL сертификат Let's Encrypt.

nginx-proxy-manager:
  image: jc21/nginx-proxy-manager:latest
  container_name: npm
  restart: unless-stopped
  ports:
    - "80:80"
    - "81:81"
    - "443:443"
  volumes:
    - ./npm/data:/data
    - ./npm/letsencrypt:/etc/letsencrypt
  networks:
    - photoprism-net

Интеграция с внешним хранилищем (MinIO/S3)

Добавьте сервис MinIO в docker-compose.yml для использования S3-совместимого хранилища. После запуска создайте бакет и настройте переменные окружения Photoprism (PHOTOPRISM_S3_ENDPOINT, PHOTOPRISM_S3_ACCESS_KEY и др.) для подключения к нему.

minio:
  image: minio/minio:latest
  container_name: minio
  restart: unless-stopped
  ports:
    - "9000:9000"
    - "9001:9001"
  environment:
    MINIO_ROOT_USER: "minioadmin"
    MINIO_ROOT_PASSWORD: "minioadmin123!"
  volumes:
    - ./minio/data:/data
  command: server /data --console-address ":9001"
  networks:
    - photoprism-net

Активация AI-распознавания

Включите TensorFlow и распознавание лиц в файле docker-compose.yml, добавив соответствующие переменные окружения. Перезапустите контейнер для применения изменений.

PHOTOPRISM_TENSORFLOW: "true"
PHOTOPRISM_TENSORFLOW_MODELS: "/photoprism/storage/models"
PHOTOPRISM_FACE_RECOGNITION: "true"

Настройка автоматического бэкапа

Создайте скрипт backup.sh для резервного копирования данных Photoprism и базы данных MariaDB. Добавьте выполнение скрипта в cron для регулярного создания бэкапов.

#!/bin/bash
BACKUP_DIR="/backup/photoprism-$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# Бэкап данных Photoprism
docker run --rm -v ~/photoprism/photoprism/storage:/data -v $BACKUP_DIR:/backup alpine tar czf /backup/photoprism-storage.tar.gz -C /data .
# Бэкап MariaDB
docker exec photoprism-db mysqldump -u photoprism -pDBPassword123! photoprism > $BACKUP_DIR/photoprism.sql
tar czf $BACKUP_DIR.tar.gz $BACKUP_DIR
rm -rf $BACKUP_DIR
echo "Backup created: $BACKUP_DIR.tar.gz"

Руководство: Как развернуть Photoprism — ИИ-фотоприложение для децентрализованной сети

Photoprism — это самохостинговое решение для просмотра, организации и поиска фотографий, использующее искусственный интеллект для анализа метаданных и распознавания объектов. В отличие от облачных сервисов, вы полностью контролируете свои данные. В этом руководстве мы подробно разберем, как развернуть Photoprism на вашем сервере, настроить базу данных, внешний доступ, интеграцию с хранилищами и обеспечить безопасность.

Предварительные требования

Перед установкой убедитесь, что у вас есть:

  1. Сервер: Linux-машина (Ubuntu 22.04 LTS или аналогичная) с минимум 4 ГБ ОЗУ (рекомендуется 8+ ГБ для AI-обработки) и 2-4 ядрами CPU.
  2. Docker и Docker Compose: Photoprism работает в контейнерах.
    • Установка Docker:
      sudo apt update
      sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
      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
      sudo apt update
      sudo apt install -y docker-ce docker-ce-cli containerd.io
      sudo usermod -aG docker $USER
      newgrp docker
      
    • Установка 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
      
  3. Домен и SSL: Домен (например, photos.example.com) и сертификат Let's Encrypt для HTTPS. Для доступа из интернета потребуется статический IP или проброс портов (80/443).
  4. Оборудование для хранения: Достаточно места на диске для фотографий (минимум 100 ГБ).

Способ 1: Быстрый старт с Docker Compose (рекомендуемый)

Это самый простой и поддерживаемый метод. Мы используем официальный docker-compose.yml от Photoprism.

  1. Создайте директорию для проекта:

    mkdir ~/photoprism && cd ~/photoprism
    
  2. Скачайте шаблон docker-compose.yml с официального сайта или создайте его вручную. Пример конфигурации с MariaDB:

    version: '3.8'
    
    services:
      photoprism:
        image: photoprism/photoprism:latest
        container_name: photoprism
        restart: unless-stopped
        ports:
          - "2342:2342"  # Веб-интерфейс
        environment:
          PHOTOPRISM_ADMIN_PASSWORD: "ВашСложныйПароль123!"
          PHOTOPRISM_AUTH_MODE: "password"
          PHOTOPRISM_SITE_URL: "https://photos.example.com"
          PHOTOPRISM_SITE_TITLE: "Моя Фототека"
          PHOTOPRISM_DATABASE_DRIVER: "mysql"
          PHOTOPRISM_DATABASE_SERVER: "db:3306"
          PHOTOPRISM_DATABASE_NAME: "photoprism"
          PHOTOPRISM_DATABASE_USER: "photoprism"
          PHOTOPRISM_DATABASE_PASSWORD: "DBPassword123!"
          PHOTOPRISM_EXIF_BRUTEFORCE: "true"  # Для ускорения индексации
          PHOTOPRISM_FFMPEG: "true"  # Для видео
        volumes:
          - ./photoprism/storage:/photoprism/storage
          - /путь/к/вашим/фото:/photoprism/import  # Монтирование папки с фото
          - /путь/к/вашим/фото:/photoprism/originals  # Для оригиналов
        depends_on:
          - db
        networks:
          - photoprism-net
    
      db:
        image: mariadb:10.11
        container_name: photoprism-db
        restart: unless-stopped
        environment:
          MYSQL_ROOT_PASSWORD: "RootDBPassword123!"
          MYSQL_DATABASE: "photoprism"
          MYSQL_USER: "photoprism"
          MYSQL_PASSWORD: "DBPassword123!"
        volumes:
          - ./mariadb:/var/lib/mysql
        networks:
          - photoprism-net
    
    networks:
      photoprism-net:
        driver: bridge
    

    Замените пароли и пути к томам на свои. /путь/к/вашим/фото — это реальная папка на хосте (например, /home/user/photos).

  3. Запустите контейнеры:

    docker-compose up -d
    
  4. Проверьте логи на ошибки:

    docker-compose logs -f photoprism
    
  5. Откройте в браузере http://IP_сервера:2342 и войдите под логином admin и паролем из конфига.

Способ 2: Развертывание Photoprism на Proxmox VE (LXC контейнер)

Proxmox VE позволяет запускать Photoprism в изолированном LXC-контейнере для лучшего контроля ресурсов.

  1. Создайте LXC-контейнер в Proxmox VE:

    • В веб-интерфейсе: Create CT -> Имя (например, photoprism), ОС: Ubuntu 22.04, Ресурсы: 4+ ГБ RAM, 2+ ядра, 20+ ГБ диска.
    • Включите привилегированный режим (privileged) для Docker, если требуется FUSE (но лучше unprivileged с настройкой).
  2. Запустите контейнер и войдите через консоль Proxmox:

    pct enter <ID_контейнера>
    
  3. Внутри LXC обновите систему и установите Docker (как в Способе 1):

    apt update && apt install -y curl gpg
    # ... (установка Docker и Docker Compose)
    
  4. Создайте директорию и docker-compose.yml (см. Способ 1). Убедитесь, что тома монтируются корректно: для LXC используйте bind mounts из хранилища Proxmox (например, /mnt/pve/storage/photos).

  5. Если возникает ошибка с systemd в unprivileged LXC, добавьте в конфиг контейнера (/etc/pve/lxc/<id>.conf):

    lxc.cap.drop:
    lxc.mount.auto: "cgroup:rw"
    lxc.apparmor.profile: "unconfined"
    
  6. Запустите docker-compose up -d и настройте сеть (проброс портов в Proxmox: Firewall -> Add Rule для 2342/TCP).

  7. Для доступа из интернета настройте Nginx Proxy Manager на хосте Proxmox (см. ниже).

Настройка базы данных (MariaDB/MySQL)

Photoprism поддерживает SQLite (для тестов) и MySQL/MariaDB (для продакшена). Используем MariaDB из docker-compose выше.

  1. После запуска контейнера db, подключитесь к нему для проверки:

    docker exec -it photoprism-db mysql -u photoprism -p
    # Введите пароль DBPassword123!
    

    Внутри MySQL: SHOW DATABASES; — должно отобразить photoprism.

  2. Если вы настраиваете внешнюю БД (не в Docker):

    • Установите MariaDB на хост: sudo apt install -y mariadb-server.
    • Создайте пользователя и БД:
      CREATE DATABASE photoprism;
      CREATE USER 'photoprism'@'localhost' IDENTIFIED BY 'DBPassword123!';
      GRANT ALL PRIVILEGES ON photoprism.* TO 'photoprism'@'localhost';
      FLUSH PRIVILEGES;
      
    • В docker-compose.yml укажите PHOTOPRISM_DATABASE_SERVER: "host.docker.internal:3306" или IP хоста.
  3. Перезапустите Photoprism: docker-compose restart photoprism.

  4. Для оптимизации: добавьте в конфиг MariaDB (/etc/mysql/mariadb.conf.d/50-server.cnf):

    innodb_buffer_pool_size = 1G
    query_cache_size = 128M
    

    И перезапустите MySQL: sudo systemctl restart mariadb.

Первый запуск и первоначальная настройка

  1. После docker-compose up -d откройте http://IP:2342 в браузере.
  2. Войдите: логин admin, пароль из PHOTOPRISM_ADMIN_PASSWORD.
  3. Первоначальная настройка:
    • В настройках (Settings -> General) установите часовой пояс (например, Europe/Moscow).
    • Перейдите в раздел "Library" и нажмите "Start Indexing". Photoprism просканирует папку /photoprism/originals и добавит фото в библиотеку. Процесс может занять время в зависимости от объема (от минут до часов).
    • Секретный ключ (API Key): Генерируется автоматически в storage/config/settings.yml. Для внешних интеграций (например, мобильных приложений) скопируйте его из docker exec photoprism cat /photoprism/storage/config/settings.yml | grep secret.
  4. Настройте AI: в Settings -> AI включите распознавание лиц и объектов (требует TensorFlow, см. ниже).
  5. Для первого запуска с нуля: добавьте тестовые фото в папку originals, запустите индексацию и проверьте поиск (например, по слову "cat").

Настройка доступа из интернета: Nginx Proxy Manager и Let's Encrypt

Для безопасного доступа используем Nginx Proxy Manager (NPM) в Docker.

  1. Добавьте в docker-compose.yml (или отдельный файл):

    nginx-proxy-manager:
      image: jc21/nginx-proxy-manager:latest
      container_name: npm
      restart: unless-stopped
      ports:
        - "80:80"
        - "81:81"  # Веб-интерфейс
        - "443:443"
      volumes:
        - ./npm/data:/data
        - ./npm/letsencrypt:/etc/letsencrypt
      networks:
        - photoprism-net
    
  2. Запустите: docker-compose up -d nginx-proxy-manager.

  3. Откройте http://IP:81, войдите (логин: admin@example.com, пароль: changeme — смените в настройках).

  4. Настройте хост:

    • Hosts -> Proxy Hosts -> Add.
    • Domain: photos.example.com.
    • Scheme: http, Forward Hostname: photoprism, Port: 2342.
    • SSL: Request a new SSL Certificate with Let's Encrypt (укажите email и включите "Force SSL").
    • DNS: Укажите A-запись вашего домена на IP сервера.
  5. Проверьте: откройте https://photos.example.com. Если порты 80/443 заняты, пробросьте их на роутере (Port Forwarding).

Как импортировать и организовать медиа-файлы (Samba/NFS/FTP)

Photoprism не имеет встроенного файлового менеджера, поэтому используем внешние инструменты для копирования файлов в тома Docker.

  • Samba (Windows-совместимость): Установите Samba на хост: sudo apt install -y samba. Добавьте в /etc/samba/smb.conf:

    [Photos]
    path = /путь/к/вашим/фото
    browseable = yes
    read only = no
    valid users = youruser
    

    Создайте пароль: sudo smbpasswd -a youruser. Перезапустите: sudo systemctl restart smbd. Теперь подключитесь с Windows: \\IP_сервера\Photos и копируйте файлы. После этого запустите индексацию в Photoprism.

  • NFS (для Linux-клиентов): На хосте: sudo apt install -y nfs-kernel-server. Добавьте в /etc/exports: /путь/к/вашим/фото *(rw,sync,no_subtree_check). Экспортируйте: sudo exportfs -a. На клиенте: sudo mount IP_сервера:/путь/к/вашим/фото /mnt/photos.

  • FTP (FileZilla): Установите vsftpd: sudo apt install -y vsftpd. Настройте /etc/vsftpd.conf: anonymous_enable=NO, local_enable=YES, write_enable=YES. Перезапустите: sudo systemctl restart vsftpd. Используйте FileZilla для загрузки в папку originals.

После импорта: в Photoprism -> Settings -> Library -> Rescan.

Интеграция с внешним хранилищем: Подключение к S3 и MinIO

Photoprism поддерживает S3-совместимые хранилища для originals.

  1. Настройте MinIO (локальный S3-сервер) в Docker: Добавьте в docker-compose.yml:

    minio:
      image: minio/minio:latest
      container_name: minio
      restart: unless-stopped
      ports:
        - "9000:9000"
        - "9001:9001"
      environment:
        MINIO_ROOT_USER: "minioadmin"
        MINIO_ROOT_PASSWORD: "minioadmin123!"
      volumes:
        - ./minio/data:/data
      command: server /data --console-address ":9001"
      networks:
        - photoprism-net
    
  2. Запустите MinIO, откройте http://IP:9001, создайте бакет photoprism-bucket.

  3. В Photoprism настройте S3 (через конфиг или UI):

    • В docker-compose.yml добавьте переменные:
      PHOTOPRISM_STORAGE_PATH: "/photoprism/storage"
      PHOTOPRISM_ORIGINALS_PATH: "/photoprism/s3"  # Монтировать S3 как том нельзя, используем интеграцию
      PHOTOPRISM_S3_ENDPOINT: "http://minio:9000"
      PHOTOPRISM_S3_ACCESS_KEY: "minioadmin"
      PHOTOPRISM_S3_SECRET_KEY: "minioadmin123!"
      PHOTOPRISM_S3_BUCKET: "photoprism-bucket"
      PHOTOPRISM_S3_REGION: "us-east-1"
      
    • Для оригиналов: используйте интеграцию через API или монтируйте S3 через s3fs (установите s3fs на хост, монтируйте в том Docker).
  4. Для AWS S3: замените endpoint на https://s3.amazonaws.com, добавьте ключи доступа из AWS IAM.

  5. Проверьте: загрузите файл в MinIO, запустите индексацию — фото появятся в библиотеке.

Настройка AI-распознавания лиц и метаданных (TensorFlow/Colab)

Photoprism использует TensorFlow для AI. В Docker это встроено, но требует ресурсов.

  1. Активация AI:

    • В docker-compose.yml добавьте:
      PHOTOPRISM_TENSORFLOW: "true"
      PHOTOPRISM_TENSORFLOW_MODELS: "/photoprism/storage/models"
      PHOTOPRISM_FACE_RECOGNITION: "true"
      
    • Перезапустите контейнер.
  2. После индексации: перейдите в Settings -> People. Photoprism распознает лица автоматически (может занять часы для больших библиотек).

    • Для ручной разметки: в People -> MergeFaces.
    • Метаданные (EXIF): Photoprism извлекает их автоматически, если включено PHOTOPRISM_EXIF_BRUTEFORCE.
  3. Оптимизация для слабого железа: Если CPU слабый, отключите PHOTOPRISM_TENSORFLOW: "false" и используйте предобученные модели. Для GPU (NVIDIA): добавьте --gpus all в docker run, но в Compose это сложно — лучше использовать интеграцию с NVIDIA Docker.

  4. Google Colab для обучения (опционально, если локально не хватает ресурсов):

    • Colab не подключается напрямую, но вы можете обучить модель (например, для кастомных лиц) в Colab с TensorFlow, экспортировать модель в формате Photoprism (ONNX или SavedModel), и скопировать в том ./photoprism/storage/models.
    • Пример скрипта в Colab:
      import tensorflow as tf
      # Ваш код обучения...
      model.save('/content/drive/MyDrive/photoprism_model')
      
    • Скопируйте на сервер: docker cp /путь/к/model photoprism:/photoprism/storage/models/.
    • Укажите путь в конфиге: PHOTOPRISM_TENSORFLOW_MODELS: "/photoprism/storage/models".

Автоматический бэкап и восстановление Photoprism

Photoprism хранит данные в storage (конфиг, кэш) и БД. Бэкапите тома и базу.

  1. Простой бэкап с Docker: Создайте скрипт backup.sh:

    #!/bin/bash
    BACKUP_DIR="/backup/photoprism-$(date +%Y%m%d)"
    mkdir -p $BACKUP_DIR
    # Бэкап данных Photoprism
    docker run --rm -v ~/photoprism/photoprism/storage:/data -v $BACKUP_DIR:/backup alpine tar czf /backup/photoprism-storage.tar.gz -C /data .
    # Бэкап MariaDB
    docker exec photoprism-db mysqldump -u photoprism -pDBPassword123! photoprism > $BACKUP_DIR/photoprism.sql
    tar czf $BACKUP_DIR.tar.gz $BACKUP_DIR
    rm -rf $BACKUP_DIR
    echo "Backup created: $BACKUP_DIR.tar.gz"
    

    Добавьте в cron: crontab -e -> 0 2 * * * /путь/к/backup.sh (ежедневно в 2:00).

  2. Восстановление:

    • Остановите контейнеры: docker-compose down.
    • Распакуйте бэкап: tar xzf backup.tar.gz.
    • Восстановите storage: docker run --rm -v ~/photoprism/photoprism/storage:/data -v /путь/к/backup:/backup alpine sh -c "cd /data && tar xzf /backup/photoprism-storage.tar.gz".
    • Восстановите БД: docker exec -i photoprism-db mysql -u photoprism -pDBPassword123! photoprism < /путь/к/backup/photoprism.sql.
    • Запустите: docker-compose up -d.
  3. Продвинутый: Используйте BorgBackup или Duplicity для дедупликации, храните бэкапы на внешнем диске или в облаке.

Решение типичных проблем и оптимизация производительности

  • Медленная индексация: Увеличьте PHOTOPRISM_WORKERS (например, до 8). Отключите ненужные фичи: PHOTOPRISM_DISABLE_FACES: "true".
  • Ошибки подключения к БД: Проверьте сеть Docker (docker network ls, docker network inspect photoprism-net). Убедитесь, что пароли совпадают.
  • Недостаток памяти: Добавьте swap: sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile. В docker-compose добавьте mem_limit: 4g.
  • SSL-ошибки в NPM: Обновите сертификат в интерфейсе NPM -> SSL Certificates -> Renew. Проверьте DNS-делегирование.
  • Оптимизация:
    • Используйте SSD для томов.
    • Настройте PHOTOPRISM_CACHE_PATH: "/photoprism/storage/cache" на быстром диске.
    • Для больших библиотек: разбейте на тома (/photoprism/originals/vacation, /photoprism/originals/family).
    • Мониторинг: Добавьте Prometheus с экспортами для Docker.
  • Безопасность: Измените пароль админа, ограничьте доступ по IP в NPM, используйте VPN (WireGuard) для локального доступа.

Заключение: Безопасный и мощный аналог Google Photos у вас дома

Вы развернули Photoprism с базой данных, AI-обработкой, внешним доступом и бэкапами. Теперь у вас есть полный контроль над фото: поиск по лицам, объектам, датам; организация в альбомы; доступ через HTTPS. Для мобильно-стиля добавьте Photoprism Web App или интеграцию с Nextcloud. Если возникнут проблемы — проверьте логи Docker и документацию Photoprism. Удачи в децентрализованном хранении!

Поделиться:TelegramX / TwitterVK