mirror of
https://github.com/privacyguides/privacyguides.org.git
synced 2025-09-12 04:58:49 +00:00
Compare commits
2 Commits
self-hosti
...
openzim-bu
Author | SHA1 | Date | |
---|---|---|---|
b7ea45b5d8
|
|||
c738b4a446
|
@@ -1,6 +1,5 @@
|
||||
:1337 {
|
||||
reverse_proxy /articles/* http://127.0.0.1:8001
|
||||
reverse_proxy /videos/* http://127.0.0.1:8002
|
||||
reverse_proxy /en/* http://127.0.0.1:8000
|
||||
redir / /en/
|
||||
}
|
||||
|
@@ -19,10 +19,6 @@
|
||||
"8001": {
|
||||
"label": "Articles",
|
||||
"onAutoForward": "silent"
|
||||
},
|
||||
"8002": {
|
||||
"label": "Videos",
|
||||
"onAutoForward": "silent"
|
||||
}
|
||||
},
|
||||
"otherPortsAttributes": {
|
||||
@@ -52,20 +48,6 @@
|
||||
"group": "Live server"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Videos",
|
||||
"type": "shell",
|
||||
"command": "mkdocs serve --config-file=mkdocs.videos.yml --dev-addr=localhost:8002",
|
||||
"group": "test",
|
||||
"runOptions": {
|
||||
"runOn": "folderOpen"
|
||||
},
|
||||
"presentation": {
|
||||
"reveal": "always",
|
||||
"panel": "dedicated",
|
||||
"group": "Live server"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Main",
|
||||
"type": "shell",
|
||||
|
17
.github/workflows/build-pr.yml
vendored
17
.github/workflows/build-pr.yml
vendored
@@ -101,24 +101,23 @@ jobs:
|
||||
continue-on-error: true
|
||||
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||
|
||||
build_videos:
|
||||
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build videos') }}
|
||||
build_zimfile:
|
||||
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build zimfile') }}
|
||||
needs: [submodule, metadata]
|
||||
uses: ./.github/workflows/build-videos.yml
|
||||
uses: ./.github/workflows/build-zimfile.yml
|
||||
with:
|
||||
ref: ${{github.event.pull_request.head.ref}}
|
||||
repo: ${{github.event.pull_request.head.repo.full_name}}
|
||||
continue-on-error: true
|
||||
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||
secrets:
|
||||
RO_DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
|
||||
|
||||
combine_build:
|
||||
needs: [build_english, build_i18n, build_blog, build_videos]
|
||||
needs: [build_english, build_i18n, build_blog]
|
||||
if: |
|
||||
(always() && !cancelled() && !failure()) &&
|
||||
needs.build_english.result == 'success' &&
|
||||
(needs.build_i18n.result == 'success' || needs.build_i18n.result == 'skipped') &&
|
||||
(needs.build_blog.result == 'success' || needs.build_blog.result == 'skipped') &&
|
||||
(needs.build_videos.result == 'success' || needs.build_videos.result == 'skipped')
|
||||
(needs.build_blog.result == 'success' || needs.build_blog.result == 'skipped')
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
@@ -140,5 +139,5 @@ jobs:
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: [build_english, build_i18n, build_blog, build_videos]
|
||||
needs: [build_english, build_i18n, build_blog, build_zimfile]
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
||||
|
116
.github/workflows/build-videos.yml
vendored
116
.github/workflows/build-videos.yml
vendored
@@ -1,116 +0,0 @@
|
||||
name: 🛠️ Build Videos
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
ref:
|
||||
required: true
|
||||
type: string
|
||||
repo:
|
||||
required: true
|
||||
type: string
|
||||
context:
|
||||
type: string
|
||||
default: deploy-preview
|
||||
continue-on-error:
|
||||
type: boolean
|
||||
default: true
|
||||
privileged:
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: ${{ inputs.continue-on-error }}
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
if: inputs.privileged
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python (no pipenv)
|
||||
if: ${{ !inputs.privileged }}
|
||||
uses: actions/setup-python@v5
|
||||
|
||||
- name: Install Python Dependencies
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Install Python Dependencies (Unprivileged)
|
||||
if: ${{ !inputs.privileged }}
|
||||
run: |
|
||||
pip install mkdocs-material mkdocs-rss-plugin mkdocs-glightbox mkdocs-macros-plugin
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Set base navigation URLs for production build
|
||||
if: inputs.context == 'production'
|
||||
run: |
|
||||
{
|
||||
echo "MAIN_SITE_BASE_URL=https://www.privacyguides.org/en/"
|
||||
echo "MAIN_SITE_ABOUT_URL=https://www.privacyguides.org/en/about/"
|
||||
echo "MAIN_SITE_RECOMMENDATIONS_URL=https://www.privacyguides.org/en/tools/"
|
||||
echo "MAIN_SITE_KNOWLEDGE_BASE_URL=https://www.privacyguides.org/en/basics/why-privacy-matters/"
|
||||
echo "ARTICLES_SITE_BASE_URL=https://www.privacyguides.org/articles/"
|
||||
echo "VIDEOS_SITE_BASE_URL=https://www.privacyguides.org/videos/"
|
||||
} >> "$GITHUB_ENV"
|
||||
|
||||
- name: Build Website (Privileged)
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file mkdocs.videos.yml
|
||||
|
||||
- name: Build Website (Unprivileged)
|
||||
if: ${{ !inputs.privileged }}
|
||||
run: |
|
||||
BUILD_INSIDERS=false mkdocs build --config-file mkdocs.videos.yml
|
||||
|
||||
- name: Package Website
|
||||
run: |
|
||||
tar -czf site-build-videos.tar.gz site
|
||||
|
||||
- name: Upload Site
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: site-build-videos.tar.gz
|
||||
path: site-build-videos.tar.gz
|
||||
retention-days: 1
|
603
.github/workflows/build-zimfile.yml
vendored
Normal file
603
.github/workflows/build-zimfile.yml
vendored
Normal file
@@ -0,0 +1,603 @@
|
||||
name: 🥝 Build Zimfile
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
ref:
|
||||
required: true
|
||||
type: string
|
||||
repo:
|
||||
required: true
|
||||
type: string
|
||||
secrets:
|
||||
RO_DISCOURSE_API_KEY:
|
||||
required: false
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
VIDEOS_SITE_BASE_URL: https://www.privacyguides.org/videos/
|
||||
HOMEPAGE_CTA_ABOUT_LINK: about.html
|
||||
HOMEPAGE_CTA_DONATE_LINK: about/donate.html
|
||||
BUILD_OFFLINE: true
|
||||
PRODUCTION: true
|
||||
CARDS: false
|
||||
GITREVISIONDATE: false
|
||||
GITAUTHORS: false
|
||||
|
||||
jobs:
|
||||
package_eng:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
LANGUAGE_SWITCHER: false
|
||||
MAIN_SITE_BASE_URL: /en/index.html
|
||||
MAIN_SITE_ABOUT_URL: /en/about.html
|
||||
MAIN_SITE_RECOMMENDATIONS_URL: /en/tools.html
|
||||
MAIN_SITE_KNOWLEDGE_BASE_URL: /en/basics/why-privacy-matters.html
|
||||
ARTICLES_SITE_BASE_URL: /articles/index.html
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Generate Donating Members List
|
||||
continue-on-error: true
|
||||
env:
|
||||
DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
|
||||
run: |
|
||||
pip install requests
|
||||
python tools/generate-members.py > includes/members.md
|
||||
|
||||
- name: Build English
|
||||
run: |
|
||||
./run.sh --build --production --insiders --offline --lang=en
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/en/assets
|
||||
SEARCH_DIR: site/en
|
||||
|
||||
- name: Run generate-topics.sh for top posts
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||
--tag="top posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=3
|
||||
|
||||
- name: Run generate-topics.sh for latest posts
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/latest.json' \
|
||||
--tag="latest posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=12
|
||||
|
||||
- name: Build Articles
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file mkdocs.blog.yml
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/articles/assets
|
||||
SEARCH_DIR: site/articles
|
||||
|
||||
- name: Remove Duplicate Files
|
||||
run: |
|
||||
cd site && bash ../tools/symlink-duplicates.sh
|
||||
ln -s en/index.html index.html
|
||||
ln -s en/about/notices.html license
|
||||
cd ..
|
||||
|
||||
- name: Set zimfile name
|
||||
run: |
|
||||
echo "ZIMFILE_NAME=privacyguides.org_en_all_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs \
|
||||
-w index.html \
|
||||
-I en/assets/brand/logos/png/square/pg-yellow.png \
|
||||
-l eng \
|
||||
-t "Privacy Guides" \
|
||||
-d "Your central privacy and security resource to protect yourself online." \
|
||||
-c "Privacy Guides" \
|
||||
-p "Privacy Guides" \
|
||||
-e "https://www.privacyguides.org" \
|
||||
-n "privacyguides.org_en_all" \
|
||||
/data/site/ /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
- name: Upload ZIM File
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: ${{ env.ZIMFILE_NAME }}
|
||||
name: ${{ env.ZIMFILE_NAME }}
|
||||
compression-level: 0
|
||||
|
||||
- name: Run zimcheck
|
||||
uses: addnab/docker-run-action@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimcheck /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
package_eng_kb:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
LANGUAGE_SWITCHER: false
|
||||
ARTICLES_SITE_BASE_URL: https://www.privacyguides.org/articles/
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Generate Donating Members List
|
||||
continue-on-error: true
|
||||
env:
|
||||
DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
|
||||
run: |
|
||||
pip install requests
|
||||
python tools/generate-members.py > includes/members.md
|
||||
|
||||
- name: Build English
|
||||
run: |
|
||||
./run.sh --build --production --insiders --offline --lang=en
|
||||
|
||||
- name: Run generate-topics.sh for top posts
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||
--tag="top posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=3
|
||||
|
||||
- name: Run generate-topics.sh for latest posts
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/latest.json' \
|
||||
--tag="latest posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=12
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/en/assets
|
||||
SEARCH_DIR: site/en
|
||||
|
||||
- name: Remove Duplicate Files
|
||||
run: |
|
||||
cd site && bash ../tools/symlink-duplicates.sh
|
||||
ln -s en/index.html index.html
|
||||
ln -s en/about/notices.html license
|
||||
cd ..
|
||||
|
||||
- name: Set zimfile name
|
||||
run: |
|
||||
echo "ZIMFILE_NAME=privacyguides.org_en_kb_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs \
|
||||
-w index.html \
|
||||
-I en/assets/brand/logos/png/square/pg-yellow.png \
|
||||
-l eng \
|
||||
-t "Privacy Guides" \
|
||||
-d "Knowledge base articles and recommendations from Privacy Guides." \
|
||||
-c "Privacy Guides" \
|
||||
-p "Privacy Guides" \
|
||||
-e "https://www.privacyguides.org" \
|
||||
-n "privacyguides.org_en_kb" \
|
||||
/data/site/ /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
- name: Upload ZIM File
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: ${{ env.ZIMFILE_NAME }}
|
||||
name: ${{ env.ZIMFILE_NAME }}
|
||||
compression-level: 0
|
||||
|
||||
- name: Run zimcheck
|
||||
uses: addnab/docker-run-action@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimcheck /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
package_eng_articles:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
MAIN_SITE_BASE_URL: https://www.privacyguides.org/en/
|
||||
MAIN_SITE_ABOUT_URL: https://www.privacyguides.org/en/about/
|
||||
MAIN_SITE_RECOMMENDATIONS_URL: https://www.privacyguides.org/en/tools/
|
||||
MAIN_SITE_KNOWLEDGE_BASE_URL: https://www.privacyguides.org/en/basics/
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Build Articles
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file mkdocs.blog.yml
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/articles/assets
|
||||
SEARCH_DIR: site/articles
|
||||
|
||||
- name: Remove Duplicate Files
|
||||
run: |
|
||||
cd site && bash ../tools/symlink-duplicates.sh
|
||||
ln -s articles/index.html index.html
|
||||
cd ..
|
||||
|
||||
- name: Set zimfile name
|
||||
run: |
|
||||
echo "ZIMFILE_NAME=privacyguides.org_en_articles_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs \
|
||||
-w index.html \
|
||||
-I articles/assets/brand/logos/png/square/pg-yellow.png \
|
||||
-l eng \
|
||||
-t "Privacy Guides" \
|
||||
-d "Long-form articles from the Privacy Guides team and other contributors." \
|
||||
-c "Privacy Guides" \
|
||||
-p "Privacy Guides" \
|
||||
-e "https://www.privacyguides.org" \
|
||||
-n "privacyguides.org_en_articles" \
|
||||
/data/site/ /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
- name: Upload ZIM File
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: ${{ env.ZIMFILE_NAME }}
|
||||
name: ${{ env.ZIMFILE_NAME }}
|
||||
compression-level: 0
|
||||
|
||||
- name: Run zimcheck
|
||||
uses: addnab/docker-run-action@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimcheck /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
build_mul:
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: true
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
MAIN_SITE_BASE_URL: /en/index.html
|
||||
MAIN_SITE_ABOUT_URL: /en/about.html
|
||||
MAIN_SITE_RECOMMENDATIONS_URL: /en/tools.html
|
||||
MAIN_SITE_KNOWLEDGE_BASE_URL: /en/basics/why-privacy-matters.html
|
||||
ARTICLES_SITE_BASE_URL: /articles/index.html
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
lang: [en, es, fr, he, it, nl, ru, zh-Hant]
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Copy Translation Files
|
||||
if: matrix.lang != 'en'
|
||||
run: |
|
||||
cp -rl modules/repo-i18n/i18n .
|
||||
cp -rl modules/repo-i18n/includes .
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Generate Donating Members List
|
||||
continue-on-error: true
|
||||
env:
|
||||
DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
|
||||
run: |
|
||||
pip install requests
|
||||
python tools/generate-members.py > includes/members.md
|
||||
|
||||
- name: Build Website
|
||||
run: |
|
||||
./run.sh --build --production --insiders --offline --lang=${{ matrix.lang }}
|
||||
|
||||
- name: Run generate-topics.sh for top posts
|
||||
if: matrix.lang == 'en'
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||
--tag="top posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=3
|
||||
|
||||
- name: Run generate-topics.sh for latest posts
|
||||
if: matrix.lang == 'en'
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/latest.json' \
|
||||
--tag="latest posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=12
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/${{ matrix.lang }}/assets
|
||||
SEARCH_DIR: site/${{ matrix.lang }}
|
||||
|
||||
- name: Build Articles
|
||||
if: matrix.lang == 'en'
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file mkdocs.blog.yml
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
if: matrix.lang == 'en'
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/articles/assets
|
||||
SEARCH_DIR: site/articles
|
||||
|
||||
- name: Package Website
|
||||
run: |
|
||||
tar -czf site-zimready-${{ matrix.lang }}.tar.gz site
|
||||
|
||||
- name: Upload Site
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: site-zimready-${{ matrix.lang }}.tar.gz
|
||||
path: site-zimready-${{ matrix.lang }}.tar.gz
|
||||
retention-days: 1
|
||||
compression-level: 0
|
||||
|
||||
package_mul:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build_mul]
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download All Sites
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: site-zimready-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: List Files (for debugging)
|
||||
run: |
|
||||
for file in *.tar.gz; do tar -zxf "$file"; done
|
||||
ls -la site/
|
||||
|
||||
- name: Remove Duplicate Files
|
||||
run: |
|
||||
cd site && bash ../tools/symlink-duplicates.sh
|
||||
ln -s en/index.html index.html
|
||||
ln -s en/about/notices.html license
|
||||
cd ..
|
||||
|
||||
- name: Set zimfile name
|
||||
run: |
|
||||
echo "ZIMFILE_NAME=privacyguides.org_mul_all_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs \
|
||||
-w index.html \
|
||||
-I en/assets/brand/logos/png/square/pg-yellow.png \
|
||||
-l mul \
|
||||
-t "Privacy Guides" \
|
||||
-d "Your central privacy and security resource to protect yourself online." \
|
||||
-c "Privacy Guides" \
|
||||
-p "Privacy Guides" \
|
||||
-e "https://www.privacyguides.org" \
|
||||
-n "privacyguides.org_mul_all" \
|
||||
/data/site/ /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
- name: Upload ZIM File
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: ${{ env.ZIMFILE_NAME }}
|
||||
name: ${{ env.ZIMFILE_NAME }}
|
||||
compression-level: 0
|
||||
|
||||
- name: Run zimcheck
|
||||
uses: addnab/docker-run-action@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimcheck /data/${{ env.ZIMFILE_NAME }}
|
80
.github/workflows/build.yml
vendored
80
.github/workflows/build.yml
vendored
@@ -160,19 +160,6 @@ jobs:
|
||||
social-cache-${{ inputs.repo }}-${{ inputs.lang }}-
|
||||
social-cache-privacyguides/privacyguides.org-${{ inputs.lang }}-
|
||||
|
||||
- name: Restore Optimize Plugin Cache
|
||||
uses: actions/cache/restore@v4
|
||||
id: optimize_cache_restore
|
||||
if: inputs.cache
|
||||
with:
|
||||
key: optimize-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/optimize/manifest.json') }}
|
||||
path: |
|
||||
.cache/plugin/optimize
|
||||
restore-keys: |
|
||||
optimize-cache-${{ inputs.repo }}-
|
||||
optimize-cache-privacyguides/privacyguides.org-
|
||||
optimize-cache-
|
||||
|
||||
- name: Install Python Dependencies
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
@@ -193,7 +180,7 @@ jobs:
|
||||
DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
|
||||
run: |
|
||||
pip install requests
|
||||
python generate-members.py > includes/members.md
|
||||
python tools/generate-members.py > includes/members.md
|
||||
|
||||
- name: Build Website
|
||||
run: |
|
||||
@@ -202,7 +189,7 @@ jobs:
|
||||
- name: Run generate-topics.sh for top posts
|
||||
if: inputs.lang == 'en'
|
||||
run: |
|
||||
bash generate-topics.sh \
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||
--tag="top posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
@@ -211,7 +198,7 @@ jobs:
|
||||
- name: Run generate-topics.sh for latest posts
|
||||
if: inputs.lang == 'en'
|
||||
run: |
|
||||
bash generate-topics.sh \
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/latest.json' \
|
||||
--tag="latest posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
@@ -242,16 +229,6 @@ jobs:
|
||||
.cache/plugin/social/manifest.json
|
||||
.cache/plugin/social/assets
|
||||
|
||||
- name: Find Optimize Plugin Cache
|
||||
uses: actions/cache/restore@v4
|
||||
if: steps.optimize_cache_restore.outputs.cache-hit != 'true' && inputs.cache
|
||||
id: optimize_cache_test
|
||||
with:
|
||||
key: optimize-cache-privacyguides/privacyguides.org-${{ hashfiles('.cache/plugin/optimize/manifest.json') }}
|
||||
lookup-only: true
|
||||
path: |
|
||||
.cache/plugin/optimize
|
||||
|
||||
- name: Save Privacy Plugin Cache
|
||||
uses: actions/cache/save@v4
|
||||
if: steps.privacy_cache_test.outputs.cache-hit != 'true' && inputs.cache
|
||||
@@ -268,13 +245,6 @@ jobs:
|
||||
.cache/plugin/social/manifest.json
|
||||
.cache/plugin/social/assets
|
||||
|
||||
- name: Save Optimize Plugin Cache
|
||||
uses: actions/cache/save@v4
|
||||
if: steps.optimize_cache_test.outputs.cache-hit != 'true' && inputs.cache
|
||||
with:
|
||||
key: optimize-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/optimize/manifest.json') }}
|
||||
path: .cache/plugin/optimize
|
||||
|
||||
- name: Upload Site
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
@@ -289,47 +259,3 @@ jobs:
|
||||
name: members.md
|
||||
path: includes/members.md
|
||||
retention-days: 1
|
||||
|
||||
offline_package:
|
||||
if: inputs.config == 'offline' && inputs.lang == 'en'
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: ${{ inputs.continue-on-error }}
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: site-offline-en.tar.gz
|
||||
|
||||
- run: |
|
||||
tar -xzf site-offline-en.tar.gz
|
||||
tar -czf offline.tar.gz site/en
|
||||
zip -r -q offline.zip site/en
|
||||
|
||||
- name: Upload tar.gz file
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: offline.tar.gz
|
||||
path: offline.tar.gz
|
||||
|
||||
- name: Upload zip file
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: offline.zip
|
||||
path: offline.zip
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs -w index.html -I assets/brand/logos/png/square/pg-yellow.png -l eng -t "Privacy Guides" -d "Your central privacy and security resource to protect yourself online." -c "Privacy Guides" -p "Jonah Aragon" -n "Privacy Guides" -e "https://github.com/privacyguides/privacyguides.org" /data/site/en /data/offline-privacy_guides.zim
|
||||
|
||||
- name: Upload ZIM file
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: offline-privacy_guides.zim
|
||||
path: offline-privacy_guides.zim
|
||||
|
16
.github/workflows/publish-immediate.yml
vendored
16
.github/workflows/publish-immediate.yml
vendored
@@ -27,7 +27,6 @@ on:
|
||||
- "main"
|
||||
paths:
|
||||
- "blog/**"
|
||||
- "videos/**"
|
||||
|
||||
concurrency:
|
||||
group: release-deployment
|
||||
@@ -61,19 +60,8 @@ jobs:
|
||||
continue-on-error: false
|
||||
context: production
|
||||
|
||||
build_videos:
|
||||
needs: submodule
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/build-videos.yml
|
||||
with:
|
||||
repo: ${{ github.repository }}
|
||||
ref: ${{ github.ref }}
|
||||
continue-on-error: false
|
||||
context: production
|
||||
|
||||
deploy:
|
||||
needs: [build_blog, build_videos]
|
||||
needs: [build_blog]
|
||||
uses: privacyguides/webserver/.github/workflows/deploy-garage.yml@main
|
||||
with:
|
||||
environment: production
|
||||
@@ -83,5 +71,5 @@ jobs:
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: [build_blog, build_videos]
|
||||
needs: [build_blog]
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
||||
|
20
.github/workflows/publish-release.yml
vendored
20
.github/workflows/publish-release.yml
vendored
@@ -51,7 +51,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
lang: [en, es, fr, he, it, nl, ru, zh-Hant]
|
||||
build: [build, offline]
|
||||
build: [build]
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/build.yml
|
||||
@@ -77,20 +77,20 @@ jobs:
|
||||
continue-on-error: false
|
||||
context: production
|
||||
|
||||
build_videos:
|
||||
build_zimfile:
|
||||
needs: submodule
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/build-videos.yml
|
||||
uses: ./.github/workflows/build-zimfile.yml
|
||||
with:
|
||||
repo: ${{ github.repository }}
|
||||
ref: ${{ github.ref }}
|
||||
continue-on-error: false
|
||||
context: production
|
||||
secrets:
|
||||
RO_DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
|
||||
|
||||
release:
|
||||
name: Create release notes
|
||||
needs: build
|
||||
needs: [build, build_zimfile]
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
@@ -98,18 +98,18 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: offline*
|
||||
pattern: *.zim
|
||||
merge-multiple: true
|
||||
|
||||
- name: Create release notes
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
generateReleaseNotes: true
|
||||
artifacts: "offline.zip,offline.tar.gz,offline-privacy_guides.zim"
|
||||
artifacts: "*.zim"
|
||||
makeLatest: true
|
||||
|
||||
deploy:
|
||||
needs: [build, build_blog, build_videos]
|
||||
needs: [build, build_blog]
|
||||
uses: privacyguides/webserver/.github/workflows/deploy-all.yml@main
|
||||
secrets:
|
||||
NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
|
||||
@@ -126,5 +126,5 @@ jobs:
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: [build, build_blog, build_videos]
|
||||
needs: [build, build_blog, build_zimfile]
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
||||
|
4
.github/workflows/update-discussions.yml
vendored
4
.github/workflows/update-discussions.yml
vendored
@@ -57,7 +57,7 @@ jobs:
|
||||
|
||||
- name: Run generate-topics.sh for top posts
|
||||
run: |
|
||||
bash generate-topics.sh \
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||
--tag="top posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
@@ -65,7 +65,7 @@ jobs:
|
||||
|
||||
- name: Run generate-topics.sh for latest posts
|
||||
run: |
|
||||
bash generate-topics.sh \
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/latest.json' \
|
||||
--tag="latest posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
|
@@ -14,7 +14,6 @@ preview:
|
||||
# The Power of Digital Provenance in the Age of AI
|
||||
|
||||

|
||||
|
||||
<small aria-hidden="true">Photo: Kseniya Lapteva / Pexels | Logo: Content Credentials</small>
|
||||
|
||||
With the popularity of generative AI, it's becoming more and more difficult to [distinguish](https://uwaterloo.ca/news/media/can-you-tell-ai-generated-people-real-ones) reality from fiction. Can this problem be solved using cryptography? What are the privacy implications of the currently proposed systems?<!-- more -->
|
||||
|
@@ -19,7 +19,6 @@ schema_type: NewsArticle
|
||||
# Welcome to Privacy Guides
|
||||
|
||||

|
||||
|
||||
<small aria-hidden="true">Illustration: Jonah Aragon / Privacy Guides</small>
|
||||
|
||||
We are excited to announce the launch of [Privacy Guides](https://www.privacyguides.org/) and [r/PrivacyGuides](https://www.reddit.com/r/PrivacyGuides/), and welcome the privacy community to participate in our crowdsourced software recommendations and share tips and tricks for keeping your data safe online. Our goal is to be a central resource for privacy and security-related tips that are usable by anybody, and to carry on the trusted legacy of PrivacyTools.<!-- more -->
|
||||
|
@@ -37,7 +37,7 @@ The best way to get individual help is from our community on Discourse. If you n
|
||||
|
||||
{ align=right }
|
||||
|
||||
Have a tip for us, or need to share some sensitive information? The best way to get in touch with us securely is via `@privacyguides.01` on Signal. This group account is monitored by [Jonah](https://discuss.privacyguides.net/u/jonah), [Niek](https://discuss.privacyguides.net/u/niek-de-wilde), [Em](https://discuss.privacyguides.net/u/ematprivacyguides), and [Jordan](https://discuss.privacyguides.net/u/jordan).
|
||||
Have a tip for us, or need to share some sensitive information? The best way to get in touch with us securely is via `@privacyguides.01` on Signal. This group account is monitored by [Jonah](https://discuss.privacyguides.net/u/jonah), [Niek](https://discuss.privacyguides.net/u/niek-de-wilde), [Em](https://discuss.privacyguides.net/u/em), and [Jordan](https://discuss.privacyguides.net/u/jordan).
|
||||
|
||||
[:simple-signal: Chat on Signal](https://signal.me/#eu/zg9xcrIv5w-EtXt2FmTJgfWv01LmyTed8rpr7RDv35Mizq8ISZ9NJLmYtzsxI0Z4){ .md-button }
|
||||
|
||||
@@ -130,7 +130,7 @@ Our staff are paid to contribute to supplemental content at Privacy Guides, like
|
||||
|
||||
:material-text-account: Journalist
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/ematprivacyguides)
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/em)
|
||||
|
||||
[:material-github:](https://github.com/EmAtPrivacyGuides "GitHub")
|
||||
[:material-mastodon:](https://infosec.exchange/@Em0nM4stodon "@Em0nM4stodon@infosec.exchange"){rel=me}
|
||||
|
@@ -27,6 +27,7 @@ site_description: "Privacy Guides is the most popular & trustworthy non-profit p
|
||||
edit_uri_template: blob/main/blog/{path}?plain=1
|
||||
|
||||
extra:
|
||||
scope: /
|
||||
privacy_guides:
|
||||
footer:
|
||||
intro:
|
||||
@@ -163,8 +164,6 @@ plugins:
|
||||
plugins:
|
||||
macros: {}
|
||||
meta: {}
|
||||
optimize:
|
||||
enabled: !ENV [OPTIMIZE, PRODUCTION, NETLIFY, false]
|
||||
typeset: {}
|
||||
social:
|
||||
cards: !ENV [CARDS, true]
|
||||
|
@@ -1,221 +0,0 @@
|
||||
# Copyright (c) 2022-2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
docs_dir: "videos"
|
||||
site_url: "https://www.privacyguides.org/videos/"
|
||||
site_dir: "site/videos"
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: "This is our home for the latest video content from the Privacy Guides team. Privacy Guides is the most popular & trustworthy non-profit privacy resource to find privacy tools and learn about protecting your digital life."
|
||||
edit_uri_template: blob/main/videos/{path}?plain=1
|
||||
|
||||
extra:
|
||||
privacy_guides:
|
||||
footer:
|
||||
intro:
|
||||
!ENV [
|
||||
FOOTER_INTRO,
|
||||
"Privacy Guides is a non-profit, socially motivated website that provides information for protecting your data security and privacy.",
|
||||
]
|
||||
note:
|
||||
!ENV [
|
||||
FOOTER_NOTE,
|
||||
"We do not make money from recommending certain products, and we do not use affiliate links.",
|
||||
]
|
||||
copyright:
|
||||
author:
|
||||
!ENV [FOOTER_COPYRIGHT_AUTHOR, "Privacy Guides and contributors."]
|
||||
date: !ENV [FOOTER_COPYRIGHT_DATE, "2019-2025"]
|
||||
license:
|
||||
- fontawesome/brands/creative-commons
|
||||
- fontawesome/brands/creative-commons-by
|
||||
- fontawesome/brands/creative-commons-sa
|
||||
homepage: !ENV [MAIN_SITE_BASE_URL, "https://www.privacyguides.org/en/"]
|
||||
generator: false
|
||||
context: !ENV [BUILD_CONTEXT, "production"]
|
||||
offline: !ENV [BUILD_OFFLINE, false]
|
||||
deploy: !ENV DEPLOY_ID
|
||||
social:
|
||||
- icon: simple/mastodon
|
||||
link: https://mastodon.neat.computer/@privacyguides
|
||||
name: !ENV [SOCIAL_MASTODON, "Mastodon"]
|
||||
- icon: simple/peertube
|
||||
link: https://neat.tube/c/privacyguides
|
||||
name: !ENV [SOCIAL_PEERTUBE, "PeerTube"]
|
||||
- icon: simple/matrix
|
||||
link: https://matrix.to/#/#privacyguides:matrix.org
|
||||
name: !ENV [SOCIAL_MATRIX, "Matrix"]
|
||||
- icon: simple/discourse
|
||||
link: https://discuss.privacyguides.net/
|
||||
name: !ENV [SOCIAL_FORUM, "Forum"]
|
||||
- icon: simple/github
|
||||
link: https://github.com/privacyguides
|
||||
name: !ENV [SOCIAL_GITHUB, "GitHub"]
|
||||
- icon: simple/torbrowser
|
||||
link: http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion/posts/
|
||||
name: !ENV [SOCIAL_TOR_SITE, "Hidden service"]
|
||||
|
||||
repo_url:
|
||||
!ENV [BUILD_REPO_URL, "https://github.com/privacyguides/privacyguides.org"]
|
||||
repo_name: ""
|
||||
|
||||
theme:
|
||||
name: material
|
||||
language: en
|
||||
custom_dir: theme
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: !ENV [THEME_DARK, "Switch to dark mode"]
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: !ENV [THEME_LIGHT, "Switch to light mode"]
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: !ENV [THEME_AUTO, "Switch to system theme"]
|
||||
favicon: assets/brand/logos/png/favicon-32x32.png
|
||||
icon:
|
||||
repo: simple/github
|
||||
features:
|
||||
- announce.dismiss
|
||||
- navigation.tracking
|
||||
- navigation.tabs
|
||||
- navigation.path
|
||||
- navigation.indexes
|
||||
- navigation.footer
|
||||
- content.action.edit
|
||||
- content.tabs.link
|
||||
- content.tooltips
|
||||
- search.highlight
|
||||
|
||||
extra_css:
|
||||
- assets/stylesheets/extra.css?v=20250723
|
||||
|
||||
watch:
|
||||
- theme
|
||||
- includes
|
||||
|
||||
plugins:
|
||||
blog:
|
||||
blog_dir: .
|
||||
blog_toc: true
|
||||
post_url_format: "{date}/{file}"
|
||||
post_excerpt_max_authors: 0
|
||||
authors_profiles: false
|
||||
categories: false
|
||||
rss:
|
||||
match_path: posts/.*
|
||||
abstract_chars_count: -1
|
||||
date_from_meta:
|
||||
as_creation: date.created
|
||||
as_update: date.updated
|
||||
categories:
|
||||
- categories
|
||||
- tags
|
||||
glightbox: {}
|
||||
tags: {}
|
||||
search: {}
|
||||
privacy:
|
||||
enabled: !ENV [BUILD_PRIVACY, true]
|
||||
offline:
|
||||
enabled: !ENV [BUILD_OFFLINE, false]
|
||||
group:
|
||||
enabled: !ENV [BUILD_INSIDERS, true]
|
||||
plugins:
|
||||
macros: {}
|
||||
meta: {}
|
||||
optimize:
|
||||
enabled: !ENV [OPTIMIZE, PRODUCTION, NETLIFY, false]
|
||||
typeset: {}
|
||||
social:
|
||||
cards: !ENV [CARDS, true]
|
||||
cards_dir: assets/img/social
|
||||
cards_layout_dir: theme/layouts
|
||||
cards_layout: page
|
||||
|
||||
markdown_extensions:
|
||||
admonition: {}
|
||||
pymdownx.details: {}
|
||||
pymdownx.superfences:
|
||||
custom_fences:
|
||||
- name: mermaid
|
||||
class: mermaid
|
||||
format: !!python/name:pymdownx.superfences.fence_code_format
|
||||
pymdownx.tabbed:
|
||||
alternate_style: true
|
||||
pymdownx.arithmatex:
|
||||
generic: true
|
||||
pymdownx.critic: {}
|
||||
pymdownx.caret: {}
|
||||
pymdownx.keys: {}
|
||||
pymdownx.mark: {}
|
||||
pymdownx.tilde: {}
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- !ENV [BUILD_ABBREVIATIONS, "includes/abbreviations.en.txt"]
|
||||
pymdownx.tasklist:
|
||||
custom_checkbox: true
|
||||
attr_list: {}
|
||||
def_list: {}
|
||||
md_in_html: {}
|
||||
meta: {}
|
||||
abbr: {}
|
||||
pymdownx.emoji:
|
||||
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
||||
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
||||
tables: {}
|
||||
footnotes: {}
|
||||
toc:
|
||||
toc_depth: 4
|
||||
|
||||
nav:
|
||||
- !ENV [NAV_HOME, "Home"]: !ENV [MAIN_SITE_BASE_URL, "/en/"]
|
||||
- !ENV [NAV_KNOWLEDGE_BASE, "Knowledge Base"]:
|
||||
!ENV [MAIN_SITE_KNOWLEDGE_BASE_URL, "/en/basics/why-privacy-matters/"]
|
||||
- !ENV [NAV_RECOMMENDATIONS, "Recommendations"]:
|
||||
!ENV [MAIN_SITE_RECOMMENDATIONS_URL, "/en/tools/"]
|
||||
- !ENV [NAV_BLOG, "Articles"]: !ENV [ARTICLES_SITE_BASE_URL, "/articles/"]
|
||||
- !ENV [NAV_VIDEOS, "Videos"]:
|
||||
- index.md
|
||||
- "This Week in Privacy": https://discuss.privacyguides.net/c/announcements/livestreams/9414
|
||||
- playlists.md
|
||||
- !ENV [NAV_FORUM, "Forum"]: "https://discuss.privacyguides.net/"
|
||||
- !ENV [NAV_WIKI, "Wiki"]:
|
||||
!ENV [
|
||||
NAV_WIKI_LINK,
|
||||
"https://discuss.privacyguides.net/c/community-wiki/9411/none",
|
||||
]
|
||||
- !ENV [NAV_ABOUT, "About"]: !ENV [MAIN_SITE_ABOUT_URL, "/en/about/"]
|
||||
|
||||
validation:
|
||||
nav:
|
||||
not_found: info
|
@@ -32,6 +32,7 @@ edit_uri_template:
|
||||
!ENV [BUILD_EDIT_URI_TEMPLATE, "blob/main/docs/{path}?plain=1"]
|
||||
|
||||
extra:
|
||||
scope: /
|
||||
generator: false
|
||||
context: !ENV [BUILD_CONTEXT, "production"]
|
||||
offline: !ENV [BUILD_OFFLINE, false]
|
||||
@@ -122,10 +123,10 @@ extra:
|
||||
link: https://matrix.to/#/#privacyguides:matrix.org
|
||||
- icon: material/information-outline
|
||||
name: !ENV [HOMEPAGE_CTA_ABOUT_NAME, "Learn more about us"]
|
||||
link: about/
|
||||
link: !ENV [HOMEPAGE_CTA_ABOUT_LINK, "about/"]
|
||||
- icon: material/hand-coin
|
||||
name: !ENV [HOMEPAGE_CTA_DONATE_NAME, "Donate to Privacy Guides"]
|
||||
link: about/donate/
|
||||
link: !ENV [HOMEPAGE_CTA_DONATE_LINK, "about/donate/"]
|
||||
description:
|
||||
!ENV [
|
||||
HOMEPAGE_CTA_DESCRIPTION,
|
||||
@@ -182,6 +183,7 @@ extra:
|
||||
- icon: simple/torbrowser
|
||||
link: http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion/
|
||||
name: !ENV [SOCIAL_TOR_SITE, "Hidden service"]
|
||||
language_switcher: !ENV [LANGUAGE_SWITCHER, true]
|
||||
alternate:
|
||||
- name: English
|
||||
link: /en/
|
||||
@@ -316,8 +318,6 @@ plugins:
|
||||
- index.md
|
||||
fallback_to_build_date: true
|
||||
enable_creation_date: true
|
||||
optimize:
|
||||
enabled: !ENV [OPTIMIZE, PRODUCTION, NETLIFY, false]
|
||||
typeset: {}
|
||||
social:
|
||||
cards: !ENV [CARDS, true]
|
||||
|
@@ -44,7 +44,11 @@
|
||||
<link rel="next" href="{{ page.next_page.url | url }}">
|
||||
{% endif %}
|
||||
{% if config.extra.alternate is iterable %}
|
||||
{% if page.is_homepage %}
|
||||
<link rel="alternate" href="https://www.privacyguides.org/" hreflang="x-default">
|
||||
{% else %}
|
||||
<link rel="alternate" href="{{ "https://www.privacyguides.org/" ~ "en" ~ "/" ~ page.url }}" hreflang="x-default">
|
||||
{% endif %}
|
||||
{% for alt in config.extra.alternate %}
|
||||
<link rel="alternate" href="{{ "https://www.privacyguides.org/" ~ alt.lang ~ "/" ~ page.url }}" hreflang="{{ alt.lang | d(lang.t('language')) }}">
|
||||
{% endfor %}
|
||||
|
@@ -29,7 +29,7 @@
|
||||
<br />
|
||||
{{ copyright.note }}
|
||||
<br />
|
||||
<a href='/license' aria-label="More information about our website license.">
|
||||
<a href='https://www.privacyguides.org/license' aria-label="More information about our website license.">
|
||||
{% for icon in copyright.license %}
|
||||
<span class="twemoji">{% include ".icons/" ~ icon ~ ".svg" %}</span>
|
||||
{% endfor %}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<div class="md-header__option">
|
||||
<div class="">
|
||||
{% set icon = "material/heart" %}
|
||||
<a href="/en/about/donate/" class="md-header__button md-icon pg-red" title="Donate">
|
||||
<a href="https://www.privacyguides.org/{{ config.theme.language }}/about/donate/" class="md-header__button md-icon pg-red" title="Donate">
|
||||
{% include ".icons/" ~ icon ~ ".svg" %}
|
||||
</a>
|
||||
</div>
|
||||
|
@@ -121,7 +121,7 @@
|
||||
{% endif %}
|
||||
|
||||
<!-- Site language selector -->
|
||||
{% if config.extra.alternate %}
|
||||
{% if config.extra.alternate and config.extra.language_switcher %}
|
||||
{% include "partials/alternate.html" %}
|
||||
{% endif %}
|
||||
|
||||
|
19
tools/archive-releases.sh
Executable file
19
tools/archive-releases.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
REPO="privacyguides/privacyguides.org"
|
||||
BASE_DIR="releases"
|
||||
|
||||
mkdir -p "$BASE_DIR"
|
||||
|
||||
# Get all release tags using gh CLI
|
||||
release_tags=$(gh release list -R "$REPO" --limit 1000 | awk '{print $1}')
|
||||
|
||||
for tag in $release_tags; do
|
||||
target_dir="$BASE_DIR/$tag"
|
||||
mkdir -p "$target_dir"
|
||||
echo "Downloading assets for release: $tag"
|
||||
gh release download "$tag" -R "$REPO" --dir "$target_dir"
|
||||
done
|
||||
|
||||
echo "All releases downloaded."
|
64
tools/delete-unreferenced.sh
Normal file
64
tools/delete-unreferenced.sh
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to find and delete unreferenced asset files
|
||||
# This script searches through all HTML, CSS, and JavaScript files to see if asset files are referenced
|
||||
|
||||
set -e # Exit on any error
|
||||
|
||||
echo -e "Starting unreferenced asset cleanup..."
|
||||
echo "Assets directory: $ASSETS_DIR"
|
||||
echo "Search directory: $SEARCH_DIR"
|
||||
echo ""
|
||||
|
||||
# Check if assets directory exists
|
||||
if [ ! -d "$ASSETS_DIR" ]; then
|
||||
echo -e "Error: Assets directory '$ASSETS_DIR' not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Find all asset files recursively
|
||||
echo "Finding all asset files..."
|
||||
ASSET_FILES=$(find "$ASSETS_DIR" -type f)
|
||||
ASSET_COUNT=$(echo "$ASSET_FILES" | wc -l)
|
||||
echo "Found $ASSET_COUNT asset files"
|
||||
echo ""
|
||||
|
||||
# Find all HTML, CSS, and JavaScript files
|
||||
echo "Finding all HTML, CSS, and JavaScript files..."
|
||||
SEARCH_FILES=$(find "$SEARCH_DIR" \( -name "*.html" -o -name "*.css" -o -name "*.js" \) -type f)
|
||||
SEARCH_COUNT=$(echo "$SEARCH_FILES" | wc -l)
|
||||
echo "Found $SEARCH_COUNT HTML, CSS, and JavaScript files"
|
||||
echo ""
|
||||
|
||||
# Process each asset file
|
||||
echo "Checking each asset file for references..."
|
||||
echo ""
|
||||
|
||||
while IFS= read -r asset_file; do
|
||||
if [ -z "$asset_file" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Get just the filename (without path)
|
||||
asset_filename=$(basename "$asset_file")
|
||||
|
||||
# Search for this filename in all HTML, CSS, and JavaScript files
|
||||
found_reference=false
|
||||
|
||||
while IFS= read -r search_file; do
|
||||
if [ -z "$search_file" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Simple string search for the filename in the file
|
||||
if grep -q "$asset_filename" "$search_file" 2>/dev/null; then
|
||||
found_reference=true
|
||||
break
|
||||
fi
|
||||
done <<< "$SEARCH_FILES"
|
||||
|
||||
if [ "$found_reference" = false ]; then
|
||||
echo -e "Unreferenced: $asset_file"
|
||||
rm "$asset_file"
|
||||
fi
|
||||
done <<< "$ASSET_FILES"
|
@@ -67,7 +67,9 @@ for row in $(echo "${topics}" | jq -r '.[] | @base64'); do
|
||||
html_output+="<hr>"
|
||||
html_output+="<p class='discourse-author'>"
|
||||
html_output+="<span class='discourse-author'>"
|
||||
html_output+="<img src='https://forum-cdn.privacyguides.net/user_avatar/discuss.privacyguides.net/${author_username}/48/1.png' loading='lazy' aria-hidden='true' alt='${author_username}' width='20' height='20' class='middle'>"
|
||||
if [[ -z "$BUILD_OFFLINE" ]]; then
|
||||
html_output+="<img src='https://forum-cdn.privacyguides.net/user_avatar/discuss.privacyguides.net/${author_username}/48/1.png' loading='lazy' aria-hidden='true' alt='${author_username}' width='20' height='20' class='middle'>"
|
||||
fi
|
||||
html_output+="<span> Posted by <em>$author_username</em></span>"
|
||||
html_output+="</span>"
|
||||
html_output+="</p>"
|
20
tools/symlink-duplicates.sh
Normal file
20
tools/symlink-duplicates.sh
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
declare -A file_hashes
|
||||
|
||||
find . -type f | while read -r file; do
|
||||
hash=$(sha256sum "$file" | awk '{print $1}')
|
||||
if [[ -n "${file_hashes[$hash]+_}" ]]; then
|
||||
# Duplicate found, replace with symlink to first copy
|
||||
first="${file_hashes[$hash]}"
|
||||
# Remove the duplicate file
|
||||
rm "$file"
|
||||
# Create symlink (relative path)
|
||||
ln -s "$(realpath --relative-to="$(dirname "$file")" "$first")" "$file"
|
||||
echo "Replaced duplicate: $file -> $first"
|
||||
else
|
||||
# First time seeing this hash
|
||||
file_hashes[$hash]="$file"
|
||||
fi
|
||||
done
|
@@ -1 +0,0 @@
|
||||
../blog/.authors.yml
|
@@ -1,14 +0,0 @@
|
||||
---
|
||||
description: >-
|
||||
This is our home for the latest video content from the Privacy Guides team. Be sure you are subscribed to find out about our latest uploads, and share these videos with your family and friends if you find them helpful!
|
||||
template: video.html
|
||||
hide:
|
||||
- footer
|
||||
---
|
||||
|
||||
# Latest Videos
|
||||
|
||||
This is our home for the latest video content from the Privacy Guides team. Be sure you are subscribed to find out about our latest uploads, and share these videos with your family and friends if you find them helpful!
|
||||
|
||||
[:simple-youtube: Subscribe on YouTube](https://www.youtube.com/@privacyguides){ .md-button .md-button--primary }
|
||||
[:simple-peertube: Subscribe on PeerTube](https://neat.tube/c/privacyguides){ .md-button .md-button--primary }
|
@@ -1,3 +0,0 @@
|
||||
# Playlists
|
||||
|
||||
<!-- material/tags -->
|
@@ -1,5 +0,0 @@
|
||||
template: video-post.html
|
||||
hide:
|
||||
- toc
|
||||
social:
|
||||
cards_layout: video
|
@@ -1,31 +0,0 @@
|
||||
---
|
||||
title: 5 Easy Steps to Protect Yourself Online
|
||||
date:
|
||||
created: 2025-02-14T17:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: Worried about hackers and data breaches? You're not alone. In this video we outline 5 simple yet crucial steps you can take today to dramatically improve your online security and protect your personal information.
|
||||
readtime: 8
|
||||
thumbnail: https://neat.tube/lazy-static/previews/59e10e27-2bc4-4cd4-8cb7-605b101baf4e.jpg
|
||||
embed: https://neat.tube/videos/embed/059b71a5-a1aa-44d5-b410-14a69e3082da
|
||||
peertube: https://neat.tube/w/1GaeNH2GyUark4kNXCcL6Q
|
||||
youtube: https://www.youtube.com/watch?v=x5bKUA2sVFM
|
||||
links:
|
||||
- Password Managers: https://www.privacyguides.org/en/passwords/
|
||||
- Multifactor Authentication: https://www.privacyguides.org/en/multi-factor-authentication/
|
||||
- Desktop Browsers: https://www.privacyguides.org/en/desktop-browsers/
|
||||
- Browser Extensions: https://www.privacyguides.org/en/browser-extensions/
|
||||
- Recommendation Criteria: https://www.privacyguides.org/en/about/criteria/
|
||||
---
|
||||
|
||||
Worried about hackers and data breaches? You're not alone. In this video we outline 5 simple yet crucial steps you can take today to dramatically improve your online security and protect your personal information.
|
||||
|
||||
## Sources
|
||||
|
||||
- The biggest data breaches in 2024: <https://techcrunch.com/2024/10/14/2024-in-data-breaches-1-billion-stolen-records-and-rising/>
|
||||
- Bitwarden Password Strength Tester: <https://bitwarden.com/password-strength/>
|
||||
- Proton Pass Showcase video: <https://www.youtube.com/watch?v=4YLxjvxHMYo>
|
||||
- Bitwarden Showcase video: <https://www.youtube.com/watch?v=3w0sJlgKfWQ>
|
||||
- Google Incognito Lawsuit: <https://apnews.com/article/google-incognito-mode-tracking-lawsuit-settlement-8b30c9397f678bc4c546ab84191f7a9d>
|
||||
- Google ad for GIMP was malicious: <https://www.bleepingcomputer.com/news/security/google-ad-for-gimporg-served-info-stealing-malware-via-lookalike-site/>
|
||||
- Cops were allowed to force a suspect to use thumbprint to unlock phone, says court: <https://9to5mac.com/2024/04/19/thumbprint-to-unlock-phone-kaw/>
|
@@ -1,66 +0,0 @@
|
||||
---
|
||||
title: |
|
||||
Age Verification is a Privacy Nightmare...
|
||||
date:
|
||||
created: 2025-08-15T20:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: |
|
||||
Age verification laws and propositions forcing platforms to restrict content accessed by children and teens have been multiplying in recent years. The problem is, implementing such measures necessarily requires identifying each user accessing this content, one way or another. This is bad news for your privacy.
|
||||
readtime: 11
|
||||
thumbnail: https://neat.tube/lazy-static/previews/90d80b0a-48a9-4c8f-b4c3-74866afa3c49.jpg
|
||||
embed: https://neat.tube/videos/embed/aR4toTWJpcBZamUdQQpGRu
|
||||
peertube: https://neat.tube/w/aR4toTWJpcBZamUdQQpGRu
|
||||
youtube: https://www.youtube.com/watch?v=dczrLhSKO_A
|
||||
---
|
||||
|
||||
## Sources
|
||||
|
||||
- 0:05 <https://www.gov.uk/government/collections/online-safety-act>
|
||||
- 0:08 <https://www.conseil-etat.fr/Pages-internationales/english/news/pornographic-websites-the-order-requiring-user-age-verification-is-maintained>
|
||||
- 0:11: <https://www.infrastructure.gov.au/media-communications/internet/online-safety/social-media-minimum-age>
|
||||
- 0:19 <https://help.withpersona.com/articles/1DfUf0PhctXPDY8s1sbOaI/>
|
||||
- 0:46 <https://www.eff.org/deeplinks/2025/01/impact-age-verification-measures-goes-beyond-porn-sites>
|
||||
- 0:57 <https://www.reddit.com/r/AlJazeera/>
|
||||
- 1:16 <https://www.woodhullfoundation.org/fact-checked/online-age-verification-is-not-the-same-as-flashing-your-id-at-a-liquor-store/>
|
||||
- 1:34 <https://duckduckgo.com/?t=ffab&q=on+device+age+verification&ia=web>
|
||||
- 1:46 <https://www.idnow.io/>
|
||||
- 1:46 <https://withpersona.com/>
|
||||
- 2:11 <https://www.grandviewresearch.com/horizon/outlook/identity-verification-market/north-america>
|
||||
- 2:28 <https://www.aclu-mn.org/en/news/biased-technology-automated-discrimination-facial-recognition>
|
||||
- 3:08 <https://techcrunch.com/2025/07/26/dating-safety-app-tea-breached-exposing-72000-user-images/>
|
||||
- 3:20 <https://www.404media.co/id-verification-service-for-tiktok-uber-x-exposed-driver-licenses-au10tix/>
|
||||
- 3:27 <https://www.forbes.com/sites/paultassi/2025/07/31/the-uks-internet-age-verification-is-being-bypassed-by-death-stranding-2-garrys-mod/>
|
||||
- 3:30 <https://www.youtube.com/watch?v=BfyF3ZUYtyQ>
|
||||
- 3:33 <https://cybernews.com/security/developer-protests-uk-age-gating-with-mock-mp-ids/>
|
||||
- 3:56 <https://www.theverge.com/news/650493/discord-age-verification-face-id-scan-experiment>
|
||||
- 4:09 <https://www.gov.uk/government/collections/online-safety-act>
|
||||
- 4:26 <https://edition.cnn.com/2025/08/13/tech/youtube-ai-age-verification>
|
||||
- 4:27 <https://www.nme.com/news/music/youll-now-have-to-verify-your-age-to-access-certain-content-on-spotify-3881717>
|
||||
- 4:28 <https://arstechnica.com/tech-policy/2025/07/reddit-starts-verifying-ages-of-uk-users-to-comply-with-child-safety-law/>
|
||||
- 4:36 <https://web.archive.org/web/20250120205725/https://www.thegreenlivingforum.net/forum/viewtopic.php?f=2&t=114519>
|
||||
- 4:42 <https://action.freespeechcoalition.com/age-verification-resources/state-avs-laws/>
|
||||
- 4:51 <https://www.parl.ca/legisinfo/en/bill/44-1/s-210>
|
||||
- 4:53 <https://digital-strategy.ec.europa.eu/en/funding/call-tenders-development-consultancy-and-support-age-verification-solution>
|
||||
- 5:22 <https://www.infrastructure.gov.au/media-communications/internet/online-safety/social-media-minimum-age>
|
||||
- 5:54 <https://www.gov.uk/government/publications/online-safety-act-explainer/online-safety-act-explainer>
|
||||
- 6:08 <https://www.404media.co/uk-users-need-to-post-selfie-or-photo-id-to-view-reddits-r-israelcrimes-r-ukrainewarfootage/>
|
||||
- 6:16 <https://www.reddit.com/r/IsraelCrimes/>
|
||||
- 6:18 <https://www.reddit.com/r/lgbt/comments/1m8ipus/how_is_this_okay_reddit_seems_to_be_classifying/>
|
||||
- 6:20 <https://www.reddit.com/r/AlJazeera/>
|
||||
- 6:34 <https://en.wikipedia.org/wiki/Criminalization_of_homosexuality>
|
||||
- 6:50 <https://www.cbc.ca/news/world/facebook-clarifies-breastfeeding-pics-ok-updates-rules-1.2997124>
|
||||
- 6:56 <https://www.plannedparenthood.org/learn/teens>
|
||||
- 7:36 <https://www.reddit.com/r/Twitter/comments/1mo4lmn/i_made_a_chrome_extension_to_bypass_age/>
|
||||
- 7:37 <https://x.com/DanySterkhov/status/1948665431633404170>
|
||||
- 7:43 <https://arstechnica.com/tech-policy/2025/07/vpn-use-soars-in-uk-after-age-verification-laws-go-into-effect/>
|
||||
- 7:48 <https://play.google.com/store/apps/details?id=ch.protonvpn.android>
|
||||
- 8:00 <https://cybernews.com/security/developer-protests-uk-age-gating-with-mock-mp-ids/>
|
||||
- 8:12 <https://www.youtube.com/watch?v=3vXZzRCc8WA>
|
||||
- 8:33 <https://withpersona.com/>
|
||||
- 8:42 <https://www.edps.europa.eu/data-protection/data-protection/glossary/d_en>
|
||||
- 8:50 <https://www.forbes.com/sites/daveywinder/2025/08/10/google-data-breach---august-8-email-warnings-now-confirmed/>
|
||||
- 8:52 <https://www.bleepingcomputer.com/news/security/manpower-staffing-agency-discloses-data-breach-after-attack-claimed-by-ransomhub/>
|
||||
- 8:55 <https://techcrunch.com/2025/01/15/powerschool-data-breach-victims-say-hackers-stole-all-historical-student-and-teacher-data/>
|
||||
- 9:33 <https://www.privacyguides.org/articles/2025/05/06/age-verification-wants-your-face/>
|
||||
- 10:03 <https://www.youtube.com/watch?v=uSliYzklo1w>
|
@@ -1,56 +0,0 @@
|
||||
---
|
||||
title: |
|
||||
How the NSA Tried to Backdoor Every Phone
|
||||
date:
|
||||
created: 2025-07-03T20:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
tags:
|
||||
- The History and Future of the Encryption Wars
|
||||
description: |
|
||||
In a world where everything is highly interconnected, it's easy to feel overwhelmed. Intentionally separating different parts of your life can help you with managing stress, with keeping your data secure, and with staying private online.
|
||||
readtime: 9
|
||||
thumbnail: https://neat.tube/lazy-static/previews/a5ca14cb-0317-4f93-8ac9-ba3257b38b2f.jpg
|
||||
embed: https://neat.tube/videos/embed/qFThArEaKeHtDu78i27F29
|
||||
peertube: https://neat.tube/w/qFThArEaKeHtDu78i27F29
|
||||
youtube: https://www.youtube.com/watch?v=dDD37mSA0iw
|
||||
---
|
||||
Imagine a world where every conversation you had, every message you sent, every piece of data on your phone, was an open book to the government. In 1993, the NSA tried to do just that by inserting a tiny chip into everyone's phone. This is the second part of our series on the Crypto Wars, a monumental moment in history that shaped digital privacy forever.
|
||||
|
||||
## Sources
|
||||
|
||||
0:38 <https://en.wikipedia.org/wiki/Crypto_Wars>
|
||||
|
||||
0:52 <https://www.youtube.com/watch?v=2SWjIPwm954>
|
||||
|
||||
0:58 <https://www.youtube.com/watch?v=TLfZ5Sb1EGw>
|
||||
|
||||
1:02 <https://www.youtube.com/watch?v=bgTxFLHcuKc>
|
||||
|
||||
1:06 <https://www.youtube.com/watch?v=cmGkYHtV0Mo>
|
||||
|
||||
1:15 <https://www.youtube.com/watch?v=j9Qp7AWIylk>
|
||||
|
||||
3:43 <https://www.youtube.com/watch?v=ulWwPwm1jck>
|
||||
|
||||
3:46 <https://www.youtube.com/watch?v=hhxX8tSHnl0>
|
||||
|
||||
4:00 <https://www.youtube.com/watch?v=9vM0oIEhMag>
|
||||
|
||||
4:07 <https://www.youtube.com/watch?v=y36Z9dt5AWI>
|
||||
|
||||
4:27 <https://www.nytimes.com/1994/06/12/magazine/battle-of-the-clipper-chip.html>
|
||||
|
||||
5:18 <https://archive.epic.org/crypto/clipper/foia/att3600_2_9_93.html>
|
||||
|
||||
5:49 <https://www.youtube.com/watch?v=re9nG81Vft8>
|
||||
|
||||
6:27 <https://dl.acm.org/doi/10.1145/191177.191193>
|
||||
|
||||
7:14 <https://www.legislation.gov.uk/ukpga/2023/50/contents>
|
||||
|
||||
7:15 <https://www.homeaffairs.gov.au/help-and-support/how-to-engage-us/consultations/the-assistance-and-access-bill-2018>
|
||||
|
||||
7:35 <https://www.youtube.com/watch?v=bKIR8JLJOlc>
|
||||
|
||||
7:37 <https://www.youtube.com/watch?v=I5WjTTi67BE>
|
@@ -1,60 +0,0 @@
|
||||
---
|
||||
title: |
|
||||
Compartmentalize Your Life (and Your Privacy)
|
||||
date:
|
||||
created: 2025-06-05T20:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
tags:
|
||||
- Pride Month
|
||||
description: |
|
||||
In a world where everything is highly interconnected, it's easy to feel overwhelmed. Intentionally separating different parts of your life can help you with managing stress, with keeping your data secure, and with staying private online.
|
||||
readtime: 8
|
||||
thumbnail: https://neat.tube/lazy-static/previews/d2f0d1c3-8ea8-4c50-9a1b-9534f61874a7.jpg
|
||||
embed: https://neat.tube/videos/embed/k1EeZGt9886WJQMDz2L9pB
|
||||
peertube: https://neat.tube/w/k1EeZGt9886WJQMDz2L9pB
|
||||
youtube: https://www.youtube.com/watch?v=Lhep-1Ynf4g
|
||||
links:
|
||||
- The Importance of Data Privacy For The Queer Community: https://www.privacyguides.org/articles/2025/06/03/importance-of-privacy-for-the-queer-community/#seeking-health-information
|
||||
- Why Privacy Matters: https://www.privacyguides.org/en/basics/why-privacy-matters/
|
||||
- Threat Modeling: https://www.privacyguides.org/en/basics/threat-modeling/
|
||||
---
|
||||
In a world where everything is highly interconnected, it's easy to feel overwhelmed. Compartmentalization can be a good strategy and important privacy technique: Intentionally separating different parts of your life can help you manage stress, keep your data secure, and stay private online.
|
||||
|
||||
## Sources
|
||||
|
||||
- <https://www.intomore.com/culture/identity/nearly-one-in-five-lgbtq-americans-are-still-in-the-closet-says-new-study/>
|
||||
|
||||
- <https://www.forbes.com/sites/daveywinder/2025/03/27/iphone-users-warned-as-dating-apps-leak-sensitive-photos-messages/>
|
||||
|
||||
- <https://en.wikipedia.org/wiki/Capital_punishment_for_homosexuality>
|
||||
|
||||
## Additional resources
|
||||
|
||||
### Helplines
|
||||
|
||||
- [Mindline Trans+ (UK)](https://www.mindinsomerset.org.uk/our-services/adult-one-to-one-support/mindline-trans/): A confidential emotional, mental health support helpline for people who identify as Trans, Agender, Gender Fluid or Non-Binary.
|
||||
|
||||
- [Trans Lifeline Hotline (US and Canada)](https://translifeline.org/hotline/): Trans peer support over the phone.
|
||||
|
||||
- [Suicide & Crisis Helpline (US and Canada)](https://988lifeline.org/): General support 24/7 phone number 988.
|
||||
|
||||
- [Suicide & Crisis Helpline (International)](https://en.wikipedia.org/wiki/List_of_suicide_crisis_lines): List of suicide crisis lines around the world.
|
||||
|
||||
### Supportive organizations
|
||||
|
||||
- [Egale (Canada, International)](https://egale.ca/asylum/): Resources for LGBTQ+ asylum and immigration requests from outside and inside Canada.
|
||||
|
||||
- [SOS Homophobie (France)](https://www.sos-homophobie.org/international-content): Non-profit, volunteer-run organization committed to combatting hate-motivated violence and discrimination against LGBTI people.
|
||||
|
||||
- [The Trevor Project (US)](https://www.thetrevorproject.org/): Suicide prevention and crisis intervention non-profit organization for LGBTQ+ young people.
|
||||
|
||||
- [Trans Rescue (International)](https://transrescue.org/): Organization assisting trans and queer individuals in relocating from dangerous areas to safer places.
|
||||
|
||||
- [Twenty10 (Australia)](https://twenty10.org.au/): Sydney-based organization providing a broad range of free support programs to the LGBTIQA+ community.
|
||||
|
||||
### International advocacy
|
||||
|
||||
- [Amnesty International](https://www.amnesty.org/en/what-we-do/discrimination/lgbti-rights/): Human rights organization running campaigns to protect and uphold the rights of LGBTI people globally.
|
||||
|
||||
- [Human Rights Watch](https://www.hrw.org/topic/lgbt-rights): Human rights non-profit who documents and exposes abuses based on sexual orientation and gender identity worldwide, and advocate for better protective laws and policies.
|
@@ -1,24 +0,0 @@
|
||||
---
|
||||
title: Do you need a VPN?
|
||||
date:
|
||||
created: 2024-12-12T20:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: Commercial Virtual Private Networks are a way of extending the end of your network to exit somewhere else in the world. This can have substantial privacy benefits, but not all VPNs are created equal.
|
||||
readtime: 6
|
||||
thumbnail: https://neat.tube/lazy-static/previews/3f9c497c-d0f1-4fe8-8ac5-539f0f5e40ed.jpg
|
||||
embed: https://neat.tube/videos/embed/2e4e81e8-f59e-4eab-be4d-8464a4a83328
|
||||
peertube: https://neat.tube/w/6HDQH1wnTACKFHh2u1CRQ5
|
||||
youtube: https://www.youtube.com/watch?v=XByp-F8FXtg
|
||||
links:
|
||||
- VPN Recommendations: https://www.privacyguides.org/en/vpn/
|
||||
- VPN Overview: https://www.privacyguides.org/en/basics/vpn-overview/
|
||||
---
|
||||
|
||||
Commercial Virtual Private Networks are a way of extending the end of your network to exit somewhere else in the world. This can have substantial privacy benefits, but not all VPNs are created equal. More information about VPNs can be found on our website: <https://www.privacyguides.org/en/basics/vpn-overview/>
|
||||
|
||||
## Sources
|
||||
|
||||
- VPN Sponsorship Study: <https://www.cs.umd.edu/~dml/papers/vpn-ads-oakland22.pdf>
|
||||
- VPNs Questionable Security Practices: <https://cdt.org/wp-content/uploads/2017/08/FTC-CDT-VPN-complaint-8-7-17.pdf>
|
||||
- VPN Relationship Map: <https://kumu.io/Windscribe/vpn-relationships>
|
@@ -1,24 +0,0 @@
|
||||
---
|
||||
title: |
|
||||
Think Privacy Is Dead? You're Wrong.
|
||||
date:
|
||||
created: 2025-04-17T20:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: |
|
||||
Privacy isn’t dead, in fact it’s growing. In this video, we explore common arguments against protecting your privacy and why they're not only wrong but dangerous.
|
||||
readtime: 5
|
||||
thumbnail: https://neat.tube/lazy-static/previews/ebdd1d98-7136-4f5d-9a9e-449004ce47d1.jpg
|
||||
embed: https://neat.tube/videos/embed/sSx1yyXESXhvZh1E3VTwtG
|
||||
peertube: https://neat.tube/w/sSx1yyXESXhvZh1E3VTwtG
|
||||
youtube: https://www.youtube.com/watch?v=Ni2_BN_9xAY
|
||||
links:
|
||||
- Why Privacy Matters: https://www.privacyguides.org/en/basics/why-privacy-matters/
|
||||
- posts/5-easy-steps-to-protect-yourself-online.md
|
||||
---
|
||||
Privacy isn’t dead, in fact it’s growing. In this video, we explore common arguments against protecting your privacy and why they're not only wrong but dangerous.
|
||||
|
||||
## Sources
|
||||
|
||||
- <https://www.wired.com/story/google-app-gmail-chrome-data/>
|
||||
- <https://www.cloudflare.com/learning/privacy/what-is-the-gdpr/>
|
@@ -1,26 +0,0 @@
|
||||
---
|
||||
title: |
|
||||
Is Your Data Really Safe? Understanding Encryption
|
||||
date:
|
||||
created: 2025-04-03T20:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: |
|
||||
Encryption is a cornerstone of security on the modern internet, in this video we dive deep into how it works and explain why it's so important.
|
||||
readtime: 7
|
||||
thumbnail: https://neat.tube/lazy-static/previews/f23bff89-bc84-46b7-ac0b-7e72a9c3ad7d.jpg
|
||||
embed: https://neat.tube/videos/embed/6gASFPMvy7EBwTiM3XetEZ
|
||||
peertube: https://neat.tube/w/6gASFPMvy7EBwTiM3XetEZ
|
||||
youtube: https://www.youtube.com/watch?v=0uQVzK8QWsw
|
||||
links:
|
||||
- Privacy Means Safety<br><small>by Em on March 5, 2025</small>: https://www.privacyguides.org/articles/2025/03/25/privacy-means-safety/
|
||||
- Why Privacy Matters: https://www.privacyguides.org/en/basics/why-privacy-matters/
|
||||
---
|
||||
Encryption is a cornerstone of security on the modern internet, in this video we dive deep into how it works and explain why it's so important. This is especially crucial as many governments around the world are pushing to ban encryption and breach our fundamental right to privacy.
|
||||
|
||||
## Sources
|
||||
|
||||
- <https://www.bbc.co.uk/news/articles/cgj54eq4vejo>
|
||||
- <https://www.eff.org/deeplinks/2025/02/uks-demands-apple-break-encryption-emergency-us-all>
|
||||
- <https://www.eff.org/deeplinks/2019/12/fancy-new-terms-same-old-backdoors-encryption-debate-2019>
|
||||
- <https://www.amnesty.org/en/latest/news/2025/02/https-www-amnesty-org-en-latest-news-2025-02-uk-encryption-order-threatens-global-privacy-rights/>
|
@@ -1,31 +0,0 @@
|
||||
---
|
||||
title: It's time to stop using SMS, here's why!
|
||||
date:
|
||||
created: 2025-01-24T20:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: Text messaging has been a staple of communication for decades, but it's time to move on. In this video, we'll explore why SMS is an outdated and insecure technology and discuss better alternatives.
|
||||
readtime: 7
|
||||
thumbnail: https://neat.tube/lazy-static/previews/f3b63055-e1b3-4691-8687-4a838738141b.jpg
|
||||
embed: https://neat.tube/videos/embed/7887f661-541c-4bff-9f69-2b7dd81622ca
|
||||
peertube: https://neat.tube/w/fTfKp1tatNnGTtfP3SwbXu
|
||||
youtube: https://www.youtube.com/watch?v=B9BWXvn-rB4s
|
||||
links:
|
||||
- Instant Messengers: https://www.privacyguides.org/en/real-time-communication/
|
||||
---
|
||||
|
||||
Text messaging has been a staple of communication for decades, but it's time to move on. In this video, we'll explore why SMS is an outdated and insecure technology and discuss better alternatives.
|
||||
|
||||
## Sources
|
||||
|
||||
- <https://www.ivpn.net/blog/collection-of-user-data-by-isps-and-telecom-providers-and-sharing-with-third-parties>
|
||||
- <https://www.t-mobile.com/privacy-center/education/analytics-reporting>
|
||||
- <https://arstechnica.com/tech-policy/2021/03/t-mobile-will-tell-advertisers-how-you-use-the-web-starting-next-month/>
|
||||
- <https://docs.fcc.gov/public/attachments/DOC-402213A1.pdf>
|
||||
- <https://www.abc.net.au/news/2024-12-05/united-states-allege-china-behind-salt-typhoon-telecoms-hack/104687712>
|
||||
- <https://mashable.com/article/salt-typhoon-telcom-hack-explainer-us-china>
|
||||
- <https://docs.fcc.gov/public/attachments/DOC-408013A1.pdf>
|
||||
- <https://www.bleepingcomputer.com/news/security/reddit-announces-security-breach-after-hackers-bypassed-staffs-2fa/>
|
||||
- <https://www.gsma.com/solutions-and-impact/connectivity-for-good/mobile-for-development/wp-content/uploads/2019/02/ProofofIdentity2019_WebSpreads.pdf> (Page 12)
|
||||
- <https://www.gsma.com/solutions-and-impact/technologies/networks/rcs/>
|
||||
- <https://www.gsma.com/newsroom/article/rcs-nowin-ios-a-new-chapter-for-mobile-messaging/>
|
@@ -1,37 +0,0 @@
|
||||
---
|
||||
title: |
|
||||
Privacy is Power. And You're Giving Yours Away.
|
||||
date:
|
||||
created: 2025-08-29T01:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: |
|
||||
Privacy isn't about hiding secrets - it's about power. In this video, we explain why thinking you "have nothing to hide" is a dangerous misconception, especially in our ever-connected digital age. Taking back your privacy is easier than you might think!
|
||||
readtime: 4
|
||||
thumbnail: https://neat.tube/lazy-static/previews/c2bb2266-f508-4cb6-993c-c458585cb230.jpg
|
||||
embed: https://neat.tube/videos/embed/vVECH95JDrM4pQf8vP612a
|
||||
peertube: https://neat.tube/w/vVECH95JDrM4pQf8vP612a
|
||||
youtube: https://www.youtube.com/watch?v=fPYsIJeN5WE
|
||||
---
|
||||
|
||||
## Sources
|
||||
|
||||
- 0:01 <https://www.forbes.com/sites/dereksaul/2023/10/25/meta-earnings-record-profits-sales-as-ads-stay-robust-during-zuckerbergs-year-of-efficiency/>
|
||||
- 0:03 <https://apnews.com/article/google-alphabet-earnings-artificial-intelligence-antitrust-30a75937bfbd9a4dfcee91cd4594cd59>
|
||||
- 0:05 <https://www.wired.com/story/openai-valuation-500-billion-skepticism/>
|
||||
- 1:53 <https://en.wikipedia.org/wiki/General_Data_Protection_Regulation>
|
||||
- 2:07 <https://duckduckgo.com/?q=privacy+definition&ia=web>
|
||||
- 2:18 <https://www.euronews.com/>
|
||||
- 2:22 <https://edition.cnn.com/>
|
||||
- 2:25 <https://www.france24.com/en/europe/>
|
||||
- 2:28 <https://www.db.com/index?language_id=3>
|
||||
- 2:39 <https://apnews.com/hub/europe>
|
||||
- 3:07 <https://myaccount.google.com/>
|
||||
- 3:41 <https://www.privacyguides.org/en/>
|
||||
- 3:55 <https://www.zdnet.com/article/not-just-youtube-google-is-using-ai-to-guess-your-age-based-on-your-activity-everywhere/>
|
||||
- 3:56 <https://www.bleepingcomputer.com/news/security/google-to-verify-all-android-devs-to-protect-users-from-malware/>
|
||||
- 3:57 <https://apnews.com/article/age-verification-kids-social-media-privacy-speech-1cf99c96ab6b461cf7612d312e111e79>
|
||||
- 3:59 <https://www.wired.com/story/europe-break-encryption-leaked-document-csa-law/>
|
||||
- 4:01 <https://www.forbes.com/sites/larsdaniel/2024/12/19/eus-chat-control-the-end-of-private-messaging-as-we-know-it/>
|
||||
- 4:02 <https://www.abc.net.au/news/2024-11-28/social-media-age-ban-passes-parliament/104647138>
|
||||
- 4:04 <https://www.bleepingcomputer.com/news/security/malicious-android-apps-with-19m-installs-removed-from-google-play/>
|
@@ -1,23 +0,0 @@
|
||||
---
|
||||
title: |
|
||||
Recall Is Back, But You Still Shouldn’t Use It
|
||||
date:
|
||||
created: 2025-05-22T22:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: |
|
||||
Microsoft is rolling out its controversial Recall feature to Windows users with Copilot+ PCs. However, there are still many privacy and security concerns that remain, even after its reworking.
|
||||
readtime: 6
|
||||
thumbnail: https://neat.tube/lazy-static/previews/54ba6b19-122f-47b6-8f48-8ed651748fd6.jpg
|
||||
embed: https://neat.tube/videos/embed/pAAK8bzb6saZfQSqZLW7eU
|
||||
peertube: https://neat.tube/w/pAAK8bzb6saZfQSqZLW7eU
|
||||
youtube: https://www.youtube.com/watch?v=AzLsJ-4_fhU
|
||||
---
|
||||
Microsoft is rolling out its controversial Recall feature to Windows users with Copilot+ PCs. However, there are still many privacy and security concerns that remain, even after its reworking.
|
||||
|
||||
## Sources
|
||||
|
||||
- Introducing Copilot+ PC's Full Keynote - Microsoft: <https://www.youtube.com/watch?v=aZbHd4suAnQ>
|
||||
- Introducing Windows 11 - Microsoft: <https://www.youtube.com/watch?v=Uh9643c2P6k>
|
||||
- Introducing Copilot - Microsoft: <https://www.youtube.com/watch?v=5rEZGSFgZVY>
|
||||
- Introducing a new Copilot key for Windows 11 PCs - Microsoft: <https://www.youtube.com/watch?v=S1R08Qx6Fvs>
|
@@ -1,16 +0,0 @@
|
||||
---
|
||||
title: |
|
||||
Secureblue: Is This the Most Secure Linux Distro?
|
||||
date:
|
||||
created: 2025-07-25T18:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: |
|
||||
Today, we’re exploring Secureblue, a project aimed at addressing security concerns in traditional Linux distributions by significantly hardening existing components and systems.
|
||||
readtime: 19
|
||||
thumbnail: https://neat.tube/lazy-static/previews/708bf564-963b-4c3f-bb0e-5e2424353509.jpg
|
||||
embed: https://neat.tube/videos/embed/4YA5XTiVbAdYv7nRsCroxn
|
||||
peertube: https://neat.tube/w/4YA5XTiVbAdYv7nRsCroxn
|
||||
youtube: https://www.youtube.com/watch?v=hmKQyeyOd54
|
||||
---
|
||||
Today, we’re exploring [**Secureblue**](https://www.privacyguides.org/en/desktop/#secureblue), a project aimed at addressing security concerns in traditional Linux distributions by significantly hardening existing components and systems.
|
@@ -1,27 +0,0 @@
|
||||
---
|
||||
title: |
|
||||
Stop Confusing Privacy, Anonymity, and Security
|
||||
date:
|
||||
created: 2025-03-14T02:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: |
|
||||
Are you mixing up privacy, security, and anonymity? Don't worry, it's more common than you might think! In this week's video we break down each term, so you can make educated decisions on what tools are best for you.
|
||||
readtime: 7
|
||||
thumbnail: https://neat.tube/lazy-static/previews/35388c84-1dc5-4e09-867e-0badf6ea75fa.jpg
|
||||
embed: https://neat.tube/videos/embed/1f5361c6-2230-4466-9390-659e0a0692ad
|
||||
peertube: https://neat.tube/w/4SmJxn7Q2XRp7ZGDCxvNUV
|
||||
youtube: https://www.youtube.com/watch?v=RRt08MvK4tE
|
||||
links:
|
||||
- Common Threats: https://www.privacyguides.org/en/basics/common-threats/#security-and-privacy
|
||||
- Recommended Tools: https://www.privacyguides.org/en/tools/
|
||||
- Why Privacy Matters: https://www.privacyguides.org/en/basics/why-privacy-matters/
|
||||
- VPN Overview: https://www.privacyguides.org/en/basics/vpn-overview/
|
||||
- Do You Need a VPN?: https://www.privacyguides.org/videos/2024/12/12/do-you-need-a-vpn/
|
||||
---
|
||||
Are you mixing up privacy, security, and anonymity? Don't worry, it's more common than you might think! In this week's video we break down each term, so you can make educated decisions on what [privacy tools](https://www.privacyguides.org/en/tools/) are best for you.
|
||||
|
||||
## Sources
|
||||
|
||||
- <https://apnews.com/article/google-incognito-mode-tracking-lawsuit-settlement-8b30c9397f678bc4c546ab84191f7a9d>
|
||||
- <https://cloud.google.com/blog/products/chrome-enterprise/chromeos-the-platform-designed-for-zero-trust-security>
|
@@ -1,40 +0,0 @@
|
||||
---
|
||||
title: |
|
||||
When Code Became a Weapon
|
||||
date:
|
||||
created: 2025-05-08T20:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: |
|
||||
During the Cold War, the US government tried to stop the export of strong cryptography. In this video we'll dive into the history and explain what happened to cause this and why it was eventually overturned.
|
||||
tags:
|
||||
- The History and Future of the Encryption Wars
|
||||
readtime: 10
|
||||
thumbnail: https://neat.tube/lazy-static/previews/64ffa267-44f4-4780-b283-a620bf856934.jpg
|
||||
embed: https://neat.tube/videos/embed/8Yrh3JVFbS3ekG8i2JGzjN
|
||||
peertube: https://neat.tube/w/8Yrh3JVFbS3ekG8i2JGzjN
|
||||
youtube: https://youtu.be/DtPKBngQcEQ
|
||||
links:
|
||||
- Encryption Software: https://www.privacyguides.org/en/encryption/#openpgp
|
||||
---
|
||||
During the Cold War, the US government tried to stop the export of strong cryptography. In this video we'll dive into the history and explain what happened to cause this and why it was eventually overturned. The ability to use strong encryption wasn’t a given; it has been continually fought for throughout history.
|
||||
|
||||
## Sources
|
||||
|
||||
- <https://hiddenheroes.netguru.com/philip-zimmermann>
|
||||
- <https://dubois.com/pgp-case/>
|
||||
- <https://www.philzimmermann.com/EN/background/index.html>
|
||||
- <https://www.philzimmermann.com/EN/bibliography/index.html>
|
||||
- <https://www.philzimmermann.com/multimedia/NPR%20Morning%20Edition%2012%20Jan%201996%20-%20Justice%20Dept%20drops%20Zimmermann%20case.m4a>
|
||||
- [158,962,555,217,826,360,000 (Enigma Machine) - Numberphile](https://www.youtube.com/watch?v=G2_Q9FoD-oQ&pp=ygUSbnVtYmVycGhpbGUgZW5pZ21h)
|
||||
- [Enigma Code](https://www.youtube.com/watch?v=LU2s28-tN08&pp=ygUbZW5pZ21hIG1hY2hpbmUgZGlzY292ZXJ5IHVr)
|
||||
- [Our History](https://www.youtube.com/watch?v=tIDb-rVvHgQ&pp=ygUSb3VyIGhpc3RvcnkgbnNhIHl0)
|
||||
- [The cold war, Checkpoint Charlie](https://www.youtube.com/watch?v=-pUmfKX3C04&pp=ygUSY2hlY2twb2ludCBjaGFybGll)
|
||||
- [Ordinary Life in the USSR 1961](https://www.youtube.com/watch?v=ExHCAjRsZhA&pp=ygUYbGlmZSBpbiB0aGUgdXNzciBmb290YWdl)
|
||||
- [USA: WASHINGTON: ANTI-NUCLEAR PROTESTS](https://www.youtube.com/watch?v=3SbC3EHS04I&pp=ygUZYW50aSBudWtlIHByb3Rlc3QgMTk5MCBhcNIHCQmGCQGHKiGM7w%3D%3D)
|
||||
- [DEF CON 11 - Phil Zimmerman - A Conversation with Phil Zimmermann](https://www.youtube.com/watch?v=4ww8AAkWFhM&pp=ygUTcGhpbCB6aW1tZXJtYW5uIHBncA%3D%3D)
|
||||
- [The Screen Savers - Phil Zimmerman, creator of Pretty Good Privacy (PGP) Interview](https://www.youtube.com/watch?v=cZD36L3BXXs&pp=ygUdcGhpbCB6aW1tZXJtYW5uIHNjcmVlbiBzYXZlcnM%3D)
|
||||
- [Creator of PGP, Phil Zimmermann Talks At Bitcoin Wednesday](https://www.youtube.com/watch?v=M8z0Nx8svC4&pp=ygUXcGhpbCB6aW1tZXJtYW5uIGJpdGNvaW4%3D)
|
||||
- [Life On The Internet: Networking (1996 Usenet Documentary)](https://www.youtube.com/watch?v=jNme5DlNaZY&pp=ygUbbGlmZSBvbiB0aGUgaW50ZXJuZXIgdXNlbmV0)
|
||||
- [Snooping is in the nature of govts – king of encryption Phil Zimmermann](https://www.youtube.com/watch?v=1eYZ8v_R9jI&pp=ygUdcGhpbCB6aW1tZXJtYW5uIHNjcmVlbiBzYXZlcnM%3D)
|
||||
- <https://www.eff.org/cases/bernstein-v-us-dept-justice>
|
@@ -1,22 +0,0 @@
|
||||
---
|
||||
title: |
|
||||
Anonymity for Everyone: Why You Need Tor
|
||||
date:
|
||||
created: 2025-03-02T18:00:00Z
|
||||
authors:
|
||||
- jordan
|
||||
description: Tor is an invaluable tool for bypassing censorship and browsing privately, in this week's video we dive into the details and explain how it works. Plus we cover some things you should avoid when using Tor to make sure you maintain your anonymity.
|
||||
readtime: 7
|
||||
thumbnail: https://neat.tube/lazy-static/previews/c47cf1e6-c0ba-4d80-82fb-fde27e1569c5.jpg
|
||||
embed: https://neat.tube/videos/embed/725431de-407d-4d36-a4a0-f01e169e0cad
|
||||
peertube: https://neat.tube/w/f7QkKGe5TJaPi6Y4S61Uoi
|
||||
youtube: https://www.youtube.com/watch?v=R7vECGYUhyg
|
||||
links:
|
||||
- Tor Overview: https://www.privacyguides.org/en/advanced/tor-overview/
|
||||
- Tor Browser: https://www.privacyguides.org/en/tor/
|
||||
---
|
||||
Tor is an invaluable tool for bypassing censorship and browsing privately, in this week's video we dive into the details and explain how it works. Plus we cover some things you should avoid when using Tor to make sure you maintain your anonymity.
|
||||
|
||||
## Sources
|
||||
|
||||
- Tor support documentation: <https://support.torproject.org/>
|
Reference in New Issue
Block a user