Открываем рубрику по развитию децентрализации и альтернативных клиентов :)
Как многие знают, к информации в блокчейне может вести сотни дорог, и наиболее используемыми web-клиентами блогов на Golos в данный момент являются golos.id, golos.in, golos.today, есть и другие.
Важно заметить что сайты .id, .in, .today хоть и похожи, но не являются зеркалами (точными копиями), имеют разные настройки, подходы, страны размещения и т.д. Когда-то любой из сайтов может перестать работать, кардинально измениться или сменить хозяина, о чём скорее всего расскажут (но не обязательно). Лишь время и доверие определяет отношение пользователей к веб-клиентам (кому доверяете свои ключи, кто стоит за тем или иным веб-клиентом, будут ли ответы).
Пример клиента блогов наиболее безобидный, ведь в них можно использовать только постинг-ключ, который не даст доступ к распоряжению вашими токенами на основных балансах или полный доступ (при использовании пароля).
Поэтому запуск альтернативных клиентов для блогов хорошая практика проверки разных подходов, контент-политики, а возможно и функций. Если текущие веб-клиенты скрывают определенный контент, другие могут отображать всё или скрывать ещё больше (golos.today например больше недоступен для неавторизованных пользователей). Разнообразие и внутренняя конкуренция, возможность построения своих сообществ по интересам, языку, иной категоризации...
К слову, в планах добавить опцию, и если какой-то автор/пост заблокирован/скрыт на одном из клиентов, на странице-заглушке отображать адреса альтернативных клиентов. Тем самым их реклама будет в наиболее логичном месте, а пользователь возможно получит доступ на ином клиенте (где отключили скрытие по отрицательной репутации, дизлайкам, отказались от блек-листа и пр.).
Запуск своих блогов
Минимальные затраты на веб-клиент от 15$ в месяц + регистрация домена.
Минимальные требования к серверу 2 vCPU, 4 GB RAM, 40 GB SSD, чем современнее и шустрее = очевидно лучше.
Нужно установить Docker и Nginx, ссылки из гайда про АПИ-ноду на эти моменты.
Наиболее быстрый вариант, использовать готовые сборки, тут размещаются Docker-образы что мы собираем с dev-бранча сообщества на Github.
Создаете условно папку blogs
, в неё перемещаем 3 файла docker-compose.yaml, default.json, blacklist.json
Пример "рабочих" настроек
Файл docker-compose.yaml
services:
web:
image: golosblockchain/web-ui:dev
restart: always
volumes:
- ./default.json:/var/app/config/default.json
- ./blacklist.json:/var/app/config/blacklist.json
ports:
- "127.0.0.1:8080:8080"
Файл default.json, на примере реального клиента golos.today, после # даны комментарии к некоторым параметрам:
{
"site_domain": "golos.today",
"chain_id": "782a3039b478c839e4cb0c941ff4eaeb7df40bdd68bd441afd444b9da763de12",
"ws_connection_client": "https://api.golos.today",
"ws_connection_server": "https://api.golos.today",
"proxy_node": false, # заменить на true, чтобы запросы проксировались и не было видно какая нода используется
"authorization_required": true, # заменить на false, чтобы контент был доступен и без обязательной авторизации на сайте
"helmet": {
"directives": {
"defaultSrc": "'self'",
"childSrc": "'self' www.youtube.com w.soundcloud.com player.vimeo.com www.google.com coub.com *.yandex.ru t.me vk.com *.vk.com ok.com rutube.ru",
"scriptSrc": "'self' 'unsafe-inline' 'unsafe-eval' app.sharpay.io www.google-analytics.com www.googletagmanager.com telegram.org",
"styleSrc": "'self' 'unsafe-inline' fonts.googleapis.com",
"imgSrc": "* data:",
"fontSrc": "data: fonts.gstatic.com",
"connectSrc": "'self' api.imgur.com *.golos.today *.golos.app golos.app wss://notify.golos.app app.sharpay.io www.google-analytics.com analytics.google.com cdn.jsdelivr.net/npm/emoji-picker-element-data@%5E1/",
"frameAncestors": "'none'"
}
},
"server_session_secret": "exiKdyF+IwRIXJDmtGIl4vWUz4i3eVSISpfZoeYc0s4=",
"session_cookie_key": "dayblogs.session", # заменить на свой вариант
"session_key": "golos",
"google_analytics_id": "UA-146157213-1", # заменить на свой счетчик
"logo": {
"icon": "https://i.imgur.com/sk3krz0.png",
"title": "https://i.imgur.com/LC7efvh.png"
},
"add_notify_site": {
"show": false, # заменить на true, если нужно чтобы висел анонс на сайте
"id": 21,
"link": "/@lex/plagin-shifrovaniya-postov-dorabotki-registracii-za-kriptu-30-khf-i-prochie-izmeneniya",
"title": "Плагин шифрования постов, доработки регистрации за крипту, начало 30 ХФ и прочие изменения..."
},
"show_adv_banners": false,
"images": {
"img_proxy_prefix": "https://images.golos.today",
"img_proxy_backup_prefix": "https://steemitimages.com",
"upload_image": "https://api.imgur.com/3/image",
"client_id": "6c09ebf8c548126"
},
"wallet_service": {
"host": "https://wallet.golos.today"
},
"messenger_service": {
"host": "https://chat.golos.app"
},
"auth_service": {
"host": "https://golos.app",
"custom_client": "blogs"
},
"notify_service": {
"host": "https://notify.golos.app",
"host_ws": "wss://notify.golos.app/ws"
},
"elastic_search": {
"url": "https://search.golos.today",
"login": "golosclient",
"password": "golosclient"
},
"apidex_service": {
"host": "https://api-dex.golos.app"
},
"golos_news": {
"account": "progolos" # заменить на свой акк, репосты которого будут появляться уведомлениями сбоку слева сайта для ознакомления пользователей
},
"forums": {
"white_list": ["fm-golostalk", "fm-prizmtalk", "fm-graphenetalks"],
"fm-golostalk": {"domain": "golostalk.com"},
"fm-prizmtalk": {"domain": "prizmtalk.com"},
"fm-graphenetalks": {"domain": "forum.gph.ai"}
}
}
server_session_secret
можно сгенерировать для своего клиента в Node командой crypto.randomBytes(32).toString('base64')
или онлайн https://dotnetfiddle.net/cB5FWG, выбрав 32 символа и нажав Run
.
client_id
в блоке images
для использования своих лимитов на загрузку фото через Imgur, можно получить зарегистрировавшись на https://apidocs.imgur.com/
Опции в файле blacklist.json просты, возможность скрытия пользователя с клиента (blocked_users
) или скрытие поста (blocked_posts
) из публичных лент и от неавторизованных пользователей.
Остается лишь запустить докер-образ из папки blogs
командой docker compose up
и пробросить домен на выбранный порт, пример файла настроек Nginx при использовании cloudflare.com
server {
server_name golos.today;
listen 80;
location / {
proxy_buffers 8 128k;
proxy_pass http://127.0.0.1:8080;
}
}
Или установить Certbot, для получения сертификата к домену веб-клиента блогов, аналогично описанному в гайде для АПИ-ноды.
P.S. Если кто-то хочет попробовать запустить свой web-клиент/сервис (кошелек, мессенджер, форум, уведомления, регистрация, проксирование картинок), пишите, по наличию времени опишу подробнее...
Вопросы, предложения, недостающие вам для более тонкой настройки блогов опции, пишите комментами сюда.
@lex, опс, опс, вот я благодаря Голосу и девопс 😊
про запуск своих блогов. минимальные требования указаны, а операционка какая может быть - Линукс? Или не только?
@valkommen, а то 😂
ОС любая где получится поставить nginx + docker, в примере выше Ubuntu
В целом это попытка раскрыть подробнее тему "своего клиента", когда пишут запусти свой, запусти свой )
Вдруг кто-то будет крайне возмущен контент-политикой, скрытием с 1 или 2 или X... веб-клиента, а возможность вот она, арендуй сервер в Австралии и не скрывай ничего на своём домене...
Для бол-ва пользователей и существующих клиентов кмк достаточно, ну или могут за пару минут установить десктоп-клиент, считай весь сайт у тебя на компьютере.
@lex, "это "ж-жжжж" неспроста" (с)
:)