meowzone

meowzone

Пикабушник
Дата рождения: 29 декабря
43К рейтинг 22 подписчика 19 подписок 28 постов 14 в горячем
Награды:
Удача в кармане За лучший сплит Высокий разум За неравнодушие к судьбе Пикабу5 лет на Пикабу
9

Ответ на пост «Мой лучший кадр в 2024 году»40

В сентябре 2025 года ездил в Екатеринбург, сделал пару кадров возле Гринвича. Понравилась цветовая гамма снимков. Фотографировал на Canon EOS 6D, взятый у товарища, объектив EF24-105mm f/4L IS USM.

Показать полностью 2
109

Ответ на пост «Как я нашёл преступника, который украл у меня ноутбук и присутствовал на задержании»10

На дворе был 2002 год. Время диалапных модемов, когда каждый мегабайт пробивался по узкому каналу как при сильном запоре, а тяжелый контент (фильмы, музыка, игрушки, софт) мы таскали друг к другу на жестких дисках. Причем мало у кого из нас жесткие диски были прикручены, часто лежали прямо на дне корпуса, чтобы можно было их оперативно отсоединить и пойти с ним в гости.

И были у меня на тот момент два товарища. Первый - нормальный парень из обычной семьи, учился в техникуме на инженера, спокойный, аккуратный. Второй - классический подростковый гопник начала двухтысячных: семья так себе, характер еще хуже, но тусили мы вместе - возраст у нас был такой (нам было по 16-17 лет), что компании у нас формировались не по биографии, а по общим интересам и увлечениям. Буду далее в тексте называть их - инженер и гопник.

У инженера был жесткий диск на 80 ГБ - по меркам 2002 года это было как сегодня иметь 8 ТБ. Там лежала целая вселенная: коллекции фильмов, тонны MP3, игры, заставки, программы. Мы к нему как на источник света ходили обновляться, так как у него первого появлялись новинки.

И вот однажды гопник просит у него винт: мол есть тема, надо сходить к одному знакомому, переписать свежие новинки. Ну ладно, отдал ему человек диск, доверял ему. Да и новинки заиметь очень хотелось, не понятно только почему не пошел вместе с ним, но да ладно.

Через какое-то время этот кадр возвращается и выдает драму: "На меня напали, ограбили, диск забрали!". Включил жертву по полной. Говорит - обязательно вернет деньги, но не сейчас. Диск был дорогой по тем временам, а он в данный момент без финансовых средств. Ну ладно, поверили. Мы тогда были молодые-зеленые, да и выглядело вроде убедительно.

Проходит примерно неделя. Мы с инженером пошли на местную компьютерную барахолку - легендарные магазины тех лет с запахом пыли и витринами с БУ-шными железками. Эти же магазины помимо продажи занимались еще и скупкой железа. Там на одном из стеллажей стоял включенный комп, на экране крутились музыкальные клипы. Пока мы там находились, я так, невзначай, говорю товарищу:

- Слушай, а клипы прям все те же, что у тебя на диске были.. прикол, да?

Я реально думал, что это совпадение.

Но у товарища глаз дернулся. Он спросил у продавца разрешение пошариться на компе. Свернул плеер, открыл корень диска и охренел - все его папки, все фильмы, вся музыка. Все один в один. В итоге выяснилось, что в компе стоял его диск.

Мы к продавцу:

- Откуда? Кто приносил?

Он описывает - да мол, пацан какой-то. Приметы идеально совпадают с нашим гопником.

Мы стоим, не знаем что делать. Говорим продавцу, что это наш диск, он отвечает:

- Если есть документы и чеки на диск - вызывайте милицию, напишите заявление.

Документов у нас, естественно, никаких. Диск товарищ покупал уже БУ.

Мы подумали и решили ехать к этому чудо-другу сами.

Приезжаем, рассказываем, что нашли диск в магазине и продавец описал его приметы. Он сразу встревожился, так как в 16 лет уже состоял на учете. В итоге сознался и говорит:

- Дайте три дня, я найду деньги и выкуплю диск обратно.

Ладно, хрен с ним. Поехали снова в магазин, объяснили продавцу ситуацию, попросили подержать диск три дня. Мужик оказался нормальный, сказал: "Окей, придержу."

Через три дня приезжаем втроем. Гопник выкупает диск обратно, а мы у него еще и плашку оперативки на 128 МБ выжали в качестве компенсации. Тогда это тоже была нормальная ценность.

