Srnd: различия между версиями
0men (обсуждение | вклад) |
Kairdia (обсуждение | вклад) м (Косметические изменения опечаток.) |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 53: | Строка 53: | ||
</pre> | </pre> | ||
ПУБЛИЧНЫЙ_КЛЮЧ - это публичный ключ админа, | ПУБЛИЧНЫЙ_КЛЮЧ - это публичный ключ админа, с которым можно заходить в интерфейс модератора. Чтобы получить связку ключей, зайдите на /moderate?getkey, когда запустите srnd. Для захода в админку надо будет использовать приватный ключ. Он же используется для трипкода. | ||
=== Настройка плагина paste === | === Настройка плагина paste === | ||
Строка 159: | Строка 159: | ||
=== Настройка пиринга === | === Настройка пиринга === | ||
Для связи с другими фронтендами вам нужно настроить пиринг. Настройка заключается в том, что вы у себя настраиваете outfeed для отправки сообщений на другой сервер, и админ другого сервера делает то же самое для отправки сообщений к вам. | Для связи с другими фронтендами, вам нужно настроить пиринг. Настройка заключается в том, что вы у себя настраиваете outfeed для отправки сообщений на другой сервер, и админ другого сервера делает то же самое для отправки сообщений к вам. | ||
Настоятельно рекомендуется использовать whitelisting на уровне i2p для контроля доступа к NNTP. А именно, в конфиге серврного туннеля nntp нужно включить "Restricted Access List(s):", а в список "Access List:" добавить xxxx.b32.i2p адрес того socks-прокси туннеля, который использует другая сторона для связи с вашим сервером. Аналогично, админ другого сервера делает то же самое у себя, т.е. вайтлистит адрес вашего socks-прокси туннеля. Чтобы этот адрес всегда был постоянным, при создании socks-прокси туннеля необходимо поставить radiobutton "Persistent private key(k):" в Enable. Потом запустить туннель и зайти в его конфиг опять, там появится строка "Local Base 32:", который вы и сообщите удалённой стороне. | Настоятельно рекомендуется использовать whitelisting на уровне i2p для контроля доступа к NNTP. А именно, в конфиге серврного туннеля nntp нужно включить "Restricted Access List(s):", а в список "Access List:" добавить xxxx.b32.i2p адрес того socks-прокси туннеля, который использует другая сторона для связи с вашим сервером. Аналогично, админ другого сервера делает то же самое у себя, т.е. вайтлистит адрес вашего socks-прокси туннеля. Чтобы этот адрес всегда был постоянным, при создании socks-прокси туннеля необходимо поставить radiobutton "Persistent private key(k):" в Enable. Потом запустить туннель и зайти в его конфиг опять, там появится строка "Local Base 32:", который вы и сообщите удалённой стороне. |
Текущая версия на 10:48, 21 сентября 2020
|
srnd - свободное ПО, реализующее распределённую систему имиджборд, форумов и pastebin-ов на базе обмена по протоколу NNTP.
Печально известно тем, что именно на нём Скрытозой пробовал перепилить Хиддач и потерял всяческое желание тянуть это.
Установка на ubuntu[править]
apt-get install python-pip python-cffi python-imaging python-pygments python-dev libffi-dev libsodium-dev sqlite3 pip install pynacl pip install pysodium rm -rf /usr/local/lib/python2.7/dist-packages/nacl/_lib/__pycache__
Исходный код модифицированного srnd (версия для hiddenchan): http://git.repo.i2p/w/srnd/srndh.git
Первоначальная настройка конфигов[править]
Внимание, после установки и первоначальной настройке при отсутствии nntp-сообщений у вас будет полностью пустая борда без разделов и без возможности постинга. Чтобы что-либо начало появляться, необходимо либо настроить peering, либо вручную положить nntp-статью в incoming, либо сохранить к себе с другого фронтенда html-страницу с формой постинга, поправить её и отправить т.о. первое сообщение на свой /incoming.
Так же обратите внимание, что в конфигах srnd применяется нестандартная система комментариев. Если строка начинается со #start_param, то это не комментарий, а именно конфигурационная переменная, не закомментированная! Т.е. убирать "#" не нужно.
Настройка плагина overchan[править]
Плагин overchan отвечает за обработку сообщений в группах overchan.* и генерацию html-страниц имиджборды. Т.е. по сути это парсер сообщений + генератор статики. Конфиг - install_files/config/hooks/plugins/overchan Для начальной конфигурации поправьте параметр
#start_param title=ИМЯ_БОРДЫ
Это название вашей борды, которое будет отображаться в Title и на других видных местах.
Настройка плагина postman[править]
Плагин postman отвечает за приём сообщений от пользователей фронтенда по http. Разбор POST-параметров, капча, и т.п. Его конфиг install_files/config/hooks/plugins/postman особой настройки не требует. Однако помимо этого конфига у postman-а есть отдельные конфиги по работе с каждым фронтендом. Настройте конфиг install_files/plugins/postman/frontends/overchan. Здесь вам нужно поправить несколько параметров:
uid_host=web.overchan.ИМЯ_БОРДЫ (allowed_boards) overchan.имя_раздела_куда_доступен_постинг_1 overchan.имя_раздела_куда_доступен_постинг_2
Настройка плагина censor[править]
Плагин censor отвечает за модерирование. install_files/config/hooks/plugins/censor:
#start_param uid_host=web.censor.ИМЯ_БОРДЫ #start_param add_admin=ПУБЛИЧНЫЙ_КЛЮЧ
ПУБЛИЧНЫЙ_КЛЮЧ - это публичный ключ админа, с которым можно заходить в интерфейс модератора. Чтобы получить связку ключей, зайдите на /moderate?getkey, когда запустите srnd. Для захода в админку надо будет использовать приватный ключ. Он же используется для трипкода.
Настройка плагина paste[править]
Данный плагин реализует функциональность распределённого pastebin. Для настройки достаточно поправить title (install_files/config/hooks/plugins/paste):
#start_param title=paste.ИМЯ_БОРДЫ
Так же в дефолтном конфиге имеется запись
ano.paste
это означает, что плагин обрабатывает именно сообщения из этой nntp-группы.
Первый запуск и настройка главного конфига демона[править]
Запустите ./main.pyx, подождите некоторое время и нажмите Ctrl-C. После этого создастся директория data/. Учтите, что при каждом запуске srnd копирует конфиги и плагины из install_files в data/, поэтому в data/ править ничего не нужно (кроме outfeed-ов, об этом позже).
После первого запуска демон создаст конфиг data/config/SRNd.conf, там настраивается bind_ip и port для NNTP-демона, а так же выставляется уровень дебага. Обратите внимание, что уровни дебага сделаны слегка по-дурацки - с увеличением цифры уровень дебага МЕНЬШЕ, а не больше, как все мы привыкли. Это может быть запатчено в скором времени. 2 - info, 1 - debug, 0 - verbose (самый детальный вывод). Для начала рекомендуется использовать уровни дебага 2-1.
Настройка конфига nginx[править]
Предполагается, что srnd установлен в /opt/srnd/.
# log desthashes log_format i2p '$remote_addr $http_x_i2p_desthash - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; # disable server id server_tokens off; # i2p does gzip itself gzip off; server { listen 80; server_name foo.i2p; root /opt/srnd/data/plugins/overchan/out/; client_max_body_size 10M; access_log /var/log/nginx/access.log i2p; if ( $http_x_forwarded_server ) { rewrite ^.*$ /inproxy.html break; } location /incoming { # proxy new messages to postman proxy_pass http://127.0.0.1:53751; } location /moderate { # proxy new messages to censor proxy_pass http://127.0.0.1:53753; } location ~* ^.+\.html$ { # force clients to always request the latest version try_files $uri =404; expires 1s; } location ~* ^.+\.css$ { # let clients cache css files for 6 hours try_files $uri =404; expires 6h; } location = / { # redirect / to index.html try_files /index.html =404; expires 1s; } location / { # allow clients to cache everything not .html try_files $uri =404; expires max; } location ^~ /paste/ { alias /opt/srnd/data/plugins/paste/out/; index /index.html; expires 1s; } }
Инит-скрипт для upstart[править]
description "srnd service" start on runlevel [2345] stop on runlevel [06] chdir /opt/srnd exec /opt/srnd/main.pyx
Настройка туннелей i2p[править]
Вам нужно настроить 3 туннеля:
- для http-сервера, тип туннеля - HTTP server
- для nntp-сервера (приём фидов с других серверов), тип туннеля - Standard server. Target туннеля - хост с srnd, порт 119
- socks-прокси (для отправки исходящих сообщений) - тип туннеля - SOCKS 4/4a/5 proxy (клиентский туннель)
Число туннелей для nntp-сервера и socks-прокси не имеет смысла выставлять больше количества nntp-пиров, т.к. одно соединение не может использовать более одного туннеля.
Настройка пиринга[править]
Для связи с другими фронтендами, вам нужно настроить пиринг. Настройка заключается в том, что вы у себя настраиваете outfeed для отправки сообщений на другой сервер, и админ другого сервера делает то же самое для отправки сообщений к вам.
Настоятельно рекомендуется использовать whitelisting на уровне i2p для контроля доступа к NNTP. А именно, в конфиге серврного туннеля nntp нужно включить "Restricted Access List(s):", а в список "Access List:" добавить xxxx.b32.i2p адрес того socks-прокси туннеля, который использует другая сторона для связи с вашим сервером. Аналогично, админ другого сервера делает то же самое у себя, т.е. вайтлистит адрес вашего socks-прокси туннеля. Чтобы этот адрес всегда был постоянным, при создании socks-прокси туннеля необходимо поставить radiobutton "Persistent private key(k):" в Enable. Потом запустить туннель и зайти в его конфиг опять, там появится строка "Local Base 32:", который вы и сообщите удалённой стороне.
Настройка outfeed-а[править]
Для настройки outfeed-а нужно создать файл в data/config/hooks/outfeeds/. Имя файла должно быть строго такого формата: "xxxxx.b32.i2p:119", т.е. hostname:port. Без двоеточия и порта работать не будет! Внутрь конфига пишется что-то вроде:
#start_param sync_on_startup=True #start_param proxy_type=socks5 #start_param proxy_ip=127.0.0.1 #start_param proxy_port=10020 #start_param debug=1 ctl overchan.* !ano.paste
Незакомментированные строки указывают, какие группы нужно синхронизировать на удалённый сервер. Восклицательный знак означает "blacklist rule", т.е. исключение. такое правило всегда имеет приоритет перед разрешающими правилами.
FAQ[править]
Как писать новости на главной?[править]
Для этого в конфиге overchan имеется параметр #start_param news_uid= В него надо записать message-id (без кавычек!) поста, в котором написана новость. Чтобы узнать message-id, нужно сперва запостить сообщение, а потом открыть в просмотрщике текстовых файлов это сообщение, оно будет располагаться в `ls -1t data/groups/groupname/ |head -1`
Как переименовать группу?[править]
sqlite3 dropper.db3 sqlite> update groups set group_name='overchan.hiddenchan' where group_id='12'; sqlite3 ./plugins/overchan/overchan.db3 sqlite> update groups set group_name='overchan.hiddenchan' where group_id='11'; groups# mv overchan.hiddenchan.random overchan.hiddenchan find . -type l -print0 |xargs -0 sed -i --follow-symlinks -e "s,Newsgroups: overchan.hiddenchan.random,Newsgroups: overchan.hiddenchan,g" --
Как заставить overchan заново распарсить все сообщения?[править]
sqlite3 ./plugins/overchan/overchan.db3 sqlite> drop table articles; restart
Как всё удалить?[править]
find data/articles/ -type f -delete find data/ -type f -name "*.db3" -delete rm -rf data/groups/*
Как вручную заблокировать группу?[править]
sqlite3 plugins/overchan/overchan.db3 sqlite> update groups set blocked='1' where group_id='23';
Известные баги[править]
- После запуска первая статья в data/incoming/ может не обработаться сразу после появления там. Чтобы "пнуть" dropper, можно сделать touch data/incoming/f.
- При обработке большого кол-ва сообщений (импорт, синхронизация с другим фронтендом) тред overchan может застрять и не генерировать html-ки. Лечится перезапуском демона.
Ссылки и контакты[править]
- Исходный код: http://git.repo.i2p/w/srnd/srndh.git
- Оригинальный англоязычный мануал: http://nz6kngonjz6u5n44pe3vjkyiwetlt3sc3e6nbb57ugim6cny3cfq.b32.i2p/thread-01b987b318.html
- irc: #srnd - канал для разработчиков и операторов. Вопросы по установке, поиск пиров. Англоязычный.
- irc: #ru - общий канал для русскоязычных, так же можно поговорить про srnd на русском.