157

код, GitHub и ты
Создано
14.04.2025 г.
подписчиков
Stormic: установка на VPS и локально
Добрый день.
Сегодня у нас небольшой пост, который должен был появится еще недельку назад, но тем не менее он все же дошел, хотя бы сейчас. Так вот, установка!
Хочу вас сразу предупредить, что это еще совсем не то, что можно назвать "продакт реди". Это больше из разряда "посмотреть и пощупать". База данных, как минимум еще раз, сильно изменится в ближайшем будущем и вам стоит дождаться версии с новой архитектурой БД, прежде чем пытаться поднять на Stormic что-то большое и полноценное. С обновлением базы данных придут еще некоторые ключевые, необходимые функции, типа уведомлений, рейтинга и личных сообщений.
Сегодня я расскажу о том, как запустить Stormic по пути наименьшего сопротивления. В целом, разницы никакой не будет между тем, что вы захотите это запустить у себя на локалке, либо на полноценном VPS сервере. Так же, покажу еще одно open-source ПО, которое вам точно понравится.
Запускать будем на убунту, в целом любой, но проверенная временем - 22.04.
Если ваш cloud провайдер сразу дает возможность купить сервер с утановленным докером, то берите с докером, если нет, то давайте поставим:
1. Docker
- Сначала удалим все, что касается докера на сервере, чтобы установка 100% была чистой
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
- Добавим репозиторий докера
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
- Ну и ставим сам докер
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2. Dokploy
Дальше поставим то самое open source ПО, которое вам точно понравится - dokploy.
Он позволяет собирать и управлять контейнерами докера в удобном веб-интерфейсе.
Ставим:
curl -sSL https://dokploy.com/install.sh | sh -s update
На этом его установка закончена и после небольшого ожидания он вам скажет на каком адресе найти его веб-интерфейс.
Перейдя по указанному адресу вы увидите окно регистрации. Регистрируетесь.
Здесь, на вкладке Web Server, вы можете установить свой домен для dokploy (если DNS записи вашего домена указывают на ваш VPS сервер) и тогда интерфейс dokploy будет доступен на вашем домене.
3. PostgreSQL
- На вкладке Projects нажимаете кнопку Create Project, это просто название папки, чтобы группировать ваши сервисы.
- В новой созданной папке нажимаете Create Service и выбираете Database:

- Выбираете PostgreSQL, задаете имя сервиса (тут stormic-db в примере)
- Задаете Database Name, Database User и Database Password:

- Нажимаете Create
- Заходите в новую созданную базу данных, внизу страницы в External Credentials задаете порт, ну например 5442

- Нажимаете кнопку Deploy вверху страницы.
На этом база данных запущена и готова к подключениям.
4. RabbitMQ
Он нам необходим для работы всего, что не требует моментального изменения в бд: лайки постов, лайки коментов, закладки и прочие вещи.
- Возвращаетесь обратно в папку проекта, снова нажимаете Create Service, выбираете Compose, вводите name и нажимаете Create.
- Заходите в созданный сервис, в Provider выбираете Raw и сохраняте там следующее
version: "3.8"
services:
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq_dev
env_file: .env
restart: always
networks:
- dokploy-network
ports:
- '5672:5672' # порт для AMQP
- '15672:15672' # порт для панели управления RabbitMQ
networks:
dokploy-network:
external: true

- Нажимаете Save и переходите на вкладку Environment и сохраняете там следующее
RABBITMQ_DEFAULT_USER=stormic
RABBITMQ_DEFAULT_PASS=very_secret_password
RABBITMQ_DEFAULT_VHOST=/
RABBITMQ_MANAGEMENT_PORT=15672
RABBITMQ_AMQP_PORT=5672

- Нажимаете Save
- Возвращаетесь на вкладку General и нажимаете Deploy
На этом RabbitMQ запущен.
5. SMTP и S3
Так же вам понадобится SMTP сервис, который будет отправлять почту о успешной регистрации, подверждении email и прочее. Ну и где хранить все эти видео, картинки и гифки - S3 корзина.
S3 можно получить тут же бесплатно, если вы установить Minio (это я объяснять не буду тут, потому что настройка ведра для работы там - это отдельный пост). Поэтому я посоветую вам получить и SMTP и S3 у того же провайдера, у кого вы купили сервер, например TimeWeb Cloud. Берете SMTP и корзину S3, получаете данные для подключения к ним и возвращаетесь, а мы продолжим.
6. Stormic
Ну вот мы и пришли к тому, ради чего мы тут. Это уже самое простое.
- Возвращаетесь в папку Projects, где у вас уже лежит база данных и RabbitMQ. Снова нажимаете Create Project и выбираете Application. Вводите name (например Worker) и нажимаете Create.
- Переходите на вкладку Git и указываете ссылку на репозиторий проекта:
https://github.com/stormhead-org/stormic
- В Branch сохраняете
beta-003-update