После этого случая я с гопником общаться перестал, а инженер какое-то время еще пересекался с ним, но это уже его выбор.

Вот такая история - вполне себе с хэппи-эндом. Хорошо хоть все закончилось без мордобоя и без привлечения милиции.

Показать полностью
16

Ответ на пост «"Подтвердите, что вы пикабушник, добавив фото кота"»613

Британец Бося, в следующем году 13 лет уже исполнится.

Ответ на пост «"Подтвердите, что вы пикабушник, добавив фото кота"»
Показать полностью 1
1569

Как я поднял свой личный Matrix-мессенджер

Я давно хотел иметь свой собственный семейный мессенджер, без зависимостей от Telegram/WhatsApp на случай, если один из них станет не доступен.
Мне нужен был простой вариант: сообщения, фото, файлы. Звонки и видео для меня были избыточными, поэтому всю усложняющую историю с coturn я сразу отбросил.

В итоге я развернул Matrix Synapse в Docker. Всё работает стабильно, шифрование есть, и самое главное - всё хранится у меня на домашнем сервере, в роли которого выступает старенький неттоп на Intel Core i3 7100T, на нем же крутится система умного дома Home Assistant, а так же медиасерверы Jellyfin и Navidrome.

Так как получил предложение написать об этом пост, рассказываю как это реализовывал.

1. Для начала давайте сперва поговорим, что такое Matrix и зачем он нужен

Matrix - это защищённый протокол обмена сообщениями.
Он похож на Telegram, но:

  • полностью открытый

  • работает на вашем железе, либо на вашем облачном сервере

  • переписка шифруется на устройстве

Мы будем поднимать сервер Synapse (основная реализация Matrix) на Docker

2. Docker Сompose

Matrix может работать на SQLite, но лучше взять PostgreSQL - он надёжнее.
Вот минимальный рабочий docker-compose.yml:

services:

synapse:

image: matrixdotorg/synapse:latest

container_name: matrix-synapse

restart: unless-stopped

environment:

SYNAPSE_SERVER_NAME: chat.example.net

SYNAPSE_REPORT_STATS: "no"

volumes:

- ./synapse:/data

depends_on:

- postgres

logging:

driver: "json-file"

options:

max-size: "50m"

max-file: "3"

networks:

- internal

postgres:

image: postgres:14

container_name: matrix-postgres

restart: unless-stopped

environment:

POSTGRES_DB: synapse_db_r72m

POSTGRES_USER: synuser_k84t

POSTGRES_PASSWORD: dN8vQ3pL7wS1zFgB9rT2

POSTGRES_INITDB_ARGS: "--encoding=UTF8 --lc-collate=C --lc-ctype=C"

volumes:

- ./postgres:/var/lib/postgresql/data

logging:

driver: "json-file"

options:

max-size: "50m"

max-file: "3"

networks:

- internal

networks:

internal:

driver: bridge

Всё, что вам нужно - создать папку с проектом и положить этот файл туда. Там же в дальнейшем появятся папки с конфигурациями самого сервера и сервера баз данных. Логин, пароль и имя базы созданы рандомно, вы их можете поменять на свои. Так же замените chat.example.net на ваш домен.

3. Генерация начального конфига

Synapse в самом начале нужно инициализировать:

docker compose run --rm synapse generate

Появится папка synapse/ с файлом homeserver.yaml.

Там находим блок базы данных и меняем его на PostgreSQL, блок с SQLite можно закомментировать:

database:

name: psycopg2

args:

user: synuser_k84t

password: dN8vQ3pL7wS1zFgB9rT2

database: synapse_db_r72m

host: matrix-postgres

port: 5432

Это всё.

4. Запуск сервера

docker compose up -d

5. HTTPS + домен (основной вариант)

Самый нормальный способ пробросить сервер наружу - через домен и HTTPS.
Я использую Nginx Proxy Manager (NPM), но подойдёт любой прокси.

Важно: Nginx Proxy Manager должен быть в одной Docker-сети с Matrix-сервером.
Synapse по умолчанию создаёт свою сеть - она называется так же, как папка с проектом, с суффиксом _internal (если не меняли compose файл). Если NPM не подключён к этой сети, он просто не увидит контейнер matrix-synapse и проксирование работать не будет.

Чтобы подключить NPM к нужной сети:

