A fixed HTTPS URL
Publicly trusted, unchanged on restart, so Verify passes once.
LINE bot hosting · Agent Lab Deploy
No ngrok: say one sentence to your AI tool and Agent Lab builds your bot with a fixed HTTPS webhook URL.
> Deploy this LINE bot
sites_createline-bot → line-bot--acme.hosting.agentlab.run
sites_secrets_statusMissing LINE_CHANNEL_SECRET, LINE_CHANNEL_ACCESS_TOKEN
Enter both in the console under Project › Settings › Secrets, then tell me.
sites_deploy_statusBuild passed · secret scan clean
Webhook URL: https://line-bot--acme.hosting.agentlab.run/webhook. Paste it in LINE Developers › Messaging API › Webhook URL and press Verify.
Why here
LINE needs public HTTPS with a valid certificate; Agent Lab has it on deploy.
Publicly trusted, unchanged on restart, so Verify passes once.
Project secrets read from the environment, never committed to GitHub.
One action restores the previous release; the webhook URL stays.
PostgreSQL in the same workspace for users and chat history.
Choosing
The table scrolls sideways.
| What matters to you | Agent Lab Deploy | Laptop + ngrok | Your own VPS |
|---|---|---|---|
| Webhook URL | Fixed HTTPS | Changes on restart (free plan) | Buy a domain, add a certificate |
| Laptop closed | Keeps running | Bot stops | Keeps running |
| Cost | Free to try; always-on from Pro at US$29/month | Free (URL changes) | A few dollars a month plus time |
| Secrets | On the platform | In a local .env | You manage them |
| Setup | One sentence to an AI tool | Runs, but not for production | SSH, Docker, Nginx, Let's Encrypt |
How
One MCP line in your AI tool, one browser sign-in.
The agent creates and builds the app, and names missing secrets.
Console › Project › Settings › Secrets: channel secret and access token.
Paste https://<name>--<org>.hosting.agentlab.run/webhook into LINE Developers and press Verify.
Copy and go
Node.js with the official @line/bot-sdk: listen on $PORT, answer /webhook with 200 first.
FROM node:22-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev # @line/bot-sdk, express
COPY . .
USER node
EXPOSE 8080
CMD ["node", "server.js"]
// server.js
// const line = require("@line/bot-sdk");
// const express = require("express");
// const config = { channelSecret: process.env.LINE_CHANNEL_SECRET };
// const client = new line.messagingApi.MessagingApiClient({
// channelAccessToken: process.env.LINE_CHANNEL_ACCESS_TOKEN });
// const app = express();
// app.post("/webhook", line.middleware(config), async (req, res) => {
// res.sendStatus(200); // answer LINE first, then work
// for (const e of req.body.events) if (e.type === "message")
// await client.replyMessage({ replyToken: e.replyToken,
// messages: [{ type: "text", text: e.message.text }] });
// });
// app.listen(process.env.PORT);LINE_CHANNEL_SECRET Basic settings; proves requests are from LINELINE_CHANNEL_ACCESS_TOKEN Messaging API; to reply and pushPORT the port the platform givesRead https://app.agentlab.cresclab.com/agent/deploy.md and deploy this LINE bot to Agent Lab with the Dockerfile at agentlab.cresclab.com/en/deploy/line-bot: listen on $PORT, webhook at /webhook. Tell me where in the console to enter LINE_CHANNEL_SECRET and LINE_CHANNEL_ACCESS_TOKEN rather than asking for them in the chat. Give me the webhook URL when the build passes.FAQ