1
0
mirror of https://github.com/privacyguides/privacyguides.org.git synced 2025-09-12 04:58:49 +00:00

Compare commits

...

2 Commits

42 changed files with 748 additions and 988 deletions

View File

@@ -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/
}

View File

@@ -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",

View File

@@ -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

View File

@@ -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
View 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 }}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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" \

View File

@@ -14,7 +14,6 @@ preview:
# The Power of Digital Provenance in the Age of AI
![Article cover showing a painterly background with cool colors and the Content Credentials logo](../assets/images/digital-provenance/cover.jpg)
<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 -->

View File

@@ -19,7 +19,6 @@ schema_type: NewsArticle
# Welcome to Privacy Guides
![Privacy Guides cover image](../assets/brand/images/png/cover.png)
<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 -->

View File

@@ -37,7 +37,7 @@ The best way to get individual help is from our community on Discourse. If you n
![Signal contact QR code](assets/img/layout/signal-contact-qr.png){ 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}

View File

@@ -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]

View File

@@ -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

View File

@@ -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]

View File

@@ -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 %}

View File

@@ -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 %}

View File

@@ -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>

View File

@@ -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
View 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."

View 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"

View File

@@ -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>"

View 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

View File

@@ -1 +0,0 @@
../blog/.authors.yml

View File

@@ -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 }

View File

@@ -1,3 +0,0 @@
# Playlists
<!-- material/tags -->

View File

@@ -1,5 +0,0 @@
template: video-post.html
hide:
- toc
social:
cards_layout: video

View File

@@ -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/>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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.

View File

@@ -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>

View File

@@ -1,24 +0,0 @@
---
title: |
Think Privacy Is Dead? You're Wrong.
date:
created: 2025-04-17T20:00:00Z
authors:
- jordan
description: |
Privacy isnt dead, in fact its 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 isnt dead, in fact its 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/>

View File

@@ -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/>

View File

@@ -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/>

View File

@@ -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/>

View File

@@ -1,23 +0,0 @@
---
title: |
Recall Is Back, But You Still Shouldnt 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>

View File

@@ -1,16 +0,0 @@
---
title: |
Secureblue: Is This the Most Secure Linux Distro?
date:
created: 2025-07-25T18:00:00Z
authors:
- jordan
description: |
Today, were 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, were 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.

View File

@@ -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>

View File

@@ -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 wasnt 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>

View File

@@ -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/>