docker network connect <имя_сети_internal> <контейнер_NPM>

  1. Создаём Proxy Host на matrix-synapse:8008

  2. Получаем SSL-сертификат

  3. Добавляем два обязательных пути .well-known:

location /.well-known/matrix/server {

add_header Content-Type application/json;

return 200 '{"m.server": "chat.example.net:443"}';

}

location /.well-known/matrix/client {

add_header Content-Type application/json;

return 200 '{"m.homeserver": {"base_url": "https://chat.example.net"}}';

}

Не забудьте заменить chat.example.net на ваш домен.

Проверяем прямо на сервере, или в консоли вашего компа:

curl -L https://chat.example.net/.well-known/matrix/client

Ответ должен быть таким:

{"m.homeserver":{"base_url":"https://chat.example.net"}}

6. Если домен не нужен, то можно работать по HTTP и IP

Просто пробрасываете порт наружу и подключаетесь к серверу вот так:

http://server-ip:8008/

Matrix всё равно шифрует переписку, поэтому содержимое сообщений никто не увидит.

Минусы:

  • Element может ругнуться

  • федерации (общения с другими серверами) не будет

Для семейного чата идеальный упрощённый вариант.

После можно зайти через браузер. Если сервер успешно поднялся, вы увидите такую страницу:

Как я поднял свой личный Matrix-мессенджер

7. Создание администратора

Первого пользователя я создавал так:

docker exec -it matrix-synapse \

register_new_matrix_user \

-c /data/homeserver.yaml \

-a \

http://matrix-synapse:8008

(matrix-synapse:8008 — адрес внутри Docker-сети)

8. Создание обычного пользователя

docker exec -it matrix-synapse \

register_new_matrix_user \

-c /data/homeserver.yaml \

--no-admin \

http://matrix-synapse:8008

9. Важное замечание о паролях при создании пользователей

При создании пользователей через CLI нельзя использовать в пароле символы UTF-16, иначе Synapse выдает ошибку:

UnicodeEncodeError: 'utf-8' codec can't encode character '\udce3'

10. Как узнать свой токен для админских команд

Для работы с API нужен токен доступа.
Получить его проще всего через CLI-авторизацию.

Шаг 1. Выполнить вход через API:

docker exec -it matrix-synapse curl -s -X POST \

-H "Content-Type: application/json" \

-d '{"type":"m.login.password","user":"ВАШ_ЛОГИН","password":"ВАШ_ПАРОЛЬ"}' \

http://localhost:8008/_matrix/client/r0/login

Шаг 2. В ответе найдите поле:

"access_token": "syt_xxxxxxx..."

11. Полезные команды с токеном

Проверить, кто вы:

docker exec -it matrix-synapse curl -H "Authorization: Bearer ВАШ_ТОКЕН" \

http://localhost:8008/_matrix/client/r0/account/whoami

Список пользователей:

docker exec -it matrix-synapse curl -H "Authorization: Bearer ВАШ_ТОКЕН" \

http://localhost:8008/_synapse/admin/v2/users

Список комнат:

docker exec -it matrix-synapse curl -H "Authorization: Bearer ВАШ_ТОКЕН" \

http://localhost:8008/_synapse/admin/v1/rooms

Удалить комнату:

docker exec -it matrix-synapse curl -X DELETE \

-H "Authorization: Bearer ВАШ_ТОКЕН" \

http://localhost:8008/_synapse/admin/v1/rooms/ROOM_ID

Деактивация пользователя:

docker exec -it matrix-synapse curl -s -X PUT \

-H "Authorization: Bearer ВАШ_ТОКЕН" \

-H "Content-Type: application/json" \

-d '{"deactivated": true}' \

"http://localhost:8008/_synapse/admin/v2/users/@user:chat.example.net"

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

docker exec -it matrix-synapse curl -s \

-H "Authorization: Bearer ВАШ_ТОКЕН" \

"http://localhost:8008/_synapse/admin/v2/users/@user:chat.example.net/devices"

Удалить конкретное устройство:

docker exec -it matrix-synapse curl -s -X DELETE \

-H "Authorization: Bearer ВАШ_ТОКЕН" \

"http://localhost:8008/_synapse/admin/v2/users/@user:chat.example.net/devices/ИДЕНТИФИКАТОР_УСТРОЙСТВА"

12. Подключение с телефона

На телефон ставим приложение Element (iOS/Android) и настраиваем подключение к другому серверу.

Если у вас HTTPS и домен:

