Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - Secrover/Secrover: Open-source security reports โ€” no paywalls, just actionable insights.
Nothing Special   »   [go: up one dir, main page]

Skip to content

Secrover/Secrover

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Secrover

Secrover is a free and open-source tool that generates clear, professional security audit reports โ€” without paywalls or proprietary SaaS. Just useful insights you can trust and share.

Secrover

GitHub last commit Docker Pulls Docker Stars

๐Ÿ” Features

  • ๐Ÿ”’ Security Audits: Scans your dependencies, code, and domains to find vulnerabilities.
  • ๐Ÿง  Human-readable Reports: Clear, actionable reports โ€” even for non-technical audiences.
  • โšก Easy Setup & Automation: Configure with a simple YAML file, schedule recurring scans via built-in cron, or run automatically using GitHub Actions.
  • ๐Ÿ“ค Remote Export: Upload reports to SFTP, WebDAV, SMB, S3, or Google Drive.
  • ๐Ÿ’ป Cross-platform: Works on Linux, macOS, and Windows.
  • ๐ŸŒŸ Actively Maintained: Continuously improved with new features and workflow enhancements.

Audits

Category Checks Supported languages
Dependencies Vulnerability check All languages supported by osv-scanner
Code Static check All languages supported by opengrep
Domains SSL certificate, HTTPโ†’HTTPS Redirect, HSTS header, TLS versions, Open Ports, Security Headers, Hosting Location -

Screenshots

Dependencies Audit Code Audit Domains Audit
Dependencies Audit Code Audit Domains Audit

Demo

You can see Secrover in action right now:

How the demo works

The demo repository uses GitHub Actions to automatically:

  1. Pull the latest version of Secrover (via Docker).
  2. Run security scans on Secrover repositories and domains.
  3. Generate an HTML security report.
  4. Deploy the report to GitHub Pages, making it publicly accessible.

This setup is ideal for publicly sharing reports, for example on GitHub Pages or a public website.

โžก๏ธ You can copy the workflow from the demo repositoryโ€™s .github/workflows/secrover.yml to get started quickly.

Flexible Deployment Options

Secrover is not limited to GitHub Actions โ€” you can also export reports to any remote destination (SFTP, WebDAV, SMB, S3, Google Drive, etc.) using rclone, making them automatically available on internal servers, intranet sites, cloud storage, or backup locations.

This flexibility ensures that whether you want public reporting or private/internal hosting, Secrover can fit your workflow.

Getting Started

Secrover is designed to be simple: configure what you want to scan, then run it with Docker. Within minutes, youโ€™ll have a professional HTML security report you can share.

Create a new folder/repo with a config.yaml file inside where you will list your repositories and domains to scan.

Example:

project:
  name: My project
domains:
  - my-domain.com
  - subdomain.my-domain.com
repos:
  - url: https://github.com/your-org/your-repo
    description: "Short description of the project"
    branch: "main"

  - url: https://github.com/your-org/another-repo
    description: "Another awesome project"

Accessing Private Repositories

Secrover supports cloning private repositories via HTTPS using a GitHub Personal Access Token (PAT).

We currently support HTTPS only (SSH is not yet supported).

1. Create a GitHub Personal Access Token
  • Go to your GitHub account
  • Click "Generate new token" (fine-grained)
  • Give it a name like Secrover
  • Choose "Only select repositories" and select the private repos Secrover needs to clone
    • Under Repository permissions, grant:
      • Contents: Read-only
  • Generate and copy the token
2. Create a .env file

In the same directory as your config.yaml, create a .env file:

GITHUB_TOKEN=yourgeneratedtokenhere

โš ๏ธ Do not share this file or commit it to version control. Add .env to your .gitignore file to prevent accidental leaks.

Install & run with Docker

You can run Secrover easily using Docker without installing any local dependencies.

One-Time Scan (on-demand)

From the folder where your config.yaml (and optionally .env) lives, run:

docker run -it --rm \
  --env-file .env \
  -v "$(PWD)/config.yaml:/config.yaml" \
  -v "$(PWD)/output:/output" \
  secrover/secrover

๐Ÿ’ก If youโ€™re only scanning public repositories or do not need to change default settings, the --env-file .env flag is optional.

What happens:

  • Secrover read the list of repositories and domains from your config.yaml
  • It clones repositories, scan them, as well as your domains
  • It generates a full HTML security report into the output/ folder

Automated Scans (Cron Mode)

Secrover also supports automatic recurring scans using an internal cron scheduler (via Supercronic).

You can schedule scans to run periodically inside the container โ€” ideal for servers, NAS setups, ...

Example: Run every day at midnight

docker run -it --rm \
  -v "$(PWD)/config.yaml:/config.yaml" \
  -v "$(PWD)/output:/output" \
  -e CRON_SCHEDULE="0 0 * * *" \
  secrover/secrover

What happens:

  • Secrover starts Supercronic in the background
  • It executes a new scan based on the chosen schedule
  • By default, results are written to /output and logs to /output/secrover.log

Exporting Reports (Optional)

Secrover can upload generated reports to remote destinations (SFTP, WebDAV, SMB, S3, etc.) via rclone.

For setup instructions and advanced options, see EXPORT.md.

Environment Variables Reference

Variable Required Default Description
CONFIG_FILE โœ… /config.yaml Path to your YAML configuration inside the container.
OUTPUT_DIR โœ… /output Directory where reports and logs are saved.
REPOS_DIR โœ… repos/ Directory where git repos are cloned.
GITHUB_TOKEN โŒ - Used to clone private GitHub repositories over HTTPS.
CRON_SCHEDULE โŒ - Optional cron expression to schedule recurring scans
EXPORT_ENABLED โŒ false Enable exporting reports to remote destinations using rclone.
RCLONE_REMOTES โŒ - Comma-separated list of rclone remote names (from rclone.conf) to upload reports to.
RCLONE_PATH โŒ /secrover-reports/ Path on the remote(s) where reports should be uploaded. Supports timestamp expansion using $(date +FORMAT)
IP2LOCATION_DB_PATH โŒ data/IP2Location/ Path to the IP2Location database file used for resolving country information from IP addresses.

All variables can be defined in your .env file or passed directly using -e flags when running the container. For example:

-e CONFIG_FILE=/config.yaml -e OUTPUT_DIR=/output

is equivalent to having them set in your .env file.

Thanks and Acknowledgments

This project benefits from the fantastic work of several open-source projects:

A big thanks to all the maintainers and contributors behind these amazing projects, without whom this project wouldn't be possible!

License

Secrover is released under the GNU General Public License v3.0 (GPL-3.0).

๐Ÿ‘‰ Read the full license here

Stargazers over time

Stargazers over time

About

Open-source security reports โ€” no paywalls, just actionable insights.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 2

  •  
  •  
0