Pull to refresh

Как развернуть для своей команды архив slack сообщений c синхронизацией и поиском

Reading time 3 min
Views 18K
Я сам сторонник идеи что если нравится продукт то нужно покупать его и своими деньгами поддержать программистов.
Но иногда бывает что компания на этот софт денег тратить не может или не хочет. Особенно сложно платить от 100$ в месяц когда есть бесплатные аналоги или если чаты используются в некоммерческих целях.

Я опишу как можно развернуть сервис для хранения истории всех публичных сообщений вашей команды в slack и избавиться от основного, неприятного, иногда выбешивающего ограничения — up to 10k of your team’s most recent messages (можно смотреть и искать только среди 10 000 последних сообщений)

Среди готовых решений есть:


По подробнее расскажу про последнее решение, оно мне больше всего понравилось.

Как можно легко заметить основная идея принадлежит Lê Việt Hồng ( github.com/suoinguon ) я взял его решение за основу и начал добавлять туда разные фичи.
Так как это обычное Django приложение то новые фичи туда добавлять оказалось очень просто.

По сравнению с оригиналом теперь появились:
  • Полнотекстовый поиск по истории django-watson
  • Индексация только публичных групп и пониженный уровень токена только с необходимыми правами
  • Форматирование сообщений как в slack, включая смайлы django-emoji
  • Обновление всех библиотек и поддержка django 1.10
  • Импорт данных из выгружженого архива
  • Исправлены недочеты в логике получения данныз по API
  • Добавлены новые страницы — сообщения пользователя, статистика с помощью django orm
  • Добавлена навигация для того чтобы можно было отправить ссылку на конкретное сообщение c учетом пагинации django-pagination


Среди дальнейших планов хочется отметить:
  • Поддержать работы с несколькими командами
  • Улучшить работу с отображением файлов
  • Добавить возможность сложного поиска
  • Добавить больше веселой или полезной статистики


Создание сервера


А теперь к делу, давайте развернем себе этот проект.
Первым делом нам понадобится виртуальный сервер. Для небольших команд будет достаточно минимальной конфигурации.

Например, что можно запустить быстро и дешево:
vscale.io


www.digitalocean.com


aws.amazon.com/ru/ec2

(если регистрируетесь первый
раз то первый год одной машины будет бесплатно)

0.0065$ в час
512mb
1 vcpu
Ebs disk


Итого можно получить отдельный сервер за 200 рублей в месяц или вообще бесплатно на первое время.
Я проверял скрипт на Centos7 поэтому при создании выбираем её, узнаем её ip адрес или доменное имя и запоминаем их, они потребуется на следующем шагу.

Регистрируем slack приложение



Далее нам нужно зарегистрировать slack приложение для доступа к API

  1. Заходим на страницу api.slack.com/applications
  2. Создаем новое приложение


  3. Добавляем адрес только что созданного сервера в oauth redirects


  4. Сохраняем себе Client ID и Client Secret




Запускаем приложение


  1. Подключаемся по ssh на сервер
  2. Запускаем команду
  3. curl -O https://raw.githubusercontent.com/menemy/slack-backup/master/provisioning_on_centos7.sh
    
  4. Исправляем три настройки в начале скрипта
  5. SLACK_CLIENT_ID=[your_client_id]
  6. SLACK_CLIENT_SECRET=[your_client_secret]
  7. DOMAIN=[your_domain]
  8. Исправляем права и запускаем
  9. chmod 777 provisioning_on_amazonlinux.sh
  10. sudo ./provisioning_on_amazonlinux.sh
  11. Всё, после этого приложение запущено и доступно по вашему адресу, история синхронизируется раз в пять минут
  12. Нужно зайти на сайт и предоставить доступ в свой аккаунт slack


Опционально, восстанавливаем историю сообщений


Если вы узнали об этом решении поздно — не беда, slack на самом деле продолжает хранить вашу историю и позволяет выгрузить всю историю в виде zip архива.
Но это только для администраторов группу.

  1. Зайдите на страницу my.slack.com/services/export
  2. Создайте выгрузку
  3. Дождитесь окончания
  4. Обновите страницу и скачайть zip файл
  5. Загрузите файл на сервер и выгрузите в папку /usr/local/src/slack-backup/full_history/
  6. Запустите команду python /usr/local/src/slack-backup/manage.py restore_backup
  7. Дождитесь окончания, это может занять время




Буду рад если мои старания будут полезны. Если есть вопросы по работе или необходима помощь с установкой буду рад помочь в комментариях.
Tags:
Hubs:
+11
Comments 28
Comments Comments 28

Articles