===== PrivateBin ===== ;#; {{:wiki:privatebin_logo.png|}} ;#; PrivateBin - это простой paste-сервер, который поможет безопасным образом поделиться какой-либо информацией - с возможностью установить срок хранения этой информации, запаролить её и т.д. Сайт проекта: https://privatebin.info/ \\ https://github.com/PrivateBin/PrivateBin/ === Установка PrivateBin + Let's Encrypt === Сделаем apt update && apt upgrade и установим Git: apt update apt upgrade -y apt install -y git Установим набор необходимых веб-компонентов: apt update apt install -y apache2 php php-xml php-mbstring php-mysql php-json php-pdo Удостоверимся, что с апачем всё ОК: systemctl enable --now apache2.service Создаем конфигурацию для сайта PrivateBin: nano /etc/apache2/sites-available/privatebin.conf Добавляем содержимое в файл и меняем //ServerName// на имя, с которого хотим приходить на //PrivateBin// (к примеру, //paste.jpolisher.com//): ServerName paste.jpolisher.com DocumentRoot /var/www/html/PrivateBin/ ErrorLog ${APACHE_LOG_DIR}/privatebin-error.log CustomLog ${APACHE_LOG_DIR}/privatebin-access.log combined AllowOverride All Включаем виртуальный хост: a2ensite privatebin.conf Перезапускаем апач: systemctl reload apache2.service Устанавливаем PrivateBin, используя Git: cd /var/www/html/ && git clone https://github.com/PrivateBin/PrivateBin.git Устанавливаем права на файлы для Apache: chown -R www-data:www-data PrivateBin/ Создаем A-запись для имени, по которому планируем обращаться к сервису. Установим certbot для использования сертификатов Let's Encrypt: sudo apt install certbot python3-certbot-apache Запрашиваем сертификат для имени, используемого для PrivateBin: sudo certbot --apache -d example.com -d www.example.com ---- === Проблема с хешем файла jp/privatebin.js (релиз 2.0.0) === После инсталляции (копированием с помощью //git//) //PrivateBin// версии 2.0.0 имеем проблему: развёрнутый сайт открывается и //PrivateBin// останавливается на стадии //loading...//. На странице есть ссылка, которая ведет на статью в Wiki о возможном решении проблемы: https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-the-loading-message-not-go-away Одним из возможных вариантов возникновения проблемы является использование сервисов //Cloudflare//, работающих как //MITM//. Однако, в моём случае //Cloudflare// не использовался. Тем не менее, статья намекает на возможные проблемы с чексуммами файлов JS. Открыв развёрнутую инсталляцию PrivateBin (ту самую страницу с //loading//), и запустив на ней отладку браузера (F12), я увидел ошибку: None of the “sha512” hashes in the integrity attribute match the content of the subresource. В статье описывается способ проверить чексуммы файлов JS. Можно сравнить чексумму исходного файла расположенного в моей инсталляции здесь: /var/www/html/privatebin/js/privatebin.js - с чексуммой, полученной в браузере во время отладки, а также с эталонной контрольной суммой, прописанной в конфигурации //PrivateBin//. Получаем чексумму актуального файла: openssl dgst -sha512 -binary js/privatebin.js | openssl enc -base64 Чексумма файла у меня совпала с контрольной суммой, полученной в отладочном сообщении браузера, значит, JS файл не был изменен по дороге от сервера до клиента. А что в конфигах? Смотрим следующий файл: /var/www/html/privatebin/lib/Configuration.php и строку в нём: 'js/privatebin.js' => 'sha512-mqzsqmoDJRcSQCjIU3TiE4vNqgpmjrwxhscCATiHwlAaMaat2J1epLUK7995vX71W6CfkpOWhz2dvwLQO/NQFg==', Хеш отличался от хеша файла и от хеша, полученного в браузере! Варианты: файл был модифицирован при скачивании, либо в данном релизе он не верный и это баг (источник загрузки перепроверил несколько раз, вероятно, всё-таки баг). Меняем в конфиге хеш на контрольную сумму, полученную с помощью //openssl//, и всё начинает нормально работать. ---- === Проблема с правами при генерации paste === Иногда можно увидеть проблему при генерации paste, связанную с правами. Ошибка выглядит так: privatebin Could not create document: Error saving document. Sorry. В логе ошибок //PrivateBin// будет: mkdir(): Permission denied in /var/www/html/privatebin/lib/Data/Filesystem.php В этом случае в первую очередь необходимо проверить папку: /var/www/html/privatebin/data Её овнером должен быть пользователь веб-сервера, в случае с обычным апач: //www-data//, а права установлены в //700//. {{tag>Ubuntu LetsEncrypt Certificates OpenSSL}}