Создание собственных веб-сред для разработки — это почти как построить секретную лабораторию у себя в подвале. С одной стороны, есть готовые сервисы вроде Glitch, которые помогают быстро набросать веб-приложение и получить к нему доступ откуда угодно. С другой стороны, всегда хочется иметь чуть больше контроля, не полагаться на чужие решения и экспериментировать с процессом, не боясь, что что-то вдруг перестанет работать из-за неподвластных изменений. Именно так появилась идея Thinkserver — полноценной веб-среды для кода, построенной на Django и дающей автору полную свободу и контроль над процессом разработки.
Почему не Glitch?
Когда автор впервые открыл для себя Glitch, это было настоящим открытием: онлайн-редактор кода, почти мгновенный предпросмотр, простота и наглядность. Но чем больше проектов создавалось на Glitch, тем сильнее ощущалось неудобство, связанное с:
👉 невозможностью тонко настроить сборку для Elm (и других специфических стэков),
👉 привязкой к сторонней платформе и боязнью, что в один прекрасный день сервис может поменять политику или даже закрыться,
👉 непростой авторизацией на телефоне и общими лагами интерфейса.
Кроме того, Glitch генерирует имена проектов из «приятных» слов, но все они лежат в одной большой «куче», и нет чёткого разграничения по пользователям — а ведь хочется иногда упорядочить свои проекты под конкретные задачи или категории.
Почему Thinkserver так хорош?
Автор решил создать собственный «мини-Glitch» и за год активного пользования наработал немало крутых фишек, среди которых:
🛠 Django-сервер
Используется Django для хранения метаданных о проектах и управления структурами директорий на диске. То есть у каждого проекта есть своя папка, где хранятся все файлы, а сервер просто отвечает за то, чтобы знать, какой проект к какому пользователю относится (в данном случае пользователь один — сам автор).
🪄 Генерация имён из списка «съедобных» слов
Вместо стандартных английских слов Thinkserver берёт три «вкусных» продукта из заранее составленного списка (по одному на каждую букву алфавита). Так, создавая новый проект, автор получает нечто вроде «chocolate-honey-apple», а всего возможных комбинаций целых 17576 штук! Этого, как оказалось, более чем достаточно.
🔑 Wildcard-сертификат
Каждый проект доступен по субдомену вида <project>.think.somethingorotherwhatever.com. Для этого автор получил wildcard-сертификат от Let's Encrypt и не переживает за безопасность соединения.
💡 Шаблоны
Можно пометить любой проект как «template» и использовать его как основу для следующего приложения. Это экономит уйму времени, когда нужно быстро развернуть рабочий каркас с готовыми настройками Elm или другим нужным стеком.
🔧 Автоматическая сборка и Makefile
В корне проекта может лежать Makefile, который будет запускаться после каждого сохранения файла. Для тонкой настройки, какие именно файлы или типы файлов должны инициировать сборку, используется специальный конфиг .watchmakerc. Это позволяет, например, автоматически пересобирать код на Elm или другие языки без ручных телодвижений.
👨💻 Интегрированный терминал и веб-интерфейс для установок
В Thinkserver есть простая форма ввода команд, которая работает прямо в папке проекта. Это очень удобно, когда надо установить пакет или быстро скопировать файлы из другого проекта. А поскольку автор — единственный пользователь, можно особо не волноваться о потенциальных уязвимостях. Позже появилась и отдельная форма для установки пакетов Elm: вместо длинных bash-скриптов достаточно прописать elm/json, и сервер все сделает за вас.
🗂 Удобная структура интерфейса
На главной странице отображаются шаблоны, последние проекты и свернутые списки «категорий». Внутри каждого проекта — полноценный трёхколоночный интерфейс: файловое дерево и логи, редактор кода и живой предпросмотр. Всё сохраняется автоматически при вводе текста.
Сам себе DevOps: резервное копирование и переход на Jujutsu (jj)
Со временем возникла необходимость в резервировании проектов. Зачем рисковать и хранить всё только на диске сервера, если можно настроить автоматический экспорт кода в домашний Forgejo? Первоначально автор планировал команду для git commit и git push в веб-интерфейсе, но затем вспомнил о Jujutsu (jj), которая лучше подходит под задачу: не нужно возиться со стадированием и выбором отдельных файлов — сразу «фиксируем» текущее состояние рабочей директории, а ненужное можно игнорировать заранее.
Отдельное удобство — функция «create-on-push» в Forgejo, которая позволяет создавать репозиторий при первой же отправке с Thinkserver. В итоге получается, что все кодовые эксперименты и игрушечные веб-проекты теперь дублируются в личном хранилище, так что риск потерять плоды трудов сводится к минимуму.
Личное мнение: свобода, которая стоит усилий
По признанию автора, Thinkserver не рассчитан на «мультипользовательский» сценарий и не собирается становиться новым коммерческим сервисом. Но если вы ищете вдохновения или хотите собрать свою мини-платформу для разработки — идея более чем жизнеспособна. Она позволяет:
🌱 экспериментировать с любыми инструментами и зависимостями,
🌱 экономить время на повторяющихся настройках с помощью шаблонов,
🌱 держать все проекты в одной аккуратной системе, не боясь, что что-то неожиданно «уплывёт».
Главное — учесть, что система не рассчитана на народное пользование: безопасность и масштабируемость здесь вторичны по сравнению с комфортом и гибкостью одного-единственного разработчика.
Заключение
Thinkserver в итоге превратился не просто в «подделку» Glitch, а в удобное и «родное» рабочее пространство, где автор хранит около 80 проектов — от быстрых прототипов и небольших экспериментов до вполне полезных утилит. Наличие резервных копий в Forgejo и автоматической сборки кода делает Thinkserver надёжной и гибкой платформой, которую легко дополнять и улучшать под личные нужды. Такой подход отлично иллюстрирует ценность self-hosted решений, когда вы сами задаёте правила и никому не обязаны подстраиваться под чужие ограничения.
Если вам тоже хочется попробовать что-то подобное, код Thinkserver доступен — берите и запускайте. Только учтите, что автор не планирует принимать фичи-реквесты и превращать проект в большой опенсорс. Иногда хочется просто поделиться удачной находкой, не превращая хобби в публичный продукт.
Ссылка по теме: