Статья

Stormic Community Management System

Приветствую, друзья!

Так уже получилось, что я где-то в комментариях о self-hosted мультиблоговом ПО, написал что поиск такого ПО - это тернистый пусть, где в конце нет вознаграждения. Когда ты перебирешь с десяток вариантов, то у тебя останется выбор из двух - это наша любимая libarea и писать самому.

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

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

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

Telegram-канал проекта: https://t.me/stormicapp Живое превью блоговой платформы: https://stormic.app/new/ GitHub: https://github.com/stormhead-org/Stormic

Это самое первое, тестовое, превью, запущенное пару дней назад. Пока нет мобильной адаптации, только ПК. Практически полностью готово все, что касается получения информации с сервера и GET API. Теперь очередь POST API. В превью доступна авторизация (через провайдеров) и изменение информации о себе.

Это по большому счету все, что я хотел сказать. Принесети превью и сказать, что обратная связь теперь все же есть. В тг канале небольшое пояснение в первом посте, что происходило с проектом и почему было решено переписать мультиблоги с 0. На этом не буду вас больше отвлекать, оставлю только описание проекта для тех, кого небыло в том обсуждении.

STORMIC

Это система управления сообществами с открытым исходным кодом.

Цель проекта - децентрализировать общение людей и дать альтернативу контролируемым социальным сетям.

Stormic состоит из трех основных модулей: 1. Платформа мультиблогов (dtf.ru, dev.to и т.д.); 2. Система мгновенных сообщений (discord); 3. Wiki-модуль.

Как это работает? - 3 модуля призваны решить проблемы каждого из них, когда они используются по отдельности и дать пользователям инструмент для создания полноценных сообществ. Теперь, когда вы ведете свой блог, вам не нужно держать сайт и отдельно еще discord-сервер или* tg-канал*, для поддержания активности сообщества.

Пара вещей, помимо базовых (функционал dtf.ru, dev.to): 1. Пользователи могут создавать и администрировать категории и назначать своих модераторов на нее; 2. При создании категории для постов, автоматически создается сервер аналогичный Discord; 3. Создатель категории становится администратором сервера и назначает людей для модерации сервера; 4. Категория и сервер жестко завязаны друг на друге. Это одно целое. Когда в категории появляются новые посты, то информация о них появляется и на сервере. Уведомления о комментариях, ответах и прочих вещах. Это дает возможности нативного взаимодействия с постами, без необходимости ходить по разным платформам. Такое решение позволяет держать комментарии постов своей категории чистыми и по делу, а поддерживать активность сообщества на своих серверах. Stormic разграничивает людей на тех, кто хочет обсудить сабж по теме в комментариях в продолжение поста и на тех, кто носит свои смешные картинки и бесконечно спамит локальные мемы для своей локальной аудитории. Как правило, эти две категории людей не особо друг друга переносят и Stormic решает эту проблему. Максимальная нативность в рамках одной экосистемы; 5. Wiki-модуль позволяет писать объемные руководства и документацию. Этот модуль так же завязан на вашем сервере и на модуле блогов. Отвечая на один и тот же вопрос в 100й раз, вы можете легко ссылаться на предложения и абзаци из wiki-статьи цитируя их,находясь при этом на сервере или в блоге. Это удобно и устраняет некоторую излишнюю токсичность в общении, когда опытные юзеры устают отвечать на однотипные вопросы новичков.

Эти и другие инструменты, дают вам возможности для создания настоящего, полноценного сообщества и все это в рамках одной платформы.

При разработке*Stormic *делается большой упор на возможности администрирования отдельных сообществ и платформы в целом. Черные списки категорий и пользователей, баны, кики, муты и многое другое в ваших руках.

ЧТО ВНУТРИ?

Stormic написан на NextJS, использует TypeScript, TailwindCSS и shadcn/ui, а так же Auth.js, Zustand, PrismaORM, PostgreSQL, Redis, EditorJS (редактор), SMTP (для e-mail) и S3 (для хранения медиа).

Запускается в Docker-контейнере под прокси-сервером Nginx.

preview.png

