{"id":13421752,"url":"https://github.com/freedomofpress/securedrop","last_synced_at":"2026-10-18T20:23:37.157Z","repository":{"id":2207853,"uuid":"3156820","full_name":"freedomofpress/securedrop","owner":"freedomofpress","description":"GitHub repository for the SecureDrop whistleblower platform. Do not submit tips here!","archived":false,"fork":false,"pushed_at":"2026-10-13T14:52:23.000Z","size":113386,"stargazers_count":3888,"open_issues_count":475,"forks_count":726,"subscribers_count":134,"default_branch":"develop","last_synced_at":"2026-10-14T07:40:38.375Z","etag":null,"topics":["flask-application","hacktoberfest","journalism","python","securedrop","whistleblowing"],"latest_commit_sha":null,"homepage":"https://securedrop.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/freedomofpress.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2012-01-11T19:57:55.000Z","updated_at":"2026-10-14T07:28:18.000Z","dependencies_parsed_at":"2026-08-13T16:29:43.636Z","dependency_job_id":null,"html_url":"https://github.com/freedomofpress/securedrop","commit_stats":{"total_commits":9400,"total_committers":266,"mean_commits":"35.338345864661655","dds":0.8451063829787234,"last_synced_commit":"417fc935c8fa425cc40d3b65f65ff9328d02ba6a"},"previous_names":[],"tags_count":217,"template":false,"template_full_name":null,"purl":"pkg:github/freedomofpress/securedrop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freedomofpress%2Fsecuredrop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freedomofpress%2Fsecuredrop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freedomofpress%2Fsecuredrop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freedomofpress%2Fsecuredrop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/freedomofpress","download_url":"https://codeload.github.com/freedomofpress/securedrop/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freedomofpress%2Fsecuredrop/sbom","scorecard":{"id":410662,"data":{"date":"2025-08-11","repo":{"name":"github.com/freedomofpress/securedrop","commit":"944cb3399772503b87279a0880c39548677af426"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.6,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 22 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/cargo-vet.yml:1","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/demo.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/dependency-review.yml:5","Warn: no topLevel permission defined: .github/workflows/security.yml:1","Warn: no topLevel permission defined: .github/workflows/staging.yml:1","Warn: no topLevel permission defined: .github/workflows/translation.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/build.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/build.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/build.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/build.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cargo-vet.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/cargo-vet.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cargo-vet.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/cargo-vet.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:106: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:125: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:142: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/ci.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/demo.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/demo.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dependency-review.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/dependency-review.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dependency-review.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/dependency-review.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/security.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/security.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/security.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/security.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/security.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/security.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/staging.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/staging.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/translation.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/translation.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/translation.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/translation.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/translation.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/freedomofpress/securedrop/translation.yml/develop?enable=pin","Warn: containerImage not pinned by hash: builder/Dockerfile:2","Warn: containerImage not pinned by hash: securedrop/dockerfiles/focal/python3/DemoDockerfile:2","Warn: containerImage not pinned by hash: securedrop/dockerfiles/focal/python3/Dockerfile:2","Warn: containerImage not pinned by hash: securedrop/dockerfiles/focal/python3/SlimDockerfile:2","Warn: npmCommand not pinned by hash: securedrop/dockerfiles/focal/python3/Dockerfile:4-14","Warn: pipCommand not pinned by hash: securedrop/bin/dev-deps:192","Warn: pipCommand not pinned by hash: securedrop/debian/translations.sh:8","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/security.yml:33","Info:   0 out of  23 GitHub-owned GitHubAction dependencies pinned","Info:   2 out of   6 containerImage dependencies pinned","Info:   9 out of  15 pipCommand dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":5,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'develop'","Info: 'force pushes' disabled on branch 'develop'","Info: 'branch protection settings apply to administrators' is required to merge on branch 'develop'","Info: 'stale review dismissal' is required to merge on branch 'develop'","Warn: required approving review count is 1 on branch 'develop'","Info: codeowner review is required on branch 'develop'","Info: 'last push approval' is required to merge on branch 'develop'","Warn: 'up-to-date branches' is disabled on branch 'develop'","Info: status check found to merge onto on branch 'develop'","Info: PRs are required in order to make changes on branch 'develop'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"33 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-42986 / GHSA-43fp-rhv2-5gv8","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: PYSEC-2024-187 / GHSA-rqc4-2hc7-8c8v","Warn: Project is vulnerable to: PYSEC-2020-220","Warn: Project is vulnerable to: GHSA-32p4-gm2c-wmch","Warn: Project is vulnerable to: GHSA-99w6-3xph-cx78","Warn: Project is vulnerable to: GHSA-jpxc-vmjf-9fcj","Warn: Project is vulnerable to: GHSA-3ww4-gg4f-jr7f","Warn: Project is vulnerable to: PYSEC-2024-225 / GHSA-6vqw-3v5j-54x4","Warn: Project is vulnerable to: GHSA-9v9h-cgj8-h64p","Warn: Project is vulnerable to: GHSA-h4gh-qq45-vh27","Warn: Project is vulnerable to: GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cpx3-93w7-457x","Warn: Project is vulnerable to: GHSA-jpvw-p8pr-9g2x","Warn: Project is vulnerable to: GHSA-7j69-qfc3-2fq9","Warn: Project is vulnerable to: PYSEC-2024-36 / GHSA-h24r-m9qc-pvpg","Warn: Project is vulnerable to: GHSA-ww3m-ffrm-qvqv","Warn: Project is vulnerable to: GHSA-3rq5-2g8h-59hc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: GHSA-8qf3-x8v5-2pj8","Warn: Project is vulnerable to: PYSEC-2023-62 / GHSA-m2qf-hxjv-5gpq","Warn: Project is vulnerable to: GHSA-2g68-c3qc-8985","Warn: Project is vulnerable to: GHSA-f9vj-2wh5-fj8j","Warn: Project is vulnerable to: PYSEC-2023-221 / GHSA-hrfv-mqp8-q5rw","Warn: Project is vulnerable to: GHSA-q34m-jh98-gwm2","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T22:37:58.992Z","repository_id":2207853,"created_at":"2025-08-18T22:37:58.992Z","updated_at":"2025-08-18T22:37:58.992Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38341187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-18T02:00:06.448Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["flask-application","hacktoberfest","journalism","python","securedrop","whistleblowing"],"created_at":"2024-07-30T23:00:29.506Z","updated_at":"2026-10-18T20:23:37.149Z","avatar_url":"https://github.com/freedomofpress.png","language":"Python","funding_links":[],"categories":["\u003ca id=\"tag-communication\" href=\"#tag-communication\"\u003eCommunication\u003c/a\u003e","Python","Projects","Uncategorized","Built with Flask","介绍"],"sub_categories":["Open Source Projects","Uncategorized"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"/securedrop/static/i/logo.png\" alt=\"SecureDrop\" width=\"350\" height=\"314\"\u003e\n\u003c/p\u003e\n\n\u003e [There are many ways to contribute to SecureDrop, and we welcome your help!](CONTRIBUTING.md) By contributing to this project, you agree to abide by our [Code of Conduct](https://github.com/freedomofpress/.github/blob/main/CODE_OF_CONDUCT.md).\n\n[![Translation status](https://weblate.securedrop.org/widgets/securedrop/-/svg-badge.svg)](https://weblate.securedrop.org)\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/freedomofpress/securedrop)\n\n\nSecureDrop is an open-source whistleblower submission system that media organizations can use to securely accept documents from, and communicate with anonymous sources. It was originally created by the late Aaron Swartz and is currently managed by the [Freedom of the Press Foundation](https://freedom.press).\n\n## Project status\n\nSecureDrop is a stable, mature project that is actively in use in newsrooms across the globe. Most feature development efforts are focused towards the [SecureDrop Workstation](https://github.com/freedomofpress/securedrop-workstation/),\n[SecureDrop Client](https://github.com/freedomofpress/securedrop-client), and [SecureDrop Protocol](https://github.com/freedomofpress/securedrop-protocol); see the \"[Future directions for SecureDrop](https://securedrop.org/news/future-directions-for-securedrop/)\" blog post for more information.\n\nSecureDrop continues to receive security and bug fixes in the meantime.\n\n## Documentation\n\nSecureDrop's end user documentation is hosted at https://docs.securedrop.org. It is maintained in a standalone repository: https://github.com/freedomofpress/securedrop-docs.\n\nBy default, the documentation describes the most recent SecureDrop release. This is known as the **stable** version and is recommended for end users (Sources, Journalists, or Administrators). The **latest** documentation is automatically built from the most recent commit to the SecureDrop documentation repository. It is most useful for developers and contributors to the project. You can switch between versions of the documentation by using the toolbar in the bottom left corner of the Read the Docs screen.\n\nDeveloper documentation can be found at https://developers.securedrop.org/, maintained in\nhttps://github.com/freedomofpress/securedrop-dev-docs/.\n\n## Found an issue?\n\nIf you're here because you want to report an issue in SecureDrop, please observe the following protocol to do so responsibly:\n\n* If you want to report a **_security issue_**, please use our [bug bounty hosted by Bugcrowd](https://bugcrowd.com/freedomofpress).\n* If filing the issue does not impact security, just create a [GitHub Issue](https://github.com/freedomofpress/securedrop/issues/new).\n\n## How to Install SecureDrop\n\nSee the [Installation Guide](https://docs.securedrop.org/en/stable/#installtoc).\n\n## How to Use SecureDrop\n\n* [As a source](https://docs.securedrop.org/en/stable/source.html)\n* [As a journalist](https://docs.securedrop.org/en/stable/journalist.html)\n\n## How to Contribute to SecureDrop\n\nSee our [contribution page](CONTRIBUTING.md).\n\n## Developer Quickstart\n\nTo run SecureDrop locally, ensure you have Docker installed before proceeding any further.\n\n### Linux (CentOS/Debian/Fedora/RHEL/Ubuntu)\n\n* Follow the [official Docker Engine documentation](https://docs.docker.com/engine/install/) to install **Docker Engine**.\n\n\u003e [!TIP]\n\u003e It's also possible to use _Docker Desktop_ on Linux, if you want to. Follow the steps to install [Docker Desktop for Linux](https://docs.docker.com/desktop/setup/install/linux/) then.\n\n### Windows/MacOS\n\n* If you are using Windows or MacOS follow the [official Docker Desktop documentation](https://docs.docker.com/get-started/get-docker/) to install **Docker Desktop**.\n\nOnce you have Docker up and running, run:\n\n```\nmake dev\n```\n\nThis will start the source interface on `127.0.0.1:8080` and the journalist interface on `127.0.0.1:8081`. The credentials to login are printed in the Terminal. To login to the journalist interface, you must also [generate a two-factor code](https://developers.securedrop.org/en/latest/setup_development.html#credentials).\n\nTo provision a Python 3 virtual environment for development:\n\n```\nmake venv \u0026\u0026 source ./venv/bin/activate\n```\n\n## License\n\nSecureDrop is open source and released under the [GNU Affero General Public License v3](/LICENSE).\n\n## Wordlists\n\nThe wordlist we use to generate source passphrases come from various sources:\n\n* [en.txt](/securedrop/wordlists/en.txt) is based off a new [Diceware wordlist](https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases) from the EFF.\n* [fr.txt](/securedrop/wordlists/fr.txt) is based off Matthieu Weber's [translated diceware list](http://weber.fi.eu.org/index.shtml.en) and the French word list found in [trezor/python-mnemonic](https://github.com/trezor/python-mnemonic/blob/161bec3351dce9c439cd00dc0beaaf09e7906ff8/src/mnemonic/wordlist/french.txt) (MIT licensed).\n\n\n## Acknowledgments\n\nA huge thank you to all SecureDrop contributors! You can find a list of code and documentation contributors in the [\"Contributors\"](https://github.com/freedomofpress/securedrop/graphs/contributors) tab on GitHub. SecureDrop is translated into many languages by a community of volunteers; please [see our Weblate instance for details](https://weblate.securedrop.org/projects/securedrop/#information). Thanks to our friends at PyUp for sponsoring a subscription to their [Python security database](https://pyup.io).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreedomofpress%2Fsecuredrop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreedomofpress%2Fsecuredrop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreedomofpress%2Fsecuredrop/lists"}