Я сам сторонник идеи что если нравится продукт то нужно покупать его и своими деньгами поддержать программистов.
Но иногда бывает что компания на этот софт денег тратить не может или не хочет. Особенно сложно платить от 100$ в месяц когда есть бесплатные аналоги или если чаты используются в некоммерческих целях.
Я опишу как можно развернуть сервис для хранения истории всех публичных сообщений вашей команды в slack и избавиться от основного, неприятного, иногда выбешивающего ограничения — up to 10k of your team’s most recent messages (можно смотреть и искать только среди 10 000 последних сообщений)
Среди готовых решений есть:
- PHP скрипты для конвертации выгруженного архива в html сайт
levels.io/slack-export-to-html - Python приложения для просмотра выгруженного архива
github.com/hfaran/slack-export-viewer - Nodejs скрипт который скачивает ваши сообщения через API
github.com/hisabimbola/slack-history-export - Nodejs страница для выгрузки приватной истории через API
github.com/keremtiryaki/Slack-Api-Helpers - Python скрипт для выгрузки своей истории через API
gist.github.com/Chandler/fb7a070f52883849de35 - Shell+php скрипт для выгрузки истории через API и конвертации в html
github.com/humor4fun/slack-backup - Go программа которая позволяет выгрузить приватную историю через API
github.com/joefitzgerald/slack-dump - Python web сайт который позволяет импортировать историю из бэкапа и далее синхронизируется по API
github.com/menemy/slack-backup
По подробнее расскажу про последнее решение, оно мне больше всего понравилось.
Как можно легко заметить основная идея принадлежит 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$ в час |
Итого можно получить отдельный сервер за 200 рублей в месяц или вообще бесплатно на первое время.
Я проверял скрипт на Centos7 поэтому при создании выбираем её, узнаем её ip адрес или доменное имя и запоминаем их, они потребуется на следующем шагу.
Регистрируем slack приложение
Далее нам нужно зарегистрировать slack приложение для доступа к API
- Заходим на страницу api.slack.com/applications
- Создаем новое приложение
- Добавляем адрес только что созданного сервера в oauth redirects
- Сохраняем себе Client ID и Client Secret
Запускаем приложение
- Подключаемся по ssh на сервер
- Запускаем команду
-
curl -O https://raw.githubusercontent.com/menemy/slack-backup/master/provisioning_on_centos7.sh
- Исправляем три настройки в начале скрипта
- SLACK_CLIENT_ID=[your_client_id]
- SLACK_CLIENT_SECRET=[your_client_secret]
- DOMAIN=[your_domain]
- Исправляем права и запускаем
- chmod 777 provisioning_on_amazonlinux.sh
- sudo ./provisioning_on_amazonlinux.sh
- Всё, после этого приложение запущено и доступно по вашему адресу, история синхронизируется раз в пять минут
- Нужно зайти на сайт и предоставить доступ в свой аккаунт slack
Опционально, восстанавливаем историю сообщений
Если вы узнали об этом решении поздно — не беда, slack на самом деле продолжает хранить вашу историю и позволяет выгрузить всю историю в виде zip архива.
Но это только для администраторов группу.
- Зайдите на страницу my.slack.com/services/export
- Создайте выгрузку
- Дождитесь окончания
- Обновите страницу и скачайть zip файл
- Загрузите файл на сервер и выгрузите в папку /usr/local/src/slack-backup/full_history/
- Запустите команду python /usr/local/src/slack-backup/manage.py restore_backup
- Дождитесь окончания, это может занять время
Буду рад если мои старания будут полезны. Если есть вопросы по работе или необходима помощь с установкой буду рад помочь в комментариях.
Автор: enemy_spb