Как да публикувате Вашето приложение от Lovable, Bolt или друг AI инструмент за създаване на приложения на Вашия WebOké хостинг
Създали сте приложение с Lovable, Bolt или друг AI конструктор и искате да го поставите на собствения си домейн в WebOké? Това е възможно. В тази статия ще прочетете как да извлечете кода от AI конструктора, как да компилирате и качите приложението и как GitHub може да прави това автоматично вместо Вас.
1. Какво приложение имате?
Отворете файла package.json във Вашия проект. По него ще разберете какъв тип е приложението.
- Статично приложение (React с Vite). В
package.jsonимаviteи няма сървърен framework. Сnpm run buildсъздавате папкаdistс обикновени HTML, JavaScript и CSS файлове. Тях качвате вpublic_html. Това работи на всеки хостинг пакет. Много приложения от Bolt и по-старите приложения от Lovable са изградени по този начин. - Приложение със собствен сървър. От 13 май 2026 Lovable създава приложения с TanStack Start: тогава в
package.jsonима@tanstack/react-start. Такова приложение изпълнява сървърен код и следователно не работи като отделни файлове вpublic_html. Настройвате го като Node.js приложение (вижте точка 6). Същото важи и за други приложения със собствен сървър, например Express backend. - Приложение със Supabase или Lovable Cloud като backend. В този случай базата данни, входът и функциите остават при Supabase или Lovable. В WebOké поставяте само предната част (front-end). При компилирането обаче задавате адреса и публичния ключ на Supabase (вижте точка 5).
2. Извличане на кода от AI конструктора чрез GitHub
Lovable и Bolt могат да поставят Вашия проект в собствено GitHub хранилище (repository). Тогава промените се синхронизират в двете посоки: това, което променяте в AI конструктора, отива в GitHub, а това, което променяте в GitHub, се връща в AI конструктора.
В Lovable:
- Отворете проекта си и отидете в Project settings > Git > GitHub.
- Кликнете върху Add connection и дайте на приложението Lovable достъп до Вашия GitHub акаунт.
- При Accounts кликнете върху Connect. Lovable създава частно хранилище и го поддържа актуално.
Може и без GitHub: с Download codebase в Project settings > Git изтегляте кода (при платен абонамент за Lovable).
В Bolt:
- Отворете проекта си и кликнете върху иконата на GitHub горе вдясно.
- Влезте в GitHub, кликнете върху Authorize и инсталирайте GitHub приложението на Bolt.
- Въведете име за хранилището и кликнете върху Create repository. След това Bolt работи в клона (branch)
main.
3. Компилиране и качване на статично приложение
Компилирате приложението на собствения си компютър. За целта Ви е необходим Node.js, версия 22 (текущата версия на Vite изисква минимум 20.19 или 22.12).
- Изтеглете кода:
git cloneна Вашето хранилище или разархивирайте изтегления файл. - Отворете терминал в папката на проекта и инсталирайте пакетите с
npm ci(илиnpm install, ако нямаpackage-lock.json). - Компилирайте приложението с
npm run build. Сега има папкаdistсindex.htmlи папкаassets. - Качете съдържанието на
distвdomains/example.com/public_htmlс FTP програма или с File Manager в DirectAdmin. Следователно не качвайте самата папкаdist, нито изходния код илиnode_modules. - Поставете файла
.htaccessпо-долу вpublic_html.
Приложение с няколко страници (router) показва в браузъра адреси като example.com/about. Тези страници не съществуват като файлове на сървъра. Ако презаредите такава страница или отворите връзката директно, ще получите грешка 404. С този файл .htaccess сървърът пренасочва тези адреси към index.html и приложението показва правилната страница:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^assets/ - [R=404,L]
RewriteRule ^ index.html [L]
Съществуващите файлове и папки сървърът показва нормално. Липсващ файл в assets дава истинска грешка 404, така че по-лесно да забележите проблем. Всичко останало отива към приложението.
.htaccess в папката public на Вашия проект. При всяко компилиране Vite копира всичко от public в dist, така че файлът винаги ще се качва заедно с останалите. Не виждате файла във Вашата FTP програма или във File Manager? Файловете, които започват с точка, понякога са скрити, вижте Показване и редактиране на скрити файлове като .htaccess.4. Поставяне на приложението в подпапка
Искате приложението да не е на example.com, а на example.com/app? Тогава приложението трябва да знае това още при компилирането. В противен случай браузърът търси файловете в /assets вместо в /app/assets и екранът остава бял.
- Задайте в
vite.config.js(илиvite.config.ts) опциятаbase: '/app/'. - Задайте същия път и на router-а. При React Router това става с
<BrowserRouter basename={import.meta.env.BASE_URL}>. - Компилирайте отново и качете съдържанието на
distвpublic_html/app. - Поставете в
public_html/app/.htaccessсъщия файл като по-горе, сRewriteBase /app/.
5. Supabase, Lovable Cloud и други настройки (env променливи)
Настройките, които започват с VITE_, като VITE_SUPABASE_URL и VITE_SUPABASE_PUBLISHABLE_KEY (в по-стари проекти VITE_SUPABASE_ANON_KEY), Vite записва в JavaScript файловете при компилирането. На сървъра не можете да ги зададете впоследствие.
- Ще намерите стойностите във файла
.envна Вашия проект. Пренесете имената точно така, както са. - Ако във Вашия проект няма файл
.env, създайте го сами в папката на проекта, преди да изпълнитеnpm run build. При GitHub Actions ги задайте като secret (вижте точка 7). - Ако сте променили стойност, компилирайте и качете приложението отново.
VITE_ може да бъде прочетено от всеки посетител. Публичният ключ (publishable или anon key) на Supabase може да стои там, той е предназначен за това; Supabase защитава Вашите данни с правила за сигурност (row level security). Никога не поставяйте ключа service_role или друг таен ключ във VITE_ променлива.6. Приложение със собствен сървър: като Node.js приложение
Приложение със сървърен код, като TanStack Start приложение от Lovable, се настройва чрез Setup Node.js App в DirectAdmin. Как работи това, можете да прочетете в Активиране на Node.js в DirectAdmin. За TanStack Start приложение стъпките са следните:
- Компилирайте приложението на Вашия компютър с
NITRO_PRESET=node-server npm run build. Сега ще има папка.output. - Създайте приложение в Setup Node.js App, с Node.js 22 и папка извън
public_html, напримерapps/myapp. - Качете папката
.outputв тази папка. - Създайте в същата папка файл
start.cjsс този един ред и въведетеstart.cjsв Application startup file:import('./.output/server/index.mjs'); - Задайте настройките, от които сървърът се нуждае, като
SUPABASE_URLиSUPABASE_PUBLISHABLE_KEY, в Environment variables. - Кликнете върху Restart. Правете това и след всяко ново качване.
Малкият файл start.cjs е необходим, защото сървърът от .output е модерен JavaScript модул (.mjs), а Node.js средата зарежда стартовия файл по стария начин. Ако приложението върне грешка 503, проверете stderr.log в папката на Вашето приложение.
7. Автоматично публикуване с GitHub Actions
С GitHub Actions GitHub изгражда Вашето приложение при всяка промяна в клона main и качва резултата на Вашия хостинг пакет. Тъй като Lovable и Bolt записват в GitHub, промяна от AI инструмента за изграждане ще бъде онлайн след няколко минути. Функцията Git в DirectAdmin не изгражда нищо, тя само поставя файлове; затова за Vite приложение GitHub Actions е по-удобен.
Никога не поставяйте пароли и ключове в своето хранилище, а ги запазете като secret в GitHub:
- Отворете своето хранилище в GitHub и отидете в Settings > Secrets and variables > Actions.
- Щракнете върху New repository secret, въведете името и стойността и щракнете върху Add secret. Направете това за всеки secret от избрания от Вас вариант.
- Създайте в своето хранилище файла
.github/workflows/deploy.ymlс един от двата примера по-долу. - След следващата промяна проверете в раздела Actions дали е успешно. С Run workflow можете да го стартирате и ръчно.
Вариант A: чрез FTPS (всички хостинг пакети). Създайте в DirectAdmin отделен FTP акаунт за GitHub, като при Root directory изберете опцията Domain (вижте Как работи FTP при WebOké?). Secrets: FTP_SERVER (името на сървъра на Вашия пакет, например linux2023.webawere.nl, а не Вашето име на домейн), FTP_USERNAME (пълното име, например github@example.com), FTP_PASSWORD, както и стойностите VITE_ на Вашето приложение.
name: Build and deploy
on:
push:
branches: [main]
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run build
env:
VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
VITE_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.VITE_SUPABASE_PUBLISHABLE_KEY }}
- uses: SamKirkland/FTP-Deploy-Action@v4.4.0
with:
server: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
protocol: ftps
port: 21
local-dir: ./dist/
server-dir: public_html/
Вариант B: чрез SSH с rsync (пакети със SSH). SSH е включен в Power Webhost Three и Four, AI Wordpress Three и Power Reseller, на порт 1967 и само с ключ (вижте SSH достъп и Terminal в DirectAdmin).
- Създайте на своя компютър отделен ключ за GitHub, без парола:
ssh-keygen -t ed25519 -f github-deploy -N "". - Поставете съдържанието на
github-deploy.pubв DirectAdmin в SSH Keys > PASTE KEY. - Поставете съдържанието на
github-deploy(частния ключ) в secretSSH_PRIVATE_KEY. След това изтрийте файла от своя компютър. - Изпълнете
ssh-keyscan -p 1967 linux2023.webawere.nlи поставете резултата в secretSSH_KNOWN_HOSTS. Така GitHub проверява, че наистина се свързва с Вашия сървър. - Добавете също като secret
SSH_HOST(името на сървъра),SSH_USER(Вашето потребителско име в DA),DOMEIN(напримерexample.com) и стойноститеVITE_.
name: Build and deploy
on:
push:
branches: [main]
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run build
env:
VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
VITE_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.VITE_SUPABASE_PUBLISHABLE_KEY }}
- name: Deploy
env:
SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }}
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_USER: ${{ secrets.SSH_USER }}
DOMEIN: ${{ secrets.DOMEIN }}
run: |
mkdir -p ~/.ssh
printf '%s\n' "$SSH_KEY" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
printf '%s\n' "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
rsync -rlptz --delete --exclude=.well-known --exclude=cgi-bin \
-e "ssh -p 1967 -i ~/.ssh/deploy_key" \
dist/ "$SSH_USER@$SSH_HOST:domains/$DOMEIN/public_html/"
--delete rsync премахва от public_html всичко, което не е част от Вашето приложение, с изключение на .well-known (необходима за Вашия SSL сертификат) и cgi-bin. Ако в public_html има и нещо друго, например втори сайт в подпапка, премахнете --delete или поставете приложението в отделна подпапка.Ако не използвате Supabase, премахнете редовете с VITE_SUPABASE или поставете на тяхно място променливите VITE_ на Вашето собствено приложение. Ако влизането не успее няколко пъти, сървърът временно блокира IP адреса на GitHub. В такъв случай проверете своите secrets и стартирайте workflow отново.
8. Чести грешки
- Началната страница работи, но опресняването или директна връзка дава 404. Файлът
.htaccessот точка 3 липсва или се намира в грешната папка. - Бял екран. Отворете инструментите за разработчици на Вашия браузър (F12) и проверете в Console или Network. Виждате ли грешки 404 за файлове в
/assets? Тогава пътят не е правилен: качили сте самата папкаdistвместо съдържанието ѝ или приложението се намира в подпапка без правилнияbase(точка 4). - Приложението се зарежда, но влизането или данните не работят, или виждате съобщение като
supabaseUrl is required. ПроменливитеVITE_не са били налични при изграждането. Добавете ги в.envили като secret и изградете отново. - Изграждането (build) се проваля със съобщение за версията на Node.js. Използвайте Node.js 22, както на Вашия компютър, така и в workflow (
node-version: 22). npm ciсе проваля. Нямаpackage-lock.json, например защото проектът има самоbun.lock. Изпълнете веднъжnpm installи добавете новияpackage-lock.jsonвъв Вашето repository.- В build няма
index.html. Тогава това е приложение със собствен сървър, като TanStack Start. Настройте го като Node.js приложение (точка 6).
Вижте също: Свързване с FileZilla (FTP, FTPS и SFTP) и SSH ключове и вход чрез SSH.
Подробно обяснение с екранни снимки: Настройване на Node.js приложение в ръководството за DirectAdmin.
