Self-hosted group chat by 37signals replacing Slack subscriptions with an MIT-licensed, single-container setup powered by SQLite and custom webhooks.
The 37signals team created Campfire in 2006 as an early pioneer of browser chat, eventually folded it into Basecamp, and revived it in 2024 under its ONCE initiative. Built to challenge recurring per-user subscriptions, the project was subsequently open-sourced to demonstrate that team messaging can run smoothly from a single host. Today it provides an uncluttered, self-hosted chat environment centered on ownership and operational control.
Slack builds around a vast third-party marketplace with thousands of prebuilt connectors for Jira, GitHub, and automated workflows. Campfire rejects that app store model in favor of an austere, webhook-driven design. Rather than managing OAuth permissions and routing team data through external SaaS middleware, Campfire provides a minimalist HTTP API. Engineers configure incoming and outgoing webhooks where bots receive JSON payloads on user mentions and post plain text responses directly into designated rooms.
This stripped-down approach simplifies maintenance, but it places integration work on internal teams. There is no directory of click-to-install bots or native voice huddles; connecting external monitors requires custom scripts or the companion campfire-bot-kit utility. Switching from Slack also introduces friction because Campfire rejects nested message threads for a single chronological room feed, and it offers no automated import tool for past message archives. For organizations needing only build alerts and deployment notifications, Campfire removes runaway per-seat invoices while keeping webhook traffic entirely on company infrastructure.
Can Campfire integrate with external developer tools like GitHub? Yes. Campfire supports incoming and outgoing webhooks, allowing custom scripts or CI/CD pipelines to post commit alerts and respond to bot mentions through an HTTP API.
Campfire vs Slack — which should a small team choose? Choose Slack if your workflow requires a broad catalog of turnkey apps, native huddles, and nested message threads. Pick Campfire if you prefer self-hosted, linear chat without ongoing seat fees and want full database ownership.
Does Campfire require a dedicated database server? No. Campfire embeds SQLite within its primary Docker container, storing chat history and file uploads inside a single mounted directory.
Campfire is an effective choice for organizations seeking to eliminate chat subscriptions through self-hosted simplicity, provided they can manage their own webhook scripts and work without native mobile apps. Active maintenance on GitHub and a permissive MIT grant that permits auditing and internal customization make it a dependable foundation for teams wanting independent communication infrastructure.
We started this exact setup from scratch in a clean Linux machine on Nov 3, 2026 and checked it through Campfire's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p campfire && cd campfire
curl -fsSL https://open-source.store/tools/campfire/compose.yml -o compose.ymlcat > .env <<EOF
SECRET_KEY_BASE=$(openssl rand -hex 32)
EOFSECRET_KEY_BASE — Rails secret key base for verifying session cookies and cryptographic tokens. Generated above; keep it secret.docker compose up -dservices:
campfire:
image: ghcr.io/basecamp/once-campfire:1.5.6
restart: unless-stopped
ports:
- "80:80"
environment:
SECRET_KEY_BASE: ${SECRET_KEY_BASE}
DISABLE_SSL: "true"
volumes:
- campfire-data:/rails/storage
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:80/up"]
interval: 5s
timeout: 5s
retries: 5
volumes:
campfire-data:
Free IDE for Java, Kotlin, Go, TypeScript and Python. Built on IntelliJ Community, fully open source, 300+ plugins.
Show that Campfire is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 39 s: ghcr.io/basecamp/once-campfire:1.5.6.
Based on the upstream setup. Official self-hosting setup. Pinned image to 1.5.6; moved SECRET_KEY_BASE to .env; set DISABLE_SSL=true for plain HTTP behind reverse proxy; added container healthcheck on /up.
campfire-1 | 2026-11-03T03:17:05.081383467Z E, [2026-11-03T03:17:05.081199 #64] ERROR -- : [3c0c8a5a-d782-44c1-8f26-0b392dfd69f3]
campfire-1 | 2026-11-03T03:17:05.081384092Z [3c0c8a5a-d782-44c1-8f26-0b392dfd69f3] ActionController::RoutingError (No route matches [GET] "/phpunit/phpunit/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.081384759Z [3c0c8a5a-d782-44c1-8f26-0b392dfd69f3]
campfire-1 | 2026-11-03T03:17:05.081385259Z E, [2026-11-03T03:17:05.081284 #58] ERROR -- : [13a0e6a4-ac4d-4d1b-9fd5-add679fca06f]
campfire-1 | 2026-11-03T03:17:05.081385800Z [13a0e6a4-ac4d-4d1b-9fd5-add679fca06f] ActionController::RoutingError (No route matches [GET] "/phpunit/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.081386467Z [13a0e6a4-ac4d-4d1b-9fd5-add679fca06f]
campfire-1 | 2026-11-03T03:17:05.081480800Z {"time":"2026-11-03T03:17:05.08147005Z","level":"INFO","msg":"Request","path":"/phpunit/phpunit/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (Debian; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.081529342Z {"time":"2026-11-03T03:17:05.0815133Z","level":"INFO","msg":"Request","path":"/phpunit/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56166","user_agent":"Mozilla/5.0 (Kubuntu; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.081958300Z I, [2026-11-03T03:17:05.081916 #58] INFO -- : [5f2d28dc-b69c-4b9e-8381-64050329243b] Started GET "/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.082113884Z E, [2026-11-03T03:17:05.082073 #58] ERROR -- : [5f2d28dc-b69c-4b9e-8381-64050329243b]
campfire-1 | 2026-11-03T03:17:05.082116967Z [5f2d28dc-b69c-4b9e-8381-64050329243b] ActionController::RoutingError (No route matches [GET] "/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.082117925Z [5f2d28dc-b69c-4b9e-8381-64050329243b]
campfire-1 | 2026-11-03T03:17:05.082336717Z {"time":"2026-11-03T03:17:05.0822388Z","level":"INFO","msg":"Request","path":"/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (Fedora; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.082529384Z I, [2026-11-03T03:17:05.082503 #64] INFO -- : [d36c7572-e14c-4de5-9eaa-31c66cbaa07e] Started GET "/lib/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.082690259Z E, [2026-11-03T03:17:05.082665 #64] ERROR -- : [d36c7572-e14c-4de5-9eaa-31c66cbaa07e]
campfire-1 | 2026-11-03T03:17:05.082691509Z [d36c7572-e14c-4de5-9eaa-31c66cbaa07e] ActionController::RoutingError (No route matches [GET] "/lib/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.082692175Z [d36c7572-e14c-4de5-9eaa-31c66cbaa07e]
campfire-1 | 2026-11-03T03:17:05.082806884Z I, [2026-11-03T03:17:05.082782 #58] INFO -- : [38dc7fdb-0bfe-4363-a9fb-4ba8d0adbe21] Started GET "/phpunit/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.082933759Z E, [2026-11-03T03:17:05.082913 #58] ERROR -- : [38dc7fdb-0bfe-4363-a9fb-4ba8d0adbe21]
campfire-1 | 2026-11-03T03:17:05.082934884Z [38dc7fdb-0bfe-4363-a9fb-4ba8d0adbe21] ActionController::RoutingError (No route matches [GET] "/phpunit/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.082935550Z [38dc7fdb-0bfe-4363-a9fb-4ba8d0adbe21]
campfire-1 | 2026-11-03T03:17:05.083098134Z {"time":"2026-11-03T03:17:05.083081217Z","level":"INFO","msg":"Request","path":"/phpunit/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (ZZ; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.083527175Z I, [2026-11-03T03:17:05.083410 #58] INFO -- : [4f3d4cf3-ad24-4335-959f-8960db6d94b2] Started GET "/lib/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.083591592Z E, [2026-11-03T03:17:05.083553 #58] ERROR -- : [4f3d4cf3-ad24-4335-959f-8960db6d94b2]
campfire-1 | 2026-11-03T03:17:05.083593925Z [4f3d4cf3-ad24-4335-959f-8960db6d94b2] ActionController::RoutingError (No route matches [GET] "/lib/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.083594675Z [4f3d4cf3-ad24-4335-959f-8960db6d94b2]
campfire-1 | 2026-11-03T03:17:05.083912509Z {"time":"2026-11-03T03:17:05.083859717Z","level":"INFO","msg":"Request","path":"/lib/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56166","user_agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.083934134Z {"time":"2026-11-03T03:17:05.083829259Z","level":"INFO","msg":"Request","path":"/lib/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.084441634Z I, [2026-11-03T03:17:05.084362 #64] INFO -- : [83c1dcd2-a44d-46ac-a5b4-d29974e089a6] Started GET "/lib/phpunit/phpunit/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.084445134Z I, [2026-11-03T03:17:05.084415 #58] INFO -- : [a2e61eff-d56c-4a59-b980-b5b4dfa6c3ca] Started GET "/lib/phpunit/phpunit/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.084628759Z E, [2026-11-03T03:17:05.084594 #58] ERROR -- : [a2e61eff-d56c-4a59-b980-b5b4dfa6c3ca]
campfire-1 | 2026-11-03T03:17:05.084632425Z [a2e61eff-d56c-4a59-b980-b5b4dfa6c3ca] ActionController::RoutingError (No route matches [GET] "/lib/phpunit/phpunit/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.084633300Z [a2e61eff-d56c-4a59-b980-b5b4dfa6c3ca]
campfire-1 | 2026-11-03T03:17:05.084672884Z E, [2026-11-03T03:17:05.084658 #64] ERROR -- : [83c1dcd2-a44d-46ac-a5b4-d29974e089a6]
campfire-1 | 2026-11-03T03:17:05.084674467Z [83c1dcd2-a44d-46ac-a5b4-d29974e089a6] ActionController::RoutingError (No route matches [GET] "/lib/phpunit/phpunit/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.084675134Z [83c1dcd2-a44d-46ac-a5b4-d29974e089a6]
campfire-1 | 2026-11-03T03:17:05.084898009Z {"time":"2026-11-03T03:17:05.084874675Z","level":"INFO","msg":"Request","path":"/lib/phpunit/phpunit/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (Knoppix; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.084935759Z {"time":"2026-11-03T03:17:05.08490655Z","level":"INFO","msg":"Request","path":"/lib/phpunit/phpunit/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56166","user_agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.085859259Z I, [2026-11-03T03:17:05.085493 #64] INFO -- : [e43d8082-3917-4fc9-95cf-866275ef2b20] Started GET "/lib/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.085863800Z I, [2026-11-03T03:17:05.085520 #58] INFO -- : [ad486829-d0cd-4251-bbb6-3a050679d47f] Started GET "/lib/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.085864634Z E, [2026-11-03T03:17:05.085683 #64] ERROR -- : [e43d8082-3917-4fc9-95cf-866275ef2b20]
campfire-1 | 2026-11-03T03:17:05.085865259Z [e43d8082-3917-4fc9-95cf-866275ef2b20] ActionController::RoutingError (No route matches [GET] "/lib/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.085865925Z [e43d8082-3917-4fc9-95cf-866275ef2b20]
campfire-1 | 2026-11-03T03:17:05.085866425Z E, [2026-11-03T03:17:05.085710 #58] ERROR -- : [ad486829-d0cd-4251-bbb6-3a050679d47f]
campfire-1 | 2026-11-03T03:17:05.085866967Z [ad486829-d0cd-4251-bbb6-3a050679d47f] ActionController::RoutingError (No route matches [GET] "/lib/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.085867592Z [ad486829-d0cd-4251-bbb6-3a050679d47f]
campfire-1 | 2026-11-03T03:17:05.085994759Z {"time":"2026-11-03T03:17:05.08597605Z","level":"INFO","msg":"Request","path":"/lib/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Mobile/15E148 Safari/604.1","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.086063717Z {"time":"2026-11-03T03:17:05.085998717Z","level":"INFO","msg":"Request","path":"/lib/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56166","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:109.0) Gecko/20100101 Firefox/115.0","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.086850384Z I, [2026-11-03T03:17:05.086796 #58] INFO -- : [078107ee-d8c1-4f30-9f09-79433a3a9311] Started GET "/lib/phpunit/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.086972175Z I, [2026-11-03T03:17:05.086952 #64] INFO -- : [43bb5bd4-85cf-4237-b652-3139648918c1] Started GET "/lib/phpunit/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.086984759Z E, [2026-11-03T03:17:05.086969 #58] ERROR -- : [078107ee-d8c1-4f30-9f09-79433a3a9311]
campfire-1 | 2026-11-03T03:17:05.086991259Z [078107ee-d8c1-4f30-9f09-79433a3a9311] ActionController::RoutingError (No route matches [GET] "/lib/phpunit/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.086992134Z [078107ee-d8c1-4f30-9f09-79433a3a9311]
campfire-1 | 2026-11-03T03:17:05.087257300Z E, [2026-11-03T03:17:05.087234 #64] ERROR -- : [43bb5bd4-85cf-4237-b652-3139648918c1]
campfire-1 | 2026-11-03T03:17:05.087260217Z [43bb5bd4-85cf-4237-b652-3139648918c1] ActionController::RoutingError (No route matches [GET] "/lib/phpunit/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.087260884Z [43bb5bd4-85cf-4237-b652-3139648918c1]
campfire-1 | 2026-11-03T03:17:05.087323967Z {"time":"2026-11-03T03:17:05.0873063Z","level":"INFO","msg":"Request","path":"/lib/phpunit/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56166","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.087888509Z I, [2026-11-03T03:17:05.087757 #58] INFO -- : [8adf7617-f931-451f-8a90-fcd77094fc1d] Started GET "/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.087975425Z E, [2026-11-03T03:17:05.087957 #58] ERROR -- : [8adf7617-f931-451f-8a90-fcd77094fc1d]
campfire-1 | 2026-11-03T03:17:05.087977342Z [8adf7617-f931-451f-8a90-fcd77094fc1d] ActionController::RoutingError (No route matches [GET] "/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.087978134Z [8adf7617-f931-451f-8a90-fcd77094fc1d]
campfire-1 | 2026-11-03T03:17:05.087978759Z {"time":"2026-11-03T03:17:05.08795855Z","level":"INFO","msg":"Request","path":"/lib/phpunit/Util/PHP/eval-stdin.php","status":404,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 11_6_6; de) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.2 Safari/605.1.15","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.088400675Z {"time":"2026-11-03T03:17:05.08833955Z","level":"INFO","msg":"Request","path":"/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56166","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; ClaudeBot/1.0; [email protected])","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.089903425Z I, [2026-11-03T03:17:05.088565 #64] INFO -- : [32eee5b8-90ef-48ea-9c6e-4a3d4136ae39] Started GET "/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.089907800Z E, [2026-11-03T03:17:05.088766 #64] ERROR -- : [32eee5b8-90ef-48ea-9c6e-4a3d4136ae39]
campfire-1 | 2026-11-03T03:17:05.089908509Z [32eee5b8-90ef-48ea-9c6e-4a3d4136ae39] ActionController::RoutingError (No route matches [GET] "/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.089914050Z [32eee5b8-90ef-48ea-9c6e-4a3d4136ae39]
campfire-1 | 2026-11-03T03:17:05.089914759Z {"time":"2026-11-03T03:17:05.089031842Z","level":"INFO","msg":"Request","path":"/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:141.0) Gecko/20100101 Firefox/141.0","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.089916134Z I, [2026-11-03T03:17:05.089513 #64] INFO -- : [4f576a80-f46d-4336-b650-ee9724a8e01b] Started GET "/yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.089916759Z E, [2026-11-03T03:17:05.089676 #64] ERROR -- : [4f576a80-f46d-4336-b650-ee9724a8e01b]
campfire-1 | 2026-11-03T03:17:05.089917467Z [4f576a80-f46d-4336-b650-ee9724a8e01b] ActionController::RoutingError (No route matches [GET] "/yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.089918092Z [4f576a80-f46d-4336-b650-ee9724a8e01b]
campfire-1 | 2026-11-03T03:17:05.089918592Z {"time":"2026-11-03T03:17:05.089866634Z","level":"INFO","msg":"Request","path":"/yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (SS; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.090175675Z I, [2026-11-03T03:17:05.090142 #58] INFO -- : [131e83ec-ea68-43f4-bc70-d5a36bd335c2] Started GET "/yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.090323175Z E, [2026-11-03T03:17:05.090301 #58] ERROR -- : [131e83ec-ea68-43f4-bc70-d5a36bd335c2]
campfire-1 | 2026-11-03T03:17:05.090325425Z [131e83ec-ea68-43f4-bc70-d5a36bd335c2] ActionController::RoutingError (No route matches [GET] "/yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.090326259Z [131e83ec-ea68-43f4-bc70-d5a36bd335c2]
campfire-1 | 2026-11-03T03:17:05.090687884Z {"time":"2026-11-03T03:17:05.09066355Z","level":"INFO","msg":"Request","path":"/yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56166","user_agent":"Mozilla/5.0 (CentOS; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.090798259Z I, [2026-11-03T03:17:05.090777 #58] INFO -- : [03343bce-195e-42ef-a822-5b2dd1a07c37] Started GET "/laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.091291634Z I, [2026-11-03T03:17:05.091248 #64] INFO -- : [37183168-77ba-463a-83ab-6bf46f4de0ec] Started GET "/laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.091474467Z E, [2026-11-03T03:17:05.091447 #64] ERROR -- : [37183168-77ba-463a-83ab-6bf46f4de0ec]
campfire-1 | 2026-11-03T03:17:05.091476509Z [37183168-77ba-463a-83ab-6bf46f4de0ec] ActionController::RoutingError (No route matches [GET] "/laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.091477300Z [37183168-77ba-463a-83ab-6bf46f4de0ec]
campfire-1 | 2026-11-03T03:17:05.091681425Z {"time":"2026-11-03T03:17:05.091641842Z","level":"INFO","msg":"Request","path":"/laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56166","user_agent":"Mozilla/5.0 (Macintosh, Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.093807800Z E, [2026-11-03T03:17:05.093315 #58] ERROR -- : [03343bce-195e-42ef-a822-5b2dd1a07c37]
campfire-1 | 2026-11-03T03:17:05.093813967Z [03343bce-195e-42ef-a822-5b2dd1a07c37] ActionController::RoutingError (No route matches [GET] "/laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.093814967Z [03343bce-195e-42ef-a822-5b2dd1a07c37]
campfire-1 | 2026-11-03T03:17:05.093815592Z I, [2026-11-03T03:17:05.093369 #64] INFO -- : [205e9357-4347-4360-9a2e-2e1428671699] Started GET "/laravel52/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.093816342Z E, [2026-11-03T03:17:05.093578 #64] ERROR -- : [205e9357-4347-4360-9a2e-2e1428671699]
campfire-1 | 2026-11-03T03:17:05.093816884Z [205e9357-4347-4360-9a2e-2e1428671699] ActionController::RoutingError (No route matches [GET] "/laravel52/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.093817550Z [205e9357-4347-4360-9a2e-2e1428671699]
campfire-1 | 2026-11-03T03:17:05.094346300Z {"time":"2026-11-03T03:17:05.094168884Z","level":"INFO","msg":"Request","path":"/laravel52/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":2,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56166","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:1.9.7.20) Gecko/ Firefox/3.6.5","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.094365050Z {"time":"2026-11-03T03:17:05.094197759Z","level":"INFO","msg":"Request","path":"/laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":3,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.094983134Z I, [2026-11-03T03:17:05.094903 #64] INFO -- : [0dee1ee1-6d0c-47e6-b6d1-5f7b9c940d46] Started GET "/laravel52/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.095377009Z E, [2026-11-03T03:17:05.095309 #64] ERROR -- : [0dee1ee1-6d0c-47e6-b6d1-5f7b9c940d46]
campfire-1 | 2026-11-03T03:17:05.095385384Z [0dee1ee1-6d0c-47e6-b6d1-5f7b9c940d46] ActionController::RoutingError (No route matches [GET] "/laravel52/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.095386300Z [0dee1ee1-6d0c-47e6-b6d1-5f7b9c940d46]
campfire-1 | 2026-11-03T03:17:05.095831300Z {"time":"2026-11-03T03:17:05.095780175Z","level":"INFO","msg":"Request","path":"/laravel52/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.096087550Z I, [2026-11-03T03:17:05.095988 #58] INFO -- : [4f5a3da2-e319-41a4-9792-02a8784355a3] Started GET "/lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.096687925Z E, [2026-11-03T03:17:05.096625 #58] ERROR -- : [4f5a3da2-e319-41a4-9792-02a8784355a3]
campfire-1 | 2026-11-03T03:17:05.096698800Z [4f5a3da2-e319-41a4-9792-02a8784355a3] ActionController::RoutingError (No route matches [GET] "/lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.096700217Z [4f5a3da2-e319-41a4-9792-02a8784355a3]
campfire-1 | 2026-11-03T03:17:05.096785259Z I, [2026-11-03T03:17:05.096745 #64] INFO -- : [8ea2e305-7eba-4ec0-b5fc-aab67e9aa045] Started GET "/lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.097281842Z E, [2026-11-03T03:17:05.097194 #64] ERROR -- : [8ea2e305-7eba-4ec0-b5fc-aab67e9aa045]
campfire-1 | 2026-11-03T03:17:05.097288592Z [8ea2e305-7eba-4ec0-b5fc-aab67e9aa045] ActionController::RoutingError (No route matches [GET] "/lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.097289759Z [8ea2e305-7eba-4ec0-b5fc-aab67e9aa045]
campfire-1 | 2026-11-03T03:17:05.097450217Z {"time":"2026-11-03T03:17:05.0972583Z","level":"INFO","msg":"Request","path":"/lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":2,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56210","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.098206884Z {"time":"2026-11-03T03:17:05.098072592Z","level":"INFO","msg":"Request","path":"/lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Safari/605.1.15","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.098555967Z I, [2026-11-03T03:17:05.098500 #58] INFO -- : [7f5b0d51-d907-4814-b9b5-7a3c9b55d100] Started GET "/zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.099289050Z I, [2026-11-03T03:17:05.098633 #64] INFO -- : [c6ca73d6-8bb5-455a-b3d5-93cc89f8379f] Started GET "/zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.123 at 2026-11-03 03:17:05 +0000
campfire-1 | 2026-11-03T03:17:05.099297634Z E, [2026-11-03T03:17:05.098990 #58] ERROR -- : [7f5b0d51-d907-4814-b9b5-7a3c9b55d100]
campfire-1 | 2026-11-03T03:17:05.099298342Z [7f5b0d51-d907-4814-b9b5-7a3c9b55d100] ActionController::RoutingError (No route matches [GET] "/zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.099299134Z [7f5b0d51-d907-4814-b9b5-7a3c9b55d100]
campfire-1 | 2026-11-03T03:17:05.099583884Z {"time":"2026-11-03T03:17:05.09935805Z","level":"INFO","msg":"Request","path":"/zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56148","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:133.0) Gecko/20100101 Firefox/133.0","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.099773134Z E, [2026-11-03T03:17:05.099732 #64] ERROR -- : [c6ca73d6-8bb5-455a-b3d5-93cc89f8379f]
campfire-1 | 2026-11-03T03:17:05.099774925Z [c6ca73d6-8bb5-455a-b3d5-93cc89f8379f] ActionController::RoutingError (No route matches [GET] "/zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
campfire-1 | 2026-11-03T03:17:05.099775634Z [c6ca73d6-8bb5-455a-b3d5-93cc89f8379f]
campfire-1 | 2026-11-03T03:17:05.100149009Z {"time":"2026-11-03T03:17:05.100056634Z","level":"INFO","msg":"Request","path":"/zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":404,"dur":2,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":1565,"resp_content_type":"text/html; charset=UTF-8","remote_addr":"192.168.65.123:56210","user_agent":"Mozilla/5.0 (CentOS; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:05.376526717Z {"time":"2026-11-03T03:17:05.376465092Z","level":"INFO","msg":"Request","path":"/up","status":200,"dur":5,"method":"GET","req_content_length":0,"req_content_type":"","resp_content_length":73,"resp_content_type":"text/html; charset=utf-8","remote_addr":"[::1]:34446","user_agent":"curl/8.14.1","cache":"miss","query":"","proto":"HTTP/1.1"}
campfire-1 | 2026-11-03T03:17:10.433518970Z {"time":"2026-11-03T03:17:10.43345347Z","level":"INFO","msg":"Request","path":"/up","status":200,"dur":2,"method":"GET","req_content_length":0,"req_content_type":"","resp_content_length":73,"resp_content_type":"text/html; charset=utf-8","remote_addr":"[::1]:34448","user_agent":"curl/8.14.1","cache":"miss","query":"","proto":"HTTP/1.1"}