Black Candy is an open-source self-hosted music streaming server featuring dedicated mobile apps, automated metadata fetching, and web playback.
Black Candy is a self-hosted music streaming server built on Ruby on Rails and Hotwire that provides a dedicated web player and mobile apps. It streams personal audio collections directly from local storage and enriches albums using Discogs metadata without commercial subscriptions. For homelab and self-hosting admins, it functions as a private music center running on owned infrastructure.
Commercial streaming services charge monthly fees per user while controlling catalog availability and licensing terms. Proprietary media suites like Plex charge subscription fees for mobile streaming, track caching, and transcoding controls. Black Candy replaces recurring subscription costs with owned audio playback, hosting personal libraries across unmetered web and native mobile apps. Operating directly on private audio files protects listeners from platform lock-in and unexpected track removals.
In homelab environments, hosting costs shift from software licenses to hardware provisioning. Heavy multi-service servers like Jellyfin consolidate television, video, and audio behind significant memory demands, while lightweight Go daemons like Navidrome run in tens of megabytes on single-board devices. Black Candy balances these trade-offs: its Rails and Puma architecture requires around one gigabyte of RAM, making it economical on existing home servers while demanding more resources than static binaries.
Does Black Candy support Subsonic API clients? No. Black Candy uses dedicated web and mobile interfaces rather than the Subsonic or OpenSubsonic API protocol.
Can Black Candy run on PostgreSQL instead of SQLite? Yes. Administrators can switch from default SQLite to PostgreSQL by configuring environment variables during deployment.
Is Black Candy free to self-host? Yes. The software requires no subscription fees or paid tiers, relying only on your own server hardware and storage.
Black Candy is a practical self-hosted music hub for homelab admins who want a modern web interface and official mobile apps without managing heavy all-in-one media servers. It is less suitable for micro-servers that cannot allocate a gigabyte of memory or users dependent on Subsonic ecosystem players. Active maintenance with updates in August 2026 and an MIT license ensure full control over private music streaming without ongoing subscription expenses.
We started this exact setup from scratch in a clean Linux machine on Nov 3, 2026 and checked it through Black Candy's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p blackcandy && cd blackcandy
curl -fsSL https://open-source.store/tools/blackcandy/compose.yml -o compose.ymlcat > .env <<EOF
SECRET_KEY_BASE=$(openssl rand -hex 32)
EOFSECRET_KEY_BASE — Random secret key used by Rails to sign sessions and cookies. Generated above; keep it secret.docker compose up -dservices:
blackcandy:
image: ghcr.io/blackcandy-org/blackcandy:3.2.1
ports:
- "3000:80"
environment:
SECRET_KEY_BASE: ${SECRET_KEY_BASE}
volumes:
- blackcandy-storage:/rails/storage
restart: always
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost/up || exit 1"]
interval: 5s
timeout: 5s
retries: 20
volumes:
blackcandy-storage:
Free IDE for Java, Kotlin, Go, TypeScript and Python. Built on IntelliJ Community, fully open source, 300+ plugins.
Show that Black Candy 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 20 s: ghcr.io/blackcandy-org/blackcandy:3.2.1.
Based on the upstream setup. Official Docker image; data persisted in /rails/storage volume, secret key base moved to .env, container healthcheck added.
blackcandy-1 | 2026-11-03T04:14:44.794359431Z [69c8ea46-20cb-4780-bc73-c5d51b5c2d4a] Started GET "/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.794471098Z {"time":"2026-11-03T04:14:44.794436473Z","level":"INFO","msg":"Request","path":"/lib/phpunit/phpunit/Util/PHP/eval-stdin.php","status":404,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":2682,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:49872","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.794769014Z [69c8ea46-20cb-4780-bc73-c5d51b5c2d4a]
blackcandy-1 | 2026-11-03T04:14:44.794770473Z [69c8ea46-20cb-4780-bc73-c5d51b5c2d4a] ActionController::RoutingError (No route matches [GET] "/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.794772723Z [69c8ea46-20cb-4780-bc73-c5d51b5c2d4a]
blackcandy-1 | 2026-11-03T04:14:44.794895723Z [69c8ea46-20cb-4780-bc73-c5d51b5c2d4a] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.795185723Z [69c8ea46-20cb-4780-bc73-c5d51b5c2d4a] Rendered layout layouts/plain.html.erb (Duration: 0.1ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.795226056Z [69c8ea46-20cb-4780-bc73-c5d51b5c2d4a] Filter chain halted as #<Proc:0x0000ffff8697a938 /usr/local/bundle/gems/actionpack-8.1.3/lib/action_controller/metal/allow_browser.rb:58 (lambda)> rendered or redirected
blackcandy-1 | 2026-11-03T04:14:44.795260514Z [69c8ea46-20cb-4780-bc73-c5d51b5c2d4a] Completed 406 Not Acceptable in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.795386764Z [982a0f96-58bf-45a3-a4fc-ecb701c06c66] Started GET "/lib/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.795504973Z {"time":"2026-11-03T04:14:44.795453348Z","level":"INFO","msg":"Request","path":"/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":406,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":2679,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:53056","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.795527931Z [982a0f96-58bf-45a3-a4fc-ecb701c06c66]
blackcandy-1 | 2026-11-03T04:14:44.795528889Z [982a0f96-58bf-45a3-a4fc-ecb701c06c66] ActionController::RoutingError (No route matches [GET] "/lib/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.795529514Z [982a0f96-58bf-45a3-a4fc-ecb701c06c66]
blackcandy-1 | 2026-11-03T04:14:44.795633348Z [982a0f96-58bf-45a3-a4fc-ecb701c06c66] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.796198098Z [982a0f96-58bf-45a3-a4fc-ecb701c06c66] Rendered layout layouts/plain.html.erb (Duration: 0.3ms | GC: 0.1ms)
blackcandy-1 | 2026-11-03T04:14:44.796219598Z [982a0f96-58bf-45a3-a4fc-ecb701c06c66] Filter chain halted as #<Proc:0x0000ffff8697a938 /usr/local/bundle/gems/actionpack-8.1.3/lib/action_controller/metal/allow_browser.rb:58 (lambda)> rendered or redirected
blackcandy-1 | 2026-11-03T04:14:44.796245514Z [982a0f96-58bf-45a3-a4fc-ecb701c06c66] Completed 406 Not Acceptable in 1ms (Views: 0.4ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.1ms)
blackcandy-1 | 2026-11-03T04:14:44.796315223Z [bec4c80c-fcd0-4d00-b92d-49609a19b300] Started GET "/yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.796391889Z {"time":"2026-11-03T04:14:44.796377639Z","level":"INFO","msg":"Request","path":"/lib/phpunit/src/Util/PHP/eval-stdin.php","status":406,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":2671,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:49872","user_agent":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-en) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.796410014Z [bec4c80c-fcd0-4d00-b92d-49609a19b300]
blackcandy-1 | 2026-11-03T04:14:44.796412473Z [bec4c80c-fcd0-4d00-b92d-49609a19b300] ActionController::RoutingError (No route matches [GET] "/yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.796413223Z [bec4c80c-fcd0-4d00-b92d-49609a19b300]
blackcandy-1 | 2026-11-03T04:14:44.796503264Z [bec4c80c-fcd0-4d00-b92d-49609a19b300] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.796784181Z [bec4c80c-fcd0-4d00-b92d-49609a19b300] Rendered layout layouts/plain.html.erb (Duration: 0.1ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.796805223Z [bec4c80c-fcd0-4d00-b92d-49609a19b300] Completed 404 Not Found in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.796982598Z [653bd027-bd59-40bb-9a80-0fa2528514f0] Started GET "/lib/phpunit/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.797242306Z {"time":"2026-11-03T04:14:44.797010556Z","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":2707,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:53056","user_agent":"Mozilla/5.0 (Fedora; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.797303806Z [653bd027-bd59-40bb-9a80-0fa2528514f0]
blackcandy-1 | 2026-11-03T04:14:44.797305139Z [653bd027-bd59-40bb-9a80-0fa2528514f0] ActionController::RoutingError (No route matches [GET] "/lib/phpunit/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.797305889Z [653bd027-bd59-40bb-9a80-0fa2528514f0]
blackcandy-1 | 2026-11-03T04:14:44.797382889Z [653bd027-bd59-40bb-9a80-0fa2528514f0] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.797736223Z [653bd027-bd59-40bb-9a80-0fa2528514f0] Rendered layout layouts/plain.html.erb (Duration: 0.2ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.797821889Z [653bd027-bd59-40bb-9a80-0fa2528514f0] Completed 404 Not Found in 0ms (Views: 0.3ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.797890639Z [394f4706-fc40-4739-ab4c-c7892b013784] Started GET "/laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.797966639Z {"time":"2026-11-03T04:14:44.797952348Z","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":2695,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:49872","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.9 Mobile/15E148 Safari/604.1","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.797993598Z [394f4706-fc40-4739-ab4c-c7892b013784]
blackcandy-1 | 2026-11-03T04:14:44.797994639Z [394f4706-fc40-4739-ab4c-c7892b013784] ActionController::RoutingError (No route matches [GET] "/laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.797995556Z [394f4706-fc40-4739-ab4c-c7892b013784]
blackcandy-1 | 2026-11-03T04:14:44.798076223Z [394f4706-fc40-4739-ab4c-c7892b013784] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.798362139Z [394f4706-fc40-4739-ab4c-c7892b013784] Rendered layout layouts/plain.html.erb (Duration: 0.1ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.798467348Z [394f4706-fc40-4739-ab4c-c7892b013784] Filter chain halted as #<Proc:0x0000ffff8697a938 /usr/local/bundle/gems/actionpack-8.1.3/lib/action_controller/metal/allow_browser.rb:58 (lambda)> rendered or redirected
blackcandy-1 | 2026-11-03T04:14:44.798524764Z [394f4706-fc40-4739-ab4c-c7892b013784] Completed 406 Not Acceptable in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.798650723Z [d40ce989-86d7-4d4d-8d2c-72f6e529befd] Started GET "/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.798925056Z [d40ce989-86d7-4d4d-8d2c-72f6e529befd]
blackcandy-1 | 2026-11-03T04:14:44.798926723Z [d40ce989-86d7-4d4d-8d2c-72f6e529befd] ActionController::RoutingError (No route matches [GET] "/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.798927473Z [d40ce989-86d7-4d4d-8d2c-72f6e529befd]
blackcandy-1 | 2026-11-03T04:14:44.798931223Z {"time":"2026-11-03T04:14:44.798718389Z","level":"INFO","msg":"Request","path":"/laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":406,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":2689,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:53056","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.799018764Z [d40ce989-86d7-4d4d-8d2c-72f6e529befd] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.799426556Z [d40ce989-86d7-4d4d-8d2c-72f6e529befd] Rendered layout layouts/plain.html.erb (Duration: 0.1ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.799518639Z [d40ce989-86d7-4d4d-8d2c-72f6e529befd] Completed 404 Not Found in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.1ms)
blackcandy-1 | 2026-11-03T04:14:44.799601348Z [cf3348c7-94af-41c1-b455-1bae944d0b5f] Started GET "/laravel52/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.799681139Z {"time":"2026-11-03T04:14:44.799662973Z","level":"INFO","msg":"Request","path":"/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":2700,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:49872","user_agent":"Mozilla/5.0 (Debian; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.799683598Z [cf3348c7-94af-41c1-b455-1bae944d0b5f]
blackcandy-1 | 2026-11-03T04:14:44.799881848Z [cf3348c7-94af-41c1-b455-1bae944d0b5f] ActionController::RoutingError (No route matches [GET] "/laravel52/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.799883806Z [cf3348c7-94af-41c1-b455-1bae944d0b5f]
blackcandy-1 | 2026-11-03T04:14:44.799976556Z [cf3348c7-94af-41c1-b455-1bae944d0b5f] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.800278348Z [cf3348c7-94af-41c1-b455-1bae944d0b5f] Rendered layout layouts/plain.html.erb (Duration: 0.1ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.800362889Z [cf3348c7-94af-41c1-b455-1bae944d0b5f] Filter chain halted as #<Proc:0x0000ffff8697a938 /usr/local/bundle/gems/actionpack-8.1.3/lib/action_controller/metal/allow_browser.rb:58 (lambda)> rendered or redirected
blackcandy-1 | 2026-11-03T04:14:44.800390723Z [cf3348c7-94af-41c1-b455-1bae944d0b5f] Completed 406 Not Acceptable in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.800508556Z [8a8cbff3-2f41-4bd4-984d-78604e8f35c7] Started GET "/yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.800586473Z [8a8cbff3-2f41-4bd4-984d-78604e8f35c7]
blackcandy-1 | 2026-11-03T04:14:44.800587848Z [8a8cbff3-2f41-4bd4-984d-78604e8f35c7] ActionController::RoutingError (No route matches [GET] "/yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.800588681Z [8a8cbff3-2f41-4bd4-984d-78604e8f35c7]
blackcandy-1 | 2026-11-03T04:14:44.800594056Z {"time":"2026-11-03T04:14:44.800580098Z","level":"INFO","msg":"Request","path":"/laravel52/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":406,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":2699,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:53056","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 Safari/605.1.15","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.800674306Z [8a8cbff3-2f41-4bd4-984d-78604e8f35c7] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.800946889Z [8a8cbff3-2f41-4bd4-984d-78604e8f35c7] Rendered layout layouts/plain.html.erb (Duration: 0.1ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.800970306Z [8a8cbff3-2f41-4bd4-984d-78604e8f35c7] Completed 404 Not Found in 0ms (Views: 0.1ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.801165139Z [e9c1787b-0a1f-493f-9038-249d12e2167f] Started GET "/lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.801185973Z {"time":"2026-11-03T04:14:44.801174056Z","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":2702,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:49872","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.801259264Z [e9c1787b-0a1f-493f-9038-249d12e2167f]
blackcandy-1 | 2026-11-03T04:14:44.801260264Z [e9c1787b-0a1f-493f-9038-249d12e2167f] ActionController::RoutingError (No route matches [GET] "/lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.801260931Z [e9c1787b-0a1f-493f-9038-249d12e2167f]
blackcandy-1 | 2026-11-03T04:14:44.801336223Z [e9c1787b-0a1f-493f-9038-249d12e2167f] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.801613431Z [e9c1787b-0a1f-493f-9038-249d12e2167f] Rendered layout layouts/plain.html.erb (Duration: 0.1ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.801687348Z [e9c1787b-0a1f-493f-9038-249d12e2167f] Completed 404 Not Found in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.801815389Z [cdfc5785-3456-440f-9dcd-82ddeee0a0c5] Started GET "/laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.801853014Z {"time":"2026-11-03T04:14:44.801842889Z","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":2688,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:53056","user_agent":"Mozilla/5.0 (Debian; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.801894473Z [cdfc5785-3456-440f-9dcd-82ddeee0a0c5]
blackcandy-1 | 2026-11-03T04:14:44.801896306Z [cdfc5785-3456-440f-9dcd-82ddeee0a0c5] ActionController::RoutingError (No route matches [GET] "/laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.801897056Z [cdfc5785-3456-440f-9dcd-82ddeee0a0c5]
blackcandy-1 | 2026-11-03T04:14:44.801980556Z [cdfc5785-3456-440f-9dcd-82ddeee0a0c5] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.802488556Z [cdfc5785-3456-440f-9dcd-82ddeee0a0c5] Rendered layout layouts/plain.html.erb (Duration: 0.3ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.802579473Z [cdfc5785-3456-440f-9dcd-82ddeee0a0c5] Completed 404 Not Found in 1ms (Views: 0.4ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.802807889Z {"time":"2026-11-03T04:14:44.802786556Z","level":"INFO","msg":"Request","path":"/laravel/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":2685,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:49872","user_agent":"Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.802820139Z [35846d84-2597-499f-b8ae-8b472973d502] Started GET "/zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.802909598Z [35846d84-2597-499f-b8ae-8b472973d502]
blackcandy-1 | 2026-11-03T04:14:44.802911056Z [35846d84-2597-499f-b8ae-8b472973d502] ActionController::RoutingError (No route matches [GET] "/zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.802911764Z [35846d84-2597-499f-b8ae-8b472973d502]
blackcandy-1 | 2026-11-03T04:14:44.803124514Z [35846d84-2597-499f-b8ae-8b472973d502] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.803437556Z [35846d84-2597-499f-b8ae-8b472973d502] Rendered layout layouts/plain.html.erb (Duration: 0.1ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.803532598Z [35846d84-2597-499f-b8ae-8b472973d502] Filter chain halted as #<Proc:0x0000ffff8697a938 /usr/local/bundle/gems/actionpack-8.1.3/lib/action_controller/metal/allow_browser.rb:58 (lambda)> rendered or redirected
blackcandy-1 | 2026-11-03T04:14:44.803571098Z [35846d84-2597-499f-b8ae-8b472973d502] Completed 406 Not Acceptable in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.803840931Z [b383d3f6-9a4c-48d5-8142-8af93af9a2e4] Started GET "/laravel52/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.803842806Z [b383d3f6-9a4c-48d5-8142-8af93af9a2e4]
blackcandy-1 | 2026-11-03T04:14:44.803843473Z [b383d3f6-9a4c-48d5-8142-8af93af9a2e4] ActionController::RoutingError (No route matches [GET] "/laravel52/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.803844348Z [b383d3f6-9a4c-48d5-8142-8af93af9a2e4]
blackcandy-1 | 2026-11-03T04:14:44.803845014Z {"time":"2026-11-03T04:14:44.803786348Z","level":"INFO","msg":"Request","path":"/zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":406,"dur":1,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":2685,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:53056","user_agent":"Mozilla/5.0 (X11; Linux i686; rv:1.9.7.20) Gecko/ Firefox/3.6.11","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.803882556Z [b383d3f6-9a4c-48d5-8142-8af93af9a2e4] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.804736848Z [b383d3f6-9a4c-48d5-8142-8af93af9a2e4] Rendered layout layouts/plain.html.erb (Duration: 0.1ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.804751181Z [b383d3f6-9a4c-48d5-8142-8af93af9a2e4] Completed 404 Not Found in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.805172598Z {"time":"2026-11-03T04:14:44.805131973Z","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":2694,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:49872","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/58.0.1","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.805537848Z [766539a1-4ef5-46d6-8687-0143e5dde17c] Started GET "/lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.805613848Z [766539a1-4ef5-46d6-8687-0143e5dde17c]
blackcandy-1 | 2026-11-03T04:14:44.805615056Z [766539a1-4ef5-46d6-8687-0143e5dde17c] ActionController::RoutingError (No route matches [GET] "/lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.805615681Z [766539a1-4ef5-46d6-8687-0143e5dde17c]
blackcandy-1 | 2026-11-03T04:14:44.805672806Z [766539a1-4ef5-46d6-8687-0143e5dde17c] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.805929764Z [766539a1-4ef5-46d6-8687-0143e5dde17c] Rendered layout layouts/plain.html.erb (Duration: 0.1ms | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.805932973Z [766539a1-4ef5-46d6-8687-0143e5dde17c] Filter chain halted as #<Proc:0x0000ffff8697a938 /usr/local/bundle/gems/actionpack-8.1.3/lib/action_controller/metal/allow_browser.rb:58 (lambda)> rendered or redirected
blackcandy-1 | 2026-11-03T04:14:44.805955181Z [766539a1-4ef5-46d6-8687-0143e5dde17c] Completed 406 Not Acceptable in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.0ms)
blackcandy-1 | 2026-11-03T04:14:44.806102889Z {"time":"2026-11-03T04:14:44.806082098Z","level":"INFO","msg":"Request","path":"/lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php","status":406,"dur":0,"method":"GET","req_content_length":34,"req_content_type":"text/html","resp_content_length":2700,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:53056","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Mobile/15E148 Safari/604.1","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:44.806457931Z [9b85eb5b-8eb3-4121-91c1-4be4b6dcb484] Started GET "/zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" for 192.168.65.108 at 2026-11-03 04:14:44 +0000
blackcandy-1 | 2026-11-03T04:14:44.806532098Z [9b85eb5b-8eb3-4121-91c1-4be4b6dcb484]
blackcandy-1 | 2026-11-03T04:14:44.806533473Z [9b85eb5b-8eb3-4121-91c1-4be4b6dcb484] ActionController::RoutingError (No route matches [GET] "/zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php"):
blackcandy-1 | 2026-11-03T04:14:44.806534223Z [9b85eb5b-8eb3-4121-91c1-4be4b6dcb484]
blackcandy-1 | 2026-11-03T04:14:44.806596098Z [9b85eb5b-8eb3-4121-91c1-4be4b6dcb484] Processing by ErrorsController#not_found as HTML
blackcandy-1 | 2026-11-03T04:14:44.806930681Z [9b85eb5b-8eb3-4121-91c1-4be4b6dcb484] Rendered layout layouts/plain.html.erb (Duration: 0.2ms | GC: 0.1ms)
blackcandy-1 | 2026-11-03T04:14:44.806950973Z [9b85eb5b-8eb3-4121-91c1-4be4b6dcb484] Completed 404 Not Found in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms (1 query, 0 cached) | GC: 0.1ms)
blackcandy-1 | 2026-11-03T04:14:44.807223473Z {"time":"2026-11-03T04:14:44.807068431Z","level":"INFO","msg":"Request","path":"/zend/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":2692,"resp_content_type":"text/html; charset=utf-8","remote_addr":"192.168.65.108:53056","user_agent":"Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36","cache":"miss","query":"","proto":"HTTP/1.1"}
blackcandy-1 | 2026-11-03T04:14:45.219638431Z {"time":"2026-11-03T04:14:45.219570015Z","level":"INFO","msg":"Request","path":"/up","status":200,"dur":13,"method":"GET","req_content_length":0,"req_content_type":"","resp_content_length":73,"resp_content_type":"text/html; charset=utf-8","remote_addr":"[::1]:34854","user_agent":"curl/8.20.0","cache":"miss","query":"","proto":"HTTP/1.1"}