makura on Nostr: ノス! 最近Umbrel上のn8nを使ってstacker newsの記事を要約するNostr ...
ノス!
最近Umbrel上のn8nを使ってstacker newsの記事を要約するNostr botを作ってみました。
その際にFirecrawlというスクレイピングのSaaSを使っていたんですがセルフホストできるようなので試してみました。
Firecrawlは動的なページも読めたりマークダウンへの変換をしてくれますが無料プランだと1ヶ月500ページの制限があり、セルフホストすれば気兼ねなく使えます!
今回はUmbrel上のPortainerというアプリを使ってFirecrawlを動かせたのでその記録です。
手順
まずはUmbrelにPortainerアプリをインストールします。
Poratinerは今回初めて使ったんですが独自のDockerコンテナをUmbrelで動かす際に推奨されているアプリのようです。

アプリを開いてパスワードの初期設定などを済ませるとダッシュボードが表示されるかと思います。
ここでStackという機能を使ってFirecrawlのDocker composeを一括で取り込むことができます。
新しいStackを作成する画面で以下を入力します。
Repository URL: https://github.com/mendableai/firecrawl
Repository reference: refs/heads/main
Compose path: docker-compose.yaml (デフォルトがymlになっててハマりました…)

上記に加えてenv varを設定する必要があるんですがPortainerでは上記の画像下部にあるように “Load Variables from .env file” からenvファイルを選択できます。
Firecrawlのgithubにあるように apps/api/.env.example をダウンロードし以下の内容を更新しPortainerに取り込ませます。
USE_DB_AUTHENTICATION=false
TEST_API_KEY=fc-test-key
あとはDeploy the stackを押して少し待つとfirecrawlのセットアップ完了です。
確認
動作テストにはUmbrelの設定からAdvanced Settings -> Terminal -> Umbrel OSを開き以下のコマンドを実行ししマークダウンが返って来れば成功です。
$ curl -X POST http://localhost:3002/v1/scrape -H 'Authorization: Bearer fc-test-key' -H 'Content-Type: application/json' -d '{
"url": "https://example.com",
"formats": ["markdown"]
}'
{"success":true,"data":{"markdown":"Example Domain\n==============\n\nThis domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.\n\n[More information...](https://www.iana.org/domains/example)","metadata":{"title":"Example Domain","ogLocaleAlternate":[],"scrapeId":"7c196348-6561-4ebb-bb8a-9121a29c64b5","viewport":"width=device-width, initial-scale=1","sourceURL":"https://example.com","url":"https://example.com/","statusCode":200}}}
またn8n等のUmbrelの他のアプリ(コンテナ)から利用する場合はlocalhostがコンテナ自身になってしまうので別のIP等(172.17.0.1)を使う必要があるのでご注意ください。
(参考)
以上でUmbrel上でのFirecrawlセルフホストができるようになりn8nからも制限なく使えるようになりました。
Published at
2025-01-21 15:44:45Event JSON
{
"id": "892eaf0545e0536b78f16a84d5b513ccfad7bf7012d24d52c799ccd6c41fc3c3",
"pubkey": "e3168078608580b4eee1eaf9d47ac01e94a27c406f4f4477b8447e5510f13b2c",
"created_at": 1737474285,
"kind": 30023,
"tags": [
[
"d",
"1737468847702"
],
[
"title",
"UmbrelでFirecrawlをセルフホスト!"
],
[
"summary",
""
],
[
"published_at",
"1737473487"
],
[
"alt",
"This is a long form article, you can read it in https://habla.news/a/naddr1qvzqqqr4gupzpcckspuxppvqknhwr6he63avq8555f7yqm60g3mms3r725g0zwevqqxnzdenxu6rvwpcxsmnwvpjqfk0h2"
],
[
"published_at",
"1737473487"
]
],
"content": "ノス! \n最近Umbrel上のn8nを使ってstacker newsの記事を要約するNostr botを作ってみました。 \nその際にFirecrawlというスクレイピングのSaaSを使っていたんですがセルフホストできるようなので試してみました。 \nFirecrawlは動的なページも読めたりマークダウンへの変換をしてくれますが無料プランだと1ヶ月500ページの制限があり、セルフホストすれば気兼ねなく使えます! \n今回はUmbrel上のPortainerというアプリを使ってFirecrawlを動かせたのでその記録です。\n\n## 手順\nまずはUmbrelにPortainerアプリをインストールします。\nPoratinerは今回初めて使ったんですが独自のDockerコンテナをUmbrelで動かす際に推奨されているアプリのようです。\n\n\nアプリを開いてパスワードの初期設定などを済ませるとダッシュボードが表示されるかと思います。\nここでStackという機能を使ってFirecrawlのDocker composeを一括で取り込むことができます。\n\n新しいStackを作成する画面で以下を入力します。\n\nRepository URL: https://github.com/mendableai/firecrawl \nRepository reference: refs/heads/main \nCompose path: docker-compose.**yaml** (デフォルトがymlになっててハマりました…) \n\n\n\n\n上記に加えてenv varを設定する必要があるんですがPortainerでは上記の画像下部にあるように \"Load Variables from .env file\" からenvファイルを選択できます。\n[Firecrawlのgithub](https://github.com/mendableai/firecrawl/blob/main/SELF_HOST.md)にあるように apps/api/.env.example をダウンロードし以下の内容を更新しPortainerに取り込ませます。\n```\nUSE_DB_AUTHENTICATION=false\nTEST_API_KEY=fc-test-key\n```\n\nあとはDeploy the stackを押して少し待つとfirecrawlのセットアップ完了です。\n\n## 確認\n動作テストにはUmbrelの設定からAdvanced Settings -\u003e Terminal -\u003e Umbrel OSを開き以下のコマンドを実行ししマークダウンが返って来れば成功です。\n```\n$ curl -X POST http://localhost:3002/v1/scrape -H 'Authorization: Bearer fc-test-key' -H 'Content-Type: application/json' -d '{\n \"url\": \"https://example.com\",\n \"formats\": [\"markdown\"]\n }'\n{\"success\":true,\"data\":{\"markdown\":\"Example Domain\\n==============\\n\\nThis domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.\\n\\n[More information...](https://www.iana.org/domains/example)\",\"metadata\":{\"title\":\"Example Domain\",\"ogLocaleAlternate\":[],\"scrapeId\":\"7c196348-6561-4ebb-bb8a-9121a29c64b5\",\"viewport\":\"width=device-width, initial-scale=1\",\"sourceURL\":\"https://example.com\",\"url\":\"https://example.com/\",\"statusCode\":200}}}\n```\n\nまたn8n等のUmbrelの他のアプリ(コンテナ)から利用する場合はlocalhostがコンテナ自身になってしまうので別のIP等(172.17.0.1)を使う必要があるのでご注意ください。\n([参考](https://community.n8n.io/t/the-service-refused-the-connection-perhaps-it-is-offline-n8n-and-nocodb/33587?utm_source=chatgpt.com))\n\n以上でUmbrel上でのFirecrawlセルフホストができるようになりn8nからも制限なく使えるようになりました。",
"sig": "3840f92088fb0684e5d4a4d0541ee773db6cec13ed6d26f4b2761ec6f11e7871a8a78c4b3222f407917abe20fe924926159c9b60ed16406afa21babafc7733b1"
}