{"id":18436058,"url":"https://github.com/codenotary/immuproof","last_synced_at":"2025-04-07T20:32:31.933Z","repository":{"id":38312366,"uuid":"468825263","full_name":"codenotary/immuproof","owner":"codenotary","description":null,"archived":false,"fork":false,"pushed_at":"2023-03-14T23:54:22.000Z","size":9565,"stargazers_count":5,"open_issues_count":16,"forks_count":0,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-05T20:33:14.843Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codenotary.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":"audit/simpleAuditor.go","citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-11T16:34:57.000Z","updated_at":"2023-04-24T12:44:48.000Z","dependencies_parsed_at":"2024-06-19T23:05:15.850Z","dependency_job_id":null,"html_url":"https://github.com/codenotary/immuproof","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenotary%2Fimmuproof","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenotary%2Fimmuproof/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenotary%2Fimmuproof/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenotary%2Fimmuproof/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codenotary","download_url":"https://codeload.github.com/codenotary/immuproof/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247725562,"owners_count":20985724,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T06:10:13.129Z","updated_at":"2025-04-07T20:32:31.072Z","avatar_url":"https://github.com/codenotary.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Immuproof\n\n[![Coverage Status](https://coveralls.io/repos/github/codenotary/immuproof/badge.svg)](https://coveralls.io/github/codenotary/immuproof)\n\nCAS Validation Service.\n\n\u003cimg align=\"right\" src=\"https://cas.codenotary.com/images/logo-cas.svg\" width=\"256px\"/\u003e\n\nWhen immuproof is launched it fetches a fresh status from [immudb](https://github.com/codenotary/immudb) the immutable database [CAS](https://cas.codenotary.com) is build on and it verifies the integrity compared to an older one stored locally.\nThe validation service checks if the previous state is \"included\" in the new state of immudb.\nA REST service is also provided to allow the user to query the status of the validation as well as a Web UI to visualize data.\n\n## Public CAS validator URLs\n\nHere you can find the public CAS validators:\n\n[Codenotary](https://cas-validator.codenotary.com)\n\n[AlmaLinux](https://cas-validator.almalinux.org)\n\n[Home Assistant](https://cas-validator.home-assistant.io)\n\n\n## Golang version\n\nCurrently supported Go version is `1.17`\n\n## Build\n\n```shell\ngo build -o immuproof main.go\n```\n\n## Usage\n\nLocal environment\n\n```shell\nimmuproof serve --api-key {your CAS api key} --port 3324 --no-tls\n```\n\nCAS environment\n\n```shell\nimmuproof serve --api-key {your CAS api key} --port 443 --host cas.codenotary.com \n```\n\n## Usage with docker\n\n```shell\ndocker pull codenotary/immuproof:latest\ndocker run -p 8091:8091 codenotary/immuproof serve --api-key {your api key} --port 443 --host cas.codenotary.com --audit-interval 1h --state-history-size 72\n```\n\nIn order to keep the audit history and [immudb](https://github.com/codenotary/immudb) status file it's recommended to run the service with a mounted volume inside the docker container using following flags:\n\n```shell\n--audit-state-folder={mountpoint inside container}\n--state-history-file={mountpoint inside container/filename}\n```\n\nor environment variables:\n\n```shell\nIMMUPROOF_AUDIT_STATE_FOLDER={mountpoint inside container}\nIMMUPROOF_STATE_HISTORY_FILE={mountpoint inside container/filename}\n```\n\n## HTTPS\n\nFollowing commands can be used to generate a self-signed certificate for the local server.\n\n```shell\nopenssl ecparam -genkey -name secp384r1 -out server.key\nopenssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650\n```\n\nLaunch immuproof with the generated certificate:\n\n```shell\nimmuproof serve --api-key {your CAS api key} --port 443 --host cas.codenotary.com --audit-interval 1s --state-history-size 72 --web-cert-file server.crt --web-key-file server.key\n```\n\n## Environment variables\n```shell\n  IMMUPROOF_API_KEY=\n  IMMUPROOF_PORT=\n  IMMUPROOF_HOST=\n  IMMUPROOF_SKIP_TLS_VERIFY=\n  IMMUPROOF_NO_TLS=\n  IMMUPROOF_CERT=\n  IMMUPROOF_HOST=\n  IMMUPROOF_AUDIT_INTERVAL=\n  IMMUPROOF_AUDIT_STATE_FOLDER=\n  IMMUPROOF_STATE_HISTORY_SIZE=\n  IMMUPROOF_STATE_HISTORY_FILE=\n  IMMUPROOF_WEB_PORT=\n  IMMUPROOF_WEB_ADDRESS=\n  IMMUPROOF_WEB_KEY_FILE=\n  IMMUPROOF_WEB_CERT_FILE=\n  IMMUPROOF_WEB_TITLE_TEXT=\n  IMMUPROOF_WEB_HOSTED_BY_LOGO_URL=\n  IMMUPROOF_WEB_HOSTED_BY_LOGO_LINK=\n  IMMUPROOF_WEB_HOSTED_BY_TEXT=\n```\n\n## Others serve options\n\n```yaml\nAudit a ledger and launch an HTTP rest server to show audit results.\n\nEg:\n# Collect 3 days of status checks (1 per hour) from CAS server\n  immuproof serve --api-key {your CAS api-key} --port 443 --host cas.codenotary.com --audit-interval 1h --state-history-size 72\n\nUsage:\n  immuproof serve [flags]\n\nFlags:\n  --audit-interval duration          interval between audit runs (default 1h0m0s)\n  --audit-state-folder string        folder to store immudb immutable state (default \"HOME/.local/state/immuproof\")\n  -h, --help                         help for serve\n  --state-history-file string        absolute file path to store history of immutable states. (JSON format) (default \"HOME/.local/state/immuproof/state-history.json\")\n  --state-history-size int           max size of the history of immutable states. (default 90)\n  --web-address string               rest server address (default \"localhost\")\n  --web-cert-file string             certificate file absolute path\n  --web-hosted-by-logo-link string   link for hosted by logo\n  --web-hosted-by-logo-url string    URL to hosted by logo\n  --web-hosted-by-text string        displayed subtitle for hosted by logo (default \"Hosted by:\")\n  --web-key-file string              key file absolute path\n  --web-port string                  rest server port (default \"8091\")\n  --web-title-text string            displayed title text (default \"COMMUNITY ATTESTATION SERVICE VALIDATOR\")\n\nGlobal Flags:\n  --api-key strings   CAS api-keys. Can be specified multiple times. First key is used for signing. For each key provided related ledger is audit. If no key is provided, no audit is performed\n  --cert string       local or absolute path to a certificate file needed to set up tls connection to a CAS server\n  --config string     config file (default is /root/.config/immuproof/.immuproof.yaml) (default \"HOME/.config/immuproof\")\n  -a, --host string       CAS server host address (default \"localhost\")\n  --no-tls            allow insecure connections when connecting to a CAS server\n  -p, --port int          CAS server port number (default 443)\n  --skip-tls-verify   disables tls certificate verification when connecting to a CAS server\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodenotary%2Fimmuproof","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodenotary%2Fimmuproof","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodenotary%2Fimmuproof/lists"}