https://chat.example.net

Если вы работаете по IP:

http://server-ip:8008/

Далее вводите имя пользователя и пароль, затем через поиск находите второго пользователя:

@имя

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

Важно: Сохраните в настройках клиента ключи восстановления, чтобы в следующий раз восстановить зашифрованные сообщения, иначе не получится их прочитать.

13. Немного про звонки

Звонки и видео требуют настроенный TURN-сервер (coturn).
Он поднимается отдельно, настраивается не сложно, но это уже другая тема.
Для обычной текстовой переписки не нужен вообще.

14. Итог

Matrix - это несложно.
Он даёт вам:

  • свой личный мессенджер

  • без рекламы

  • без чужих серверов

  • с нормальным шифрованием

  • с хранением данных у вас

Для семьи или небольшой группы - идеальный вариант.

Показать полностью 1
11

Вот и до меня добрался маразм Авито)

Выставил на продажу старое файловое хранилище, ничего не предвещало беды, как объявление заблокировали по причине "Контакты на фото". Кажется я уже с таким сталкивался 10 лет назад, тогда просто бот цифровые значения в описании принимал за контакты и банил, но тут все оказалось куда забавнее.

Написал я в техподдержку, что у меня нет контактов на фотографиях и тут явно какая то ошибка, на что у меня состоялся вот такой диалог:

В общем, если вы сейчас что то выставляете на продажу и там где то мелькает адрес какого либо сайта - это нарушение, имейте ввиду))

Показать полностью 3
96

Ответ на пост «Взлетел»1

Когда я играл в ГТА 4, у меня был свой кайф: просто медленно ехал по улицам Либерти Сити, смотрел на пейзажи, людей, фасады, этот серый мокрый асфальт. И вот однажды, чисто случайно, я был свидетелем такой сцены, что я пожалел, что у меня не был запущен какой нибудь Fraps.

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

Вот за такие моменты ты понимаешь, что мир игры живет своей жизнью. Это не было похоже на заскриптованную сцену, все выглядело как чистая случайность, из за которой сработали побочные скрипты - Из машины вылез оглушенный и недовольный водитель, а копы проявили агрессию сразу, как только им что то не понравилось. В эту секунду Либерти Сити казался не просто декорацией, а городом где в любой момент может случиться полное безумие.

По настоящему прорывная была игра в свое время, ГТА 5 уже не вызывала таких эмоций.

2030

Ответ Appelsin88 в «Полицейские, какую самую тупую вещь вы когда-либо видели или слышали от преступника?»78

Как-то обслуживал я инфраструктуру (сеть, видеонаблюдение) в одном учебном заведении. У них был заключен договор на услуги ЧОП и охранники были приходящие. И вот звонит мне зам по АХЧ и говорит, что охранник в общаге сбил настройки камер. Я сначала не понял: как сбил, у него же никогда паролей от регистраторов не было? Но решил вечером заехать, глянуть, что случилось.

Приезжаю. Навстречу выходит сотрудница, которая сама жила в этой же общаге. Смотрим комп охраны, а там в программе для просмотра потоков с камер - пусто, ни одного регистратора в списке. Ну я запускаю "Автопоиск", нахожу все регистраторы, добавляю и камеры снова оживают.

Спрашиваю: "А где охранник-то?"

А мне отвечают: "Да он вчера вечером ушел и больше не приходил".

И тут у меня пазл складывается: регистраторы из программы специально удалили (а это можно сделать даже без админских прав), а сам охранник испарился. Записи, к счастью, хранились не на компе, а на самих регистраторах, которые стояли в разных корпусах общаги, в железных шкафах под замком.

Начали разбираться по хронологии. Оказалось, что прошлым вечером, когда общага почти пустовала (каникулы, студентов почти не было), охранник сперва отвернул камеру, которая смотрела прямо на его пост, потом снёс регистраторы из программы и пошел гулять по этажам, где никого не было. Попутно заходил в комнаты и воровал вещи, прям видно было, как заходил с пустыми руками, а выходил уже вынося что то. У одной девушки исчез старенький ноутбук, у других пропали какие-то мелочи.

Вызвали полицию, оформили заявление, передали записи с камер. Ноутбук, кстати, нашли в соседнем ломбарде. Даже удивляет, что такую старую рухлядь у него приняли (там ноут чисто под печатную машинку, очень старый).

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

Показать полностью
Отличная работа, все прочитано!