{"id":32332,"date":"2026-07-27T08:00:00","date_gmt":"2026-07-27T06:00:00","guid":{"rendered":"https:\/\/contabo.com\/blog\/?p=32332"},"modified":"2026-07-26T20:46:35","modified_gmt":"2026-07-26T18:46:35","slug":"self-host-strix-pentest-vps","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/self-host-strix-pentest-vps\/","title":{"rendered":"How to Self-Host Strix AI Pentesting Tool on a VPS\u00a0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Strix is an open-source AI penetration testing framework with over 39,000 GitHub stars. It deploys autonomous agents to scan web applications, validate vulnerabilities with working exploits, and produce remediation reports. This guide covers self-hosting Strix on a Contabo VPS 8 \u2014 only ever test systems you own or have explicit written permission to assess.&nbsp;<\/p>\n\n\n\n<h2 id=\"h-article-type-how-to-tutorial-nbsp\" class=\"wp-block-heading\">ARTICLE TYPE: How-to \/ Tutorial&nbsp;<\/h2>\n\n\n\n<h2 id=\"h-responsible-use-notice-nbsp\" class=\"wp-block-heading\">\u26a0\ufe0f Responsible Use Notice&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Only test systems you own or have explicit written permission to test. Self-hosting Strix on a VPS does not grant any right to scan third-party websites, APIs, or networks. Running unauthorized scans against systems outside your control can violate computer misuse laws in most jurisdictions, regardless of intent or configuration. Before any engagement, confirm the authorized scope and, where possible, obtain written permission.&nbsp;<\/p>\n\n\n\n<h2 id=\"h-what-is-strix-nbsp\" class=\"wp-block-heading\">What Is Strix?&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Strix is an AI pentest framework built around autonomous agents that behave like real attackers rather than static rule engines. Its agents execute the target application dynamically, attempt real exploitation paths, and confirm each finding with a working proof of concept before it reaches the report. Coverage spans the OWASP Top 10 and beyond, including SQL and NoSQL injection, broken access control, SSRF, insecure deserialization, JWT manipulation, and server-side template injection. The project is open source under the Apache 2.0 license; all agent actions run inside isolated Docker sandboxes.&nbsp;<\/p>\n\n\n\n<h2 id=\"h-requirements-nbsp\" class=\"wp-block-heading\">Requirements&nbsp;<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Contabo VPS 8 (8 vCores, 24 GB RAM) running Ubuntu \u2014 provides enough headroom for concurrent agent processes and sandbox containers without resource contention.\u00a0<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Docker and the Docker Compose plugin installed and running.\u00a0<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A safe, isolated test target that you own or are explicitly authorized to assess. Never point a scan at production infrastructure without written permission.\u00a0<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An API key from a supported LLM provider (OpenAI, Anthropic, or Google) for AI-driven reconnaissance, exploitation planning, and report generation.\u00a0<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Basic comfort with the Linux command line \u2014 the entire workflow happens over SSH.\u00a0<\/li>\n<\/ul>\n\n\n\n<h2 id=\"h-step-1-provision-vps-and-install-docker-nbsp\" class=\"wp-block-heading\">Step 1 \u2014 Provision VPS and Install Docker&nbsp;<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Order a Contabo VPS 8 through the Contabo customer panel, selecting Ubuntu as the operating system during setup.\u00a0<\/li>\n<\/ol>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Connect over SSH using key-based authentication. Disable password authentication in \/etc\/ssh\/sshd_config (set PasswordAuthentication no) and restart the SSH service once key-based login is confirmed working.\u00a0<\/li>\n<\/ol>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Configure UFW to restrict inbound traffic to SSH only: run ufw allow OpenSSH, then ufw enable. Open additional ports deliberately and only when needed.\u00a0<\/li>\n<\/ol>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Install Docker and the Docker Compose plugin. Confirm the daemon is active with systemctl status docker, then add your user to the docker group so containers can be managed without sudo.\u00a0<\/li>\n<\/ol>\n\n\n\n<h2 id=\"h-step-2-deploy-strix-with-docker-compose-nbsp\" class=\"wp-block-heading\">Step 2 \u2014 Deploy Strix with Docker Compose&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Run the official Strix installer, then set the environment variables for your LLM provider:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -sSL https:\/\/strix.ai\/install | bash\u00a0\n\nexport STRIX_LLM=\"anthropic\/claude-sonnet-4-6\"\u00a0\n\nexport LLM_API_KEY=\"your-api-key\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Strix saves this configuration to ~\/.strix\/cli-config.json after the first run. The first CLI invocation also pulls the sandbox Docker image that isolates all agent activity from the host. To use a local model, point LLM_API_BASE at a self-hosted endpoint such as Ollama or LMStudio \u2014 though hosted models generally produce more consistent results for complex exploitation chains.&nbsp;<\/p>\n\n\n\n<h2 id=\"h-step-3-configure-a-test-target-nbsp\" class=\"wp-block-heading\">Step 3 \u2014 Configure a Test Target&nbsp;<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Pull and run the Damn Vulnerable Web App (DVWA) container on the same VPS: docker run -d -p 8080:80 vulnerables\/web-dvwa\u00a0<\/li>\n<\/ol>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Confirm DVWA is reachable by visiting the VPS IP address on port 8080 in a browser and completing the initial database setup screen, which initializes the vulnerable backend.\u00a0<\/li>\n<\/ol>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Note the target address \u2014 for example, http:\/\/127.0.0.1:8080 for local testing \u2014 as this is the value passed to Strix in the scan command.\u00a0<\/li>\n<\/ol>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Optionally adjust DVWA&#8217;s built-in security level to compare how thoroughly Strix works through partially mitigated versus fully open vulnerabilities.\u00a0<\/li>\n<\/ol>\n\n\n\n<h2 id=\"h-step-4-run-a-scan-and-read-the-report-nbsp\" class=\"wp-block-heading\">Step 4 \u2014 Run a Scan and Read the Report&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Trigger a scan from the CLI:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>strix -n --target http:\/\/127.0.0.1:8080 \\\u00a0\n\n\u00a0 --instruction \"Focus on DVWA's known vulnerability categories including SQL injection, XSS, and command injection\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The -n flag runs Strix in non-interactive mode \u2014 suitable for SSH sessions \u2014 printing findings in real time and exiting with a non-zero status code if vulnerabilities are confirmed. Full results are saved under strix_runs\/&lt;run-name&gt; on the server. Each finding includes a CVSS score, a working proof of concept, and plain-language remediation guidance. Triage by CVSS score first: higher scores point to greater potential impact (such as unauthenticated remote code execution or full authentication bypass), while lower scores typically correspond to informational issues requiring unusual conditions to exploit.&nbsp;<\/p>\n\n\n\n<h2 id=\"h-step-5-integrate-with-ci-cd-optional-nbsp\" class=\"wp-block-heading\">Step 5 \u2014 Integrate with CI\/CD (Optional)&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Add a GitHub Actions workflow to run a Strix scan automatically on every pull request and gate merges on critical findings:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>name: strix-penetration-test\u00a0\n\non:\u00a0\n\n\u00a0 pull_request:\u00a0\n\njobs:\u00a0\n\n\u00a0 security-scan:\u00a0\n\n\u00a0\u00a0\u00a0 runs-on: ubuntu-latest\u00a0\n\n\u00a0\u00a0\u00a0 steps:\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0 - uses: actions\/checkout@v6\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 with:\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fetch-depth: 0\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0 - name: Install Strix\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 run: curl -sSL https:\/\/strix.ai\/install | bash\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0 - name: Run Strix\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 env:\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 STRIX_LLM: ${{ secrets.STRIX_LLM }}\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LLM_API_KEY: ${{ secrets.LLM_API_KEY }}\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 run: strix -n -t .\/ --scan-mode quick<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The fetch-depth: 0 setting gives Strix access to the full git history so quick scans target only the files changed in a given pull request rather than re-scanning the entire codebase. Because the workflow exits with a non-zero code when vulnerabilities are found, it can block a PR from merging until critical findings are addressed.&nbsp;<\/p>\n\n\n\n<h2 id=\"h-faq-running-strix-on-a-vps\" class=\"wp-block-heading\">FAQ: Running Strix on a VPS<\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1785091485724\"><strong class=\"schema-faq-question\">Is Strix legal to use?\u00a0<\/strong> <p class=\"schema-faq-answer\">Strix itself is legal, open-source software \u2014 using it carries no legal risk on its own. What determines legality is how it is pointed and at what. Running a scan against systems you own, or covered by explicit written permission from the owner, is standard security practice. Scanning systems outside that scope \u2014 including third-party websites, client infrastructure without a signed agreement, or shared environments where authorization is unclear \u2014 can violate computer misuse laws regardless of the tool or intent.\u00a0<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1785091491484\"><strong class=\"schema-faq-question\">What does Strix pentest tool find?\u00a0<\/strong> <p class=\"schema-faq-answer\">Strix identifies and validates vulnerabilities across the OWASP Top 10 and beyond: SQL and NoSQL injection, server-side request forgery, insecure deserialization, remote code execution, broken access control (privilege escalation, insecure direct object references), authentication and session flaws (JWT attacks, session fixation), and business logic issues such as race conditions and payment manipulation. Each finding includes a working proof of concept and reproduction steps, not a theoretical alert requiring further manual verification.\u00a0<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1785091497131\"><strong class=\"schema-faq-question\">How much RAM does Strix need?\u00a0<\/strong> <p class=\"schema-faq-answer\">Strix does not publish a strict minimum RAM requirement. Practically, running its AI agent workloads comfortably requires enough memory to run Docker sandbox containers alongside LLM-driven agent processes without contention \u2014 especially when a scan branches into parallel recon and exploitation tasks. A VPS in the 8\u201324 GB RAM range, such as the Contabo VPS 8 used in this guide, provides comfortable headroom for concurrent scans against larger, more complex targets.\u00a0<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1785091503026\"><strong class=\"schema-faq-question\">Can Strix test APIs, not just web apps?\u00a0<\/strong> <p class=\"schema-faq-answer\">Yes. Strix supports API penetration testing directly, covering broken authentication, mass assignment vulnerabilities, and rate-limiting bypass. Pass an API endpoint as the scan target the same way you would a web application URL; Strix&#8217;s reconnaissance agents will map available routes and parameters before moving into exploitation attempts.\u00a0<\/p> <\/div> <\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Deploy Strix, the open-source AI penetration testing tool, on your own VPS. Step-by-step Docker setup, target configuration, and safe responsible-use guidance.<\/p>\n","protected":false},"author":50,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[18],"tags":[],"ppma_author":[1491],"class_list":["post-32332","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Tobias Mildenberger","author_link":"https:\/\/contabo.com\/blog\/author\/tobias\/"},"uagb_comment_info":0,"uagb_excerpt":"Deploy Strix, the open-source AI penetration testing tool, on your own VPS. Step-by-step Docker setup, target configuration, and safe responsible-use guidance.","authors":[{"term_id":1491,"user_id":50,"is_guest":0,"slug":"tobias","display_name":"Tobias Mildenberger","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/077178d5dce6c3d4c0c0396857a7e544bfdf8adf04145fff5160b33a22e28b1f?s=96&d=mm&r=g","author_category":"","user_url":"https:\/\/contabo.com\/en\/","last_name":"Mildenberger","first_name":"Tobias","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/posts\/32332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/users\/50"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/comments?post=32332"}],"version-history":[{"count":2,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/posts\/32332\/revisions"}],"predecessor-version":[{"id":32488,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/posts\/32332\/revisions\/32488"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/media?parent=32332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/categories?post=32332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/tags?post=32332"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=32332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}