- Нажимаете Save
- Переходите на вкладку Environment и сохраняете там следующее
NEXT_PUBLIC_SERVER_URL=https://example.app
NEXT_PUBLIC_BASE_URL=example.app
DATABASE_URI=postgresql://stormic:very_secret_password@ip_your_server:5442/stormic
PAYLOAD_SECRET=DR1LeNrpluu7O7hNHvOKpM6 #задайте тут что-то случайное
PREVIEW_SECRET=QuU1ym9cUa8wFMHf8HcgJHwt #задайте тут что-то случайное
CRON_SECRET=k32UuyPrEoNf5xKp4BwHnvHp #задайте тут что-то случайное
SMTP_HOST=smtp.timeweb.ru #если вы использовали timeweb
SMTP_USER=staff@stormhead.org #почта, которую вы используете для SMTP
SMTP_PASS=your_password #ваш пароль от SMTP
S3_BUCKET=stormic #название корзины
S3_REGION=ru-1 #если есть
S3_ENDPOINT=https://s3.example.ru #эндпоинт вашего провайдера
S3_ACCESS_KEY_ID=nMp6Q3lZq #вам его выдали при регистрации корзины
S3_SECRET_ACCESS_KEY=7ngqqC9zKy #вам его выдали при регистрации корзины
RABBITMQ_URL=amqp://stormic:very_secret_password@ip_your_server:5672
#NEXT_PUBLIC_YANDEX_METRIKA=234324232 #указываете ваш ID, чтобы получать стастистику. Это указывать необязательно
- Сохраняете это и переходите на вкладку Advanced и вводите там в Run Command
pnpm start:workers
- Сохраняете и на этом нажимаете кнопку Deploy.
На этом мы запустили воркеров, которые работают параллельно с основным сайтом, обрабатывают очереди из RabbitMQ и выполняют запросы в API.
- Теперь просто создайте еще один сервис, назовите его (например app) и проделайте все то же самое, что вы только что сделали со Stormic, только на вкладке с Advanced не указывайте pnpm start:workers, вообще ничего там не указывайте. А так все то же самое. Во вкладке Domains задайте ваш домен, где будет работать Stormic

- В хост задаете ваш домен, который будет использоваться для платформы.
- Path не трогаете, оставляете /
- Port задаете 3000
- Включаете HTTPS
- Выбираете Let's Encrypt
- Нажимате Create
После этого нажимаете Deploy, ждете пока это все соберется и запустится, этот процесс виден в соответствующих вкладках logs и deployments
Готово
Stormic запущен и работает на вашем домене.
localhost
Можете запустить Sotrmic локально.
- Где-то получаете PostgreSQL, RabbitMQ, SMTP, S3
Можете сделать все то же самое и у себя на локалке, что мы написали выше. Можете все это получить у какого нибудь Cloud провайдера.
- Устанавливаете себе nodejs
Можете скачать тут (ссылка)
- Устанавливаете pnpm
Можете скачать тут (ссылка)
- Скачиваете себе beta ветку репозитория куда-то на пк
git clone https://github.com/stormhead-org/stormic.git
- Заходите в директорию репозитория куда вы его скачали, создаете в корне проекта файл .env (именно с точкой в начале)
- Сохраняете в него то, что мы сохраняли выше в Environment, например
NEXT_PUBLIC_SERVER_URL=http://localhost:3000
NEXT_PUBLIC_BASE_URL=localhost
DATABASE_URI=postgresql://stormic:very_secret_password@ip_your_server:5442/stormic
PAYLOAD_SECRET=DR1LeNrpluu7O7hNHvOKpM6 #задайте тут что-то случайное
PREVIEW_SECRET=QuU1ym9cUa8wFMHf8HcgJHwt #задайте тут что-то случайное
CRON_SECRET=k32UuyPrEoNf5xKp4BwHnvHp #задайте тут что-то случайное
SMTP_HOST=smtp.timeweb.ru #если вы использовали timeweb
SMTP_USER=staff@stormhead.org #почта, которую вы используете для SMTP
SMTP_PASS=your_password #ваш пароль от SMTP
S3_BUCKET=stormic #название корзины
S3_REGION=ru-1 #если есть
S3_ENDPOINT=https://s3.example.ru #эндпоинт вашего провайдера
S3_ACCESS_KEY_ID=nMp6Q3lZq #вам его выдали при регистрации корзины
S3_SECRET_ACCESS_KEY=7ngqqC9zKy #вам его выдали при регистрации корзины
RABBITMQ_URL=amqp://stormic:very_secret_password@ip_your_server:5672
#NEXT_PUBLIC_YANDEX_METRIKA=234324232 #указываете ваш ID, чтобы получать стастистику. Это указывать необязательно
- Открываете в директории этой папки два консольных окна и в одном сначала вводите
pnpm i
- Нажимаете Enter
- После завершения, в этом же окне вводите
pnpm start:workers
- Нажимаете Enter
- В другом окне вводите
pnpm dev
- Нажимаете Enter
На этом у вас на адресе http://localhost:3000 запущен Stormic и вы можете его пощупать сами.
Финал
И так, теперь вы можете запустить Stormic как у себя локально, так и полноценно на VPS сервере с SSL сертфикатами и вашим доменом.
Надо сказать, что это временный вариант. В будущем вы сможете его установить просто запустив в консоле
curl -sSL https://stormhead.org/stormic/install.sh | sh
И установочный скрипт сделает все за вас. Вам нужно будет только отвечать на пару вопросиков да/нет и все.
Так же напоминаю, если у Вас есть возможность поддерживать проект финансово, чтобы хотя бы оплачивать сервер, то Вы можете подписаться на Boosty.
Отдельное спасибо первому патрону на бусти, которого привлек этот проект:
- Андрей Федорко
Жду ваших вопросов в коментах
Спасибо, что проявляете интерес к проекту. Вместе мы сможем многое )

237
203
Обновление v0.0.3-beta
Что новенького?
- Ну из очевидного - появилась мобильная версия. Не без грехов конечно, однако для первого времени сойдет. Потихоньку допилим все шероховатости, отступы, состояния и прочие мелочи;
- Новая тема. Старая темная тема никуда не делась, верну ее в каком-то ближайшем обновлении и можно будет выбрать из 3х тем: светлая, эта черно-желтая и старенькая темно-синя;
- Оптимизирована работа с изображениями. Больше мы не грузим исходное изображение, а везде уже использует ужатые и оптимизированные к вебу. Тем не менее, вы все еще можете нажать на скрепку на прикрепленных изображениях в коментах и получить ссылку на исходное изображение, не ужатое;
- Миллиард оптимизаций компонентов и импортов, чтобы оно все двигалось немного быстрее.
Что дальше?
Думаю, что в ближайший месяц будут только исправления и минорные обновлениям, какие-то допиливания мобилки и вообще ui. А через месяц я постараюсь придти к Вам с огромным обновлением, которое значительно ускорит скорость работы абсолютно каждого момента платформы, уведомлениями и личными сообщениями. Еще на главной странице вверху можно будет удобно закреплять посты буквально в одну строку, то есть не целая карточка поста закрепленного будет, а одна строка с кастомным названием типа "Результаты розыгрыша за апрель" (в названии этой строки будете писать сами что хотите и указываете пост на который ссылаетесь) и клик по строке ведет на соответствующий пост.
Что скажите по мобильной версии и новой теме? Стоит ли возвращать старую синюю?
Еще хотелось бы напомнить, чтобы вы можете ставить звездочки на гитхабе (клик) - это супер классно и невероятно мотивирует. Не меньше мотивирует и то, что вы можете рассказывать о проекте где это будет интересно и где это уместно. Отклик и Ваша заинтересованность супер мотивирует. Спасибо
Так же напоминаю, если у Вас есть возможность поддерживать проект финансово, чтобы хотя бы оплачивать сервер, то Вы можете подписаться на Boosty.
Отдельное спасибо первому патрону на бусти, которого привлек этот проект:
- Андрей Федорко
Всем хороших праздников и выходных. Всего доброго )

319
572
639
Сейчас обсуждают
Загрузка комментариев...