mirror of
https://github.com/Anon-Planet/thgtoa.git
synced 2026-05-06 19:44:19 +02:00
Compare commits
4 Commits
1bb0acc3e8
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| f3cb57230f | |||
| 5e8057bb1f | |||
| ac3d2ceb37 | |||
| 5eded0af38 |
@@ -97,7 +97,7 @@ jobs:
|
|||||||
- name: 📤 Upload export directory as artifact
|
- name: 📤 Upload export directory as artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: export
|
name: upload pdf artifact
|
||||||
path: |
|
path: |
|
||||||
export/*
|
export/*
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
Welcome.
|
Welcome.
|
||||||
|
|
||||||
**[IMPORTANT RECOMMENDATION FOR UKRAINIANS. ВАЖЛИВА РЕКОМЕНДАЦІЯ ДЛЯ УКРАЇНЦІВ](briar.html)**
|
This is a guide with the aim of providing an introduction to various online tracking techniques, online ID verification techniques, and detailed guidance to creating and maintaining (truly) anonymous online identities. <span style="color: red">**It is written with hope for activists, journalists, scientists, lawyers, whistle-blowers, and good people being oppressed, censored, harassed anywhere!**</span> This guide has no affiliation with the [Anonymous](https://en.wikipedia.org/wiki/Anonymous_(hacker_group)) <sup>[[Wikiless]](https://wikiless.com/wiki/Anonymous_(hacker_group))</sup> <sup>[[Archive.org]](https://web.archive.org/web/https://en.wikipedia.org/wiki/Anonymous_(hacker_group))</sup> collective/movement.
|
||||||
|
|
||||||
This is a maintained guide with the aim of providing an introduction to various online tracking techniques, online ID verification techniques, and detailed guidance to creating and maintaining (truly) anonymous online identities. <span style="color: red">**It is written with hope for activists, journalists, scientists, lawyers, whistle-blowers, and good people being oppressed, censored, harassed anywhere!**</span> This guide has no affiliation with the [Anonymous](https://en.wikipedia.org/wiki/Anonymous_(hacker_group)) <sup>[[Wikiless]](https://wikiless.com/wiki/Anonymous_(hacker_group))</sup> <sup>[[Archive.org]](https://web.archive.org/web/https://en.wikipedia.org/wiki/Anonymous_(hacker_group))</sup> collective/movement.
|
|
||||||
|
|
||||||
This guide is an open-source non-profit initiative, [licensed](LICENSE.html) under **Creative Commons Attribution-NonCommercial 4.0 International** ([cc-by-nc-4.0](https://creativecommons.org/licenses/by-nc/4.0/) <sup>[[Archive.org]](https://web.archive.org/web/https://creativecommons.org/licenses/by-nc/4.0/)</sup>) and is **not sponsored/endorsed by any commercial/governmental entity**. This means that you are free to use our guide for pretty much any purpose **excluding commercially** as long as you do attribute it. There are no ads or any affiliate links.
|
This guide is an open-source non-profit initiative, [licensed](LICENSE.html) under **Creative Commons Attribution-NonCommercial 4.0 International** ([cc-by-nc-4.0](https://creativecommons.org/licenses/by-nc/4.0/) <sup>[[Archive.org]](https://web.archive.org/web/https://creativecommons.org/licenses/by-nc/4.0/)</sup>) and is **not sponsored/endorsed by any commercial/governmental entity**. This means that you are free to use our guide for pretty much any purpose **excluding commercially** as long as you do attribute it. There are no ads or any affiliate links.
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: "About Anonymous Planet"
|
title: "Anonymous Planet"
|
||||||
description: We are the maintainers of the Hitchhiker's Guide and the PSA Matrix space.
|
description: We are the maintainers of the Hitchhiker's Guide and the PSA Matrix space.
|
||||||
schema:
|
schema:
|
||||||
"@context": https://schema.org
|
"@context": https://schema.org
|
||||||
@@ -7,7 +7,7 @@ schema:
|
|||||||
"@id": https://www.anonymousplanet.org/
|
"@id": https://www.anonymousplanet.org/
|
||||||
name: Anonymous Planet
|
name: Anonymous Planet
|
||||||
url: https://www.anonymousplanet.org/about/
|
url: https://www.anonymousplanet.org/about/
|
||||||
logo: ../media/favicon.png
|
logo: ../media/profile.png
|
||||||
sameAs:
|
sameAs:
|
||||||
- https://github.com/Anon-Planet
|
- https://github.com/Anon-Planet
|
||||||
- https://opencollective.com/anonymousplanetorg
|
- https://opencollective.com/anonymousplanetorg
|
||||||
|
|||||||
+32
-31
@@ -1,68 +1,69 @@
|
|||||||
---
|
---
|
||||||
title: "TBA"
|
title: "Release Notes"
|
||||||
description: ""
|
description: "Release Notes"
|
||||||
schema:
|
schema:
|
||||||
"@context": https://schema.org
|
"@context": https://schema.org
|
||||||
"@type": Organization
|
"@type": Organization
|
||||||
"@id": https://www.anonymousplanet.org/
|
"@id": https://www.anonymousplanet.org/
|
||||||
name: Anonymous Planet
|
name: Anonymous Planet
|
||||||
url: https://www.anonymousplanet.org/authors/
|
url: https://www.anonymousplanet.org/authors/
|
||||||
logo: ../media/favicon.png
|
logo: ../media/profile.png
|
||||||
sameAs:
|
sameAs:
|
||||||
- https://github.com/Anon-Planet
|
- https://github.com/Anon-Planet
|
||||||
- https://opencollective.com/anonymousplanetorg
|
- https://opencollective.com/anonymousplanetorg
|
||||||
- https://mastodon.social/@anonymousplanet
|
- https://mastodon.social/@anonymousplanet
|
||||||
---
|
---
|
||||||
|
|
||||||
# Changelog
|
# Release Notes
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
### Added
|
!!! Note "Added"
|
||||||
|
|
||||||
- This changelog page
|
- This changelog page
|
||||||
- Add ways to verify the files
|
- Add ways to verify the files
|
||||||
|
|
||||||
### Changed
|
!!! Note "Changed"
|
||||||
|
|
||||||
- Refactored GitHub Actions workflow **Build PDF** (`scripts\build_guide_pdf.py`): now builds both light and dark mode PDFs (`export/thgtoa.pdf` and `export/thgtoa-dark.pdf` respectively).
|
- Refactored GitHub Actions workflow **Build PDF** (`scripts\build_guide_pdf.py`): now builds both light and dark mode PDFs
|
||||||
- Restored previous VT scans
|
- Restored previous VT scans
|
||||||
|
|
||||||
## Fixed
|
!!! Note "Fixed"
|
||||||
|
|
||||||
- `docs/about/index.md`: replace broken reference-style internal links
|
- `docs/about/index.md`: replace broken reference-style internal links
|
||||||
- `docs/guide/index.md`: Appendix A6: comment out deprecated ODT information because we don't and probably won't use it in the future
|
- `docs/guide/index.md`: Appendix A6: comment out deprecated ODT information because we don't and probably won't use it in the future
|
||||||
|
|
||||||
### Feature
|
!!! Note "Feature"
|
||||||
|
|
||||||
- Updated `scripts/build_guide_pdf.py` to use `--print-to-pdf` instead of `--save-as` for PDF generation, and added a new `--dark-mode` flag to generate dark mode PDFs. The script now supports generating both light and dark mode PDFs with a single command invocation by using the `--both` flag. This change improves the PDF generation process and provides better support for dark mode users. Save your eyes - you only get one pair.
|
- Updated `scripts/build_guide_pdf.py` to use `--print-to-pdf` instead of `--save-as` for PDF generation
|
||||||
|
- Added a new `--dark-mode` flag to generate dark mode PDFs. Save your eyes - you only get one pair.
|
||||||
|
|
||||||
## [1.2.1] - 2026-04-11
|
## [v1.2.1]
|
||||||
|
|
||||||
### Added
|
!!! Note "Added"
|
||||||
|
|
||||||
- GitHub Actions workflow **Build PDF** (`.github/workflows/build-pdf.yml`): installs Chromium on `ubuntu-latest`, runs `scripts/build_guide_pdf.py`, uploads `export/guide.pdf` as the `guide-pdf` artifact. Runs on `workflow_dispatch`, on pushes to `main` that touch docs or build inputs, and on matching pull requests.
|
- GitHub Actions workflow **Build PDF** (`.github/workflows/build-pdf.yml`): installs Chromium on `ubuntu-latest`, runs `scripts/build_guide_pdf.py`, uploads `export/guide.pdf` as the `guide-pdf` artifact. Runs on `workflow_dispatch`, on pushes to `main` that touch docs or build inputs, and on matching pull requests.
|
||||||
|
|
||||||
- `scripts/build_guide_pdf.py` to build the MkDocs site and render the guide to a single PDF (`export/guide.pdf` by default) using a Chromium-based browser (Chrome or Edge) headless print-to-PDF.
|
- `scripts/build_guide_pdf.py` to build the MkDocs site and render the guide to a single PDF (`export/guide.pdf` by default) using a Chromium-based browser (Chrome or Edge) headless print-to-PDF.
|
||||||
- `docs/stylesheets/extra.css` and `extra_css` in `mkdocs.yml` for shared site styling.
|
- `docs/stylesheets/extra.css` and `extra_css` in `mkdocs.yml` for shared site styling.
|
||||||
- This `CHANGELOG.md`.
|
- This `CHANGELOG.md`.
|
||||||
|
|
||||||
### Changed
|
!!! Note "Changed"
|
||||||
|
|
||||||
- `README.md` “Ways to read or export the guide”: hosted link, local `mkdocs serve`, PDF build via the script, ODT note, raw Markdown link.
|
- `README.md` “Ways to read or export the guide”: hosted link, local `mkdocs serve`, PDF build via the script, ODT note, raw Markdown link.
|
||||||
- Guide landing layout: wrap the opening block in `docs/guide/index.md` with a `guide-intro-lead` container so the logo and first sections share one layout context for web and print.
|
- Guide landing layout: wrap the opening block in `docs/guide/index.md` with a `guide-intro-lead` container so the logo and first sections share one layout context for web and print.
|
||||||
- `.gitignore` to exclude local build outputs `export/`, `site/`, and `_site_test/`.
|
- `.gitignore` to exclude local build outputs `export/`, `site/`, and `_site_test/`.
|
||||||
- `scripts/build_guide_pdf.py`: when the `CI` environment variable is set, pass Chromium flags (`--no-sandbox`, `--disable-setuid-sandbox`, `--disable-dev-shm-usage`) so headless print works on typical CI images.
|
- `scripts/build_guide_pdf.py`: when the `CI` environment variable is set, pass Chromium flags (`--no-sandbox`, `--disable-setuid-sandbox`, `--disable-dev-shm-usage`) so headless print works on typical CI images.
|
||||||
- `README.md`: note the **Build PDF** GitHub Actions workflow and the `guide-pdf` artifact.
|
- `README.md`: note the **Build PDF** GitHub Actions workflow and the `guide-pdf` artifact.
|
||||||
|
|
||||||
### Fixed
|
!!! Note "Fixed"
|
||||||
|
|
||||||
- `docs/guide/index.md`: replace broken reference-style internal links (`[label][label:]`) with working same-page fragment links to the correct headings; correct the mismatched “Real-Name System” cross-reference; fix a broken footnote marker on the “free (unallocated) space of your hard drive” list item.
|
- `docs/guide/index.md`: replace broken reference-style internal links (`[label][label:]`) with working same-page fragment links to the correct headings; correct the mismatched “Real-Name System” cross-reference; fix a broken footnote marker on the “free (unallocated) space of your hard drive” list item.
|
||||||
|
|
||||||
[Unreleased]: https://github.com/Anon-Planet/thgtoa/compare/v1.2.1...HEAD
|
[Unreleased]: https://github.com/Anon-Planet/thgtoa/compare/v1.2.1...HEAD
|
||||||
[1.2.1]: https://github.com/Anon-Planet/thgtoa/releases/tag/v1.2.1
|
[v1.2.1]: https://github.com/Anon-Planet/thgtoa/releases/tag/v1.2.1
|
||||||
|
|
||||||
***The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),***
|
***The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),***
|
||||||
***and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).***
|
***and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).***
|
||||||
|
|||||||
@@ -8,11 +8,11 @@
|
|||||||
**VirusTotal Scanning:** - Automatically scans PDFs and updates release notes
|
**VirusTotal Scanning:** - Automatically scans PDFs and updates release notes
|
||||||
**Release Automation:** - Packages everything into GitHub releases
|
**Release Automation:** - Packages everything into GitHub releases
|
||||||
|
|
||||||
## Workflow Architecture
|
## Architecture
|
||||||
|
|
||||||
### Build PDF Workflow (`build-sign-release.yml`)
|
### Build PDF Workflow (`build-sign-release.yml`)
|
||||||
|
|
||||||
??? Note "Steps"
|
!!! Note "Steps"
|
||||||
|
|
||||||
- Checkout repository
|
- Checkout repository
|
||||||
- Set up Python and MkDocs Material
|
- Set up Python and MkDocs Material
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
**Purpose:** Verify authenticity and prevent tampering
|
**Purpose:** Verify authenticity and prevent tampering
|
||||||
|
|
||||||
??? Note "How it works"
|
!!! Note "How it works"
|
||||||
|
|
||||||
- Detached signatures created for each PDF and hash file
|
- Detached signatures created for each PDF and hash file
|
||||||
- Public keys available in `/pgp/` directory
|
- Public keys available in `/pgp/` directory
|
||||||
+1
-1
@@ -7,7 +7,7 @@ schema:
|
|||||||
"@id": https://www.anonymousplanet.org/
|
"@id": https://www.anonymousplanet.org/
|
||||||
name: Anonymous Planet
|
name: Anonymous Planet
|
||||||
url: https://www.anonymousplanet.org/guide/
|
url: https://www.anonymousplanet.org/guide/
|
||||||
logo: ../media/favicon.ico
|
logo: ../media/profile.png
|
||||||
sameAs:
|
sameAs:
|
||||||
- https://github.com/Anon-Planet
|
- https://github.com/Anon-Planet
|
||||||
- https://opencollective.com/anonymousplanetorg
|
- https://opencollective.com/anonymousplanetorg
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ schema:
|
|||||||
"@id": https://www.anonymousplanet.org/
|
"@id": https://www.anonymousplanet.org/
|
||||||
name: Anonymous Planet
|
name: Anonymous Planet
|
||||||
url: https://www.anonymousplanet.org/authors/
|
url: https://www.anonymousplanet.org/authors/
|
||||||
logo: ../media/favicon.png
|
logo: ../media/profile.png
|
||||||
sameAs:
|
sameAs:
|
||||||
- https://github.com/Anon-Planet
|
- https://github.com/Anon-Planet
|
||||||
- https://opencollective.com/anonymousplanetorg
|
- https://opencollective.com/anonymousplanetorg
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ schema:
|
|||||||
"@id": https://www.anonymousplanet.org/
|
"@id": https://www.anonymousplanet.org/
|
||||||
name: Anonymous Planet
|
name: Anonymous Planet
|
||||||
url: https://www.anonymousplanet.org/mirrors/
|
url: https://www.anonymousplanet.org/mirrors/
|
||||||
logo: ../media/favicon.png
|
logo: ../media/profile.png
|
||||||
sameAs:
|
sameAs:
|
||||||
- https://github.com/Anon-Planet
|
- https://github.com/Anon-Planet
|
||||||
- https://opencollective.com/anonymousplanetorg
|
- https://opencollective.com/anonymousplanetorg
|
||||||
@@ -27,7 +27,7 @@ schema:
|
|||||||
|
|
||||||
!!! Note "PDF export (single file)"
|
!!! Note "PDF export (single file)"
|
||||||
|
|
||||||
The guide is also available as a **PDF** (images and layout preserved). It is built automatically in GitHub Actions: open [**Build guide PDF**](https://github.com/Anon-Planet/thgtoa/actions/workflows/build-pdf.yml) on the [**source repository**](https://github.com/Anon-Planet/thgtoa), pick a successful run, and download the **`thgtoa`** and **`thgtoa-dark`** artifacts. You can start a fresh build anytime (**Actions** → **Build guide PDF** → **Run workflow**).
|
The guide is also available as a **PDF** (images and layout preserved). It is built automatically in GitHub Actions: open [**Build guide PDF**](https://github.com/Anon-Planet/thgtoa/actions/workflows/build-sign-release.yml) on the [**source repository**](https://github.com/Anon-Planet/thgtoa), pick a successful run, and download the **`thgtoa`** and **`thgtoa-dark`** artifacts. You can start a fresh build anytime (**Actions** → **Build guide PDF** → **Run workflow**).
|
||||||
|
|
||||||
To produce the same file locally, clone the repository and run `python3 scripts/build_guide_pdf.py --both` (Python, [MkDocs Material](https://squidfunk.github.io/mkdocs-material/getting-started/), and **Google Chrome** or **Microsoft Edge** required). More detail is in the [repository README](https://github.com/Anon-Planet/thgtoa#ways-to-read-or-export-the-guide).
|
To produce the same file locally, clone the repository and run `python3 scripts/build_guide_pdf.py --both` (Python, [MkDocs Material](https://squidfunk.github.io/mkdocs-material/getting-started/), and **Google Chrome** or **Microsoft Edge** required). More detail is in the [repository README](https://github.com/Anon-Planet/thgtoa#ways-to-read-or-export-the-guide).
|
||||||
|
|
||||||
|
|||||||
+9
-5
@@ -9,6 +9,7 @@ repo_name: ""
|
|||||||
#edit_uri: ""
|
#edit_uri: ""
|
||||||
theme:
|
theme:
|
||||||
name: material
|
name: material
|
||||||
|
locale: en
|
||||||
favicon: media/profile.png
|
favicon: media/profile.png
|
||||||
icon:
|
icon:
|
||||||
logo: material/bird
|
logo: material/bird
|
||||||
@@ -17,6 +18,8 @@ theme:
|
|||||||
text: Public Sans
|
text: Public Sans
|
||||||
code: Liberation Mono
|
code: Liberation Mono
|
||||||
features:
|
features:
|
||||||
|
- navigation.instant
|
||||||
|
- navigation.instant.prefetch
|
||||||
- navigation.tabs
|
- navigation.tabs
|
||||||
- navigation.sections
|
- navigation.sections
|
||||||
- toc.integrate
|
- toc.integrate
|
||||||
@@ -122,18 +125,19 @@ markdown_extensions:
|
|||||||
toc_depth: 3
|
toc_depth: 3
|
||||||
|
|
||||||
nav:
|
nav:
|
||||||
- Home: index.md
|
- Welcome: index.md
|
||||||
- About: about/index.md
|
- About: about/index.md
|
||||||
- Verify: verify/index.md
|
- Verify: verify/index.md
|
||||||
- Guide:
|
- Guide:
|
||||||
- guide/index.md
|
- guide/index.md
|
||||||
- Workflow Documentation: guide/dev-workflow.md
|
- Code:
|
||||||
- Code: code/index.md
|
- code/index.md
|
||||||
|
- Develop: code/develop.md
|
||||||
- Contribute: contribute/index.md
|
- Contribute: contribute/index.md
|
||||||
- Constitution: constitution/index.md
|
- Constitution: constitution/index.md
|
||||||
- Mirrors: mirrors/index.md
|
- Mirrors: mirrors/index.md
|
||||||
- Twitter: twitter/index.md
|
- Twitter: twitter/index.md
|
||||||
- TBA: changelog/index.md
|
- Releases: changelog/index.md
|
||||||
|
|
||||||
copyright: |
|
copyright: |
|
||||||
© 2023-2026 <a href="https://anonymousplanet.org/" target="_blank" rel="noopener">Anonymous Planet</a>
|
<a href="https://anonymousplanet.org/">The Hitchhiker's Guide</a> ©2023-2026 by <a href="https://psa.anonymousplanet.org/">Anonymous Planet</a> is licensed under <a href="https://creativecommons.org/licenses/by-nc/4.0/">CC BY-NC 4.0</a><img src="https://mirrors.creativecommons.org/presskit/icons/cc.svg" alt="" style="max-width: 1em;max-height:1em;margin-left: .2em;"><img src="https://mirrors.creativecommons.org/presskit/icons/by.svg" alt="" style="max-width: 1em;max-height:1em;margin-left: .2em;"><img src="https://mirrors.creativecommons.org/presskit/icons/nc.svg" alt="" style="max-width: 1em;max-height:1em;margin-left: .2em;"></a>
|
||||||
|
|||||||
@@ -1,132 +0,0 @@
|
|||||||
# PDF Build, Scan & Release Scripts
|
|
||||||
|
|
||||||
This directory contains scripts for building PDFs from MkDocs documentation, scanning them with VirusTotal, generating hashes, and uploading artifacts to GitHub releases.
|
|
||||||
|
|
||||||
## Scripts
|
|
||||||
|
|
||||||
### `pdf_release.sh` (v2 - Recommended)
|
|
||||||
The main script that handles:
|
|
||||||
- SHA256 hash generation for PDF files
|
|
||||||
- VirusTotal scanning of PDFs
|
|
||||||
- Release creation/update on GitHub
|
|
||||||
- GPG signature verification support
|
|
||||||
|
|
||||||
**Usage:**
|
|
||||||
```bash
|
|
||||||
./scripts/pdf_release.sh --build <light|dark|both> --release <tag|latest> [--vt-api-key VT_KEY] [--github-token TOKEN]
|
|
||||||
```
|
|
||||||
|
|
||||||
**Options:**
|
|
||||||
- `--build`: PDF build mode (`light`, `dark`, or `both`) - Required
|
|
||||||
- `--release`: Release update mode (`tag` for tagged releases, `latest` to always update) - Default: `tag`
|
|
||||||
- `--vt-api-key`: VirusTotal API key (optional)
|
|
||||||
- `--github-token`: GitHub token for release operations (optional)
|
|
||||||
|
|
||||||
### `build_guide_pdf.py`
|
|
||||||
Python script that builds MkDocs documentation and converts it to PDF using Chromium/Chrome.
|
|
||||||
|
|
||||||
**Usage:**
|
|
||||||
```bash
|
|
||||||
python scripts/build_guide_pdf.py --both # Build both light and dark mode
|
|
||||||
python scripts/build_guide_pdf.py --dark-mode # Dark mode only
|
|
||||||
python scripts/build_guide_pdf.py --skip-mkdocs # Skip MkDocs build, use existing site
|
|
||||||
```
|
|
||||||
|
|
||||||
## GitHub Actions Workflow
|
|
||||||
|
|
||||||
The workflow `.github/workflows/build-pdf-combined.yml` combines all operations:
|
|
||||||
|
|
||||||
1. **Build PDFs** - Generates light/dark mode PDFs with GPG signatures
|
|
||||||
2. **Scan & Release** - Scans with VirusTotal and updates/releases artifacts
|
|
||||||
|
|
||||||
### Required Secrets
|
|
||||||
|
|
||||||
Add these to your repository settings under **Settings > Secrets and variables > Actions**:
|
|
||||||
|
|
||||||
- `GPG_PRIVATE_KEY`: Your GPG private key for signing
|
|
||||||
- `GPG_PASSPHRASE`: Passphrase for the GPG key (if any)
|
|
||||||
- `VT_API_KEY`: VirusTotal API key for malware scanning
|
|
||||||
- `GITHUB_TOKEN`: Automatically available, but can be manually added
|
|
||||||
|
|
||||||
### Workflow Triggers
|
|
||||||
|
|
||||||
The workflow runs on:
|
|
||||||
- Manual dispatch (`workflow_dispatch`) with customizable options
|
|
||||||
- Push to main branch when docs, mkdocs.yml, or scripts change
|
|
||||||
|
|
||||||
## Output Files
|
|
||||||
|
|
||||||
After running the build and release process, you'll get:
|
|
||||||
|
|
||||||
```
|
|
||||||
export/
|
|
||||||
├── thgtoa.pdf # Light mode PDF
|
|
||||||
├── thgtoa-dark.pdf # Dark mode PDF
|
|
||||||
├── thgtoa.pdf.sig # GPG signature for light PDF
|
|
||||||
├── thgtoa-dark.pdf.sig # GPG signature for dark PDF
|
|
||||||
├── thgtoa.pdf.sha256 # SHA256 hash for light PDF
|
|
||||||
├── thgtoa-dark.pdf.sha256 # SHA256 hash for dark PDF
|
|
||||||
├── sha256sum-combined.txt # Combined hash file
|
|
||||||
├── sha256sum-combined.txt.sig # GPG signature for combined hashes
|
|
||||||
└── virus-total-results.md # VirusTotal scan results
|
|
||||||
```
|
|
||||||
|
|
||||||
## Hash Verification
|
|
||||||
|
|
||||||
To verify the integrity of downloaded PDFs:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Verify against individual hash file
|
|
||||||
sha256sum -c thgtoa.pdf.sha256
|
|
||||||
|
|
||||||
# Or verify against combined hash file
|
|
||||||
sha256sum -c sha256sum-combined.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
## VirusTotal Integration
|
|
||||||
|
|
||||||
When a `VT_API_KEY` is provided, the script will:
|
|
||||||
1. Upload each PDF to VirusTotal's API
|
|
||||||
2. Generate individual scan reports
|
|
||||||
3. Include VT report links in release notes and artifacts
|
|
||||||
|
|
||||||
The VT results file (`virus-total-results.md`) contains:
|
|
||||||
- Scan timestamp
|
|
||||||
- SHA256 hashes for each PDF
|
|
||||||
- Direct links to VirusTotal GUI reports
|
|
||||||
|
|
||||||
## Release Management
|
|
||||||
|
|
||||||
The script supports two release modes:
|
|
||||||
|
|
||||||
1. **Tag mode** (`--release tag`): Updates the release matching the current git tag
|
|
||||||
2. **Latest mode** (`--release latest`): Always updates the most recent release (useful for continuous deployment)
|
|
||||||
|
|
||||||
When running in a GitHub Actions workflow with a tag push, it will automatically create or update the corresponding release.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
### PDF Build Fails
|
|
||||||
- Ensure Chrome/Chromium is installed: `sudo apt install chromium-browser`
|
|
||||||
- Check MkDocs configuration is valid: `mkdocs build --strict`
|
|
||||||
- Verify all documentation files are present and properly formatted
|
|
||||||
|
|
||||||
### VirusTotal Scan Fails
|
|
||||||
- Check VT_API_KEY secret is correctly set in repository settings
|
|
||||||
- Verify the API key has sufficient quota (free tier allows 4 requests/minute)
|
|
||||||
- Check network connectivity to VirusTotal API
|
|
||||||
|
|
||||||
### Release Upload Fails
|
|
||||||
- Ensure GITHUB_TOKEN has appropriate permissions (repo scope)
|
|
||||||
- For existing releases, use `--release latest` instead of `tag`
|
|
||||||
- Check that the release tag format matches GitHub's requirements (e.g., `v1.0.0`)
|
|
||||||
|
|
||||||
## Security Notes
|
|
||||||
|
|
||||||
- **GPG Keys**: Never commit private keys to version control. Use GitHub Secrets.
|
|
||||||
- **VT API Key**: Keep your VirusTotal API key secret and rotate periodically.
|
|
||||||
- **Release Artifacts**: All uploaded artifacts are publicly visible on your releases page.
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
These scripts are part of the "The How-To Guide To Anonymity" project and follow the same licensing as the main repository.
|
|
||||||
Reference in New Issue
Block a user