70 Ответов

  1. Мне дизайн нравится и вроде шустро работает. ➕

  1. Выглядит интересно, понаблюдаем, если не забросите выйдет достойная альтернатива для альмы

  1. Начало отличное! Главное не бросайте проект!

  1. Всем спасибо, друзья. Да, это будет завершено. Теперь это уже не просто пет-проект.

  1. Шрифты и оформление выглядят хорошо, но на мобильном все скукожилось. Screenshot20240824-093734Chrome.jpg

    1. Так он же указал, что мобильной адаптации пока нет.

      1. Был невнимателен, но если делать респонсив-верстку, то лучше планировать заранее, чтоб потом всё не переделывать.

        1. ну там ничего особо переделывать не надо будет. tailwind+ts творят магию на месте, без дополнительной головной боли. Просто респонсив буду уже пилить, когда буду уверен, что я закончил со всеми элементами и он выйдет в релиз именно в этом виде. Просто дописать немного кода

  1. Посмотрел «исходный код страницы». В планах есть поработать над SEO?

    1. да, офк, без него далеко не уедешь. На данном этапе пилится пока только функционал. Ну и мне это отдельно надо будет еще изучать, потому что с SEO дел не имел. Те же посты и прочий контент не имеют заголовком h1, h2 и прочие, потому что они написаны не редактором, а просто сидятся и автоматически генерируются в базу данных при старте ПО и потом уже морда сайта тянет сгенерированную инфу из базы данных. Когда будет доработан редактор (сейчас он просто добавлен и инициализируется по кнопке «написать пост» в модальном окне (если вы зарегались)). Когда пост можно будет написать из редактора, то там будет уже разбитие тела поста на элементы, которые ждут для SEO

      1. сейчас пилю все то, что юзеры могут изменять и редактировать + настройки профиля. Когда это закончу, перейду к редактору и коментам, там уже будут вопросы о SEO подниматься

  1. Снимок экрана 2024-08-25 145350.png Снимок экрана 2024-08-25 145418.png Снимок экрана 2024-08-25 145810.png Вот прям сейчас работаю над настройками профиля юзера. Таблица деталей с key и value (там офк потом не будет написано key и value. Будет отображена реальная инфа из полей) - эта вот эта информация в профиле с кастомными полями юзера, типа личный сайт и прочее. Этого нет на превью, но уже есть в ветке, которая ушла дальше, чем превью.

  1. This looks good. Is there another way to install on hosting like example.com/install ?

    1. Спасибо. Об установке не хостинг без docker я еще не думал, все же это разрабатывается под отдельный VPS сервер с установленным docker. Потому что я хочу дать юзерам возможность запускать этот софт просто командой типа:

      curl -sSL https://stormic.app/install.sh | sh

      Все, после этого у вас стартует экземпляр в контейнере на 3000 порту. При первом заходе по адресу http://ваш ip:3000 вас встречает страничка регистрации как админа, первичной настройки экземпляра и просьбой ввести название вашего домена. После ввода домена вам выдаются (если а-записи домена указывают на этот сервер) автоматически SSL сертификаты и экземпляр сразу начинает работать на https://example.com

      Ну и если ваш экземпляр растет, то его нужно масштабировать, а масшабировать контейнеры легче, через тот же docker swarm или k8s

  1. По скринам хорошо, но у меня сайт не грузит ни с впн, ни без

    1. странно. Скорее всего это что-то с сервером, где он запущен, из-за длительного простоя. В любом случае, попробуйте пару раз перезагрузить страничку и сервер проснется

      1. Уже работает. Сасно, мне нрав)

  1. мобильную версию поправили уже?

    1. еще нет, но там уже есть огромное количество изменений с момента, когда я написал этот пост. Воркеры, очереди через RabbitMQ, лайки, комментарии, вебсокеты, персонализированные ленты, избранные посты, подписки на юзеров, подписки на сообщества, зачатки администрирования, роли и т.д. Там уже очень много. До полноценной альфы, когда вы сможете это запустить, осталось не так уж и много. Все новости и обсуждения есть тут https://t.me/+RfIObsmQd7I1Nzcy

  1. как я понял с seo будут проблемы? работает как приложение. поисковики не смогут это адекватно индексировать

    1. С SEO проблем не будет, потому что все содержимое сайта лежит у вас в html в браузере. Это nextjs, а не react, который все рендерит в id=root и страничка для поисковика пустая. Я же отдаю все содержимое страницы для индексации поисковиками

      1. Понял, спасибо. Мобильную версию так и не поправили)) так же не адаптивно

  1. Привет. Есть ли какие то новости или движуха? Когда уже на демке можно будет что то запостить?

    1. Привет. Да, вчера вернулся уже с первыми комитами. Жизненные потрясения, которые начались с середины сентября, утряслись в каком-то виде. Снова появился график и возвращаемся в привычное русло. Так что возвращаемся на финишную прямую

      1. Давайте уже выходите на какой то финиш. С нетерпением жду когда можно будет установить на хостинг и погонять.

  1. Блин….. походу сдохло все:( Демо сайт не работает…. на гите конь не валялся😄 А так все хорошо начиналось….

    1. Он написал в своем ТГ, что на след неделе вернется, проект не забросил.

      1. Подождем…. но по моему опыту надежды мало:(

        1. Все на месте. Ничего не заброшено, как уже было сказано - он будет завершен. Просто сейчас достаточно сложный этап с переездами и прочим, реорганизацией времени и жизни в целом. Однако, как будто бы он пройден и все возвращается обратно на свои места. Я крайне благодарен вам за интерес. Спасибо, это очень мотивирует

    1. демо сайт не работает время от времени, потому что хостер timeweb сидит по ддос атакой уже не первый месяц и сервера могут не пинговаться из-за этого. Пока для проекта это не критично, но либо они успеют это пофиксить (в целом они написали, что ждут новое сетевое оборудование), либо переедем от них, если не прекратится

  1. Круто! а скоро превью запустят?

  1. Автор, надеюсь вы не забросили разработку?

    1. На гитхабе ежедневные обновления, не забросил значит

  1. Короче все сдохло:( И демо сайт… и на гите больше 3 мксяцев конь не валялся…. А как все хорошо начиналось… Почему так? Очень жаль….

    1. Добрый день )) Нет, мы наоборот набираем обороты. Теперь у нас есть команда, например наш сервер на go пишет сеньер golang разработчик из Яндекса. У нас есть системный аналитик, есть frontend разработчик. Мы ведем переговоры с большими и именитыми компаниями РФ. Просто теперь это не пет проект, а полноценный стартап. Так что вы получите продукт совершенно другого уровня, нежели обычная поделка начавшаяся на форуме. Да выстраданый, да долгий, но не заброшенный ни на день. Так что отставить панику. Вы только посмотрите на наш прекрасный сервер https://github.com/stormhead-org/backend

      Так что, до встречи )

      1. Так что вы получите продукт совершенно другого уровня, нежели обычная поделка начавшаяся на форуме.

        Что то я очень сомневаюсь, что кто то бесплатно получит проект если там сеньор goland из ящера:) А можно поподробнее - что из себя будет представлять новый проект?

        1. Бесплатный, опенсурс, за это можно не переживать)

          Будет все то, что было заявлено изначально: глубокая интеграция блогов, дискорда и вики между собой.

          Архитектура стала сложнее и такой «интерпрайзовой», потому что поверх этого опенсурса будет ещё наша основная коммерческая платформа, которая будет интегрировать в себя этот опенсурсный штормик, как один из модулей.

          То есть вы сможете запускать у себя опенсурсный stormic, все как и было заявлено. А мы будем брать этот опенсурсный штормик и оборачивать его в нашу платформу, как один из компонентов большой системы)

          + То есть будет так: есть опенсурсный stormic. Вы его сможете ставить как самостоятельную платформу, бесплатно, а мы будем брать этот же stormic и уже использовать его как один из модулей нашей основной платформы.

          Получается, что stormic - это не конечный продукт. Это часть аншец платформы, которую мы держим открытой и отдаём юзерам в бесплатное пользование.

  1. Следил с самого начала, потому что для единоличной разработки и поддержки автор слишком на многое замахнулся. Если проект сделан только под Docker, на обычном хостинге не запускается, это сразу обрезает часть целевой аудитории. А если за сервер отвечает сеньор из Яндекса - то работать с этим легко не получится. Один выбор Kafka вместо Rabbit уже на это намекает. Что то мне подсказывает, что нужно будет еще девопса нанимать, чтоб он там очереди разгребал, если вдруг они начнут разрастаться неуправляемо, а иначе если все лежит в облаке, а облако само под нагрузки масштабируется, то можно и на деньги попасть от незнания. Ну то есть нельзя следовать классическому пути, сначала пилот на дешевом хостинге, полгода его шлифуешь, потом друзьям показываешь, потом первые редкие пользователи. Со временем переносишь на выделенный сервер, если выстрелит. Минимальные вложения.

    1. Ну про хостинг никогда и не заявлялось. Всегда разговор был о vps и докер. Все будет унифицировано до загрузки установочного скрипта одной командой и он сам все развернёт уже за вас на вашем сервере

  1. Приветствую. Пока тут просто комент оставлю, что мы снова живы и запустились. теперь уже основательно и навсегда ) https://stormic.stormhead.org/ модно почитать посты с последними обновлениями или вот тут найти небольшой итог и анонс следующего крупного обновления: https://stormic.stormhead.org/p/chto-dal-she-d141ca77

    на неделе думаю допилю апдейт и напишу уже нормальный пост )

    1. Приветствую. Почитал историю создания, очень интересно. ➕

      1. Приветствую. Да, решил расписать чем занимался то все это время, что за проблемы были и что в итоге получили. Главное, что теперь наконец-то все стабильно, никакого технического долга и только роадмап новых фич и обновлений без переписывания старого. Буду развивать, дописывать и потихоньку расти )

        1. Тоже прочитал историю создания… Очень круто и очень интересно. Я так понял что автор очень продвинутый программист и много в чем разбирается. У меня вопрос - Вы в одиночку это все обдумываете и реализовываете? Если так - то это очень круто. Или у Вас команда разработчиков или целое комьюнити? Если так - то тоже очень хорошо. Мне немного непонятно почему Вы так долго ничего не рассказывали здесь…. Все таки здесь много людей, которые разбираются в программировании и технологиях… Возможно вы не нуждаетесь в помощи, в советах или тестировщиках… В любом случае мне очень интересно и я обязательно установлю Вашу систему на свой VPS в контейнер. И в какой то степени Вы для меня загадка:) Не удивляйтесь если что, мне уже 60 стукнуло в июне:)

          + Попробовал установить на VPS вот этой Вашей командой curl -sSL https://stormhead.org/stormic/install.sh | bash. Очень много всего загружалось и устанавливалось успешно…. Но в конце что то не так…

          + В конце вот такое: [5/6] Подъём всех сервисов…

          [+] up 54/54
           ✔ Image oryd/kratos:v26.2.0                                       Pulled   4.8s
          и т.д.
           ✔ Container bff-web                                               Started  2.1s
           ✔ Container kratos                                                Started  4.0s
          

          + И такое:[5.5/6] Ожидание готовности gRPC-сервисов… Ожидание готовности 12 gRPC-сервисов (до 1m0s)…

            auth             ещё не SERVING
            notifications    ожидание (rpc error: code = DeadlineExceeded desc = latest balancer error: connection error: desc = "transport: Error while dialing: dial tcp: lookup notifications on 127.0.0.11:53: server misbehaving")
            auth             ещё не SERVING
            notifications    ожидание (rpc error: code = DeadlineExceeded desc = latest balancer error: connection error: desc = "transport: Error while dialing: dial tcp: lookup notifications on 127.0.0.11:53: server misbehaving")
          Error: таймаут 1m0s: не все сервисы готовы
          Usage:
            scli wait-health [flags]
          
          Flags:
                --dir string   рабочий каталог установки (.env с host/port сервисов) (default "/opt/stormic")
           ✔ Container kratos                  
          

          + Если что - прошу прощения…. наверное это нужно писать куда то на git:)

          + Короче в Portainer у меня горит все зеленым, кроме kratos-migrate… https://ysmp.ru/topics/bfc440f1-7ec0-44f8-bcae-4d74ec2674e9

          1. Доброго времени суток. Спасибо за добрые члова. Да не писал, потому что сам не знал как скоро я смогу это закончить, а так толку писать если люди хотят знать точно когда. Много ирл вопросов, семья, основная работа. Отвечая на Ваш вопрос: я это делаю один в какие-то капли свободного времени за идею. Просто потому, что я думаю я смогу дать юзерам новый пользовательский опыт и интересно что из этого получится. По вашей проблеме выглядит так как будто докер не смог зарезолвит свой днс и сервисы не увидели друг друга в докер сети. Я думаю, что это разовая акция и звёзды так сошлись.

            Можете попробовать ввести scli update и он повторно прогонит все стадии. Однако, если у Вас в конце не написало что админ/овнер инстанса создан, то лучше попробовать переустановить просто запустив scli и нажать 1. Раз в портейнерн все зелёное, значит все запустились, а Кратос мигрейт и должен быть мертвым, потому что он запускается 1 раз при создании, накатывает все миграции в базу данных свою и офается. Спасибо, что попробовали поставить, жалко что вылезла эта проблема и не получилось вот так моментально все запустить. Однако, проблема вроде не в коде. Если у вас нет каких-то других запущенных контейнеров с таким именем или другие контейнеры не используют необходимые порты, то все должно пройти гладко. Если снова будет какая-то такая проблема, то дайте пожалуйста логи еще самих контейнеров

            docker logs notifications –tail 80

            docker logs auth –tail 80

            1. Вот логи…

              2026/09/01 23:19:56 ERROR cannot unmarshal config error="decoding failed due to the following error(s):\n\n'smtp.port' cannot parse value as 'int': strconv.ParseInt: invalid syntax"
              2026/09/01 23:20:57 INFO NATS events loaded count=27
              2026/09/01 23:20:57 ERROR cannot unmarshal config error="decoding failed due to the following error(s):\n\n'smtp.port' cannot parse value as 'int': strconv.ParseInt: invalid syntax"
              2026/09/01 23:21:57 INFO NATS events loaded count=27
              2026/09/01 23:21:57 ERROR cannot unmarshal config error="decoding failed due to the following error(s):\n\n'smtp.port' cannot parse value as 'int': strconv.ParseInt: invalid syntax"
              2026/09/01 23:22:58 INFO NATS events loaded count=27
              2026/09/01 23:22:58 ERROR cannot unmarshal config error="decoding failed due to the following error(s):\n\n'smtp.port' cannot parse value as 'int': strconv.ParseInt: invalid syntax"
              2026/09/01 23:23:58 INFO NATS events loaded count=27
              2026/09/01 23:23:58 ERROR cannot unmarshal config error="decoding failed due to the following error(s):\n\n'smtp.port' cannot parse value as 'int': strconv.ParseInt: invalid syntax"
              2026/09/01 23:24:58 INFO NATS events loaded count=27
              2026/09/01 23:24:58 ERROR cannot unmarshal config error="decoding failed due to the following error(s):\n\n'smtp.port' cannot parse value as 'int': strconv.ParseInt: invalid syntax"
              root@vanilla-copper19410:/opt/stormic# docker logs auth --tail 80
              2026/09/01 22:51:57 INFO NATS events loaded count=27
              {"time":"2026-09-01T22:51:57.216771338Z","level":"INFO","msg":"starting application","service":"auth","env":"prod","env":"prod","host":"0.0.0.0","port":8081}
              {"time":"2026-09-01T22:51:57.216888525Z","level":"INFO","msg":"permissions client connected","service":"auth","env":"prod","host":"permissions","port":8085}
              {"time":"2026-09-01T22:51:57.223123574Z","level":"INFO","msg":"NATS publisher initialized","service":"auth","env":"prod"}
              {"time":"2026-09-01T22:51:57.223152931Z","level":"INFO","msg":"NATS publisher connected","service":"auth","env":"prod","url":"nats://c649d605a15c9b8be2383ce69f20baa3a15bb99046d2233c3da3ba3f56406616@nats:4222"}
              {"time":"2026-09-01T22:51:57.223431241Z","level":"INFO","msg":"NATS publisher started","service":"auth","env":"prod"}
              {"time":"2026-09-01T22:51:57.223826281Z","level":"INFO","msg":"gRPC server is running","service":"auth","env":"prod","op":"grpcapp.Run","host":"0.0.0.0","port":8081,"addr":"[::]:8081"}
              root@vanilla-copper19410:/opt/stormic#
              

              + Фигурирует порт 8081. Но у меня на этом порту интернет-магазин крутится на Livestore 3. Вообще на VPS 7 проектов, все в контейнерах. Короче надо как то подразобраться и запустить. Главная страница работает, а вот остальное что то пока не того:)

              + В общем немного потыкался…. главная сайта открывается (vizup.ru) Но при установке kratos все равно какую то ошибку выдал. Главная работает, а много где 502… ПЕс его знает… Я шаблон Nginx заинул в /etc/nginx/conf.d немного там подправил пути сертификатов… Наверное нужно как то сделать нормальный конфиг для Nginx. Да и в целом интересно было бы понять что за система.

              + Каким то чудом запустился:) ИИ помогал как обычно бестолково… но запустился. Изображения не загружаются… сколько не бились - ничего не получается. Без S3 локально не смог настроить:( https://ysmp.ru/topics/e92c61c5-62fe-4908-be99-88a4ea6284e4

              1. Да, раз у вас 8081 порт был занят, то нужно было просто перебиндить в .env номер порта на любой другой свободный. Локального хранилища нет, только s3. Для тестов можно в timeweb.cloud взять тестовый s3 на 1гб он там бесплатный и бессрочный будет. Это даст возможность все проверить. Smtp можно взять там же, но тестового бесплатного smtp у них вроде нет.

                + Буду крайне благодарен, если вы возьмёте s3 бесплатный и все сможете посмотреть своими глазами. А то у меня уже глаз замылен, столько на него смотреть. Очень интересно мнение со стороны. Спасибо.

                А установщик допилю, чтобы он автоматически решал конфликты портов докера при установке и таких проблем не было )

                + Ничего не переустанавоивайте, просто в /opt/stormic/.env в переменные s3 укажите данные, которые получите для корзины и потом перезапустите стак scli stack down и scli stack up

                + Или можете просто запустить scli update и он у вас спросит снова все неуказанные переменные в том числе s3 и допишет их и потом обровит сам стак. Собственно когда выйдет версия альфы 0.0.6 вам нужно будет тоже просто ввести scli update и он сам накатит все миграции, обновления и обновит ваш запущенный экземпляр, благодаря этой магии у вас появитс еще 2 новых микросервиса и функционал баз знаний сообществ. Не забудьте в настройках s3 (на сайте timeweb) указать в CORS свой домен и поставить галочки на все методы put read и т.д. ну и в allowed поле можете просто * поставить, все равно тестовый.

                1. Спасибо огромное за понимание и объяснения. Я обязательно все попробую. Вообще люблю все ковырять, изучать и что то узнавать… Хоть и нисколько не программист…. но к девопс очень тяготею:)) Как попробую с S3 - отпишусь обязательно. SMTP у меня свой на моем VPS, думаю прокатит. Вообще люблю все непонятное и новое🤝 PS - Подскажи пожалуйста вот это актуально или нет? https://github.com/stormhead-org/stormic Или проект где то в другом сервисе развивается?

                  + Подключил S3…. все равно как рыба об лед:) Посмотрите пожалуйста https://ysmp.ru/topics/d78617fd-2e1f-4354-afac-2c821e8bbcfb

                  1. Очень жду. Буду особенно благодарен, если напишите про свой опыт установки на самом https://stormic.stormhead.org/ но и тут посту тоже буду рад. Все уехало на гитлаб. Вот тут Фронт: https://gitlab.com/stormhead/stormic/web Тут все микросервисы: https://gitlab.com/stormhead/stormlink

                    Про тягу что-то поковырять - это понимаю. Сам такой же. Сколько я в свое время отдал mastodon и распределенным всяким хранилищам… Даже статью когда-то давно писал про мастодон https://teletype.in/@nims/P9at5enfyUa

                    + P.S. если пользуетесь портейнером, попробуйте dockhand. После его выхода я вообще потерял смысл в портейнере )

                    + По ссылке получаю 404 и не вижу ничего там, пишет ничего не найдено

                    1. По ссылке 404? Странно… попробуйте еще раз https://ysmp.ru/topics/d78617fd-2e1f-4354-afac-2c821e8bbcfb А если снова 404 попробуйте на главную и там всего 3 поста, один из них со скриншотом ошибок в консоли браузера при использовании S3.

                      1. Да, так не первый раз с ссылками, что вы скидываете. Вы говорите, что там 3 поста. Я вижу только 1, который называется Stormic запустился

                        1. Мой косяк, забыл галку поставить «Опубликовано». Там пустой пока блог на orbitacms. Попробуйте еще раз, сейчас все три поста должны быть доступны.

                          1. Вы уверены, что корректно указали конфиги s3? Указан ли backet name

                            + Публичный ли ваш бакет s3?

                            1. Вот данные из ENV файла S3ENDPOINT=https://timeweb.cloud S3ACCESSKEYID=5OQ1WXBP3LIR27YNTBP1 S3SECRETACCESSKEY=PYRwYr4Po3ByUSTWfWNiOseVZ7WUBNVSCRMsfdig S3BUCKET=22a4bc46-acdc-48e6-87f1-0dfd3fa24bf4 S3REGION=ru-1 S3USE_SSL=true

                              + Блин, снова мой косяк… То, что пишет ИИ нужно проверять обязательно. Неверное значение был в названии бакета. Сейчас пересоберу все.

                              1. Убедитесь, что вы правильно указали все значения. И если не запустится, то последняя потенциальная ошибка - это s3 эндпоинт указывать без https, то есть просто S3_ENDPOINT=s3.twcstorage.ru

                                + Ещё вы уверены, что у таймвэба для s3 такой эндпоинт? У них он кажется все же начинается с s3. В общем посмотрите что вам отдает сам таймвэб в дашборде s3. А то ИИ кажется вам в целях безопасности все заменила на «похожие» значения, чтобы не палить креды и в итоге вы подключайтесь с некорректными значениями

                                1. Все значения в этот раз скопировал с панели в аккаунте S3. Также прописал без https просто S3_ENDPOINT=s3.twcstorage.ru Все равно выскакивает ошибка в правом нижнем углу Failed Fetch… URL запроса такой: http://s3.twcstorage.ru/22a4bc46-acdc-48e6-87f1-0dfd3bbca1ea/1d0a556c-f5b4-412e-8f0f-30914b9f1e1c/cover/5dcbe4fe-ccba-49a8-ab3c-b530287d4171.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=5OQ1WX8P3LIR27YNTBP1%2F20260903%2Fru-1%2Fs3%2Faws4_request&X-Amz-Date=20260903T080438Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&x-id=PutObject&X-Amz-Signature=0919a4e27693653ea57272c361748adcbfc16f2ea7bcc4009b11429e393ee34e Правило для URL перехода strict-origin-when-cross-origin В панели S3 при копировании S3 URL выдает с https вот такой https://s3.twcstorage.ru Но я пробовал и с https и без него… Может пересобираю неправильно и где то закешировано что то…

                                  1. Попробуйте полностью выключить стак scli stack down и потом поднять scli stack up . А не просто перезагружать. Странно, что он у вас идёт по http, а не https. Cors ошибок нет в консоли? Что вообще консоль говорит. Странно конечно, но можно попробовать на крайний случай переустановить все с 0, чтобы наверняка.

                                    1. Ага…. в консоли такая ошибка 0ygl4r6a5uwzj.js:1 Mixed Content: The page at 'https://vizup.ru/settings/user/profile' was loaded over HTTPS, but requested an insecure resource 'http://s3.twcstorage.ru/22a4bc46-acdc-48e6-87f1-0dfd3bbca1ea/1d0a556c-f5b4-…Signature=954c22f…'. This request has been blocked; the content must be served over HTTPS.

                                      + Тоже не понимаю почему http… Сейчас пропишу https://s3.twcstorage.ru и сделаю заново scli stack down и scli stack up

                                      + Записал - теперь задвоился протокол Mixed Content: The page at 'https://vizup.ru/settings/user/profile' was loaded over HTTPS, but requested an insecure resource 'http://https//s3.twcstorage.ru/22a4bc46-acdc-48e6-87f1-0dfd3bbca1ea/1d0a556c-f5b4-412e-8f0f-30914b9f1e1c/cover/260cd73d-95d5-4d27-97b1-ea3187507551.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=5OQ1WX8P3LIR27YNTBP1%2F20260903%2Fru-1%2Fs3%2Faws4_request&X-Amz-Date=20260903T082859Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&x-id=PutObject&X-Amz-Signature=aa0fec0e32fae5568119afdd055c1332c2f875444343ca8c43cd0dd04b577335'. This request has been blocked; the content must be served over HTTPS. Но если пропишу просто как Вы правильно говорили S3_ENDPOINT=s3.twcstorage.ru то все равно останется http…. Откуда оно и почему пока не понятно…

                                      + А если прописываю с https:// то получается такая шняга… 'http://https//s3.twcstorage.ru/........

                                      1. А в энв стоит S3USESSL=true?

                                        + Он по умолчанию должен ставить тру, если вы сами не написали обратного

                                        + Самому https прописывать не надо, вы правильно написали просто S3_ENDPOINT=s3.twcstorage.ru проблема только в том, что он ставить http а не https. Хотя ssl у вас и так должен стоять тру

                                        1. Да, я баран… было прописано false, поменял на true, сейчас запрос такой https://s3.twcstorage.ru/22a4bc46-acdc-48e6-87f1-0dfd3bbca1ea/1d0a556c-f5b4-412e-8f0f-30914b9f1e1c/cover/aba4b6f4-7cec-4a56-8d4a-e8a6e5d147a8.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=5OQ1WX8P3LIR27YNTBP1%2F20260903%2Fru-1%2Fs3%2Faws4_request&X-Amz-Date=20260903T084157Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&x-id=PutObject&X-Amz-Signature=733335edb7688423c69f5dd3072212c7f38c26aa310e90cfb708d14d69ed8a1b В консоли чисто, но в сеть - появляются ошибки CORS.

                                          + Код статуса 403 Forbidden.

                                          1. А, ну и все. А cors это вы настройки бакета не сделали на самом сайте таймвэба, о чем я писал выше в комментах про настройку cors

                                            1. Странно… CORS настроил, добавил туда свой домен vizup.ru все галочки выставил… Все равно ошибки CORS в сети консоли…

                                              1. Домен там с https вписывать надо

                                                + Allowed Methods ставьте все галочки. Allowed Headrs ставьте просто звёздочку * все равно тестовый

                                                1. Отлично! Спасибо большое, картинки работают после того как поставил звездочку в Allowed Headers.

                                                  + На будущее готов установить и потестировать. Первое впечатление - весьма интересный движок🤝

                                                  1. Ну немного подправить установщик на случай конфликтов с уже занятыми именами или портами и отлично + доделать конфиг с установкой вместе с траефиком,чтобы даже ssl сертификаты сами подтягивались. А так отлично, если бы не конфликт занятого порта, то все бы нативно само стартануло + настройка корсов в s3. Выглядит как неплохой результат для первой установки. Я думаю вы первый, кто stormic запустил )

                                                    1. Интересно… А как же он у меня работает…. я не менял порты в ENV. А у меня много портов заняты другими проектами, которые есть в ENV. Или у Вас как то он отдельно в контейнере это все использует. Вот мои занятые c# docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" | grep -E "808[0-9]|8090" b59f0cee38f5 zxzy-nginx 127.0.0.1:8086->80/tcp 7b4f50ca7280 xtty_web 9000/tcp, 127.0.0.1:8083->80/tcp 43c4e9d8950e zaox_web 9000/tcp, 127.0.0.1:8084->80/tcp 7d3af7b15535 zabbix-web 8443/tcp, 127.0.0.1:8085->8080/tcp 4800787ecac3 svaul_web 9000/tcp, 0.0.0.0:8087->80/tcp, [::]:8087->80/tcp 65b87b31b828 bezumka_web 9000/tcp, 127.0.0.1:8081->80/tcp f8bfe82bc2f5 ysmp-nginx-1 127.0.0.1:8082->80/tcp root@vanilla-copper19410:/opt/stormic#

                                                       `+` И еще мне не понятно для чего создается 20 контейнеров... хотя основных сервисов вроде как 3. Если не трудно объясните по простому.
                                                      
                                                      1. Потому что конфликт был в dns докера, а не в 8081 порте. Эти контейнеры не биндят за собой порты, кроме 3х портов для работы через nginx (биндятся только порты для гейтвея, вебсокетов и кратоса). А то, что вы порты видите в .env это порты для работы внутри созданной докер сети в которую все эти контейнеры разнесены. Без точных логов по контейнерам сложно сказать что у вас точно было, но видите иишка вам что-то сделала и заработало, я так точно не скажу что она сделала.

                                                        Касательно почему так много контейнеров: это микросервисы, а не монолит. Каждый узел системы вынесен в свой микросервис со своей отдельной базой данных. Например, если вы возьмёте что-то привычное, монолитное, ну я не знаю, тот же софт что у вас запущен в качестве блога, то он лишён горизонтального масштабирования. Например, вы выросли и у вас есть 200 тысяч пользователей в сутки. Они все листают ленту постов. Ваш софт уже не справляется с тем, чтобы отдавать ленту сразу 200 тысячам юзеров, но при этом ещё какую-то часть сжирают лайки, которые тоже в бд хотят писать, счётчики просмотров и т.д. в итоге ваш единственный выбор - это покупать сервер ещё быстрее, добавлять ещё больше оперативы, чтобы запросы обрабатывались ещё быстрее, хотя у вас нагружена только лента. Это не проблема до какого-то предела юзеров, но в какой-то момент вы придёте в тому, что у вам уже нужны сотни ядер ЦПУ и терабайты оперативы из-за того, что лента постов у вас супер нагружена, а остальное практически никак не используется. Другое дело микросервисы. У каждого контейнера своя база данных, он работает отдельно от всех остальных и общается с остальными сервисами через шину событий. Например юзер поставил лайк на пост, микросервис лайко в свою базу данных записал, что юзер с таким ид поставил лайк посту с таким ид и создал событие в шину событий, на эту шину событий подписан микросервис постов, который знать не знает ничего о том как работают лайки он просто слушает шину событий и если видит там событие, что посту с таким ид поставили лайк, то увеличивает счётчик лайков на посте на +1. Соответственно есть сервис ленты, который точно так же понятия не имеет о существовании других сервисов, он просто говит списки с ид постов которые нужно показать. Если нагрузка на ленту будет очень высокой, то вам не нужно наращивать мощности сервера и добавлять ему оперативы или ЦПУ, вы просто запускаете ещё один микросервис ленты и вот уже балансировщик автоматически балансирует нагрузку на два микросервиса ленты и они делят нагрузку поровну между собой. Надо ещё? Запустите 3й микросервис ленты и они будут делить на 3х нагрузку поровну и так с каждый микросервисом. Есть оркестраторы контейнеров типа кубернетиса, которые автоматически поднимают новые кости микросервисов если нагрузка повышается и удаляют копии, если нагрузка падает, а ещё перезапускают эти сервисы если они упали и перестали отвечать. Это горизонтальное масштабирование, когда ты можешь плодить копии необходимых сервисов которые сейчас под высокой нагрузкой и распределять нагрузку между ними. Поэтому микросервисов там больше десятка. Один отвечает за лайки, другой за посты, третий за подписки, четверты за комментарии, пятый за права доступа и т.д. и по должной настройке в большом продакшене они могут расти и выдерживать огромные нагрузки практически без верхнего предела, в бытовом представлении. Там только уже дальше маркетплейсы с миллионами запросов в секунду, но и они используют точно такие же технологии. Ну это если немного утрировать в целях упрощения

                                                        1. Очень интересно, не скажу, что прямо все понял, но в общих чертах смысл множества микросервисов понял. В любом случае остаюсь на связи с Вами и по возможности буду тестировать, изучать и поддерживать связь.

  1. Приветствую. Написал первый дневник разработки и он важен. Я хотел бы узнать ваше мнение на счёт темы поднимаемой в этом дневнике. Ваши мысли были бы крайне полезны.

    Прошу ознакомиться и высказать свои идеи на этот счёт.

    https://stormic.stormhead.org/p/dnevniki-razrabotki-1-fundament-baz-znanii-soobshchestva-a76e18ba

    Спасибо, что остаётесь на связи 🔥

    1. Добрый день.

      Создал новую тему, думаю так лучше. Отдельный вопрос, он в комментариях потеряется:

      https://libarea.ru/articles/2252/vybor-dvizhka-rendera-statey

      1. Спасибо