Skip to content

Cap-Captcha #2635

Open
Open

Description

@MickLesk

Name of the Script

Cap-Captcha

Script Type

CT (LXC Container)

Script path

No response

Where does it run?

Proxmox VE host

Does this script support arm64?

arm64 supported

📋 Script Details

Cap is a lightweight, privacy-friendly CAPTCHA alternative to reCAPTCHA and hCaptcha that uses proof-of-work instead of puzzles or tracking. This is its self-hosted server (capd): a dashboard to manage site keys, the challenge endpoints the widget talks to, and a siteverify API your backend uses to check tokens.

Activity

  1. community-scripts-issue-bot commented on Nov 14, 2026

    @community-scripts-issue-bot

    The Cap-Captcha script is ready for testing. Run it in the Proxmox VE shell (or on an Incus host) to create a container:

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/DevScripts/main/ct/cap-captcha.sh)"
    

    Sign in to the dashboard with the admin key (ADMIN_KEY in /opt/cap-captcha_data/.env).
    Stored site key secrets are encrypted with the admin key. After changing ADMIN_KEY, reset each site key's secret.

    Note: This is not in the official repo yet—it's just a dev version! After merging into ProxmoxVE, it will need to be recreated.

    Discord testing thread: https://discord.com/channels/1302816934508630047/1571225136948842626

  2. github-actions commented on Nov 14, 2026

    @github-actions
    Contributor

    📊 Install telemetry for cap-captcha

    No installs of the DevScripts version of this script reported yet since this issue was opened (2026-11-14).

    updated hourly · last refresh 2026-11-14 18:17 UTC

  3. github-actions commented on Nov 14, 2026

    @github-actions
    Contributor

    Proxmox script test

    @MickLesk ✅ 2/2 passed at fce2422

    Script Platform Install Update Duration Detail
    ct/cap-captcha.sh pve ✅ ➖ 5m51s http://10.99.0.231:3000 → 200; update: nothing to update (No update available: cap-captcha (capd@​4.0.14))
    ct/cap-captcha.sh incus ✅ ➖ 4m08s http://10.98.0.119:3000 → 200; update: nothing to update (No update available: cap-captcha (capd@​4.0.14))
    ct/cap-captcha.sh arm64 ✅ ➖ 2m55s http://10.98.0.156:3000 → 200; update: nothing to update (No update available: cap-captcha (capd@​4.0.14))

    ARM64 (information only, not counted): 1/1 passed.

    📊 Resources
    Script Platform Usage
    ct/cap-captcha.sh pve disk 1.3 of 4 GB · RAM at rest 55 of 2048 MB · OOM kills 0
    ct/cap-captcha.sh incus disk 1.2 of 4 GB · RAM at rest 63 of 2048 MB · OOM kills 0
    ct/cap-captcha.sh arm64 disk 1.4 of 4 GB · RAM at rest 55 of 2048 MB · OOM kills 0
    📸 ct/cap-captcha.sh (pve) — http://10.99.0.231:3000: after install / after update

    Screenshot of ct/cap-captcha.sh Screenshot of ct/cap-captcha.sh

    📸 ct/cap-captcha.sh (incus) — http://10.98.0.119:3000: after install / after update

    Screenshot of ct/cap-captcha.sh Screenshot of ct/cap-captcha.sh

    📸 ct/cap-captcha.sh (arm64) — http://10.98.0.156:3000: after install / after update

    Screenshot of ct/cap-captcha.sh Screenshot of ct/cap-captcha.sh

    📄 ct/cap-captcha.sh (pve) — install log (1195 lines)
    … 862 earlier lines cut, the full log is in the run artifacts
    0 added, 2 removed; done.
    Setting up perl (5.40.1-6+deb13u1) ...
    Setting up bind9-dnsutils (1:9.20.30-1~deb13u1) ...
    Processing triggers for libc-bin (2.41-12+deb13u4) ...
    Processing triggers for systemd (257.13-1~deb13u1) ...
    Processing triggers for man-db (2.13.1-1) ...
    Processing triggers for debianutils (5.23.2) ...
    Processing triggers for mailcap (3.74) ...
    Processing triggers for postfix (3.10.13-0+deb13u1) ...
    Restarting postfix
    Processing triggers for ca-certificates (20250419+deb13u1) ...
    Updating certificates in /etc/ssl/certs...
    0 added, 0 removed; done.
    Running hooks in /etc/ca-certificates/update.d...
    done.
    [2026-11-14 19:37:32] [OK] Updated Container OS
    [2026-11-14 19:37:33] [INFO] Installing Valkey
    Reading package lists...
    Building dependency tree...
    Reading state information...
    Installing:
      valkey-server
    Installing dependencies:
      liblzf1  valkey-tools
    Suggested packages:
      ruby-redis
    Summary:
      Upgrading: 0, Installing: 3, Removing: 0, Not Upgrading: 0
      Download size: 1285 kB
      Space needed: 7356 kB / 3034 MB available
    Get:1 http://security.debian.org trixie-security/main amd64 valkey-tools amd64 8.1.1+dfsg1-3+deb13u3 [1216 kB]
    Get:2 http://deb.debian.org/debian trixie/main amd64 liblzf1 amd64 3.6-4+b3 [10.1 kB]
    Get:3 http://security.debian.org trixie-security/main amd64 valkey-server amd64 8.1.1+dfsg1-3+deb13u3 [59.2 kB]
    Fetched 1285 kB in 0s (5513 kB/s)
    Selecting previously unselected package liblzf1:amd64.
    (Reading database ... 
    (Reading database ... 5%
    (Reading database ... 10%
    (Reading database ... 15%
    (Reading database ... 20%
    (Reading database ... 25%
    (Reading database ... 30%
    (Reading database ... 35%
    (Reading database ... 40%
    (Reading database ... 45%
    (Reading database ... 50%
    (Reading database ... 55%
    (Reading database ... 60%
    (Reading database ... 65%
    (Reading database ... 70%
    (Reading database ... 75%
    (Reading database ... 80%
    (Reading database ... 85%
    (Reading database ... 90%
    (Reading database ... 95%
    (Reading database ... 100%
    (Reading database ... 20284 files and directories currently installed.)
    Preparing to unpack .../liblzf1_3.6-4+b3_amd64.deb ...
    Unpacking liblzf1:amd64 (3.6-4+b3) ...
    Selecting previously unselected package valkey-tools.
    Preparing to unpack .../valkey-tools_8.1.1+dfsg1-3+deb13u3_amd64.deb ...
    Unpacking valkey-tools (8.1.1+dfsg1-3+deb13u3) ...
    Selecting previously unselected package valkey-server.
    Preparing to unpack .../valkey-server_8.1.1+dfsg1-3+deb13u3_amd64.deb ...
    Unpacking valkey-server (8.1.1+dfsg1-3+deb13u3) ...
    Setting up liblzf1:amd64 (3.6-4+b3) ...
    Setting up valkey-tools (8.1.1+dfsg1-3+deb13u3) ...
    Setting up valkey-server (8.1.1+dfsg1-3+deb13u3) ...
    Created symlink '/etc/systemd/system/valkey.service' → '/usr/lib/systemd/system/valkey-server.service'.
    Created symlink '/etc/systemd/system/multi-user.target.wants/valkey-server.service' → '/usr/lib/systemd/system/valkey-server.service'.
    Processing triggers for man-db (2.13.1-1) ...
    Processing triggers for libc-bin (2.41-12+deb13u4) ...
    [2026-11-14 19:37:38] [OK] Installed Valkey
    [2026-11-14 19:37:38] [INFO] Setup Node.js 24
    Hit:1 http://deb.debian.org/debian trixie InRelease
    Hit:2 http://security.debian.org trixie-security InRelease
    Hit:3 http://deb.debian.org/debian trixie-updates InRelease
    Reading package lists...
    Building dependency tree...
    Reading state information...
    All packages are up to date.
    Hit:1 http://security.debian.org trixie-security InRelease
    Hit:2 http://deb.debian.org/debian trixie InRelease
    Hit:3 http://deb.debian.org/debian trixie-updates InRelease
    Get:4 https://deb.nodesource.com/node_24.x nodistro InRelease [12.1 kB]
    Get:5 https://deb.nodesource.com/node_24.x nodistro/main amd64 Packages [10.4 kB]
    Fetched 22.5 kB in 0s (121 kB/s)
    Reading package lists...
    Building dependency tree...
    Reading state information...
    All packages are up to date.
    Reading package lists...
    Building dependency tree...
    Reading state information...
    Installing:
      nodejs
    Summary:
      Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
      Download size: 39.5 MB
      Space needed: 246 MB / 3027 MB available
    Get:1 https://deb.nodesource.com/node_24.x nodistro/main amd64 nodejs amd64 24.22.3-1nodesource1 [39.5 MB]
    Fetched 39.5 MB in 1s (47.0 MB/s)
    Selecting previously unselected package nodejs.
    (Reading database ... 
    (Reading database ... 5%
    (Reading database ... 10%
    (Reading database ... 15%
    (Reading database ... 20%
    (Reading database ... 25%
    (Reading database ... 30%
    (Reading database ... 35%
    (Reading database ... 40%
    (Reading database ... 45%
    (Reading database ... 50%
    (Reading database ... 55%
    (Reading database ... 60%
    (Reading database ... 65%
    (Reading database ... 70%
    (Reading database ... 75%
    (Reading database ... 80%
    (Reading database ... 85%
    (Reading database ... 90%
    (Reading database ... 95%
    (Reading database ... 100%
    (Reading database ... 20325 files and directories currently installed.)
    Preparing to unpack .../nodejs_24.22.3-1nodesource1_amd64.deb ...
    Unpacking nodejs (24.22.3-1nodesource1) ...
    Setting up nodejs (24.22.3-1nodesource1) ...
    Processing triggers for man-db (2.13.1-1) ...
    removed 8 packages, and changed 77 packages in 6s
    15 packages are looking for funding
      run `npm fund` for details
    [2026-11-14 19:37:55] [OK] Setup Node.js 24 (npm 12.2.2)
    /usr/lib
    └── (empty)
    [2026-11-14 19:37:58] [INFO] Installing bun@latest
    added 2 packages in 7s
    [2026-11-14 19:38:05] [OK] Installed bun
    [2026-11-14 19:38:05] [INFO] Fetching github release: cap-captcha (capd@4.0.14)
    [2026-11-14 19:38:06] [OK] Deployed: cap-captcha (capd@4.0.14)
    [2026-11-14 19:38:06] [INFO] Building Cap
    bun install v1.4.4 (38afee6c8)
    + @fontsource-variable/inter@5.3.0
    + @sveltejs/vite-plugin-svelte@7.3.1
    + @tailwindcss/vite@4.3.5
    + bits-ui@2.20.6
    + bun-types@1.3.13
    + chart.js@4.5.0
    + clsx@2.1.1
    + svelte@5.57.3
    + tailwind-merge@3.5.0
    + tailwind-variants@4.0.1
    + tailwindcss@4.3.5
    + topojson-client@3.1.0
    + tw-animate-css@1.4.0
    + vite@8.3.6
    + @duckdb/node-api@1.4.5-r.1
    + @elysiajs/swagger@1.3.1
    + capjs-core@0.1.17
    + duckdb-v2@2.0.0-r.1
    + elysia@1.4.28
    + maxmind@5.0.6
    + re2js@2.9.1
    229 packages installed [2.08s]
    $ vite build
    7:38:10 PM [vite-plugin-svelte] no Svelte config found at /opt/cap-captcha/capd/dashboard - using default configuration.
    vite v8.3.6 building client environment for production...
    transforming...
    7:38:10 PM [vite-plugin-svelte] dashboard/src/views/activity/TrafficChart.svelte:12:3 This reference only captures the initial value of `stagger`. Did you mean to reference it inside a derived instead?
    https://svelte.dev/e/state_referenced_locally
    10: let stagger = $state(!!window.capRise);
    11: let held = $state(
    12:   !stagger &&
                  ^
    13:     !window.capRisen &&
    14:     new URLSearchParams(location.search).has("hold"),
    7:38:10 PM [vite-plugin-svelte] dashboard/src/views/activity/TrafficChart.svelte:17:12 This reference only captures the initial value of `metric`. Did you mean to reference it inside a closure instead?
    https://svelte.dev/e/state_referenced_locally
    15: );
    16: let rises = $state(0);
    17: let shown = metric;
                          ^
    18: let settle;
    19: 
    7:38:10 PM [vite-plugin-svelte] dashboard/src/views/activity/TrafficChart.svelte:32:4 This reference only captures the initial value of `stagger`. Did you mean to reference it inside a closure instead?
    https://svelte.dev/e/state_referenced_locally
    30: };
    31: 
    32: if (stagger) {
                   ^
    33:   window.capRise = false;
    34:   window.capRisen = true;
    7:38:11 PM [vite-plugin-svelte] dashboard/src/components/cap/SectionNav.svelte:6:21 This reference only captures the initial value of `items`. Did you mean to reference it inside a derived instead?
    https://svelte.dev/e/state_referenced_locally
    4: 
    5: let { items, label = "Sections" } = $props();
    6: let current = $state(items[0]?.id);
                                 ^
    7: 
    8: onMount(() => {
    7:38:13 PM [vite-plugin-svelte] dashboard/src/views/protection/Protection.svelte:440:26 noninteractive element cannot have nonnegative tabIndex value
    https://svelte.dev/e/a11y_no_noninteractive_tabindex
    438:                       <Tip label="Signs requests">
    439:                         {#snippet children(props)}
    440:                           <span {...props} tabindex="0" class="-ms-1 flex shrink-0 rounded-full text-info outline-none focus-visible:ring-2 focus-visible:ring-ring">
                                          ^
    441:                             <svg viewBox="0 0 24 24" width="15" height="15" aria-hidden="true">
    442:                               <path fill="currentColor" d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
    7:38:14 PM [vite-plugin-svelte] dashboard/src/views/events/Events.svelte:483:17 Empty block
    https://svelte.dev/e/block_empty
    481:     </TableCell>
    482:     <TableCell class="whitespace-nowrap max-md:hidden">
    483:       {#if child}
               ^
    484:       {:else if who.ip && who.type !== "siteverify"}
    485:         <span class="flex min-w-0 flex-col">
    7:38:14 PM [vite-plugin-svelte] dashboard/src/views/events/Events.svelte:499:17 Empty block
    https://svelte.dev/e/block_empty
    497:     </TableCell>
    498:     <TableCell class="whitespace-nowrap max-lg:hidden">
    499:       {#if child}
               ^
    500:       {:else if who.country}
    501:         <span class="flex items-center gap-2.5">
    7:38:15 PM [vite-plugin-svelte] dashboard/src/views/activity/Breakdown.svelte:11:20 This reference only captures the initial value of `tabs`. Did you mean to reference it inside a derived instead?
    https://svelte.dev/e/state_referenced_locally
     9: const VISIBLE = 8;
    10: 
    11: let active = $state(tabs[0].id);
                                ^
    12: let details = $state(false);
    13: let query = $state("");
    7:38:16 PM [vite-plugin-svelte] dashboard/src/views/activity/WeekHeatmap.svelte:51:6 `<div>` with a pointerleave handler must have an ARIA role
    https://svelte.dev/e/a11y_no_static_element_interactions
    49:     <div class="grid grid-cols-[2.25rem_1fr] items-center gap-2">
    50:       <span class="text-[11px] text-muted-foreground">{day}</span>
    51:       <div class="grid grid-cols-24 gap-[3px]" onpointerleave={() => (hover = null)}>
                    ^
    52:         {#each { length: 24 } as _, h (h)}
    53:           {@const c = grid[d * 24 + h]}
    7:38:16 PM [vite-plugin-svelte] dashboard/src/views/activity/WeekHeatmap.svelte:54:10 `<span>` with a pointerenter handler must have an ARIA role
    https://svelte.dev/e/a11y_no_static_element_interactions
    52:         {#each { length: 24 } as _, h (h)}
    53:           {@const c = grid[d * 24 + h]}
    54:           <span
                       ^
    55:             class="aspect-square min-h-2.5 rounded-[3px] {hover === d * 24 + h ? 'outline outline-1 outline-foreground/60' : ''}"
    56:             style:background={fill(c)}
    7:38:16 PM [vite-plugin-svelte] dashboard/src/views/lists/ListEditor.svelte:114:4 This reference only captures the initial value of `listId`. Did you mean to reference it inside a closure instead?
    https://svelte.dev/e/state_referenced_locally
    112:   loading = false;
    113: }
    114: if (listId) load();
                   ^
    115: 
    116: const close = () => {
    ✓ 1086 modules transformed.
    rendering chunks...
    computing gzip size...
    public/dist/assets/browserbase-6uMWOlsD.png        0.71 kB
    public/dist/assets/anchor-browser-CRBttg1H.png     0.74 kB
    public/dist/assets/agi-agent-54zlgek7.png          0.83 kB
    public/dist/assets/stagehand-BsSicxVd.png          0.86 kB
    public/dist/login.html                             1.04 kB │ gzip:   0.52 kB
    public/dist/assets/hyperbrowser-C4_OoScR.png       1.16 kB
    public/dist/assets/maxai-DS95hNOf.png              1.17 kB
    public/dist/share.html                             1.17 kB │ gzip:   0.56 kB
    public/dist/index.html                             1.19 kB │ gzip:   0.55 kB
    public/dist/assets/kernel-J1YrgtDG.png             1.24 kB
    public/dist/assets/rtrvr-CIAMvqco.png              1.35 kB
    public/dist/assets/agentql-m6QJe8CT.png            1.47 kB
    public/dist/assets/dassi-BPQudYLN.png              1.47 kB
    public/dist/assets/do-browser-BX9F8jD6.png         1.57 kB
    public/dist/assets/harpa-B5P7n6PV.png              1.75 kB
    public/dist/assets/nanobrowser-yh2LCMWl.png        1.99 kB
    public/dist/assets/twin-XYAW6A0b.png               2.02 kB
    public/dist/assets/sigma-DNnoM6gp.png              2.14 kB
    public/dist/assets/browser-use-CDFjuLdz.png        2.20 kB
    public/dist/assets/browserflow-B05rqUGD.png        2.31 kB
    public/dist/assets/magnitude-DN_cVYPJ.png          2.37 kB
    public/dist/assets/genspark-cItZt9xP.png           2.69 kB
    public/dist/assets/lavague-DK7efX5C.png            2.79 kB
    public/dist/assets/skyvern-Clr51Akm.png            2.93 kB
    public/dist/assets/2captcha-_vKomfSe.png           3.02 kB
    public/dist/assets/thunderbit-YBtCuesU.png         3.44 kB
    public/dist/assets/sider-ApvxbLco.png              3.53 kB
    public/dist/assets/fellou-BClqr9H3.png             3.70 kB
    public/dist/.vite/manifest.json                    5.75 kB │ gzip:   1.07 kB
    public/dist/assets/ibm-plex-sans-DKYrB2Yq.woff2  230.36 kB
    public/dist/assets/TrafficChart-Bm4emReU.css       0.33 kB │ gzip:   0.19 kB
    public/dist/assets/index-WTPU6t6n.css              0.50 kB │ gzip:   0.26 kB
    public/dist/assets/login-zsqXPg03.css              1.88 kB │ gzip:   0.69 kB
    public/dist/assets/api-lDT7hQMg.css              213.94 kB │ gzip:  33.98 kB
    public/dist/assets/login-BiveCIvV.js               8.68 kB │ gzip:   3.97 kB
    public/dist/assets/share-Mt8MjK6Q.js              17.05 kB │ gzip:   6.60 kB
    public/dist/assets/TrafficChart-BLXqc450.js       20.48 kB │ gzip:   9.85 kB
    public/dist/assets/index-trP5rC-7.js             357.23 kB │ gzip: 110.61 kB
    public/dist/assets/api-D6fiNYMD.js               442.21 kB │ gzip: 132.83 kB
    ✓ built in 7.33s
    [PLUGIN_TIMINGS] JavaScript callbacks ran for 7.0s of this 7.3s build (96%).
    The slowest callbacks, timed inside each callback (the wait before a callback starts is excluded, the time it awaits is included):
      - plugin vite-plugin-svelte:compile transform (57%, 4.1s, 494 calls)
      - plugin vite-plugin-svelte:compile-module transform (23%, 1.7s, 105 calls)
    Additional callback time came from the callbacks below and from callbacks under 1s.
    4 callbacks are listed without a time. Their calls overlapped, so the time inside one call includes work from other calls. To find their cost, profile the build with `node --cpu-prof`:
      - plugin vite:asset load (42 calls)
      - plugin vite:css transform (14 calls)
      - plugin vite:build-html transform (3 calls)
      … and 1 more
    See https://rolldown.rs/reference/InputOptions.checks#bundlertimings for more details.
    bun install v1.4.4 (38afee6c8)
    + @duckdb/node-api@1.4.5-r.1
    + @elysiajs/swagger@1.3.1
    + capjs-core@0.1.17
    + duckdb-v2@2.0.0-r.1
    + elysia@1.4.28
    + maxmind@5.0.6
    + re2js@2.9.1
    157 packages installed [115.00ms]
    [2026-11-14 19:38:18] [OK] Built Cap
    [2026-11-14 19:38:18] [INFO] Configuring Cap
    [2026-11-14 19:38:18] [OK] Configured Cap
    [2026-11-14 19:38:18] [INFO] Creating Service
    [2026-11-14 19:38:19] [OK] Created Service
    [2026-11-14 19:38:19] [INFO] Customizing Container
    [2026-11-14 19:38:20] [OK] Customized Container
    [2026-11-14 19:38:20] [INFO] Cleaning up
    Reading package lists...
    Building dependency tree...
    Reading state information...
    Summary:
      Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0
    [2026-11-14 19:38:21] [OK] Cleaned
    
    🔄 ct/cap-captcha.sh (pve) — update log (22 lines)
    curl: (22) The requested URL returned error: 404
    curl: (22) The requested URL returned error: 404
       ______                                      _ __           _____           _       __
      / ____/___  ____ ___  ____ ___  __  ______  (_) /___  __   / ___/__________(_)___  / /______
     / /   / __ \/ __ `__ \/ __ `__ \/ / / / __ \/ / __/ / / /   \__ \/ ___/ ___/ / __ \/ __/ ___/
    / /___/ /_/ / / / / / / / / / / / /_/ / / / / / /_/ /_/ /   ___/ / /__/ /  / / /_/ / /_(__  )
    \____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ /_/_/\__/\__, /   /____/\___/_/  /_/ .___/\__/____/
                                                     /____/                    /_/
      Cap-Captcha
    curl: (22) The requested URL returned error: 404
    curl: (22) The requested URL returned error: 404
       ______                                      _ __           _____           _       __
      / ____/___  ____ ___  ____ ___  __  ______  (_) /___  __   / ___/__________(_)___  / /______
     / /   / __ \/ __ `__ \/ __ `__ \/ / / / __ \/ / __/ / / /   \__ \/ ___/ ___/ / __ \/ __/ ___/
    / /___/ /_/ / / / / / / / / / / / /_/ / / / / / /_/ /_/ /   ___/ / /__/ /  / / /_/ / /_(__  )
    \____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ /_/_/\__/\__, /   /____/\___/_/  /_/ .___/\__/____/
                                                     /____/                    /_/
      Cap-Captcha
      ⏳   Checking for update: cap-captcha
      ✔️  No update available: cap-captcha (capd@4.0.14)
      ⏳   Cleaning up
      ✔️  Cleaned
    
    📄 ct/cap-captcha.sh (incus) — install log (425 lines)
    … 91 earlier lines cut, the full log is in the run artifacts
    Fetched 22.5 kB in 0s (134 kB/s)
    Reading package lists...
    Building dependency tree...
    Reading state information...
    All packages are up to date.
    Reading package lists...
    Building dependency tree...
    Reading state information...
    Installing:
      nodejs
    Installing dependencies:
      libpython3-stdlib      python3          python3.13-minimal
      libpython3.13-minimal  python3-minimal
      libpython3.13-stdlib   python3.13
    Suggested packages:
      python3-doc  python3-venv     python3.13-doc  binfmt-support
      python3-tk   python3.13-venv  binutils
    Summary:
      Upgrading: 0, Installing: 8, Removing: 0, Not Upgrading: 0
      Download size: 45.4 MB
      Space needed: 269 MB / 146 GB available
    Get:1 http://deb.debian.org/debian trixie/main amd64 libpython3.13-minimal amd64 3.13.5-2+deb13u5 [863 kB]
    Get:2 https://deb.nodesource.com/node_24.x nodistro/main amd64 nodejs amd64 24.22.3-1nodesource1 [39.5 MB]
    Get:3 http://deb.debian.org/debian trixie/main amd64 python3.13-minimal amd64 3.13.5-2+deb13u5 [2225 kB]
    Get:4 http://deb.debian.org/debian trixie/main amd64 python3-minimal amd64 3.13.5-1 [27.2 kB]
    Get:5 http://deb.debian.org/debian trixie/main amd64 libpython3.13-stdlib amd64 3.13.5-2+deb13u5 [1959 kB]
    Get:6 http://deb.debian.org/debian trixie/main amd64 python3.13 amd64 3.13.5-2+deb13u5 [757 kB]
    Get:7 http://deb.debian.org/debian trixie/main amd64 libpython3-stdlib amd64 3.13.5-1 [10.2 kB]
    Get:8 http://deb.debian.org/debian trixie/main amd64 python3 amd64 3.13.5-1 [28.2 kB]
    Fetched 45.4 MB in 1s (54.0 MB/s)
    Selecting previously unselected package libpython3.13-minimal:amd64.
    (Reading database ... 
    (Reading database ... 5%
    (Reading database ... 10%
    (Reading database ... 15%
    (Reading database ... 20%
    (Reading database ... 25%
    (Reading database ... 30%
    (Reading database ... 35%
    (Reading database ... 40%
    (Reading database ... 45%
    (Reading database ... 50%
    (Reading database ... 55%
    (Reading database ... 60%
    (Reading database ... 65%
    (Reading database ... 70%
    (Reading database ... 75%
    (Reading database ... 80%
    (Reading database ... 85%
    (Reading database ... 90%
    (Reading database ... 95%
    (Reading database ... 100%
    (Reading database ... 16560 files and directories currently installed.)
    Preparing to unpack .../libpython3.13-minimal_3.13.5-2+deb13u5_amd64.deb ...
    Unpacking libpython3.13-minimal:amd64 (3.13.5-2+deb13u5) ...
    Selecting previously unselected package python3.13-minimal.
    Preparing to unpack .../python3.13-minimal_3.13.5-2+deb13u5_amd64.deb ...
    Unpacking python3.13-minimal (3.13.5-2+deb13u5) ...
    Setting up libpython3.13-minimal:amd64 (3.13.5-2+deb13u5) ...
    Setting up python3.13-minimal (3.13.5-2+deb13u5) ...
    Selecting previously unselected package python3-minimal.
    (Reading database ... 
    (Reading database ... 5%
    (Reading database ... 10%
    (Reading database ... 15%
    (Reading database ... 20%
    (Reading database ... 25%
    (Reading database ... 30%
    (Reading database ... 35%
    (Reading database ... 40%
    (Reading database ... 45%
    (Reading database ... 50%
    (Reading database ... 55%
    (Reading database ... 60%
    (Reading database ... 65%
    (Reading database ... 70%
    (Reading database ... 75%
    (Reading database ... 80%
    (Reading database ... 85%
    (Reading database ... 90%
    (Reading database ... 95%
    (Reading database ... 100%
    (Reading database ... 16884 files and directories currently installed.)
    Preparing to unpack .../python3-minimal_3.13.5-1_amd64.deb ...
    Unpacking python3-minimal (3.13.5-1) ...
    Selecting previously unselected package libpython3.13-stdlib:amd64.
    Preparing to unpack .../libpython3.13-stdlib_3.13.5-2+deb13u5_amd64.deb ...
    Unpacking libpython3.13-stdlib:amd64 (3.13.5-2+deb13u5) ...
    Selecting previously unselected package python3.13.
    Preparing to unpack .../python3.13_3.13.5-2+deb13u5_amd64.deb ...
    Unpacking python3.13 (3.13.5-2+deb13u5) ...
    Selecting previously unselected package libpython3-stdlib:amd64.
    Preparing to unpack .../libpython3-stdlib_3.13.5-1_amd64.deb ...
    Unpacking libpython3-stdlib:amd64 (3.13.5-1) ...
    Setting up python3-minimal (3.13.5-1) ...
    Selecting previously unselected package python3.
    (Reading database ... 
    (Reading database ... 5%
    (Reading database ... 10%
    (Reading database ... 15%
    (Reading database ... 20%
    (Reading database ... 25%
    (Reading database ... 30%
    (Reading database ... 35%
    (Reading database ... 40%
    (Reading database ... 45%
    (Reading database ... 50%
    (Reading database ... 55%
    (Reading database ... 60%
    (Reading database ... 65%
    (Reading database ... 70%
    (Reading database ... 75%
    (Reading database ... 80%
    (Reading database ... 85%
    (Reading database ... 90%
    (Reading database ... 95%
    (Reading database ... 100%
    (Reading database ... 17331 files and directories currently installed.)
    Preparing to unpack .../python3_3.13.5-1_amd64.deb ...
    Unpacking python3 (3.13.5-1) ...
    Selecting previously unselected package nodejs.
    Preparing to unpack .../nodejs_24.22.3-1nodesource1_amd64.deb ...
    Unpacking nodejs (24.22.3-1nodesource1) ...
    Setting up libpython3.13-stdlib:amd64 (3.13.5-2+deb13u5) ...
    Setting up libpython3-stdlib:amd64 (3.13.5-1) ...
    Setting up python3.13 (3.13.5-2+deb13u5) ...
    Setting up python3 (3.13.5-1) ...
    Setting up nodejs (24.22.3-1nodesource1) ...
    Processing triggers for systemd (257.13-1~deb13u1) ...
    Processing triggers for mailcap (3.74) ...
    removed 8 packages, and changed 77 packages in 6s
    15 packages are looking for funding
      run `npm fund` for details
    [2026-11-14 19:29:53] [OK] Setup Node.js 24 (npm 12.2.2)
    /usr/lib
    └── (empty)
    [2026-11-14 19:29:56] [INFO] Installing bun@latest
    added 2 packages in 6s
    [2026-11-14 19:30:02] [OK] Installed bun
    [2026-11-14 19:30:03] [INFO] Fetching github release: cap-captcha (capd@4.0.14)
    [2026-11-14 19:30:04] [OK] Deployed: cap-captcha (capd@4.0.14)
    [2026-11-14 19:30:04] [INFO] Building Cap
    bun install v1.4.4 (38afee6c8)
    + @fontsource-variable/inter@5.3.0
    + @sveltejs/vite-plugin-svelte@7.3.1
    + @tailwindcss/vite@4.3.5
    + bits-ui@2.20.6
    + bun-types@1.3.13
    + chart.js@4.5.0
    + clsx@2.1.1
    + svelte@5.57.3
    + tailwind-merge@3.5.0
    + tailwind-variants@4.0.1
    + tailwindcss@4.3.5
    + topojson-client@3.1.0
    + tw-animate-css@1.4.0
    + vite@8.3.6
    + @duckdb/node-api@1.4.5-r.1
    + @elysiajs/swagger@1.3.1
    + capjs-core@0.1.17
    + duckdb-v2@2.0.0-r.1
    + elysia@1.4.28
    + maxmind@5.0.6
    + re2js@2.9.1
    229 packages installed [5.16s]
    $ vite build
    7:30:10 PM [vite-plugin-svelte] no Svelte config found at /opt/cap-captcha/capd/dashboard - using default configuration.
    vite v8.3.6 building client environment for production...
    transforming...
    7:30:11 PM [vite-plugin-svelte] dashboard/src/components/cap/SectionNav.svelte:6:21 This reference only captures the initial value of `items`. Did you mean to reference it inside a derived instead?
    https://svelte.dev/e/state_referenced_locally
    4: 
    5: let { items, label = "Sections" } = $props();
    6: let current = $state(items[0]?.id);
                                 ^
    7: 
    8: onMount(() => {
    7:30:12 PM [vite-plugin-svelte] dashboard/src/views/activity/TrafficChart.svelte:12:3 This reference only captures the initial value of `stagger`. Did you mean to reference it inside a derived instead?
    https://svelte.dev/e/state_referenced_locally
    10: let stagger = $state(!!window.capRise);
    11: let held = $state(
    12:   !stagger &&
                  ^
    13:     !window.capRisen &&
    14:     new URLSearchParams(location.search).has("hold"),
    7:30:12 PM [vite-plugin-svelte] dashboard/src/views/activity/TrafficChart.svelte:17:12 This reference only captures the initial value of `metric`. Did you mean to reference it inside a closure instead?
    https://svelte.dev/e/state_referenced_locally
    15: );
    16: let rises = $state(0);
    17: let shown = metric;
                          ^
    18: let settle;
    19: 
    7:30:12 PM [vite-plugin-svelte] dashboard/src/views/activity/TrafficChart.svelte:32:4 This reference only captures the initial value of `stagger`. Did you mean to reference it inside a closure instead?
    https://svelte.dev/e/state_referenced_locally
    30: };
    31: 
    32: if (stagger) {
                   ^
    33:   window.capRise = false;
    34:   window.capRisen = true;
    7:30:13 PM [vite-plugin-svelte] dashboard/src/views/protection/Protection.svelte:440:26 noninteractive element cannot have nonnegative tabIndex value
    https://svelte.dev/e/a11y_no_noninteractive_tabindex
    438:                       <Tip label="Signs requests">
    439:                         {#snippet children(props)}
    440:                           <span {...props} tabindex="0" class="-ms-1 flex shrink-0 rounded-full text-info outline-none focus-visible:ring-2 focus-visible:ring-ring">
                                          ^
    441:                             <svg viewBox="0 0 24 24" width="15" height="15" aria-hidden="true">
    442:                               <path fill="currentColor" d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
    7:30:13 PM [vite-plugin-svelte] dashboard/src/views/events/Events.svelte:483:17 Empty block
    https://svelte.dev/e/block_empty
    481:     </TableCell>
    482:     <TableCell class="whitespace-nowrap max-md:hidden">
    483:       {#if child}
               ^
    484:       {:else if who.ip && who.type !== "siteverify"}
    485:         <span class="flex min-w-0 flex-col">
    7:30:13 PM [vite-plugin-svelte] dashboard/src/views/events/Events.svelte:499:17 Empty block
    https://svelte.dev/e/block_empty
    497:     </TableCell>
    498:     <TableCell class="whitespace-nowrap max-lg:hidden">
    499:       {#if child}
               ^
    500:       {:else if who.country}
    501:         <span class="flex items-center gap-2.5">
    7:30:16 PM [vite-plugin-svelte] dashboard/src/views/lists/ListEditor.svelte:114:4 This reference only captures the initial value of `listId`. Did you mean to reference it inside a closure instead?
    https://svelte.dev/e/state_referenced_locally
    112:   loading = false;
    113: }
    114: if (listId) load();
                   ^
    115: 
    116: const close = () => {
    7:30:16 PM [vite-plugin-svelte] dashboard/src/views/activity/Breakdown.svelte:11:20 This reference only captures the initial value of `tabs`. Did you mean to reference it inside a derived instead?
    https://svelte.dev/e/state_referenced_locally
     9: const VISIBLE = 8;
    10: 
    11: let active = $state(tabs[0].id);
                                ^
    12: let details = $state(false);
    13: let query = $state("");
    7:30:16 PM [vite-plugin-svelte] dashboard/src/views/activity/WeekHeatmap.svelte:51:6 `<div>` with a pointerleave handler must have an ARIA role
    https://svelte.dev/e/a11y_no_static_element_interactions
    49:     <div class="grid grid-cols-[2.25rem_1fr] items-center gap-2">
    50:       <span class="text-[11px] text-muted-foreground">{day}</span>
    51:       <div class="grid grid-cols-24 gap-[3px]" onpointerleave={() => (hover = null)}>
                    ^
    52:         {#each { length: 24 } as _, h (h)}
    53:           {@const c = grid[d * 24 + h]}
    7:30:16 PM [vite-plugin-svelte] dashboard/src/views/activity/WeekHeatmap.svelte:54:10 `<span>` with a pointerenter handler must have an ARIA role
    https://svelte.dev/e/a11y_no_static_element_interactions
    52:         {#each { length: 24 } as _, h (h)}
    53:           {@const c = grid[d * 24 + h]}
    54:           <span
                       ^
    55:             class="aspect-square min-h-2.5 rounded-[3px] {hover === d * 24 + h ? 'outline outline-1 outline-foreground/60' : ''}"
    56:             style:background={fill(c)}
    ✓ 1086 modules transformed.
    rendering chunks...
    computing gzip size...
    public/dist/assets/browserbase-6uMWOlsD.png        0.71 kB
    public/dist/assets/anchor-browser-CRBttg1H.png     0.74 kB
    public/dist/assets/agi-agent-54zlgek7.png          0.83 kB
    public/dist/assets/stagehand-BsSicxVd.png          0.86 kB
    public/dist/login.html                             1.04 kB │ gzip:   0.52 kB
    public/dist/assets/hyperbrowser-C4_OoScR.png       1.16 kB
    public/dist/assets/maxai-DS95hNOf.png              1.17 kB
    public/dist/share.html                             1.17 kB │ gzip:   0.56 kB
    public/dist/index.html                             1.19 kB │ gzip:   0.55 kB
    public/dist/assets/kernel-J1YrgtDG.png             1.24 kB
    public/dist/assets/rtrvr-CIAMvqco.png              1.35 kB
    public/dist/assets/agentql-m6QJe8CT.png            1.47 kB
    public/dist/assets/dassi-BPQudYLN.png              1.47 kB
    public/dist/assets/do-browser-BX9F8jD6.png         1.57 kB
    public/dist/assets/harpa-B5P7n6PV.png              1.75 kB
    public/dist/assets/nanobrowser-yh2LCMWl.png        1.99 kB
    public/dist/assets/twin-XYAW6A0b.png               2.02 kB
    public/dist/assets/sigma-DNnoM6gp.png              2.14 kB
    public/dist/assets/browser-use-CDFjuLdz.png        2.20 kB
    public/dist/assets/browserflow-B05rqUGD.png        2.31 kB
    public/dist/assets/magnitude-DN_cVYPJ.png          2.37 kB
    public/dist/assets/genspark-cItZt9xP.png           2.69 kB
    public/dist/assets/lavague-DK7efX5C.png            2.79 kB
    public/dist/assets/skyvern-Clr51Akm.png            2.93 kB
    public/dist/assets/2captcha-_vKomfSe.png           3.02 kB
    public/dist/assets/thunderbit-YBtCuesU.png         3.44 kB
    public/dist/assets/sider-ApvxbLco.png              3.53 kB
    public/dist/assets/fellou-BClqr9H3.png             3.70 kB
    public/dist/.vite/manifest.json                    5.75 kB │ gzip:   1.07 kB
    public/dist/assets/ibm-plex-sans-DKYrB2Yq.woff2  230.36 kB
    public/dist/assets/TrafficChart-Bm4emReU.css       0.33 kB │ gzip:   0.19 kB
    public/dist/assets/index-WTPU6t6n.css              0.50 kB │ gzip:   0.26 kB
    public/dist/assets/login-zsqXPg03.css              1.88 kB │ gzip:   0.69 kB
    public/dist/assets/api-lDT7hQMg.css              213.94 kB │ gzip:  33.98 kB
    public/dist/assets/login-BiveCIvV.js               8.68 kB │ gzip:   3.97 kB
    public/dist/assets/share-Mt8MjK6Q.js              17.05 kB │ gzip:   6.60 kB
    public/dist/assets/TrafficChart-BLXqc450.js       20.48 kB │ gzip:   9.85 kB
    public/dist/assets/index-trP5rC-7.js             357.23 kB │ gzip: 110.61 kB
    public/dist/assets/api-D6fiNYMD.js               442.21 kB │ gzip: 132.83 kB
    ✓ built in 7.78s
    [PLUGIN_TIMINGS] JavaScript callbacks ran for 7.4s of this 7.8s build (96%).
    The slowest callbacks, timed inside each callback (the wait before a callback starts is excluded, the time it awaits is included):
      - plugin @tailwindcss/vite:generate:build transform (91%, 7.1s, 14 calls)
      - plugin vite-plugin-svelte:compile transform (55%, 4.3s, 494 calls)
      - plugin vite-plugin-svelte:compile-module transform (25%, 2.0s, 105 calls)
    These rows add up to more than the total. Callbacks can overlap, so the same time counts for more than one row.
    3 callbacks are listed without a time. Their calls overlapped, so the time inside one call includes work from other calls. To find their cost, profile the build with `node --cpu-prof`:
      - plugin vite:asset load (42 calls)
      - plugin vite:css transform (14 calls)
      - plugin vite:build-html transform (3 calls)
    See https://rolldown.rs/reference/InputOptions.checks#bundlertimings for more details.
    bun install v1.4.4 (38afee6c8)
    + @duckdb/node-api@1.4.5-r.1
    + @elysiajs/swagger@1.3.1
    + capjs-core@0.1.17
    + duckdb-v2@2.0.0-r.1
    + elysia@1.4.28
    + maxmind@5.0.6
    + re2js@2.9.1
    157 packages installed [130.00ms]
    [2026-11-14 19:30:19] [OK] Built Cap
    [2026-11-14 19:30:19] [INFO] Configuring Cap
    [2026-11-14 19:30:19] [OK] Configured Cap
    [2026-11-14 19:30:19] [INFO] Creating Service
    [2026-11-14 19:30:20] [OK] Created Service
    [2026-11-14 19:30:20] [INFO] Customizing Container
    [2026-11-14 19:30:22] [OK] Customized Container
    [2026-11-14 19:30:22] [INFO] Cleaning up
    Reading package lists...
    Building dependency tree...
    Reading state information...
    Summary:
      Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0
    [2026-11-14 19:30:23] [OK] Cleaned
    
    🔄 ct/cap-captcha.sh (incus) — update log (17 lines)
       ______                                      _ __           _____           _       __
      / ____/___  ____ ___  ____ ___  __  ______  (_) /___  __   / ___/__________(_)___  / /______
     / /   / __ \/ __ `__ \/ __ `__ \/ / / / __ \/ / __/ / / /   \__ \/ ___/ ___/ / __ \/ __/ ___/
    / /___/ /_/ / / / / / / / / / / / /_/ / / / / / /_/ /_/ /   ___/ / /__/ /  / / /_/ / /_(__  )
    \____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ /_/_/\__/\__, /   /____/\___/_/  /_/ .___/\__/____/
                                                     /____/                    /_/
      Cap-Captcha
    10.98.0.119
       ______                                      _ __           _____           _       __
      / ____/___  ____ ___  ____ ___  __  ______  (_) /___  __   / ___/__________(_)___  / /______
     / /   / __ \/ __ `__ \/ __ `__ \/ / / / __ \/ / __/ / / /   \__ \/ ___/ ___/ / __ \/ __/ ___/
    / /___/ /_/ / / / / / / / / / / / /_/ / / / / / /_/ /_/ /   ___/ / /__/ /  / / /_/ / /_(__  )
    \____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ /_/_/\__/\__, /   /____/\___/_/  /_/ .___/\__/____/
                                                     /____/                    /_/
      Cap-Captcha
      ⏳   Checking for update: cap-captcha
      ✔️  No update available: cap-captcha (capd@4.0.14)
    
    📄 ct/cap-captcha.sh (arm64) — install log (424 lines)
    … 88 earlier lines cut, the full log is in the run artifacts
    Hit:3 http://deb.debian.org/debian-security trixie-security InRelease
    Get:4 https://deb.nodesource.com/node_24.x nodistro InRelease [12.1 kB]
    Get:5 https://deb.nodesource.com/node_24.x nodistro/main arm64 Packages [10.3 kB]
    Fetched 22.5 kB in 0s (189 kB/s)
    Reading package lists...
    Building dependency tree...
    Reading state information...
    All packages are up to date.
    Reading package lists...
    Building dependency tree...
    Reading state information...
    Installing:
      nodejs
    Installing dependencies:
      libpython3-stdlib      python3          python3.13-minimal
      libpython3.13-minimal  python3-minimal
      libpython3.13-stdlib   python3.13
    Suggested packages:
      python3-doc  python3-venv     python3.13-doc
      python3-tk   python3.13-venv  binfmt-support
    Summary:
      Upgrading: 0, Installing: 8, Removing: 0, Not Upgrading: 0
      Download size: 44.1 MB
      Space needed: 267 MB / 110 GB available
    Get:1 http://deb.debian.org/debian trixie/main arm64 libpython3.13-minimal arm64 3.13.5-2+deb13u5 [856 kB]
    Get:2 http://deb.debian.org/debian trixie/main arm64 python3.13-minimal arm64 3.13.5-2+deb13u5 [2008 kB]
    Get:3 http://deb.debian.org/debian trixie/main arm64 python3-minimal arm64 3.13.5-1 [27.2 kB]
    Get:4 http://deb.debian.org/debian trixie/main arm64 libpython3.13-stdlib arm64 3.13.5-2+deb13u5 [1895 kB]
    Get:5 http://deb.debian.org/debian trixie/main arm64 python3.13 arm64 3.13.5-2+deb13u5 [757 kB]
    Get:6 http://deb.debian.org/debian trixie/main arm64 libpython3-stdlib arm64 3.13.5-1 [10.2 kB]
    Get:7 http://deb.debian.org/debian trixie/main arm64 python3 arm64 3.13.5-1 [28.2 kB]
    Get:8 https://deb.nodesource.com/node_24.x nodistro/main arm64 nodejs arm64 24.22.3-1nodesource1 [38.6 MB]
    Fetched 44.1 MB in 1s (82.9 MB/s)
    Selecting previously unselected package libpython3.13-minimal:arm64.
    (Reading database ... 
    (Reading database ... 5%
    (Reading database ... 10%
    (Reading database ... 15%
    (Reading database ... 20%
    (Reading database ... 25%
    (Reading database ... 30%
    (Reading database ... 35%
    (Reading database ... 40%
    (Reading database ... 45%
    (Reading database ... 50%
    (Reading database ... 55%
    (Reading database ... 60%
    (Reading database ... 65%
    (Reading database ... 70%
    (Reading database ... 75%
    (Reading database ... 80%
    (Reading database ... 85%
    (Reading database ... 90%
    (Reading database ... 95%
    (Reading database ... 100%
    (Reading database ... 26722 files and directories currently installed.)
    Preparing to unpack .../libpython3.13-minimal_3.13.5-2+deb13u5_arm64.deb ...
    Unpacking libpython3.13-minimal:arm64 (3.13.5-2+deb13u5) ...
    Selecting previously unselected package python3.13-minimal.
    Preparing to unpack .../python3.13-minimal_3.13.5-2+deb13u5_arm64.deb ...
    Unpacking python3.13-minimal (3.13.5-2+deb13u5) ...
    Setting up libpython3.13-minimal:arm64 (3.13.5-2+deb13u5) ...
    Setting up python3.13-minimal (3.13.5-2+deb13u5) ...
    Selecting previously unselected package python3-minimal.
    (Reading database ... 
    (Reading database ... 5%
    (Reading database ... 10%
    (Reading database ... 15%
    (Reading database ... 20%
    (Reading database ... 25%
    (Reading database ... 30%
    (Reading database ... 35%
    (Reading database ... 40%
    (Reading database ... 45%
    (Reading database ... 50%
    (Reading database ... 55%
    (Reading database ... 60%
    (Reading database ... 65%
    (Reading database ... 70%
    (Reading database ... 75%
    (Reading database ... 80%
    (Reading database ... 85%
    (Reading database ... 90%
    (Reading database ... 95%
    (Reading database ... 100%
    (Reading database ... 27046 files and directories currently installed.)
    Preparing to unpack .../python3-minimal_3.13.5-1_arm64.deb ...
    Unpacking python3-minimal (3.13.5-1) ...
    Selecting previously unselected package libpython3.13-stdlib:arm64.
    Preparing to unpack .../libpython3.13-stdlib_3.13.5-2+deb13u5_arm64.deb ...
    Unpacking libpython3.13-stdlib:arm64 (3.13.5-2+deb13u5) ...
    Selecting previously unselected package python3.13.
    Preparing to unpack .../python3.13_3.13.5-2+deb13u5_arm64.deb ...
    Unpacking python3.13 (3.13.5-2+deb13u5) ...
    Selecting previously unselected package libpython3-stdlib:arm64.
    Preparing to unpack .../libpython3-stdlib_3.13.5-1_arm64.deb ...
    Unpacking libpython3-stdlib:arm64 (3.13.5-1) ...
    Setting up python3-minimal (3.13.5-1) ...
    Selecting previously unselected package python3.
    (Reading database ... 
    (Reading database ... 5%
    (Reading database ... 10%
    (Reading database ... 15%
    (Reading database ... 20%
    (Reading database ... 25%
    (Reading database ... 30%
    (Reading database ... 35%
    (Reading database ... 40%
    (Reading database ... 45%
    (Reading database ... 50%
    (Reading database ... 55%
    (Reading database ... 60%
    (Reading database ... 65%
    (Reading database ... 70%
    (Reading database ... 75%
    (Reading database ... 80%
    (Reading database ... 85%
    (Reading database ... 90%
    (Reading database ... 95%
    (Reading database ... 100%
    (Reading database ... 27493 files and directories currently installed.)
    Preparing to unpack .../python3_3.13.5-1_arm64.deb ...
    Unpacking python3 (3.13.5-1) ...
    Selecting previously unselected package nodejs.
    Preparing to unpack .../nodejs_24.22.3-1nodesource1_arm64.deb ...
    Unpacking nodejs (24.22.3-1nodesource1) ...
    Setting up libpython3.13-stdlib:arm64 (3.13.5-2+deb13u5) ...
    Setting up libpython3-stdlib:arm64 (3.13.5-1) ...
    Setting up python3.13 (3.13.5-2+deb13u5) ...
    Setting up python3 (3.13.5-1) ...
    Setting up nodejs (24.22.3-1nodesource1) ...
    Processing triggers for systemd (257.13-1~deb13u1) ...
    Processing triggers for mailcap (3.74) ...
    removed 8 packages, and changed 77 packages in 3s
    15 packages are looking for funding
      run `npm fund` for details
    [2026-11-14 18:10:14] [OK] Setup Node.js 24 (npm 12.2.2)
    /usr/lib
    └── (empty)
    [2026-11-14 18:10:15] [INFO] Installing bun@latest
    added 2 packages in 3s
    [2026-11-14 18:10:18] [OK] Installed bun
    [2026-11-14 18:10:18] [INFO] Fetching github release: cap-captcha (capd@4.0.14)
    [2026-11-14 18:10:19] [OK] Deployed: cap-captcha (capd@4.0.14)
    [2026-11-14 18:10:19] [INFO] Building Cap
    bun install v1.4.4 (38afee6c8)
    + @fontsource-variable/inter@5.3.0
    + @sveltejs/vite-plugin-svelte@7.3.1
    + @tailwindcss/vite@4.3.5
    + bits-ui@2.20.6
    + bun-types@1.3.13
    + chart.js@4.5.0
    + clsx@2.1.1
    + svelte@5.57.3
    + tailwind-merge@3.5.0
    + tailwind-variants@4.0.1
    + tailwindcss@4.3.5
    + topojson-client@3.1.0
    + tw-animate-css@1.4.0
    + vite@8.3.6
    + @duckdb/node-api@1.4.5-r.1
    + @elysiajs/swagger@1.3.1
    + capjs-core@0.1.17
    + duckdb-v2@2.0.0-r.1
    + elysia@1.4.28
    + maxmind@5.0.6
    + re2js@2.9.1
    229 packages installed [723.00ms]
    $ vite build
    6:10:20 PM [vite-plugin-svelte] no Svelte config found at /opt/cap-captcha/capd/dashboard - using default configuration.
    vite v8.3.6 building client environment for production...
    transforming...
    6:10:21 PM [vite-plugin-svelte] dashboard/src/components/cap/SectionNav.svelte:6:21 This reference only captures the initial value of `items`. Did you mean to reference it inside a derived instead?
    https://svelte.dev/e/state_referenced_locally
    4: 
    5: let { items, label = "Sections" } = $props();
    6: let current = $state(items[0]?.id);
                                 ^
    7: 
    8: onMount(() => {
    6:10:21 PM [vite-plugin-svelte] dashboard/src/views/activity/TrafficChart.svelte:12:3 This reference only captures the initial value of `stagger`. Did you mean to reference it inside a derived instead?
    https://svelte.dev/e/state_referenced_locally
    10: let stagger = $state(!!window.capRise);
    11: let held = $state(
    12:   !stagger &&
                  ^
    13:     !window.capRisen &&
    14:     new URLSearchParams(location.search).has("hold"),
    6:10:21 PM [vite-plugin-svelte] dashboard/src/views/activity/TrafficChart.svelte:17:12 This reference only captures the initial value of `metric`. Did you mean to reference it inside a closure instead?
    https://svelte.dev/e/state_referenced_locally
    15: );
    16: let rises = $state(0);
    17: let shown = metric;
                          ^
    18: let settle;
    19: 
    6:10:21 PM [vite-plugin-svelte] dashboard/src/views/activity/TrafficChart.svelte:32:4 This reference only captures the initial value of `stagger`. Did you mean to reference it inside a closure instead?
    https://svelte.dev/e/state_referenced_locally
    30: };
    31: 
    32: if (stagger) {
                   ^
    33:   window.capRise = false;
    34:   window.capRisen = true;
    6:10:22 PM [vite-plugin-svelte] dashboard/src/views/protection/Protection.svelte:440:26 noninteractive element cannot have nonnegative tabIndex value
    https://svelte.dev/e/a11y_no_noninteractive_tabindex
    438:                       <Tip label="Signs requests">
    439:                         {#snippet children(props)}
    440:                           <span {...props} tabindex="0" class="-ms-1 flex shrink-0 rounded-full text-info outline-none focus-visible:ring-2 focus-visible:ring-ring">
                                          ^
    441:                             <svg viewBox="0 0 24 24" width="15" height="15" aria-hidden="true">
    442:                               <path fill="currentColor" d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
    6:10:22 PM [vite-plugin-svelte] dashboard/src/views/events/Events.svelte:483:17 Empty block
    https://svelte.dev/e/block_empty
    481:     </TableCell>
    482:     <TableCell class="whitespace-nowrap max-md:hidden">
    483:       {#if child}
               ^
    484:       {:else if who.ip && who.type !== "siteverify"}
    485:         <span class="flex min-w-0 flex-col">
    6:10:22 PM [vite-plugin-svelte] dashboard/src/views/events/Events.svelte:499:17 Empty block
    https://svelte.dev/e/block_empty
    497:     </TableCell>
    498:     <TableCell class="whitespace-nowrap max-lg:hidden">
    499:       {#if child}
               ^
    500:       {:else if who.country}
    501:         <span class="flex items-center gap-2.5">
    6:10:23 PM [vite-plugin-svelte] dashboard/src/views/lists/ListEditor.svelte:114:4 This reference only captures the initial value of `listId`. Did you mean to reference it inside a closure instead?
    https://svelte.dev/e/state_referenced_locally
    112:   loading = false;
    113: }
    114: if (listId) load();
                   ^
    115: 
    116: const close = () => {
    6:10:23 PM [vite-plugin-svelte] dashboard/src/views/activity/Breakdown.svelte:11:20 This reference only captures the initial value of `tabs`. Did you mean to reference it inside a derived instead?
    https://svelte.dev/e/state_referenced_locally
     9: const VISIBLE = 8;
    10: 
    11: let active = $state(tabs[0].id);
                                ^
    12: let details = $state(false);
    13: let query = $state("");
    6:10:23 PM [vite-plugin-svelte] dashboard/src/views/activity/WeekHeatmap.svelte:51:6 `<div>` with a pointerleave handler must have an ARIA role
    https://svelte.dev/e/a11y_no_static_element_interactions
    49:     <div class="grid grid-cols-[2.25rem_1fr] items-center gap-2">
    50:       <span class="text-[11px] text-muted-foreground">{day}</span>
    51:       <div class="grid grid-cols-24 gap-[3px]" onpointerleave={() => (hover = null)}>
                    ^
    52:         {#each { length: 24 } as _, h (h)}
    53:           {@const c = grid[d * 24 + h]}
    6:10:23 PM [vite-plugin-svelte] dashboard/src/views/activity/WeekHeatmap.svelte:54:10 `<span>` with a pointerenter handler must have an ARIA role
    https://svelte.dev/e/a11y_no_static_element_interactions
    52:         {#each { length: 24 } as _, h (h)}
    53:           {@const c = grid[d * 24 + h]}
    54:           <span
                       ^
    55:             class="aspect-square min-h-2.5 rounded-[3px] {hover === d * 24 + h ? 'outline outline-1 outline-foreground/60' : ''}"
    56:             style:background={fill(c)}
    ✓ 1086 modules transformed.
    rendering chunks...
    computing gzip size...
    public/dist/assets/browserbase-6uMWOlsD.png        0.71 kB
    public/dist/assets/anchor-browser-CRBttg1H.png     0.74 kB
    public/dist/assets/agi-agent-54zlgek7.png          0.83 kB
    public/dist/assets/stagehand-BsSicxVd.png          0.86 kB
    public/dist/login.html                             1.04 kB │ gzip:   0.52 kB
    public/dist/assets/hyperbrowser-C4_OoScR.png       1.16 kB
    public/dist/assets/maxai-DS95hNOf.png              1.17 kB
    public/dist/share.html                             1.17 kB │ gzip:   0.56 kB
    public/dist/index.html                             1.19 kB │ gzip:   0.55 kB
    public/dist/assets/kernel-J1YrgtDG.png             1.24 kB
    public/dist/assets/rtrvr-CIAMvqco.png              1.35 kB
    public/dist/assets/agentql-m6QJe8CT.png            1.47 kB
    public/dist/assets/dassi-BPQudYLN.png              1.47 kB
    public/dist/assets/do-browser-BX9F8jD6.png         1.57 kB
    public/dist/assets/harpa-B5P7n6PV.png              1.75 kB
    public/dist/assets/nanobrowser-yh2LCMWl.png        1.99 kB
    public/dist/assets/twin-XYAW6A0b.png               2.02 kB
    public/dist/assets/sigma-DNnoM6gp.png              2.14 kB
    public/dist/assets/browser-use-CDFjuLdz.png        2.20 kB
    public/dist/assets/browserflow-B05rqUGD.png        2.31 kB
    public/dist/assets/magnitude-DN_cVYPJ.png          2.37 kB
    public/dist/assets/genspark-cItZt9xP.png           2.69 kB
    public/dist/assets/lavague-DK7efX5C.png            2.79 kB
    public/dist/assets/skyvern-Clr51Akm.png            2.93 kB
    public/dist/assets/2captcha-_vKomfSe.png           3.02 kB
    public/dist/assets/thunderbit-YBtCuesU.png         3.44 kB
    public/dist/assets/sider-ApvxbLco.png              3.53 kB
    public/dist/assets/fellou-BClqr9H3.png             3.70 kB
    public/dist/.vite/manifest.json                    5.75 kB │ gzip:   1.07 kB
    public/dist/assets/ibm-plex-sans-DKYrB2Yq.woff2  230.36 kB
    public/dist/assets/TrafficChart-Bm4emReU.css       0.33 kB │ gzip:   0.19 kB
    public/dist/assets/index-WTPU6t6n.css              0.50 kB │ gzip:   0.26 kB
    public/dist/assets/login-zsqXPg03.css              1.88 kB │ gzip:   0.69 kB
    public/dist/assets/api-lDT7hQMg.css              213.94 kB │ gzip:  33.98 kB
    public/dist/assets/login-BiveCIvV.js               8.68 kB │ gzip:   3.97 kB
    public/dist/assets/share-Mt8MjK6Q.js              17.05 kB │ gzip:   6.60 kB
    public/dist/assets/TrafficChart-BLXqc450.js       20.48 kB │ gzip:   9.85 kB
    public/dist/assets/index-trP5rC-7.js             357.23 kB │ gzip: 110.61 kB
    public/dist/assets/api-D6fiNYMD.js               442.21 kB │ gzip: 132.83 kB
    ✓ built in 4.36s
    [PLUGIN_TIMINGS] JavaScript callbacks ran for 3.0s of this 4.3s build (68%).
    The slowest callbacks, timed inside each callback (the wait before a callback starts is excluded, the time it awaits is included):
      - plugin vite-plugin-svelte:compile transform (39%, 1.7s, 494 calls)
    Additional callback time came from the callbacks below and from callbacks under 1s.
    4 callbacks are listed without a time. Their calls overlapped, so the time inside one call includes work from other calls. To find their cost, profile the build with `node --cpu-prof`:
      - plugin vite:asset load (42 calls)
      - plugin vite:css transform (14 calls)
      - plugin vite:build-html transform (3 calls)
      … and 1 more
    See https://rolldown.rs/reference/InputOptions.checks#bundlertimings for more details.
    bun install v1.4.4 (38afee6c8)
    + @duckdb/node-api@1.4.5-r.1
    + @elysiajs/swagger@1.3.1
    + capjs-core@0.1.17
    + duckdb-v2@2.0.0-r.1
    + elysia@1.4.28
    + maxmind@5.0.6
    + re2js@2.9.1
    157 packages installed [49.00ms]
    [2026-11-14 18:10:25] [OK] Built Cap
    [2026-11-14 18:10:25] [INFO] Configuring Cap
    [2026-11-14 18:10:26] [OK] Configured Cap
    [2026-11-14 18:10:26] [INFO] Creating Service
    [2026-11-14 18:10:26] [OK] Created Service
    [2026-11-14 18:10:26] [INFO] Customizing Container
    [2026-11-14 18:10:27] [OK] Customized Container
    [2026-11-14 18:10:27] [INFO] Cleaning up
    Reading package lists...
    Building dependency tree...
    Reading state information...
    Summary:
      Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0
    [2026-11-14 18:10:27] [OK] Cleaned
    
    🔄 ct/cap-captcha.sh (arm64) — update log (17 lines)
       ______                                      _ __           _____           _       __
      / ____/___  ____ ___  ____ ___  __  ______  (_) /___  __   / ___/__________(_)___  / /______
     / /   / __ \/ __ `__ \/ __ `__ \/ / / / __ \/ / __/ / / /   \__ \/ ___/ ___/ / __ \/ __/ ___/
    / /___/ /_/ / / / / / / / / / / / /_/ / / / / / /_/ /_/ /   ___/ / /__/ /  / / /_/ / /_(__  )
    \____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ /_/_/\__/\__, /   /____/\___/_/  /_/ .___/\__/____/
                                                     /____/                    /_/
      Cap-Captcha
    10.98.0.156
       ______                                      _ __           _____           _       __
      / ____/___  ____ ___  ____ ___  __  ______  (_) /___  __   / ___/__________(_)___  / /______
     / /   / __ \/ __ `__ \/ __ `__ \/ / / / __ \/ / __/ / / /   \__ \/ ___/ ___/ / __ \/ __/ ___/
    / /___/ /_/ / / / / / / / / / / / /_/ / / / / / /_/ /_/ /   ___/ / /__/ /  / / /_/ / /_(__  )
    \____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ /_/_/\__/\__, /   /____/\___/_/  /_/ .___/\__/____/
                                                     /____/                    /_/
      Cap-Captcha
      ⏳   Checking for update: cap-captcha
      ✔️  No update available: cap-captcha (capd@4.0.14)
    

    Full logs: workflow run (artifacts result-*). Comment /test cap-captcha to build again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions