1
1
mirror of https://github.com/privacyguides/privacyguides.org.git synced 2026-04-29 08:51:36 +00:00

Compare commits

..

1 Commits

Author SHA1 Message Date
Daniel Gray 2b353eacc3 Add Vanadium guide (#1978) 2024-04-17 02:41:57 +09:30
40 changed files with 413 additions and 518 deletions
+2 -13
View File
@@ -371,7 +371,7 @@
{
"login": "5amm",
"name": "Sam Howell",
"avatar_url": "https://avatars.githubusercontent.com/u/10137?v=4",
"avatar_url": "https://www.samhowell.uk/images/avatar-main.png",
"profile": "https://www.samhowell.uk/",
"contributions": [
"blog"
@@ -2706,9 +2706,7 @@
"avatar_url": "https://avatars.githubusercontent.com/u/49742151?v=4",
"profile": "https://lamtrinh.dev/",
"contributions": [
"doc",
"bug",
"question"
"doc"
]
},
{
@@ -2736,15 +2734,6 @@
"contributions": [
"doc"
]
},
{
"login": "dzenan",
"name": "Dženan",
"avatar_url": "https://avatars.githubusercontent.com/u/69632324?v=4",
"profile": "https://github.com/Dzenan",
"contributions": [
"translation"
]
}
],
"contributorsPerLine": 5,
+1
View File
@@ -91,6 +91,7 @@ jobs:
run: |
cp -rl modules/repo-i18n/i18n .
cp -rl modules/repo-i18n/includes .
cp -rl modules/repo-i18n/theme .
- name: Install Python (pipenv)
if: inputs.privileged
Generated
+137 -131
View File
@@ -18,19 +18,19 @@
"default": {
"babel": {
"hashes": [
"sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb",
"sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"
"sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363",
"sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"
],
"markers": "python_version >= '3.8'",
"version": "==2.15.0"
"markers": "python_version >= '3.7'",
"version": "==2.14.0"
},
"cairocffi": {
"hashes": [
"sha256:1f29a8d41dbda4090c0aa33bcdea64f3b493e95f74a43ea107c4a8a7b7f632ef",
"sha256:7761863603894305f3160eca68452f373433ca8745ab7dd445bd2c6ce50dcab7"
"sha256:78e6bbe47357640c453d0be929fa49cd05cce2e1286f3d2a1ca9cbda7efdb8b7",
"sha256:aa78ee52b9069d7475eeac457389b6275aa92111895d78fbaa2202a52dac112e"
],
"markers": "python_version >= '3.8'",
"version": "==1.7.0"
"markers": "python_version >= '3.7'",
"version": "==1.6.1"
},
"cairosvg": {
"hashes": [
@@ -258,11 +258,11 @@
},
"idna": {
"hashes": [
"sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc",
"sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"
"sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca",
"sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"
],
"markers": "python_version >= '3.5'",
"version": "==3.7"
"version": "==3.6"
},
"jieba": {
"hashes": [
@@ -273,11 +273,11 @@
},
"jinja2": {
"hashes": [
"sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369",
"sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"
"sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa",
"sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"
],
"markers": "python_version >= '3.7'",
"version": "==3.1.4"
"version": "==3.1.3"
},
"markdown": {
"hashes": [
@@ -363,37 +363,29 @@
},
"mkdocs": {
"hashes": [
"sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7",
"sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"
"sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1",
"sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"
],
"markers": "python_version >= '3.8'",
"version": "==1.6.0"
},
"mkdocs-get-deps": {
"hashes": [
"sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c",
"sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"
],
"markers": "python_version >= '3.8'",
"version": "==0.2.0"
"markers": "python_version >= '3.7'",
"version": "==1.5.3"
},
"mkdocs-git-authors-plugin": {
"hashes": [
"sha256:380730a05eeb947a7e84be05fdb1c5ae2a7bc70fd9f6eda941f187c87ae37052",
"sha256:6161f63b87064481a48d9ad01c23e43c3e758930c3a9cc167fe482909ceb9eac"
"sha256:0614f4f87d31eabd0a0d607c9e0532608fc593997ebee282ec564ee6dc1c041e",
"sha256:10dfc57fb10d5c3aceb0e5cdea199ac3a7588979f26484eba46d935dc1044c26"
],
"index": "pypi",
"markers": "python_version >= '3.7'",
"version": "==0.9.0"
"version": "==0.8.0"
},
"mkdocs-git-revision-date-localized-plugin": {
"hashes": [
"sha256:0c439816d9d0dba48e027d9d074b2b9f1d7cd179f74ba46b51e4da7bb3dc4b9b",
"sha256:d796a18b07cfcdb154c133e3ec099d2bb5f38389e4fd54d3eb516a8a736815b8"
"sha256:08fd0c6f33c8da9e00daf40f7865943113b3879a1c621b2bbf0fa794ffe997d3",
"sha256:1f94eb510862ef94e982a2910404fa17a1657ecf29f45a07b0f438c00767fc85"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==1.2.5"
"version": "==1.2.4"
},
"mkdocs-macros-plugin": {
"hashes": [
@@ -517,11 +509,11 @@
},
"platformdirs": {
"hashes": [
"sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee",
"sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"
"sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068",
"sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"
],
"markers": "python_version >= '3.8'",
"version": "==4.2.2"
"version": "==4.2.0"
},
"pycparser": {
"hashes": [
@@ -533,19 +525,19 @@
},
"pygments": {
"hashes": [
"sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199",
"sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"
"sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c",
"sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"
],
"markers": "python_version >= '3.8'",
"version": "==2.18.0"
"markers": "python_version >= '3.7'",
"version": "==2.17.2"
},
"pymdown-extensions": {
"hashes": [
"sha256:3ab1db5c9e21728dabf75192d71471f8e50f216627e9a1fa9535ecb0231b9940",
"sha256:f938326115884f48c6059c67377c46cf631c733ef3629b6eed1349989d1b30cb"
"sha256:c70e146bdd83c744ffc766b4671999796aba18842b268510a329f7f64700d584",
"sha256:f5cc7000d7ff0d1ce9395d216017fa4df3dde800afb1fb72d1c7d3fd35e710f4"
],
"markers": "python_version >= '3.8'",
"version": "==10.8.1"
"version": "==10.7.1"
},
"python-dateutil": {
"hashes": [
@@ -630,96 +622,110 @@
},
"regex": {
"hashes": [
"sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649",
"sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35",
"sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb",
"sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68",
"sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5",
"sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133",
"sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0",
"sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d",
"sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da",
"sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f",
"sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d",
"sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53",
"sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa",
"sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a",
"sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890",
"sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67",
"sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c",
"sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2",
"sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced",
"sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741",
"sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f",
"sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa",
"sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf",
"sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4",
"sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5",
"sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2",
"sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384",
"sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7",
"sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014",
"sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704",
"sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5",
"sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2",
"sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49",
"sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1",
"sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694",
"sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629",
"sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6",
"sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435",
"sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c",
"sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835",
"sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e",
"sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201",
"sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62",
"sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5",
"sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16",
"sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f",
"sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1",
"sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f",
"sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f",
"sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145",
"sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3",
"sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed",
"sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143",
"sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca",
"sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9",
"sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa",
"sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850",
"sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80",
"sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe",
"sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656",
"sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388",
"sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1",
"sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294",
"sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3",
"sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d",
"sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b",
"sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40",
"sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600",
"sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c",
"sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569",
"sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456",
"sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9",
"sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb",
"sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e",
"sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f",
"sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d",
"sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a",
"sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a",
"sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796"
"sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5",
"sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770",
"sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc",
"sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105",
"sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d",
"sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b",
"sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9",
"sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630",
"sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6",
"sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c",
"sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482",
"sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6",
"sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a",
"sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80",
"sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5",
"sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1",
"sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f",
"sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf",
"sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb",
"sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2",
"sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347",
"sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20",
"sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060",
"sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5",
"sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73",
"sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f",
"sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d",
"sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3",
"sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae",
"sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4",
"sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2",
"sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457",
"sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c",
"sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4",
"sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87",
"sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0",
"sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704",
"sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f",
"sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f",
"sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b",
"sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5",
"sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923",
"sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715",
"sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c",
"sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca",
"sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1",
"sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756",
"sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360",
"sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc",
"sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445",
"sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e",
"sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4",
"sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a",
"sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8",
"sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53",
"sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697",
"sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf",
"sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a",
"sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415",
"sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f",
"sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9",
"sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400",
"sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d",
"sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392",
"sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb",
"sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd",
"sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861",
"sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232",
"sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95",
"sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7",
"sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39",
"sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887",
"sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5",
"sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39",
"sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb",
"sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586",
"sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97",
"sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423",
"sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69",
"sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7",
"sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1",
"sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7",
"sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5",
"sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8",
"sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91",
"sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590",
"sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe",
"sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c",
"sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64",
"sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd",
"sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa",
"sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31",
"sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"
],
"markers": "python_version >= '3.8'",
"version": "==2024.5.15"
"markers": "python_version >= '3.7'",
"version": "==2023.12.25"
},
"requests": {
"hashes": [
"sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289",
"sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"
"sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f",
"sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"
],
"markers": "python_version >= '3.8'",
"version": "==2.32.2"
"markers": "python_version >= '3.7'",
"version": "==2.31.0"
},
"six": {
"hashes": [
@@ -747,11 +753,11 @@
},
"tinycss2": {
"hashes": [
"sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d",
"sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"
"sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847",
"sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"
],
"markers": "python_version >= '3.8'",
"version": "==1.3.0"
"markers": "python_version >= '3.7'",
"version": "==1.2.1"
},
"urllib3": {
"hashes": [
+2 -3
View File
@@ -211,7 +211,7 @@ Privacy Guides wouldn't be possible without these wonderful people ([emoji key](
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://thenewoil.org/"><img src="https://avatars.githubusercontent.com/u/133825060?v=4" width="100px;" loading=lazy /><br /><sub><b>Nate Bartram</b></sub></a><br /><a href="#blog-tnonate" title="Blogposts">📝</a></td>
</tr>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.samhowell.uk/"><img src="https://avatars.githubusercontent.com/u/10137?v=4" width="100px;" loading=lazy /><br /><sub><b>Sam Howell</b></sub></a><br /><a href="#blog-5amm" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.samhowell.uk/"><img src="https://www.samhowell.uk/images/avatar-main.png" width="100px;" loading=lazy /><br /><sub><b>Sam Howell</b></sub></a><br /><a href="#blog-5amm" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/asddsaz"><img src="https://avatars.githubusercontent.com/u/42685606?v=4" width="100px;" loading=lazy /><br /><sub><b>asddsaz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=asddsaz" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hugoncosta"><img src="https://avatars.githubusercontent.com/u/29380568?v=4" width="100px;" loading=lazy /><br /><sub><b>Hugo Costa</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hugoncosta" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N"><img src="https://avatars.githubusercontent.com/u/30232065?v=4" width="100px;" loading=lazy /><br /><sub><b>C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N" title="Documentation">📖</a></td>
@@ -571,13 +571,12 @@ Privacy Guides wouldn't be possible without these wonderful people ([emoji key](
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/FishCoding"><img src="https://avatars.githubusercontent.com/u/16527725?v=4" width="100px;" loading=lazy /><br /><sub><b>Mario</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=FishCoding" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://skye.sh/"><img src="https://avatars.githubusercontent.com/u/48442092?v=4" width="100px;" loading=lazy /><br /><sub><b>skye</b></sub></a><br /><a href="#question-dioxias" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/r2fo"><img src="https://avatars.githubusercontent.com/u/50496756?v=4" width="100px;" loading=lazy /><br /><sub><b>r2fo</b></sub></a><br /><a href="#translation-r2fo" title="Translation">🌍</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lamtrinh.dev/"><img src="https://avatars.githubusercontent.com/u/49742151?v=4" width="100px;" loading=lazy /><br /><sub><b>LamTrinh.Dev</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lamtrinhdev" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Alamtrinhdev" title="Bug reports">🐛</a> <a href="#question-lamtrinhdev" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lamtrinh.dev/"><img src="https://avatars.githubusercontent.com/u/49742151?v=4" width="100px;" loading=lazy /><br /><sub><b>LamTrinh.Dev</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lamtrinhdev" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://discuss.privacyguides.net/u/frostlike"><img src="https://forum-cdn.privacyguides.net/user_avatar/discuss.privacyguides.net/frostlike/288/3600_2.png" width="100px;" loading=lazy /><br /><sub><b>frostlike</b></sub></a><br /><a href="#question" title="Answering Questions">💬</a></td>
</tr>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://scholz.ruhr/"><img src="https://avatars.githubusercontent.com/u/21988035?v=4" width="100px;" loading=lazy /><br /><sub><b>Merlin Scholz</b></sub></a><br /><a href="#translation-merlinscholz" title="Translation">🌍</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://jordanwarne.net/"><img src="https://avatars.githubusercontent.com/u/154663344?v=4" width="100px;" loading=lazy /><br /><sub><b>jordan warne</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jordan-warne" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Dzenan"><img src="https://avatars.githubusercontent.com/u/69632324?v=4" width="100px;" loading=lazy /><br /><sub><b>Dženan</b></sub></a><br /><a href="#translation-dzenan" title="Translation">🌍</a></td>
</tr>
</tbody>
<tfoot>
+7 -10
View File
@@ -4,20 +4,19 @@ title: Supporting Us
<!-- markdownlint-disable MD036 -->
It takes a lot of [people](contributors.md) and [work](https://github.com/privacyguides/privacyguides.org/pulse/monthly) to keep Privacy Guides up to date and spreading the word about privacy and mass surveillance. If you like what we do, consider getting involved by [editing the site](https://github.com/privacyguides/privacyguides.org) or [contributing translations](https://crowdin.com/project/privacyguides).
## Donate
<div class="admonition failure" markdown>
<p class="admonition-title">Donation Information</p>
Currently, the best way to support our work is to send a monthly or one-time contribution via GitHub Sponsors. We will be able to accept donations via alternate payment platforms very soon.
Unfortunately, Open Collective Foundation (our long-time fiscal host) announced they are dissolving their operations and can no longer support us or any project they host. Thus, we have no way to accept donations at this time. We are looking into ways to move forward from a legal perspective, but in the meantime any non-monetary contribution you can provide would be greatly appreciated.
[:material-heart:{ .pg-red } Sponsor us on GitHub](https://github.com/sponsors/privacyguides){ class="md-button md-button--primary" }
We are also working with our fiscal host to receive cryptocurrency donations, at the moment the accounting is unfeasible for many smaller transactions, but this should change in the near future. In the meantime, if you still wish to make a cryptocurrency donation, please reach out to [jonah@privacyguides.org](mailto:jonah@privacyguides.org) to arrange a transaction.
## Merchandise
</div>
Another option to support us is by buying our merchandise from HelloTux. We get a small commission for each item sold, and you get a quality product to show for it.
[Buy on HelloTux.com](https://hellotux.com/privacyguides){ class="md-button" }
Thank you to all those who support our mission! :heart:
## How We Use Donations
Privacy Guides is a **non-profit** organization. We use donations for a variety of purposes, including:
@@ -38,6 +37,4 @@ Privacy Guides is a **non-profit** organization. We use donations for a variety
: We occasionally purchase products and services for the purposes of testing our [recommended tools](../tools.md).
Your donation will go to a dedicated fund within [MAGIC Grants](https://magicgrants.org/), a 501(c)(3) organization. The funds will only be used for this project specifically. You may qualify for a tax deduction. If you need a donation receipt, please email <info@magicgrants.org>.
Thank you to all those who support our mission! :material-heart:{ .pg-red }
We are still working with our fiscal host (the Open Collective Foundation) to receive cryptocurrency donations, at the moment the accounting is unfeasible for many smaller transactions, but this should change in the future. In the meantime, if you wish to make a sizable (> $100) cryptocurrency donation, please reach out to [jonah@privacyguides.org](mailto:jonah@privacyguides.org).
+6 -7
View File
@@ -2,14 +2,13 @@
title: Traffic Statistics
---
<!-- markdownlint-disable MD051 -->
We self-host [Umami](https://umami.is) to create a nice visualization of our traffic statistics, which are public at the link below.
[View Statistics](https://stats.privacyguides.net/share/nVWjyd2QfgOPBhMF/www.privacyguides.org){ .md-button .md-button--primary }
With this process:
We self-host [Umami](https://umami.is) to create a nice visualization of our traffic statistics, which are public at the link below. With this process:
- Your information is never shared with a third-party, it stays on servers we control
- Your personal data is never saved, we only collect data in aggregate
- No client-side JavaScript is used
- No client-side JavaScript is required
Because of these facts, keep in mind our statistics may be inaccurate. It is a useful tool to compare different dates with each other and analyze overall trends, but the actual numbers may be far off from reality. In other words they're *precise* statistics, but not *accurate* statistics.
Because of these facts, keep in mind our statistics may be inaccurate. It is a useful tool to compare different dates with each other and analyze overall trends, but the actual numbers may be far off from reality. They're *precise* statistics, but not *accurate* statistics.
[View Statistics](https://stats.privacyguides.net/share/nVWjyd2QfgOPBhMF/www.privacyguides.org){ .md-button .md-button--primary }
[Opt-Out](#__consent){ .md-button }
+3 -3
View File
@@ -16,7 +16,7 @@ Despite this, its typically the best option.
Its relatively simple to purchase gift cards and prepaid cards at most grocery stores and convenience stores with cash. Gift cards usually dont have a fee, though prepaid cards often do, so pay close attention to these fees and expiry dates. Some stores may ask to see your ID at checkout to reduce fraud.
Gift cards usually have limits of up to $200 per card, but some offer limits of up to $2,000 per card. Prepaid cards (e.g.: from Visa or Mastercard) usually have limits of up to $1,000 per card.
Gift cards usually have limits of up to $200 per card, but some offer limits of up to $2,000 per card. Prepaid cards (eg: from Visa or Mastercard) usually have limits of up to $1,000 per card.
Gift cards have the downside of being subject to merchant policies, which can have terrible terms and restrictions. For example, some merchants dont accept payment in gift cards exclusively, or they may cancel the value of the card if they consider you to be a high-risk user. Once you have merchant credit, the merchant has a strong degree of control over this credit.
@@ -57,7 +57,7 @@ Additionally, many if not most cryptocurrencies are scams. Make transactions car
There are a number of cryptocurrency projects which purport to provide privacy by making transactions anonymous. We recommend using one which provides transaction anonymity **by default** to avoid operational errors.
- [Recommended Cryptocurrency :material-arrow-right-drop-circle:](../cryptocurrency.md#monero)
- [Recommended Cryptocurrency :material-arrow-right-drop-circle:](../cryptocurrency.md#coins)
Privacy coins have been subject to increasing scrutiny by government agencies. In 2020, [the IRS published a $625,000 bounty](https://forbes.com/sites/kellyphillipserb/2020/09/14/irs-will-pay-up-to-625000-if-you-can-crack-monero-other-privacy-coins/?sh=2e9808a085cc) for tools which can break Bitcoin Lightning Network and/or Monero's transaction privacy. They ultimately [paid two companies](https://sam.gov/opp/5ab94eae1a8d422e88945b64181c6018/view) (Chainalysis and Integra Fec) a combined $1.25 million for tools which purport to do so (it is unknown which cryptocurrency network these tools target). Due to the secrecy surrounding tools like these, ==none of these methods of tracing cryptocurrencies have been independently confirmed.== However, it is quite likely that tools which assist targeted investigations into private coin transactions exist, and that privacy coins only succeed in thwarting mass surveillance.
@@ -75,7 +75,7 @@ With cryptocurrency there are two forms of wallets: custodial wallets and noncus
### Acquisition
Acquiring [cryptocurrencies](../cryptocurrency.md) like Monero privately can be difficult. P2P marketplaces, platforms which facilitate trades between people, are one option that can be used. If using an exchange which requires KYC is an acceptable risk for you as long as subsequent transactions can't be traced, a much easier option is to purchase Monero on an exchange like [Kraken](https://kraken.com), or purchase Bitcoin/Litecoin from a KYC exchange which can then be swapped for Monero. Then, you can withdraw the purchased Monero to your own noncustodial wallet to use privately from that point forward.
Acquiring [cryptocurrencies](../cryptocurrency.md) like Monero privately can be difficult. P2P marketplaces like [LocalMonero](https://localmonero.co), a platform which facilitates trades between people, are one option that can be used. If using an exchange which requires KYC is an acceptable risk for you as long as subsequent transactions can't be traced, a much easier option is to purchase Monero on an exchange like [Kraken](https://kraken.com), or purchase Bitcoin/Litecoin from a KYC exchange which can then be swapped for Monero. Then, you can withdraw the purchased Monero to your own noncustodial wallet to use privately from that point forward.
If you go this route, make sure to purchase Monero at different times and in different amounts than where you will spend it. If you purchase $5000 of Monero at an exchange and make a $5000 purchase in Monero an hour later, those actions could potentially be correlated by an outside observer regardless of which path the Monero took. Staggering purchases and purchasing larger amounts of Monero in advance to later spend on multiple smaller transactions can avoid this pitfall.
+1 -1
View File
@@ -126,7 +126,7 @@ Governments often justify mass surveillance programs as necessary means to comba
<div class="admonition quote" markdown>
<p class="admonition-title">ACLU: <em><a href="https://aclu.org/news/national-security/the-privacy-lesson-of-9-11-mass-surveillance-is-not-the-way-forward">The Privacy Lesson of 9/11: Mass Surveillance is Not the Way Forward</a></em></p>
In the face of Edward Snowden's disclosures of government programs such as [PRISM](https://en.wikipedia.org/wiki/PRISM) and [Upstream](https://en.wikipedia.org/wiki/Upstream_collection), intelligence officials also admitted that the NSA had for years been secretly collecting records about virtually every Americans phone calls — whos calling whom, when those calls are made, and how long they last. This kind of information, when amassed by the NSA day after day, can reveal incredibly sensitive details about peoples lives and associations, such as whether they have called a pastor, an abortion provider, an addiction counselor, or a suicide hotline.
In the face of [Edward Snowden's disclosures of government programs such as [PRISM](https://en.wikipedia.org/wiki/PRISM) and [Upstream](https://en.wikipedia.org/wiki/Upstream_collection)], intelligence officials also admitted that the NSA had for years been secretly collecting records about virtually every Americans phone calls — whos calling whom, when those calls are made, and how long they last. This kind of information, when amassed by the NSA day after day, can reveal incredibly sensitive details about peoples lives and associations, such as whether they have called a pastor, an abortion provider, an addiction counselor, or a suicide hotline.
</div>
+5 -1
View File
@@ -101,7 +101,7 @@ When configuring your MFA method, keep in mind that it is only as secure as your
You should always have backups for your MFA method. Hardware security keys can get lost, stolen or simply stop working over time. It is recommended that you have a pair of hardware security keys with the same access to your accounts instead of just one.
When using TOTP with an authenticator app, be sure to back up your recovery keys or the app itself, or copy the "shared secrets" to another instance of the app on a different phone or to an encrypted container (e.g. [VeraCrypt](../encryption.md#veracrypt-disk)).
When using TOTP with an authenticator app, be sure to back up your recovery keys or the app itself, or copy the "shared secrets" to another instance of the app on a different phone or to an encrypted container (e.g. [VeraCrypt](../encryption.md#veracrypt)).
### Initial Set Up
@@ -119,6 +119,10 @@ If you use SMS MFA, use a carrier who will not switch your phone number to a new
Beyond just securing your website logins, multi-factor authentication can be used to secure your local logins, SSH keys or even password databases as well.
### Windows
Yubico has a dedicated [Credential Provider](https://learn.microsoft.com/windows/win32/secauthn/credential-providers-in-windows) that adds Challenge-Response authentication for the username + password login flow for local Windows accounts. If you have a YubiKey with Challenge-Response authentication support, take a look at the [Yubico Login for Windows Configuration Guide](https://support.yubico.com/hc/articles/360013708460-Yubico-Login-for-Windows-Configuration-Guide), which will allow you to set up MFA on your Windows computer.
### macOS
macOS has [native support](https://support.apple.com/guide/deployment/intro-to-smart-card-integration-depd0b888248/web) for authentication with smart cards (PIV). If you have a smartcard or a hardware security key that supports the PIV interface such as the YubiKey, we recommend that you follow your smartcard/hardware security vendor's documentation and set up second factor authentication for your macOS computer.
+4 -5
View File
@@ -10,8 +10,7 @@ Calendars contain some of your most sensitive data; use products that implement
<div class="admonition recommendation" markdown>
![Tuta logo](assets/img/email/tuta.svg#only-light){ align=right }
![Tuta logo](assets/img/email/tuta-dark.svg#only-dark){ align=right }
![Tuta logo](assets/img/calendar/tuta.svg){ align=right }
**Tuta** offers a free and encrypted calendar across their supported platforms. Features include: automatic E2EE of all data, sharing features, import/export functionality, multi-factor authentication, and [more](https://tuta.com/calendar-app-comparison).
@@ -28,9 +27,9 @@ Multiple calendars and extended sharing functionality is limited to paid subscri
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=de.tutao.tutanota)
- [:simple-appstore: App Store](https://apps.apple.com/app/id922429609)
- [:simple-windows11: Windows](https://tuta.com/blog/desktop-clients)
- [:simple-apple: macOS](https://tuta.com/blog/desktop-clients)
- [:simple-linux: Linux](https://tuta.com/blog/desktop-clients)
- [:simple-windows11: Windows](https://tuta.com/blog/posts/desktop-clients)
- [:simple-apple: macOS](https://tuta.com/blog/posts/desktop-clients)
- [:simple-linux: Linux](https://tuta.com/blog/posts/desktop-clients)
- [:simple-flathub: Flathub](https://flathub.org/apps/com.tutanota.Tutanota)
- [:octicons-browser-16: Web](https://app.tuta.com)
+1 -1
View File
@@ -345,7 +345,7 @@ Brave's Web3 features can potentially add to your browser fingerprint and attack
#### Brave Rewards and Wallet
**Brave Rewards** lets you recieve Basic Attention Token (BAT) cryptocurrency for performing certain actions within Brave. It relies on a custodial account and KYC from a select number of providers. We do not recommend BAT as a [private cryptocurrency](cryptocurrency.md), nor do we recommend using a [custodial wallet](advanced/payments.md#wallet-custody), so we would discourage using this feature.
**Brave Rewards** lets you recieve Basic Attention Token (BAT) cryptocurrency for performing certain actions within Brave. It relies on a custodial account and KYC from a select number of providers. We do not recommend BAT as a [private cryptocurrency](cryptocurrency.md), nor do we recommend using a [custodial wallet](advanced/payments.md#other-coins-bitcoin-ethereum-etc), so we would discourage using this feature.
**Brave Wallet** operates locally on your computer, but does not support any private cryptocurrencies, so we would discourage using this feature as well.
+5 -7
View File
@@ -214,13 +214,13 @@ Using these apps is insufficient to determine that a device is "clean", and not
Hypatia is particularly good at detecting common stalkerware: If you suspect you are a victim of stalkerware, you should [visit this page](https://stopstalkerware.org/information-for-survivors) for advice.
### iVerify Basic (iOS)
### iVerify (iOS)
<div class="admonition recommendation" markdown>
![iVerify logo](assets/img/device-integrity/iverify.webp){ align=right }
**iVerify Basic** is an iOS app which can scan your device to check configuration settings, patch level, and other areas of security. It also checks your device for indicators of compromise by jailbreak tools or spyware such as Pegasus.
**iVerify** is an iOS app which automatically scans your device to check configuration settings, patch level, and other areas of security. It also checks your device for indicators of compromise by jailbreak tools or spyware such as Pegasus.
[:octicons-home-16: Homepage](https://iverify.io/consumer){ .md-button .md-button--primary }
[:octicons-eye-16:](https://iverify.io/privacy-policy){ .card-link title="Privacy Policy" }
@@ -235,10 +235,8 @@ Hypatia is particularly good at detecting common stalkerware: If you suspect you
</div>
Previously, iVerify would scan your device for threats automatically in the background and notify you if one is found, but this is [no longer the case](https://discuss.privacyguides.net/t/iverify-basic-is-now-available-on-android/18458/11) following their rebrand of the consumer app to *iVerify Basic* in May 2024. You can still run manual scans within the app. Automatic background scanning is now only available in iVerify's enterprise product which is unavailable to consumers.
Like all iOS apps, iVerify is restricted to what it can observe about your device from within the iOS App Sandbox. It will not provide nearly as robust analysis as a full-system analysis tool like [MVT](#mobile-verification-toolkit). Its primary function is to detect whether your device is jailbroken, which it is effective at, however a hypothetical threat which is *specifically* designed to bypass iVerify's checks would likely succeed at doing so.
Like all iOS apps, iVerify Basic is restricted to what it can observe about your device from within the iOS App Sandbox. It will not provide nearly as robust analysis as a full-system analysis tool like [MVT](#mobile-verification-toolkit). Its primary function is to detect whether your device is jailbroken, which it is effective at, however a hypothetical threat which is *specifically* designed to bypass iVerify's checks would likely succeed at doing so.
iVerify is **not** an "antivirus" tool, and will not detect non-system-level malware such as malicious custom keyboards or malicious Wi-Fi Sync configurations, for example.
iVerify Basic is **not** an "antivirus" tool, and will not detect non-system-level malware such as malicious custom keyboards or malicious Wi-Fi Sync configurations, for example.
In addition to device scanning, iVerify Basic also includes a number of additional security utilities which you may find useful, including device [reboot reminders](os/ios-overview.md#before-first-unlock), iOS update notifications (which are often faster than Apple's staggered update notification rollout), and some basic privacy and security guides.
In addition to device scanning, iVerify also includes a number of additional security utilities which you may find useful, including device reboot reminders, iOS update notifications (which are often faster than Apple's staggered update notification rollout), some basic privacy and security guides, and a DNS over HTTPS tool which can connect your device's [DNS](dns.md) queries securely to Quad9, Cloudflare, or Google.
+6 -7
View File
@@ -65,7 +65,7 @@ OpenPGP also does not support Forward secrecy, which means if either your or the
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=ch.protonmail.android)
- [:simple-appstore: App Store](https://apps.apple.com/app/id979659905)
- [:simple-github: GitHub](https://github.com/ProtonMail/android-mail/releases)
- [:simple-github: GitHub](https://github.com/ProtonMail/proton-mail-android/releases)
- [:simple-windows11: Windows](https://proton.me/mail/bridge#download)
- [:simple-apple: macOS](https://proton.me/mail/bridge#download)
- [:simple-linux: Linux](https://proton.me/mail/bridge#download)
@@ -178,7 +178,7 @@ These providers store your emails with zero-knowledge encryption, making them gr
<div class="grid cards" markdown>
- ![Tuta logo](assets/img/email/tuta.svg#only-light){ .twemoji loading=lazy }![Tuta logo](assets/img/email/tuta-dark.svg#only-dark){ .twemoji loading=lazy } [Tuta](email.md#tuta)
- ![Tuta logo](assets/img/email/tuta.svg){ .twemoji } [Tuta](email.md#tuta)
</div>
@@ -186,8 +186,7 @@ These providers store your emails with zero-knowledge encryption, making them gr
<div class="admonition recommendation" markdown>
![Tuta logo](assets/img/email/tuta.svg#only-light){ align=right }
![Tuta logo](assets/img/email/tuta-dark.svg#only-dark){ align=right }
![Tuta logo](assets/img/email/tuta.svg){ align=right }
**Tuta** is an email service with a focus on security and privacy through the use of encryption. Tuta has been in operation since **2011** and is based in Hanover, Germany. Free accounts start with 1GB of storage.
@@ -212,7 +211,7 @@ These providers store your emails with zero-knowledge encryption, making them gr
</div>
Tuta doesn't support the [IMAP protocol](https://tuta.com/support#imap) or the use of third-party [email clients](email-clients.md), and you also won't be able to add [external email accounts](https://github.com/tutao/tutanota/issues/544#issuecomment-670473647) to the Tuta app. [Email import](https://github.com/tutao/tutanota/issues/630) is not currently supported either, though this is [due to be changed](https://tuta.com/blog/kickoff-import). Emails can be exported [individually or by bulk selection](https://tuta.com/support#generalMail) per folder, which may be inconvenient if you have many folders.
Tuta doesn't support the [IMAP protocol](https://tuta.com/faq/#imap) or the use of third-party [email clients](email-clients.md), and you also won't be able to add [external email accounts](https://github.com/tutao/tutanota/issues/544#issuecomment-670473647) to the Tuta app. [Email import](https://github.com/tutao/tutanota/issues/630) is not currently supported either, though this is [due to be changed](https://tuta.com/blog/posts/kickoff-import). Emails can be exported [individually or by bulk selection](https://tuta.com/support#generalMail) per folder, which may be inconvenient if you have many folders.
#### :material-check:{ .pg-green } Custom Domains and Aliases
@@ -220,7 +219,7 @@ Paid Tuta accounts can use either 15 or 30 aliases depending on their plan and u
#### :material-information-outline:{ .pg-blue } Private Payment Methods
Tuta only directly accepts credit cards and PayPal, however [cryptocurrency](cryptocurrency.md) can be used to purchase gift cards via their [partnership](https://tuta.com/support/#cryptocurrency) with Proxystore.
Tuta only directly accepts credit cards and PayPal, however [cryptocurrency](cryptocurrency.md) can be used to purchase gift cards via their [partnership](https://tuta.com/faq/#cryptocurrency) with Proxystore.
#### :material-check:{ .pg-green } Account Security
@@ -240,7 +239,7 @@ Tuta will [delete inactive free accounts](https://tuta.com/support#inactive-acco
#### :material-information-outline:{ .pg-blue } Additional Functionality
Tuta offers the business version of [Tuta to non-profit organizations](https://tuta.com/blog/secure-email-for-non-profit) for free or with a heavy discount.
Tuta offers the business version of [Tuta to non-profit organizations](https://tuta.com/blog/posts/secure-email-for-non-profit) for free or with a heavy discount.
Tuta doesn't offer a digital legacy feature.
+3 -3
View File
@@ -340,7 +340,7 @@ gpg --quick-gen-key alice@example.com future-default
<div class="admonition note" markdown>
<p class="admonition-title">Note</p>
We suggest [Canary Mail](email-clients.md#canary-mail-ios) for using PGP with email on iOS devices.
We suggest [Canary Mail](email-clients.md#canary-mail) for using PGP with email on iOS devices.
</div>
@@ -348,7 +348,7 @@ We suggest [Canary Mail](email-clients.md#canary-mail-ios) for using PGP with em
![GPG Suite logo](assets/img/encryption-software/gpgsuite.png){ align=right }
**GPG Suite** provides OpenPGP support for [Apple Mail](email-clients.md#apple-mail-macos) and macOS.
**GPG Suite** provides OpenPGP support for [Apple Mail](email-clients.md#apple-mail) and macOS.
We recommend taking a look at their [First steps](https://gpgtools.tenderapp.com/kb/how-to/first-steps-where-do-i-start-where-do-i-begin-setup-gpgtools-create-a-new-key-your-first-encrypted-email) and [Knowledge base](https://gpgtools.tenderapp.com/kb) for support.
@@ -372,7 +372,7 @@ We recommend taking a look at their [First steps](https://gpgtools.tenderapp.com
![OpenKeychain logo](assets/img/encryption-software/openkeychain.svg){ align=right }
**OpenKeychain** is an Android implementation of GnuPG. It's commonly required by mail clients such as [K-9 Mail](email-clients.md#k-9-mail-android) and [FairEmail](email-clients.md#fairemail-android) and other Android apps to provide encryption support. Cure53 completed a [security audit](https://openkeychain.org/openkeychain-3-6) of OpenKeychain 3.6 in October 2015. Technical details about the audit and OpenKeychain's solutions can be found [here](https://github.com/open-keychain/open-keychain/wiki/cure53-Security-Audit-2015).
**OpenKeychain** is an Android implementation of GnuPG. It's commonly required by mail clients such as [K-9 Mail](email-clients.md#k-9-mail) and [FairEmail](email-clients.md#fairemail) and other Android apps to provide encryption support. Cure53 completed a [security audit](https://openkeychain.org/openkeychain-3-6) of OpenKeychain 3.6 in October 2015. Technical details about the audit and OpenKeychain's solutions can be found [here](https://github.com/open-keychain/open-keychain/wiki/cure53-Security-Audit-2015).
[:octicons-home-16: Homepage](https://openkeychain.org){ .md-button .md-button--primary }
[:octicons-eye-16:](https://openkeychain.org/help/privacy-policy){ .card-link title="Privacy Policy" }
+65 -12
View File
@@ -23,6 +23,30 @@ schema:
subjectOf:
"@type": WebPage
url: "./"
-
"@context": http://schema.org
"@type": MobileApplication
name: Vanadium
image: /assets/img/browsers/vanadium.svg
url: https://vanadium.app
applicationCategory: Web Browser
operatingSystem:
- Android
subjectOf:
"@type": WebPage
url: "./"
-
"@context": http://schema.org
"@type": MobileApplication
name: Mull
image: /assets/img/browsers/mull.svg
url: https://divestos.org/pages/our_apps#mull
applicationCategory: Web Browser
operatingSystem:
- Android
subjectOf:
"@type": WebPage
url: "./"
-
"@context": http://schema.org
"@type": MobileApplication
@@ -128,8 +152,49 @@ Brave allows you to select additional content filters within the internal `brave
[Brave Sync](https://support.brave.com/hc/articles/360059793111-Understanding-Brave-Sync) allows your browsing data (history, bookmarks, etc.) to be accessible on all your devices without requiring an account and protects it with E2EE.
### Vanadium (GrapheneOS)
<div class="admonition recommendation" markdown>
![Vanadium logo](assets/img/browsers/vanadium.svg#only-light){ align=right }
![Vanadium logo](assets/img/browsers/vanadium-dark.svg#only-dark){ align=right }
**Vanadium** is the default browser that is included with [GrapheneOS](../android.md#grapheneos). The Chromium-based browser includes a number of [patches](https://github.com/GrapheneOS/Vanadium/tree/main/patches) which help improve the security and privacy of the WebView used by other apps.
Among the numerous privacy and security enhancements listed in their documentation, Vanadium notably includes a built-in content blocker and disables JavaScript Just-In-Time (JIT) compilation by default, both of which can be toggled on a per-site basis.
[:octicons-home-16: Homepage](https://vanadium.app){ .md-button .md-button--primary }
[:octicons-eye-16:](https://grapheneos.org/faq#privacy-policy){ .card-link title="Privacy Policy" }
[:octicons-info-16:](https://grapheneos.org/usage#web-browsing){ .card-link title=Documentation }
[:octicons-code-16:](https://github.com/GrapheneOS/Vanadium){ .card-link title="Source Code" }
</div>
#### Recommended Vanadium Configuration
<div class="annotate" markdown>
As explained in their documentation, Vanadium prioritizes better privacy- and security-enhancing defaults to avoid users making themselves stand out by opting into non-default settings.
You might, however, consider configuring the following privacy-related settings, all of which can be found in :material-dots-vertical: → **Settings****Privacy and security**.
- [x] Select **Close tabs on exit**
- [x] Select **Open external links in incognito** (1)
- [x] Select **Lock Incognito tabs when you leave Vanadium**
</div>
1. With this setting enabled, **all** links from other apps, custom tabs, search intents and share intents will open in incognito tabs.
### Mull
<div class="admonition danger" markdown>
<p class="admonition-title">Danger</p>
Firefox (Gecko)-based browsers on Android [lack per-site process isolation](https://bugzilla.mozilla.org/show_bug.cgi?id=1565196), a powerful security feature that offers additional protection against a malicious website exploiting a security vulnerability. Missing this feature likely won't pose an issue for low-risk web browsers who keep their browser up-to-date, but those visiting higher-risk sites or at risk of targeted/0-day attacks should strongly consider a Chromium-based browser like [Brave](#brave) instead.
</div>
<div class="admonition recommendation" markdown>
![Mull logo](assets/img/browsers/mull.svg){ align=right }
@@ -150,16 +215,6 @@ Brave allows you to select additional content filters within the internal `brave
</div>
<div class="admonition danger" markdown>
<p class="admonition-title">Danger</p>
Firefox (Gecko)-based browsers on Android [lack](https://bugzilla.mozilla.org/show_bug.cgi?id=1610822) [site isolation](https://wiki.mozilla.org/Project_Fission),[^1] a powerful security feature that protects against a malicious site performing a [Spectre](https://en.wikipedia.org/wiki/Spectre_(security_vulnerability))-like attack to gain access to the memory of another website you have open.[^2] Chromium-based browsers like [Brave](#brave) will provide more robust protection against malicious websites.
</div>
[^1]: This should not be mistaken for [state partitioning](https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning) (or dynamic [first party isolation](https://2019.www.torproject.org/projects/torbrowser/design/#identifier-linkability)), where website data such as cookies and cache is restricted so that a third-party embedded in one top-level site cannot access data stored under another top-level site. This is an important privacy feature to prevent cross-site tracking and **is** supported by Firefox on Android.
[^2]: GeckoView also [does not](https://bugzilla.mozilla.org/show_bug.cgi?id=1565196) take advantage of Android's native process sandboxing by using the [isolatedProcess](https://developer.android.com/guide/topics/manifest/service-element#isolated) flag, which normally allows an app to safely run less trusted code in a separate process that has no permissions of its own.
Enable DivestOS's [F-Droid Repo](https://divestos.org/fdroid/official) to receive updates directly from the developer. Downloading Mull from the default F-Droid repo will mean your updates could be delayed by a few days or longer.
Mull enables many features upstreamed by the [Tor uplift project](https://wiki.mozilla.org/Security/Tor_Uplift) using preferences from [Arkenfox](desktop-browsers.md#arkenfox-advanced). Proprietary blobs are removed from Mozilla's code using the scripts developed for Fennec F-Droid.
@@ -170,8 +225,6 @@ We would suggest installing [uBlock Origin](browser-extensions.md#ublock-origin)
Mull comes with privacy protecting settings configured by default. You might consider configuring the **Delete browsing data on quit** options in Mull's settings if you want to close all your open tabs when quitting the app automatically, or clear other data such as browsing history and cookies automatically.
Because Mull has more advanced and strict privacy protections enabled by default compared to most browsers, some websites may not load or work properly unless you adjust those settings. You can consult this [list of known issues and workarounds](https://divestos.org/pages/broken#mull) for advice on a potential fix if you do encounter a broken site. Adjusting a setting in order to fix a website could impact your privacy/security, so make sure you fully understand any instructions you follow.
## iOS
On iOS, any app that can browse the web is [restricted](https://developer.apple.com/app-store/review/guidelines) to using an Apple-provided [WebKit framework](https://developer.apple.com/documentation/webkit), so there is little reason to use a third-party web browser.
+3 -3
View File
@@ -103,13 +103,13 @@ Authenticator Apps implement a security standard adopted by the Internet Enginee
We highly recommend that you use mobile TOTP apps instead of desktop alternatives as Android and iOS have better security and app isolation than most desktop operating systems.
### Ente Auth
### ente Auth
<div class="admonition recommendation" markdown>
![Ente Auth logo](assets/img/multi-factor-authentication/ente-auth.png){ align=right }
![ente Auth logo](assets/img/multi-factor-authentication/ente-auth.png){ align=right }
**Ente Auth** is a free and open-source app which stores and generates TOTP tokens. It can be used with an online account to backup and sync your tokens across your devices (and access them via a web interface) in a secure, end-to-end encrypted fashion. It can also be used offline on a single device with no account necessary.
**ente Auth** is a free and open-source app which stores and generates TOTP tokens. It can be used with an online account to backup and sync your tokens across your devices (and access them via a web interface) in a secure, end-to-end encrypted fashion. It can also be used offline on a single device with no account necessary.
[:octicons-home-16: Homepage](https://ente.io/auth){ .md-button .md-button--primary }
[:octicons-eye-16:](https://ente.io/privacy){ .card-link title="Privacy Policy" }
+2 -3
View File
@@ -58,7 +58,7 @@ A [news aggregator](https://en.wikipedia.org/wiki/News_aggregator) is a way to k
![Feeder logo](assets/img/news-aggregators/feeder.png){ align=right }
**Feeder** is a modern RSS client for Android that has many [features](https://github.com/spacecowboy/Feeder#features) and works well with folders of RSS feeds. It supports [RSS](https://en.wikipedia.org/wiki/RSS), [Atom](https://en.wikipedia.org/wiki/Atom_(Web_standard)), [RDF](https://en.wikipedia.org/wiki/RDF%2FXML) and [JSON Feed](https://en.wikipedia.org/wiki/JSON_Feed).
**Feeder** is a modern RSS client for Android that has many [features](https://gitlab.com/spacecowboy/Feeder#features) and works well with folders of RSS feeds. It supports [RSS](https://en.wikipedia.org/wiki/RSS), [Atom](https://en.wikipedia.org/wiki/Atom_(Web_standard)), [RDF](https://en.wikipedia.org/wiki/RDF%2FXML) and [JSON Feed](https://en.wikipedia.org/wiki/JSON_Feed).
[:octicons-repo-16: Repository](https://github.com/spacecowboy/Feeder){ .md-button .md-button--primary }
[:octicons-code-16:](https://github.com/spacecowboy/Feeder){ .card-link title="Source Code" }
@@ -68,7 +68,6 @@ A [news aggregator](https://en.wikipedia.org/wiki/News_aggregator) is a way to k
<summary>Downloads</summary>
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.nononsenseapps.feeder.play)
- [:simple-github: GitHub](https://github.com/spacecowboy/Feeder/releases)
</details>
@@ -120,7 +119,7 @@ A [news aggregator](https://en.wikipedia.org/wiki/News_aggregator) is a way to k
![NetNewsWire logo](assets/img/news-aggregators/netnewswire.png){ align=right }
**NetNewsWire** is a free and open-source feed reader for macOS and iOS with a focus on a native design and feature set. It supports the typical feed formats alongside built-in support for Reddit feeds.
**NetNewsWire** a free and open-source feed reader for macOS and iOS with a focus on a native design and feature set. It supports the typical feed formats alongside built-in support for Reddit feeds.
[:octicons-home-16: Homepage](https://netnewswire.com){ .md-button .md-button--primary }
[:octicons-eye-16:](https://netnewswire.com/privacypolicy.html){ .card-link title="Privacy Policy" }
+2 -1
View File
@@ -68,12 +68,13 @@ Standard Notes has [joined Proton AG](https://standardnotes.com/blog/joining-for
- [:simple-firefoxbrowser: Firefox](https://notesnook.com/notesnook-web-clipper)
- [:simple-googlechrome: Chrome](https://chrome.google.com/webstore/detail/notesnook-web-clipper/kljhpemdlcnjohmfmkogahelkcidieaj)
- [:octicons-globe-16: Web](https://app.notesnook.com)
- [:simple-flathub: Flathub](https://flathub.org/apps/com.notesnook.Notesnook)
</details>
</div>
Notesnook only allows local note encryption with the [private vault](https://help.notesnook.com/lock-notes-with-private-vault) feature on their pro plan, otherwise your notes are not stored encrypted on your device. Your notes are always encrypted before being synced to their servers with keys which only you have access to.
### Joplin
<div class="admonition recommendation" markdown>
+7 -7
View File
@@ -3,7 +3,7 @@ title: Linux Overview
icon: simple/linux
description: Linux is an open-source, privacy-focused desktop operating system alternative, but not all distribitions are created equal.
---
**Linux** is an open-source, privacy-focused desktop operating system alternative. In the face of pervasive telemetry and other privacy-encroaching technologies in mainstream operating systems, desktop Linux has remained the clear choice for people looking for total control over their computers from the ground up.
**Linux** is an open-source, privacy-focused desktop operating system alternative. In the face of pervasive telemetry and other privacy-encroaching technologies in mainstream operating systems, Linux desktop has remained the clear choice for people looking for total control over their computers from the ground up.
Our website generally uses the term “Linux” to describe **desktop** Linux distributions. Other operating systems which also use the Linux kernel such as ChromeOS, Android, and Qubes OS are not discussed on this page.
@@ -15,7 +15,7 @@ There are some notable privacy concerns with Linux which you should be aware of.
- Avoid telemetry that often comes with proprietary operating systems
- Maintain [software freedom](https://gnu.org/philosophy/free-sw.en.html#four-freedoms)
- Use privacy-focused systems such as [Whonix](../desktop.md#whonix) or [Tails](../desktop.md#tails)
- Use privacy focused systems such as [Whonix](https://whonix.org) or [Tails](https://tails.net)
### Open-Source Security
@@ -41,7 +41,7 @@ Not all Linux distributions are created equal. Our [Linux recommendation page](.
We highly recommend that you choose distributions which stay close to the stable upstream software releases, often referred to as rolling release distributions. This is because frozen release cycle distributions often dont update package versions and fall behind on security updates.
For frozen distributions such as [Debian](https://debian.org/security/faq#handling), package maintainers are expected to backport patches to fix vulnerabilities rather than bump the software to the “next version” released by the upstream developer. Some security fixes [do not](https://arxiv.org/abs/2105.14565) receive a [CVE ID](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures) (particularly less popular software) at all and therefore do not make it into the distribution with this patching model. As a result, minor security fixes are sometimes held back until the next major release.
For frozen distributions such as [Debian](https://debian.org/security/faq#handling), package maintainers are expected to backport patches to fix vulnerabilities rather than bump the software to the “next version” released by the upstream developer. Some security fixes [do not](https://arxiv.org/abs/2105.14565) receive a [CVE ID](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures) (particularly less popular software) at all and therefore do not make it into the distribution with this patching model. As a result minor security fixes are sometimes held back until the next major release.
We dont believe holding packages back and applying interim patches is a good idea, as it diverges from the way the developer might have intended the software to work. [Richard Brown](https://rootco.de/aboutme) has a presentation about this:
@@ -106,7 +106,7 @@ If you require suspend-to-disk (hibernation) functionality, you will still need
We recommend using a desktop environment that supports the [Wayland](https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)) display protocol, as it was developed with security [in mind](https://lwn.net/Articles/589147). Its predecessor ([X11](https://en.wikipedia.org/wiki/X_Window_System)) does not support GUI isolation, which allows any window to [record, log, and inject inputs in other windows](https://blog.invisiblethings.org/2011/04/23/linux-security-circus-on-gui-isolation.html), making any attempt at sandboxing futile. While there are options to do nested X11 such as [Xpra](https://en.wikipedia.org/wiki/Xpra) or [Xephyr](https://en.wikipedia.org/wiki/Xephyr), they often come with negative performance consequences, and are neither convenient to set up nor preferable over Wayland.
Fortunately, [Wayland compositors](https://en.wikipedia.org/wiki/Wayland_(protocol)#Wayland_compositors) such as those included with [GNOME](https://gnome.org) and [KDE Plasma](https://kde.org) now have good support for Wayland along with some other compositors that use [wlroots](https://gitlab.freedesktop.org/wlroots/wlroots/-/wikis/Projects-which-use-wlroots), (e.g. [Sway](https://swaywm.org)). Some distributions like Fedora and Tumbleweed use it by default, and some others may do so in the future as X11 is in [hard maintenance mode](https://phoronix.com/news/X.Org-Maintenance-Mode-Quickly). If youre using one of those environments it is as easy as selecting the “Wayland” session at the desktop display manager ([GDM](https://en.wikipedia.org/wiki/GNOME_Display_Manager), [SDDM](https://en.wikipedia.org/wiki/Simple_Desktop_Display_Manager)).
Fortunately, [wayland compositors](https://en.wikipedia.org/wiki/Wayland_(protocol)#Wayland_compositors) such as those included with [GNOME](https://gnome.org) and [KDE Plasma](https://kde.org) now have good support for Wayland along with some other compositors that use [wlroots](https://gitlab.freedesktop.org/wlroots/wlroots/-/wikis/Projects-which-use-wlroots), (e.g. [Sway](https://swaywm.org)). Some distributions like Fedora and Tumbleweed use it by default, and some others may do so in the future as X11 is in [hard maintenance mode](https://phoronix.com/news/X.Org-Maintenance-Mode-Quickly). If youre using one of those environments it is as easy as selecting the “Wayland” session at the desktop display manager ([GDM](https://en.wikipedia.org/wiki/GNOME_Display_Manager), [SDDM](https://en.wikipedia.org/wiki/Simple_Desktop_Display_Manager)).
We recommend **against** using desktop environments or window managers that do not have Wayland support, such as Cinnamon (default on Linux Mint), Pantheon (default on Elementary OS), MATE, Xfce, and i3.
@@ -122,7 +122,7 @@ Most Linux distributions will automatically install updates or remind you to do
Some distributions (particularly those aimed at advanced users) are more bare bones and expect you to do things yourself (e.g. Arch or Debian). These will require running the "package manager" (`apt`, `pacman`, `dnf`, etc.) manually in order to receive important security updates.
Additionally, some distributions will not download firmware updates automatically. For that, you will need to install [`fwupd`](https://wiki.archlinux.org/title/Fwupd).
Additionally, some distributions will not download firmware updates automatically. For that you will need to install [`fwupd`](https://wiki.archlinux.org/title/Fwupd).
## Privacy Tweaks
@@ -144,7 +144,7 @@ There are other system identifiers which you may wish to be careful about. You s
- **Hostnames:** Your system's hostname is shared with the networks you connect to. You should avoid including identifying terms like your name or operating system in your hostname, instead sticking to generic terms or random strings.
- **Usernames:** Similarly, your username is used in a variety of ways across your system. Consider using generic terms like "user" rather than your actual name.
- **Machine ID:** During installation, a unique machine ID is generated and stored on your device. Consider [setting it to a generic ID](https://madaidans-insecurities.github.io/guides/linux-hardening.html#machine-id).
- **Machine ID:**: During installation a unique machine ID is generated and stored on your device. Consider [setting it to a generic ID](https://madaidans-insecurities.github.io/guides/linux-hardening.html#machine-id).
### System Counting
@@ -152,4 +152,4 @@ The Fedora Project [counts](https://fedoraproject.org/wiki/Changes/DNF_Better_Co
This [option](https://dnf.readthedocs.io/en/latest/conf_ref.html#options-for-both-main-and-repo) is currently off by default. We recommend adding `countme=false` to `/etc/dnf/dnf.conf` just in case it is enabled in the future. On systems that use `rpm-ostree` such as Silverblue, the countme option is disabled by masking the [rpm-ostree-countme](https://fedoramagazine.org/getting-better-at-counting-rpm-ostree-based-systems) timer.
openSUSE also uses a [unique ID](https://en.opensuse.org/openSUSE:Statistics) to count systems, which can be disabled by emptying the `/var/lib/zypp/AnonymousUniqueId` file.
openSUSE also uses a [unique ID](https://en.opensuse.org/openSUSE:Statistics) to count systems, which can be disabled by deleting the `/var/lib/zypp/AnonymousUniqueId` file.
+4 -4
View File
@@ -6,14 +6,14 @@ cover: photo-management.webp
---
Most cloud photo management solutions like Google Photos, Flickr, and Amazon Photos don't secure your photos against being accessed by the cloud storage provider themselves. These options keep your personal photos private, while allowing you to share them only with family and trusted people.
## Ente Photos
## ente
<div class="admonition recommendation" markdown>
![Ente logo](assets/img/photo-management/ente.svg#only-light){ align=right }
![Ente logo](assets/img/photo-management/ente-dark.svg#only-dark){ align=right }
![ente logo](assets/img/photo-management/ente.svg#only-light){ align=right }
![ente logo](assets/img/photo-management/ente-dark.svg#only-dark){ align=right }
**Ente Photos** is an end-to-end encrypted photo backup service which supports automatic backups on iOS and Android. Their code is fully open-source, both on the client side and on the server side. It is [self-hostable](https://github.com/ente-io/ente/tree/main/server#self-hosting). It underwent an [audit by Cure53](https://ente.io/blog/cryptography-audit) in March 2023 and by [Fallible](https://ente.io/reports/Fallible-Audit-Report-19-04-2023.pdf) in April 2023. The free trial offers 5GB of storage, for a year.
**ente** is an end-to-end encrypted photo backup service which supports automatic backups on iOS and Android. Their code is fully open-source, both on the client side and on the server side. It is [self-hostable](https://github.com/ente-io/ente/tree/main/server#self-hosting). It underwent an [audit by Cure53](https://ente.io/blog/cryptography-audit) in March 2023 and by [Fallible](https://ente.io/reports/Fallible-Audit-Report-19-04-2023.pdf) in April 2023.
[:octicons-home-16: Homepage](https://ente.io){ .md-button .md-button--primary }
[:octicons-eye-16:](https://ente.io/privacy){ .card-link title="Privacy Policy" }
+10 -17
View File
@@ -170,22 +170,6 @@ In general, we define office suites as applications which could reasonably act a
</div>
### Criteria
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
#### Minimum Requirements
- Must be open source.
- Must implement "zero-trust" end-to-end encryption.
- Must support password-protected files.
#### Best-Case
Our best-case criteria represents what we would like to see from the perfect project in this category. Our recommendations may not include any or all of this functionality, but those which do may rank higher than others on this page.
- Should have a published audit from a reputable, independent third-party.
## Language services
### LanguageTool
@@ -223,5 +207,14 @@ Our best-case criteria represents what we would like to see from the perfect pro
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
#### Minimum Requirements
- Must be open source.
- Must be possible to self-host.
- Must implement "zero-trust" end-to-end encryption.
- Must support password-protected files.
#### Best-Case
Our best-case criteria represents what we would like to see from the perfect project in this category. Our recommendations may not include any or all of this functionality, but those which do may rank higher than others on this page.
- Should have a published audit from a reputable, independent third-party.
+2 -4
View File
@@ -33,7 +33,7 @@ Consider using a [VPN](vpn.md) or [Tor](tor.md) if your threat model requires hi
**Brave Search** is a search engine developed by Brave. The index is optimized against Google Search and therefore may provide more contextually accurate results compared to other alternatives.
Brave Search includes unique features such as [Discussions](https://search.brave.com/help/discussions), which highlights conversation-focused results such as forum posts.
Brave Search includes unique features such as [Discussions](https://search.brave.com/help/discussions), which highlights conversation-focused resultssuch as forum posts.
[:octicons-home-16: Homepage](https://search.brave.com){ .md-button .md-button--primary }
[:simple-torbrowser:](https://search.brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion){ .card-link title="Onion Service" }
@@ -44,8 +44,6 @@ Brave Search includes unique features such as [Discussions](https://search.brave
</div>
Note that if you use Brave Search while logged in to a Premium account, it may make it easier for Brave to correlate queries with specific users.
We recommend you disable [Anonymous usage metrics](https://search.brave.com/help/usage-metrics) as it is enabled by default and can be disabled within settings.
### DuckDuckGo
@@ -124,7 +122,7 @@ When you are using a SearXNG instance, be sure to go read their privacy policy.
### Minimum Requirements
- Must not collect PII per their privacy policy.
- Must not require users to create an account with them.
- Must not allow users to create an account with them.
### Best-Case
+8 -7
View File
@@ -42,6 +42,7 @@ For more details about each project, why they were chosen, and additional tips o
<div class="grid cards" markdown>
- ![Brave logo](assets/img/browsers/brave.svg){ .twemoji loading=lazy } [Brave (Android)](mobile-browsers.md#brave)
- ![Vanadium logo](assets/img/browsers/vanadium.svg#only-light){ .twemoji loading=lazy }![Vanadium logo](assets/img/browsers/vanadium-dark.svg#only-dark){ .twemoji loading=lazy } [Vanadium (GrapheneOS)](mobile-browsers.md#vanadium-grapheneos)
- ![Mull logo](assets/img/browsers/mull.svg){ .twemoji loading=lazy } [Mull (Android)](mobile-browsers.md#mull)
- ![Safari logo](assets/img/browsers/safari.svg){ .twemoji loading=lazy } [Safari (iOS)](mobile-browsers.md#safari)
@@ -103,7 +104,7 @@ We [recommend](dns.md#recommended-providers) a number of encrypted DNS servers b
</div>
[Learn more :material-arrow-right-drop-circle:](dns.md#self-hosted-dns-filtering)
[Learn more :material-arrow-right-drop-circle:](dns.md#self-hosted-solutions)
### Email
@@ -111,7 +112,7 @@ We [recommend](dns.md#recommended-providers) a number of encrypted DNS servers b
- ![Proton Mail logo](assets/img/email/protonmail.svg){ .twemoji loading=lazy } [Proton Mail](email.md#proton-mail)
- ![Mailbox.org logo](assets/img/email/mailboxorg.svg){ .twemoji loading=lazy } [Mailbox.org](email.md#mailboxorg)
- ![Tuta logo](assets/img/email/tuta.svg#only-light){ .twemoji loading=lazy }![Tuta logo](assets/img/email/tuta-dark.svg#only-dark){ .twemoji loading=lazy } [Tuta](email.md#tuta)
- ![Tuta logo](assets/img/email/tuta.svg){ .twemoji loading=lazy } [Tuta](email.md#tuta)
</div>
@@ -166,7 +167,7 @@ We [recommend](dns.md#recommended-providers) a number of encrypted DNS servers b
<div class="grid cards" markdown>
- ![Ente logo](assets/img/photo-management/ente.svg#only-light){ .twemoji loading=lazy }![Ente logo](assets/img/photo-management/ente.svg#only-dark){ .twemoji loading=lazy } [Ente Photos](photo-management.md#ente)
- ![Ente logo](assets/img/photo-management/ente.svg#only-light){ .twemoji loading=lazy }![Ente logo](assets/img/photo-management/ente.svg#only-dark){ .twemoji loading=lazy } [Ente](photo-management.md#ente)
- ![Stingle logo](assets/img/photo-management/stingle.png#only-light){ .twemoji loading=lazy }![Stingle logo](assets/img/photo-management/stingle-dark.png#only-dark){ .twemoji loading=lazy } [Stingle](photo-management.md#stingle)
- ![PhotoPrism logo](assets/img/photo-management/photoprism.svg){ .twemoji loading=lazy } [PhotoPrism](photo-management.md#photoprism)
@@ -218,7 +219,7 @@ If you're looking for added **security**, you should always ensure you're connec
<div class="grid cards" markdown>
- ![Tuta logo](assets/img/email/tuta.svg#only-light){ .twemoji loading=lazy }![Tuta logo](assets/img/email/tuta-dark.svg#only-dark){ .twemoji loading=lazy } [Tuta](calendar.md#tuta)
- ![Tuta logo](assets/img/calendar/tuta.svg){ .twemoji loading=lazy } [Tuta](calendar.md#tuta)
- ![Proton Calendar logo](assets/img/calendar/proton-calendar.svg){ .twemoji loading=lazy } [Proton Calendar](calendar.md#proton-calendar)
</div>
@@ -274,7 +275,7 @@ If you're looking for added **security**, you should always ensure you're connec
For encrypting your operating system drive, we typically recommend using whichever encryption tool your operating system provides, whether that is **BitLocker** on Windows, **FileVault** on macOS, or **LUKS** on Linux. These tools are included with the operating system and typically use hardware encryption elements such as a TPM that other full-disk encryption software like VeraCrypt do not. VeraCrypt is still suitable for non-operating system disks such as external drives, especially drives that may be accessed from multiple operating systems.
[Learn more :material-arrow-right-drop-circle:](encryption.md#os-full-disk-encryption)
[Learn more :material-arrow-right-drop-circle:](encryption.md##operating-system-included-full-disk-encryption-fde)
</details>
@@ -338,7 +339,7 @@ For encrypting your operating system drive, we typically recommend using whichev
- ![YubiKeys](assets/img/multi-factor-authentication/mini/yubico.svg){ .twemoji loading=lazy } [YubiKey](multi-factor-authentication.md#yubikey)
- ![Nitrokey](assets/img/multi-factor-authentication/mini/nitrokey.svg){ .twemoji loading=lazy } [Nitrokey](multi-factor-authentication.md#nitrokey)
- ![Ente Auth logo](assets/img/multi-factor-authentication/ente-auth.png){ .twemoji loading=lazy } [Ente Auth](multi-factor-authentication.md#ente-auth)
- ![ente Auth logo](assets/img/multi-factor-authentication/ente-auth.png){ .twemoji loading=lazy } [ente Auth](multi-factor-authentication.md#ente-auth)
- ![Aegis logo](assets/img/multi-factor-authentication/aegis.png){ .twemoji loading=lazy } [Aegis Authenticator (Android)](multi-factor-authentication.md#aegis-authenticator-android)
</div>
@@ -501,7 +502,7 @@ These tools may provide utility for certain individuals. They provide functional
- ![iMazing logo](assets/img/device-integrity/imazing.png){ .twemoji loading=lazy } [iMazing (iOS)](device-integrity.md#imazing-ios)
- ![Auditor logo](assets/img/device-integrity/auditor.svg#only-light){ .twemoji loading=lazy }![Auditor logo](assets/img/device-integrity/auditor-dark.svg#only-dark){ .twemoji loading=lazy } [Auditor (Android)](device-integrity.md#auditor-android)
- ![Hypatia logo](assets/img/device-integrity/hypatia.svg#only-light){ .twemoji loading=lazy }![Hypatia logo](assets/img/device-integrity/hypatia-dark.svg#only-dark){ .twemoji loading=lazy } [Hypatia (Android)](device-integrity.md#hypatia-android)
- ![iVerify logo](assets/img/device-integrity/iverify.webp){ .twemoji loading=lazy } [iVerify Basic (iOS)](device-integrity.md#iverify-basic-ios)
- ![iVerify logo](assets/img/device-integrity/iverify.webp){ .twemoji loading=lazy } [iVerify (iOS)](device-integrity.md#iverify-ios)
</div>
+3 -3
View File
@@ -71,7 +71,7 @@ We also think it's better for the security of the VPN provider's private keys if
#### :material-check:{ .pg-green } Independently Audited
As of January 2020, Proton VPN has undergone an independent audit by SEC Consult. SEC Consult found some medium and low risk vulnerabilities in Proton VPN's Windows, Android, and iOS applications, all of which were "properly fixed" by Proton VPN before the reports were published. None of the issues identified would have provided an attacker remote access to your device or traffic. You can view individual reports for each platform at [protonvpn.com](https://protonvpn.com/blog/open-source). In April 2022 Proton VPN underwent [another audit](https://protonvpn.com/blog/no-logs-audit). A [letter of attestation](https://proton.me/blog/security-audit-all-proton-apps) was provided for Proton VPN's apps on 9th November 2021 by [Securitum](https://research.securitum.com).
As of January 2020, Proton VPN has undergone an independent audit by SEC Consult. SEC Consult found some medium and low risk vulnerabilities in Proton VPN's Windows, Android, and iOS applications, all of which were "properly fixed" by Proton VPN before the reports were published. None of the issues identified would have provided an attacker remote access to your device or traffic. You can view individual reports for each platform at [protonvpn.com](https://protonvpn.com/blog/open-source). In April 2022 Proton VPN underwent [another audit](https://protonvpn.com/blog/no-logs-audit) and the report was [produced by Securitum](https://protonvpn.com/blog/wp-content/uploads/2022/04/securitum-protonvpn-nologs-20220330.pdf). A [letter of attestation](https://proton.me/blog/security-audit-all-proton-apps) was provided for Proton VPN's apps on 9th November 2021 by [Securitum](https://research.securitum.com).
#### :material-check:{ .pg-green } Open-Source Clients
@@ -159,7 +159,7 @@ As of February 2020 [IVPN applications are now open source](https://ivpn.net/blo
#### :material-check:{ .pg-green } Accepts Cash and Monero
In addition to accepting credit/debit cards and PayPal, IVPN accepts Bitcoin, **Monero** and **cash/local currency** (on annual plans) as anonymous forms of payment. Prepaid cards with redeem codes are [also available](https://ivpn.net/knowledgebase/billing/voucher-cards-faq).
In addition to accepting credit/debit cards and PayPal, IVPN accepts Bitcoin, **Monero** and **cash/local currency** (on annual plans) as anonymous forms of payment.
#### :material-check:{ .pg-green } WireGuard Support
@@ -242,7 +242,7 @@ Mullvad provides the source code for their desktop and mobile clients in their [
#### :material-check:{ .pg-green } Accepts Cash and Monero
Mullvad, in addition to accepting credit/debit cards and PayPal, accepts Bitcoin, Bitcoin Cash, **Monero** and **cash/local currency** as anonymous forms of payment. Prepaid cards with redeem codes are also available. Mullvad also accepts Swish and bank wire transfers.
Mullvad, in addition to accepting credit/debit cards and PayPal, accepts Bitcoin, Bitcoin Cash, **Monero** and **cash/local currency** as anonymous forms of payment. They also accept Swish and bank wire transfers.
#### :material-check:{ .pg-green } WireGuard Support
+8 -9
View File
@@ -6,10 +6,10 @@
<table>
<tbody>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.jonaharagon.com/"><img src="https://avatars.githubusercontent.com/u/3637842?v=4" width="100px;" loading=lazy /><br /><sub><b>Jonah Aragon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ajonaharagon" title="Reviewed Pull Requests">👀</a> <a href="#projectManagement-jonaharagon" title="Project Management">📆</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Code">💻</a> <a href="#infra-jonaharagon" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#security-jonaharagon" title="Security">🛡️</a> <a href="#blog-jonaharagon" title="Blogposts">📝</a> <a href="#design-jonaharagon" title="Design">🎨</a> <a href="#platform-jonaharagon" title="Packaging/porting to new platform">📦</a> <a href="#promotion-jonaharagon" title="Promotion">📣</a> <a href="#question-jonaharagon" title="Answering Questions">💬</a> <a href="#research-jonaharagon" title="Research">🔬</a> <a href="#maintenance-jonaharagon" title="Maintenance">🚧</a> <a href="#mentoring-jonaharagon" title="Mentoring">🧑‍🏫</a> <a href="#a11y-jonaharagon" title="Accessibility">️♿️</a> <a href="#ideas-jonaharagon" title="Ideas, Planning, & Feedback">🤔</a> <a href="#video-jonaharagon" title="Videos">📹</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ajonaharagon" title="Bug reports">🐛</a> <a href="#business-jonaharagon" title="Business development">💼</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.jonaharagon.com/"><img src="https://avatars.githubusercontent.com/u/3637842?v=4" width="100px;" loading=lazy /><br /><sub><b>Jonah Aragon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ajonaharagon" title="Reviewed Pull Requests">👀</a> <a href="#projectManagement-jonaharagon" title="Project Management">📆</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Code">💻</a> <a href="#infra-jonaharagon" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#security-jonaharagon" title="Security">🛡️</a> <a href="https://blog.privacyguides.org/author/jonah/" title="Blogposts">📝</a> <a href="#design-jonaharagon" title="Design">🎨</a> <a href="#platform-jonaharagon" title="Packaging/porting to new platform">📦</a> <a href="#promotion-jonaharagon" title="Promotion">📣</a> <a href="#question-jonaharagon" title="Answering Questions">💬</a> <a href="#research-jonaharagon" title="Research">🔬</a> <a href="#maintenance-jonaharagon" title="Maintenance">🚧</a> <a href="#mentoring-jonaharagon" title="Mentoring">🧑‍🏫</a> <a href="#a11y-jonaharagon" title="Accessibility">️♿️</a> <a href="#ideas-jonaharagon" title="Ideas, Planning, & Feedback">🤔</a> <a href="#video-jonaharagon" title="Videos">📹</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ajonaharagon" title="Bug reports">🐛</a> <a href="#business-jonaharagon" title="Business development">💼</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://polarbear.army/"><img src="https://avatars.githubusercontent.com/u/48640805?v=4" width="100px;" loading=lazy /><br /><sub><b>Daniel Nathan Gray</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dngray" title="Documentation">📖</a> <a href="#mentoring-dngray" title="Mentoring">🧑‍🏫</a> <a href="#projectManagement-dngray" title="Project Management">📆</a> <a href="#question-dngray" title="Answering Questions">💬</a> <a href="#research-dngray" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Adngray" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Adngray" title="Bug reports">🐛</a> <a href="#maintenance-dngray" title="Maintenance">🚧</a> <a href="#ideas-dngray" title="Ideas, Planning, & Feedback">🤔</a> <a href="#security-dngray" title="Security">🛡️</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://freddy.lol/"><img src="https://avatars.githubusercontent.com/u/25013506?v=4" width="100px;" loading=lazy /><br /><sub><b>Freddy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=freddy-m" title="Documentation">📖</a> <a href="#blog-freddy-m" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Afreddy-m" title="Reviewed Pull Requests">👀</a> <a href="#research-freddy-m" title="Research">🔬</a> <a href="#maintenance-freddy-m" title="Maintenance">🚧</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Afreddy-m" title="Bug reports">🐛</a> <a href="#ideas-freddy-m" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-freddy-m" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/blacklight447"><img src="https://avatars.githubusercontent.com/u/50110294?v=4" width="100px;" loading=lazy /><br /><sub><b>Niek de Wilde</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=blacklight447" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ablacklight447" title="Bug reports">🐛</a> <a href="#research-blacklight447" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ablacklight447" title="Reviewed Pull Requests">👀</a> <a href="#infra-blacklight447" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#question-blacklight447" title="Answering Questions">💬</a> <a href="#ideas-blacklight447" title="Ideas, Planning, & Feedback">🤔</a> <a href="#blog-blacklight447" title="Blogposts">📝</a> <a href="#audio-blacklight447" title="Audio">🔊</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://freddy.lol/"><img src="https://avatars.githubusercontent.com/u/25013506?v=4" width="100px;" loading=lazy /><br /><sub><b>Freddy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=freddy-m" title="Documentation">📖</a> <a href="https://blog.privacyguides.org/author/freddy/" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Afreddy-m" title="Reviewed Pull Requests">👀</a> <a href="#research-freddy-m" title="Research">🔬</a> <a href="#maintenance-freddy-m" title="Maintenance">🚧</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Afreddy-m" title="Bug reports">🐛</a> <a href="#ideas-freddy-m" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-freddy-m" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/blacklight447"><img src="https://avatars.githubusercontent.com/u/50110294?v=4" width="100px;" loading=lazy /><br /><sub><b>Niek de Wilde</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=blacklight447" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ablacklight447" title="Bug reports">🐛</a> <a href="#research-blacklight447" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ablacklight447" title="Reviewed Pull Requests">👀</a> <a href="#infra-blacklight447" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#question-blacklight447" title="Answering Questions">💬</a> <a href="#ideas-blacklight447" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://blog.privacyguides.org/author/niek/" title="Blogposts">📝</a> <a href="#audio-blacklight447" title="Audio">🔊</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hook9"><img src="https://avatars.githubusercontent.com/u/47239784?v=4" width="100px;" loading=lazy /><br /><sub><b>hook9</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hook9" title="Documentation">📖</a> <a href="#research-hook9" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ahook9" title="Reviewed Pull Requests">👀</a> <a href="#ideas-hook9" title="Ideas, Planning, & Feedback">🤔</a></td>
</tr>
<tr>
@@ -27,7 +27,7 @@
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://kaitebay.org/"><img src="https://avatars.githubusercontent.com/u/95620167?v=4" width="100px;" loading=lazy /><br /><sub><b>Kai Tebay</b></sub></a><br /><a href="#ideas-KaiTebay" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=KaiTebay" title="Documentation">📖</a> <a href="#research-KaiTebay" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=KaiTebay" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/matchboxbananasynergy"><img src="https://avatars.githubusercontent.com/u/107055883?v=4" width="100px;" loading=lazy /><br /><sub><b>matchboxbananasynergy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=matchboxbananasynergy" title="Documentation">📖</a> <a href="#research-matchboxbananasynergy" title="Research">🔬</a> <a href="#ideas-matchboxbananasynergy" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Amatchboxbananasynergy" title="Reviewed Pull Requests">👀</a> <a href="#blog-matchboxbananasynergy" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/matchboxbananasynergy"><img src="https://avatars.githubusercontent.com/u/107055883?v=4" width="100px;" loading=lazy /><br /><sub><b>matchboxbananasynergy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=matchboxbananasynergy" title="Documentation">📖</a> <a href="#research-matchboxbananasynergy" title="Research">🔬</a> <a href="#ideas-matchboxbananasynergy" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Amatchboxbananasynergy" title="Reviewed Pull Requests">👀</a> <a href="https://blog.privacyguides.org/author/mbananasynergy/" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/features/actions"><img src="https://avatars.githubusercontent.com/u/44036562?v=4" width="100px;" loading=lazy /><br /><sub><b>GitHub Actions</b></sub></a><br /><a href="#infra-actions" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.netlify.com/"><img src="https://avatars.githubusercontent.com/u/7892489?v=4" width="100px;" loading=lazy /><br /><sub><b>Netlify</b></sub></a><br /><a href="#infra-netlify" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/features/security"><img src="https://avatars.githubusercontent.com/u/27347476?v=4" width="100px;" loading=lazy /><br /><sub><b>Dependabot</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dependabot" title="Code">💻</a> <a href="#infra-dependabot" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
@@ -37,7 +37,7 @@
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.cloudflare.com/"><img src="https://avatars.githubusercontent.com/u/314135?v=4" width="100px;" loading=lazy /><br /><sub><b>Cloudflare</b></sub></a><br /><a href="#infra-cloudflare" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://opencollective.com/"><img src="https://avatars.githubusercontent.com/u/13403593?v=4" width="100px;" loading=lazy /><br /><sub><b>Open Collective</b></sub></a><br /><a href="#business-opencollective" title="Business development">💼</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://safing.io/"><img src="https://avatars.githubusercontent.com/u/20678162?v=4" width="100px;" loading=lazy /><br /><sub><b>Safing</b></sub></a><br /><a href="#financial-safing" title="Financial">💵</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.danarel.com/"><img src="https://avatars.githubusercontent.com/u/46383059?v=4" width="100px;" loading=lazy /><br /><sub><b>Dan Arel</b></sub></a><br /><a href="#blog-danarel" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=danarel" title="Documentation">📖</a> <a href="#research-danarel" title="Research">🔬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.danarel.com/"><img src="https://avatars.githubusercontent.com/u/46383059?v=4" width="100px;" loading=lazy /><br /><sub><b>Dan Arel</b></sub></a><br /><a href="https://blog.privacyguides.org/author/dan/" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=danarel" title="Documentation">📖</a> <a href="#research-danarel" title="Research">🔬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://techlore.tech/"><img src="https://avatars.githubusercontent.com/u/68134985?v=4" width="100px;" loading=lazy /><br /><sub><b>Techlore</b></sub></a><br /><a href="#financial-techlore" title="Financial">💵</a></td>
</tr>
<tr>
@@ -45,10 +45,10 @@
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://simpleprivacy.fr/"><img src="https://avatars.githubusercontent.com/u/74207682?v=4" width="100px;" loading=lazy /><br /><sub><b>samsepi0l</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=d4rklynk" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/rollsicecream"><img src="https://avatars.githubusercontent.com/u/153316540?v=4" width="100px;" loading=lazy /><br /><sub><b>rollsicecream</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=rollsicecream" title="Documentation">📖</a> <a href="#question-rollsicecream" title="Answering Questions">💬</a> <a href="#translation-rollsicecream" title="Translation">🌍</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Arollsicecream" title="Reviewed Pull Requests">👀</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://henryfisher.tech/"><img src="https://avatars.githubusercontent.com/u/64515030?v=4" width="100px;" loading=lazy /><br /><sub><b>Henry Fisher</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=henry-fisher" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://thenewoil.org/"><img src="https://avatars.githubusercontent.com/u/133825060?v=4" width="100px;" loading=lazy /><br /><sub><b>Nate Bartram</b></sub></a><br /><a href="#blog-tnonate" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://thenewoil.org/"><img src="https://avatars.githubusercontent.com/u/133825060?v=4" width="100px;" loading=lazy /><br /><sub><b>Nate Bartram</b></sub></a><br /><a href="https://blog.privacyguides.org/author/nate/" title="Blogposts">📝</a></td>
</tr>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.samhowell.uk/"><img src="https://avatars.githubusercontent.com/u/10137?v=4" width="100px;" loading=lazy /><br /><sub><b>Sam Howell</b></sub></a><br /><a href="#blog-5amm" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.samhowell.uk/"><img src="https://www.samhowell.uk/images/avatar-main.png" width="100px;" loading=lazy /><br /><sub><b>Sam Howell</b></sub></a><br /><a href="https://blog.privacyguides.org/author/sam/" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/asddsaz"><img src="https://avatars.githubusercontent.com/u/42685606?v=4" width="100px;" loading=lazy /><br /><sub><b>asddsaz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=asddsaz" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hugoncosta"><img src="https://avatars.githubusercontent.com/u/29380568?v=4" width="100px;" loading=lazy /><br /><sub><b>Hugo Costa</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hugoncosta" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N"><img src="https://avatars.githubusercontent.com/u/30232065?v=4" width="100px;" loading=lazy /><br /><sub><b>C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N" title="Documentation">📖</a></td>
@@ -408,13 +408,12 @@
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/FishCoding"><img src="https://avatars.githubusercontent.com/u/16527725?v=4" width="100px;" loading=lazy /><br /><sub><b>Mario</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=FishCoding" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://skye.sh/"><img src="https://avatars.githubusercontent.com/u/48442092?v=4" width="100px;" loading=lazy /><br /><sub><b>skye</b></sub></a><br /><a href="#question-dioxias" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/r2fo"><img src="https://avatars.githubusercontent.com/u/50496756?v=4" width="100px;" loading=lazy /><br /><sub><b>r2fo</b></sub></a><br /><a href="#translation-r2fo" title="Translation">🌍</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lamtrinh.dev/"><img src="https://avatars.githubusercontent.com/u/49742151?v=4" width="100px;" loading=lazy /><br /><sub><b>LamTrinh.Dev</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lamtrinhdev" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Alamtrinhdev" title="Bug reports">🐛</a> <a href="#question-lamtrinhdev" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lamtrinh.dev/"><img src="https://avatars.githubusercontent.com/u/49742151?v=4" width="100px;" loading=lazy /><br /><sub><b>LamTrinh.Dev</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lamtrinhdev" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://discuss.privacyguides.net/u/frostlike"><img src="https://forum-cdn.privacyguides.net/user_avatar/discuss.privacyguides.net/frostlike/288/3600_2.png" width="100px;" loading=lazy /><br /><sub><b>frostlike</b></sub></a><br /><a href="#question" title="Answering Questions">💬</a></td>
</tr>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://scholz.ruhr/"><img src="https://avatars.githubusercontent.com/u/21988035?v=4" width="100px;" loading=lazy /><br /><sub><b>Merlin Scholz</b></sub></a><br /><a href="#translation-merlinscholz" title="Translation">🌍</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://jordanwarne.net/"><img src="https://avatars.githubusercontent.com/u/154663344?v=4" width="100px;" loading=lazy /><br /><sub><b>jordan warne</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jordan-warne" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Dzenan"><img src="https://avatars.githubusercontent.com/u/69632324?v=4" width="100px;" loading=lazy /><br /><sub><b>Dženan</b></sub></a><br /><a href="#translation-dzenan" title="Translation">🌍</a></td>
</tr>
</tbody>
<tfoot>
+5
View File
@@ -1,9 +1,14 @@
ANALYTICS_CONSENT_BODY="We collect anonymous statistics about your visits to help us improve the site. We do not track you across other websites. If you disable this, we will not know when you have visited our site. We will save a single cookie in your browser to remember your preference."
ANALYTICS_CONSENT_TITLE="Contribute anonymous statistics"
ANALYTICS_COOKIE_GITHUB="GitHub API"
ANALYTICS_COOKIE_UMAMI="Self-Hosted Analytics"
ANALYTICS_FEEDBACK_NEGATIVE_NAME="This page could be improved"
ANALYTICS_FEEDBACK_NEGATIVE_NOTE='Thanks for your feedback! If you want to let us know more, please leave a post on our <a href="https://discuss.privacyguides.net/c/site-development/7" target="_blank" rel="noopener">forum</a>.'
ANALYTICS_FEEDBACK_POSITIVE_NAME="This page was helpful"
ANALYTICS_FEEDBACK_POSITIVE_NOTE="Thanks for your feedback!"
ANALYTICS_FEEDBACK_TITLE="Was this page helpful?"
DESCRIPTION_HOMEPAGE="A socially motivated website which provides information about protecting your online data privacy and security."
FOOTER_ANALYTICS="Anonymous statistics preferences."
FOOTER_COPYRIGHT_AUTHOR="Privacy Guides and contributors."
FOOTER_INTRO="<b>Privacy Guides</b> is a non-profit, socially motivated website that provides information for protecting your data security and privacy."
FOOTER_NOTE="We do not make money from recommending certain products, and we do not use affiliate links."
+20 -5
View File
@@ -56,6 +56,7 @@ extra:
- fontawesome/brands/creative-commons
- fontawesome/brands/creative-commons-by
- fontawesome/brands/creative-commons-sa
analytics: !ENV [FOOTER_ANALYTICS, "Anonymous statistics preferences."]
homepage:
description:
!ENV [
@@ -234,6 +235,24 @@ extra:
data: 0
note:
!ENV [ANALYTICS_FEEDBACK_NEGATIVE_NOTE, "Thanks for your feedback!"]
consent:
title: !ENV [ANALYTICS_CONSENT_TITLE, "Contribute anonymous statistics"]
description:
!ENV [
ANALYTICS_CONSENT_BODY,
"We use cookies to collect anonymous usage statistics. You can opt out if you wish.",
]
cookies:
analytics:
name: !ENV [ANALYTICS_COOKIE_UMAMI, "Self-Hosted Analytics"]
checked: true
github:
name: !ENV [ANALYTICS_COOKIE_GITHUB, "GitHub API"]
checked: true
actions:
- reject
- accept
- manage
repo_url:
!ENV [BUILD_REPO_URL, "https://github.com/privacyguides/privacyguides.org"]
@@ -284,6 +303,7 @@ extra_css:
- assets/stylesheets/extra.css?v=2
extra_javascript:
- assets/javascripts/randomize-element.js?v=1
- assets/javascripts/resolution.js?v=1
- assets/javascripts/feedback.js?v=1
watch:
@@ -442,12 +462,7 @@ nav:
- !ENV [NAV_TECHNICAL_GUIDES, "Technical Guides"]:
- "meta/uploading-images.md"
- "meta/git-recommendations.md"
- !ENV [NAV_DONATE, "Donate"]: "about/donate/"
- !ENV [NAV_CHANGELOG, "Changelog"]:
"https://github.com/privacyguides/privacyguides.org/releases"
- !ENV [NAV_FORUM, "Forum"]: "https://discuss.privacyguides.net/"
- !ENV [NAV_BLOG, "Blog"]: "https://blog.privacyguides.org/"
validation:
nav:
not_found: info
-3
View File
@@ -128,9 +128,6 @@ markdown_extensions:
sources:
exclude:
- tools.md
targets:
exclude:
- about/contributors.md
EOT
trap 'rm $PWD/.mkdocs-insiders-$random_num.yml' EXIT
fi
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg"><defs><clipPath id="clip_path_0"><path d="m27 27h36v36h-36z"/></clipPath></defs><g transform="matrix(.94074 0 0 .94074 -25.4 -25.416)" fill="#fff"><path d="m35.773 42.559c0.5437-2.0321 1.7426-3.8281 3.4109-5.1095s3.7127-1.9767 5.8163-1.978h15.231c-1.533-2.4512-3.635-4.4961-6.1274-5.961-2.4925-1.465-5.3017-2.3066-8.189-2.4535-2.8874-0.1469-5.7675 0.4054-8.3957 1.6098-2.6283 1.2044-4.927 3.0255-6.7008 5.3085z" clip-path="url(#clip_path_0)"/><path d="m47.472 54.262c-2.0311 0.5535-4.1885 0.4168-6.1336-0.3887-1.945-0.8054-3.5675-2.234-4.6127-4.0613l-0.0091 0.0051-7.6218-13.201c-1.3547 2.5548-2.073 5.3987-2.094 8.2903-0.021 2.8917 0.6559 5.7457 1.9734 8.3199 1.3174 2.5742 3.2365 4.7925 5.5943 6.4667s5.0847 2.7549 7.9493 3.1502z"/><path d="m51.772 38.284c1.4859 1.4875 2.4387 3.4242 2.7103 5.5091s-0.1532 4.2011-1.2084 6.0197l0.0105 6e-3 -7.6099 13.181c2.8881-0.1031 5.7087-0.9014 8.2225-2.3271 2.5137-1.4257 4.6464-3.4368 6.2172-5.8626 1.5707-2.4258 2.5331-5.1947 2.8055-8.0717 0.2724-2.8771-0.1533-5.7774-1.2409-8.4548z"/><path d="m45 51.784c3.7279 0 6.75-3.0221 6.75-6.75s-3.0221-6.75-6.75-6.75-6.75 3.0221-6.75 6.75 3.0221 6.75 6.75 6.75z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg"><g stroke-width=".066148"><g><path d="m16.933 16.933 7.3325 4.2332-7.3325 12.7c9.352 0 16.933-7.5812 16.933-16.933 0-3.0852-0.8292-5.9752-2.2709-8.4667h-14.663z" fill="#9c9c9c"/><path d="m16.933-1.1601e-6c-6.2675 0-11.736 3.4075-14.664 8.4687l7.331 12.698 7.3325-4.2332v-8.4667h14.663c-2.9285-5.06-8.3958-8.4667-14.663-8.4667z" fill="#212121"/><path d="m9.884e-5 16.933c0 9.352 7.581 16.933 16.933 16.933l7.3325-12.7-7.3325-4.2332-7.3325 4.2332-7.331-12.698c-1.4409 2.4908-2.2699 5.3797-2.2699 8.4645" fill="#595959"/></g><path d="m25.4 16.933c0 4.676-3.7908 8.4667-8.4668 8.4667-4.676 0-8.4668-3.7907-8.4668-8.4667s3.7908-8.4667 8.4668-8.4667c4.676 0 8.4668 3.7907 8.4668 8.4667" fill="#fff"/><path d="m23.813 16.933c0 3.7992-3.08 6.8792-6.8793 6.8792-3.7993 0-6.8793-3.08-6.8793-6.8792s3.08-6.8792 6.8793-6.8792c3.7993 0 6.8793 3.08 6.8793 6.8792"/></g></svg>

After

Width:  |  Height:  |  Size: 1008 B

-1
View File
@@ -1 +0,0 @@
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg"><g fill="#00d2a7" stroke-width=".91795"><path d="m2.6793 0.33879 5.7992 5.8589c0.13565 0.13531 0.27131 0.16931 0.47479 0.16931h24.451c0.16955 0 0.27134-0.20331 0.10172-0.37254l-5.7313-5.7911c-0.13565-0.13565-0.27134-0.20331-0.5426-0.20331h-24.418c-0.23741 0-0.27131 0.20331-0.13565 0.33861z"/><path d="m1.8315 33.596c-0.034 0.13565 0.034 0.27096 0.20348 0.27096h24.112c0.23738 0 0.3391-0.10165 0.40693-0.30461l7.2913-23.503c0.06783-0.23696-0.034-0.30461-0.23738-0.30461h-24.18c-0.20341 0-0.27127 0.067653-0.3391 0.23696z"/><path d="m1.5914e-4 26.822c0 0.27096 0.33913 0.27096 0.40696 0l5.5279-17.983c0.067827-0.20331 0.067827-0.33861-0.10172-0.50802l-5.4939-5.4525c-0.13565-0.13565-0.33913-0.067653-0.33913 0.10165z"/></g></svg>

Before

Width:  |  Height:  |  Size: 836 B

+1 -1
View File
@@ -1 +1 @@
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg"><g fill="#850122" stroke-width=".91795"><path d="m2.6792 0.33866 5.7992 5.8589c0.13565 0.13548 0.27131 0.16934 0.47479 0.16934h24.452c0.16955 0 0.27134-0.2032 0.10172-0.37253l-5.7313-5.7912c-0.13565-0.13548-0.27134-0.2032-0.5426-0.2032h-24.418c-0.23741 0-0.27131 0.2032-0.13565 0.33865z"/><path d="m1.8314 33.596c-0.034 0.13548 0.034 0.27089 0.20348 0.27089h24.113c0.23738 0 0.3391-0.10152 0.40693-0.30476l7.2914-23.503c0.06783-0.23703-0.034-0.30475-0.23738-0.30475h-24.18c-0.20341 0-0.27127 0.067758-0.3391 0.23703z"/><path d="m5.3925e-5 26.822c0 0.27089 0.33914 0.27089 0.40696 0l5.5279-17.983c0.067827-0.2032 0.067827-0.33865-0.10172-0.508l-5.494-5.4525c-0.13565-0.13548-0.33914-0.067723-0.33914 0.10158z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 257 237"><defs><path id="a" d="M22.875.003C10.235.003 0 10.249 0 22.875v211.23c0 .801.046 1.608.123 2.388 8.5-3.167 17.524-6.629 27.054-10.436 66.336-26.48 120.57-48.994 120.62-74.415 0-.814-.056-1.636-.172-2.458-3.43-25.098-63.407-32.879-63.324-44.381.007-.611.18-1.25.548-1.889 7.205-12.619 35.743-12.015 46.253-12.907 10.519-.913 35.206-.724 36.399-8.244.035-.232.057-.463.057-.695.028-6.987-16.977-9.726-16.977-9.726s20.635 3.083 20.579 11.11c0 .393-.048.8-.158 1.214-2.222 8.624-20.379 10.246-32.386 10.835-11.356.569-28.648 1.861-28.707 7.408-.007.323.049.66.165 1.004 2.71 8.11 66.09 12.015 106.64 33.061 23.335 12.099 34.94 32.422 40.263 53.418V22.872C256.977 10.246 246.734 0 234.108 0H22.878l-.003.003Z"/></defs><use xlink:href="#a" fill="#A01E20" fill-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 828 B

After

Width:  |  Height:  |  Size: 881 B

+1 -1
View File
@@ -1 +1 @@
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg"><defs><clipPath id="a"><rect width="1024" height="1024" rx="200" fill="#fff"/></clipPath></defs><rect x="7.0459e-7" y="6.4966e-7" width="33.867" height="33.867" rx="10.16" ry="10.16" stroke-width=".033867"/><g transform="matrix(.037398 0 0 .037398 -2.2146 -2.2164)"><g clip-path="url(#a)" fill="#fff"><path d="m724.98 682.92c-17.255 50.411-51.835 93.065-97.588 120.37-45.752 27.307-99.71 37.496-152.27 28.753-52.56-8.743-100.31-35.85-134.76-76.498s-53.359-92.199-53.365-145.48v-110.25l79.121 33.053v77.152c-7e-3 20.779 4.434 41.318 13.024 60.237 8.59 18.92 21.131 35.781 36.78 49.451 2.97 2.587 6.053 5.107 9.236 7.459 23.357 17.388 51.402 27.352 80.494 28.597 0.99 0 1.946 0.079 2.925 0.101 0.979 0.023 2.25 0 3.375 0h3.375c1.125 0 1.935 0 2.925-0.101 29.081-1.248 57.116-11.203 80.471-28.575 3.173-2.351 6.255-4.86 9.237-7.447 20.556-17.98 35.656-41.366 43.582-67.5zm12.015-268.92v196.06c0 2.531 0 5.074-0.158 7.605l-78.963-33.019v-170.65c-0.013-37.684-14.607-73.901-40.725-101.07-26.119-27.164-61.735-43.168-99.389-44.66-37.655-1.492-74.426 11.644-102.61 36.657-28.186 25.013-45.6 59.962-48.594 97.526-0.281 3.803-0.439 7.662-0.439 11.543v48.712l-79.121-33.075v-240.64h225c59.674 0 116.9 23.705 159.1 65.901s65.901 99.425 65.901 159.1z"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512"><defs><linearGradient xlink:href="#a" id="b" x1="188.6123" x2="193.544" y1="165.2058" y2="216.8152" gradientTransform="rotate(5 4448.1558 -4203.82) scale(2.9367)" gradientUnits="userSpaceOnUse"/><linearGradient id="a"><stop offset="0"/><stop offset="1" stop-color="#fff9f9" stop-opacity="0"/></linearGradient><linearGradient xlink:href="#a" id="c" x1="167.8" x2="270.6" y1="76.9" y2="64.2" gradientTransform="rotate(5 465.3093 -2049.9155) scale(1.5008)" gradientUnits="userSpaceOnUse"/></defs><rect width="494.5974" height="494.5974" x="8.7013" y="8.7013" fill="#fff" ry="114.7779"/><g transform="translate(29.1944 81.639) scale(1.3622)"><path fill="url(#b)" d="m160 205 154 42-141 44-155-42Z"/><path fill="url(#c)" d="M160-35v240l154 42 1-253z"/><path fill="none" d="M160 205V-35m0 240L18 249m142-44 154 41"/><path d="m84 109 35 54V98l21-7v91l-27 9-35-54v65l-21 6v-91z"/><rect width="86.1" height="12.6" x="185" y="97" fill="#bebebe" ry="2.3" transform="skewY(15) scale(.9669 1)"/><path fill="#bebebe" d="m181 169 99 26 2 3v8c0 1-1 2-2 1l-99-26-2-3v-7c0-2 1-2 2-2zm0-47 99 27 2 2v8l-2 2-99-27c-1 0-2-1-2-3v-7z"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -1,149 +0,0 @@
/**
* @overview Generates a list of topics on a Discourse forum.
* @author Jonah Aragon <jonah@triplebit.net>
* @version 3.0.0
* @license
* Copyright (c) 2023 - 2024 Jonah Aragon
*
* 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 NONINFRINGEMENT. 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.
*/
async function getData(url) {
const response = await fetch(url);
return response.json()
}
async function main() {
const elements = document.querySelectorAll("div[data-forum]");
for (let j = 0; j < elements.length; j++) {
var topics = elements[j];
var dataset = topics.dataset;
console.log("Fetching data from " + dataset.feed)
const data = await getData(dataset.feed);
var list = data['topic_list']['topics'];
var profiles = data['users'];
var count = dataset.count;
for (var i = 0; i < count; i++) {
if (list[i]['pinned'] == true) {
count++;
continue;
}
var title = list[i]['title'];
var id = list[i]['id'];
var topic = document.createElement("div");
topic.className = "discourse-topic";
var h3 = document.createElement('p');
h3.className = "discourse-title";
var a1 = document.createElement('a');
a1.href = dataset.forum + '/t/' + id;
a1.innerText = title;
h3.appendChild(a1);
var postinfo = document.createElement('ul');
postinfo.className = "discourse-data";
var date = document.createElement('li');
date.className = "discourse-date";
var datestring = list[i]['bumped_at'];
var dateobject = new Date(datestring);
var now = new Date();
var diff = now - dateobject;
var minutes = Math.floor(diff / 60000);
var hours = Math.floor(minutes / 60);
var days = Math.floor(hours / 24);
if (days > 0) {
if (days == 1) {
date.innerText = "Last reply 1 day ago";
}
else {
date.innerText = "Last reply " + days + " days ago";
}
}
else if (hours > 0){
if (hours == 1) {
date.innerText = "Last reply 1 hour ago";
}
else {
date.innerText = "Last reply "+ hours + " hours ago";
}
}
else {
if (minutes == 1) {
date.innerText = "Last reply 1 minute ago";
}
else {
date.innerText = "Last reply " + minutes + " minutes ago";
}
}
postinfo.appendChild(date);
var author_id = list[i]['posters'][0]['user_id'];
var author_data = profiles.find(profile => profile['id'] == author_id);
var author = document.createElement('li');
author.className = "discourse-author";
var avatar = document.createElement('img');
avatar.src = dataset.forum + author_data['avatar_template'].replace("{size}", "40");
avatar.width = 20;
avatar.height = 20;
author.appendChild(avatar);
var namespan = document.createElement('span');
namespan.innerText = " " + author_data['username'];
author.appendChild(namespan);
postinfo.appendChild(author);
var likes = document.createElement('li');
likes.className = "discourse-likes";
if (list[i]['like_count'] == 1) {
likes.innerText = "1 Like";
}
else {
likes.innerText = list[i]['like_count'] + " Likes";
}
postinfo.appendChild(likes);
var replies = document.createElement('li');
replies.className = "discourse-replies";
var reply_count = list[i]['posts_count'] - 1;
if (reply_count == 1) {
replies.innerText = "1 Reply"
}
else {
replies.innerText = reply_count + " Replies"
}
postinfo.appendChild(replies);
topic.appendChild(h3);
topic.appendChild(postinfo);
topics.appendChild(topic);
}
}
}
main();
+78
View File
@@ -0,0 +1,78 @@
function setCookie(cname, cvalue, exdays) {
const d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
let expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
let name = cname + "=";
let ca = document.cookie.split(';');
for(let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
var consent = __md_get("__consent")
if (!consent) {
__md_set("__consent", {"analytics":true,"github":true});
if (getCookie('resolution') == '') {
const resolution = `${window.screen.width}x${window.screen.height}`;
setCookie('resolution', resolution, 30);
}
}
if (consent && consent.analytics) {
if (getCookie('resolution') == '') {
const resolution = `${window.screen.width}x${window.screen.height}`;
setCookie('resolution', resolution, 30);
}
setCookie('umami', 'true', 0);
} else {
setCookie('umami', 'false', 365);
setCookie('resolution', "0x0", 0);
}
var consent = __md_get("__consent")
if (consent) {
for (var input of document.forms.consent.elements)
if (input.name)
input.checked = consent[input.name] || false
/* Show consent with a small delay, but not if browsing locally */
} else if (location.protocol !== "file:") {
setTimeout(function() {
var el = document.querySelector("[data-md-component=consent]")
el.hidden = false
}, 250)
}
/* Intercept submission of consent form */
var form = document.forms.consent
for (var action of ["submit", "reset"])
form.addEventListener(action, function(ev) {
ev.preventDefault()
/* Reject all cookies */
if (ev.type === "reset")
for (var input of document.forms.consent.elements)
if (input.name)
input.checked = false
/* Grab and serialize form data */
__md_set("__consent", Object.fromEntries(
Array.from(new FormData(form).keys())
.map(function(key) { return [key, true] })
))
/* Remove anchor to omit consent from reappearing and reload */
location.hash = '';
location.reload()
})
+1 -54
View File
@@ -114,7 +114,7 @@ article.md-content__inner > * {
margin-right: 0;
text-align: right;
} */
#what-should-i-do, #what-should-i-do ~ :not( .mdx-cat ~ * ):not( .mdx-cta ):not( .mdx-discourse-topics) {
#what-should-i-do, #what-should-i-do ~ :not( .mdx-cat ~ * ):not( .mdx-cta ) {
margin-left: auto;
margin-right: 0;
text-align: right;
@@ -134,56 +134,3 @@ article.md-content__inner > hr {
--md-icon-size: 1.8em;
margin: 0.4rem;
}
.mdx-discourse-topics {
max-width: 100% !important;
margin-left: auto;
margin-right: auto;
text-align: center;
}
.mdx-discourse-topics .topics-list {
grid-template-columns: repeat(5, 1fr);
}
.mdx-discourse-topics .discourse-title {
min-height: 4em;
}
.mdx-discourse-topics .topics-list {
display: grid;
text-align: left;
}
.mdx-discourse-topics .topics-list .discourse-title {
line-height: 1.2;
margin: 0;
}
.mdx-discourse-topics .topics-list .discourse-topic {
padding: 0.4em;
margin-bottom: 1em;
}
.mdx-discourse-topics .topics-list .discourse-data {
color: var(--md-default-fg-color--light);
list-style: none;
padding: 0;
margin: 0;
}
.mdx-discourse-topics .topics-list .discourse-data li {
margin: 0;
}
.mdx-discourse-topics .topics-list .discourse-data li img {
vertical-align: middle;
}
@media screen and (max-width: 1000px) {
.mdx-discourse-topics .topics-list {
grid-template-columns: repeat(3, 1fr);
}
.mdx-discourse-topics .topics-list .discourse-title {
min-height: 0;
}
}
@media screen and (max-width: 600px) {
.mdx-discourse-topics .topics-list {
grid-template-columns: repeat(1, 1fr);
}
.mdx-discourse-topics .topics-list .discourse-title {
min-height: 0;
}
}
+1 -41
View File
@@ -23,7 +23,7 @@
{% extends "main.html" %}
{% set homepage = config.extra.privacy_guides.homepage %}
{% block extrahead %}
<link rel="stylesheet" href="{{ 'assets/stylesheets/home.css?v=20240501' | url }}">
<link rel="stylesheet" href="{{ 'assets/stylesheets/home.css?v=3.3.0' | url }}">
{% for feed in homepage.rss %}
<link rel="alternate" type="application/rss+xml" title="{{ feed.title }}" href="{{ feed.link }}">
{% endfor %}
@@ -49,24 +49,6 @@
</section>
{% endblock %}
{% block content %}
{% if config.theme.language == "en" %}
<div class="mdx-discourse-topics">
<h2>Top discussions this week</h2>
<div
class="topics-list"
data-forum="https://discuss.privacyguides.net"
data-feed="https://discuss.privacyguides.net/top.json?period=weekly"
data-count="5">
</div>
<noscript>
<a href="https://discuss.privacyguides.net/" class="md-button md-button--primary">
Join the forum
</a>
</noscript>
<hr />
</div>
{% endif %}
{{ page.content }}
<div class="mdx-cta">
<hr />
@@ -80,26 +62,4 @@
<p>{{ cta.description }}</p>
{% endfor %}
</div>
{% if config.theme.language == "en" %}
<div class="mdx-discourse-topics">
<h3>Join a discussion</h3>
<div
class="topics-list"
data-forum="https://discuss.privacyguides.net"
data-feed="https://discuss.privacyguides.net/latest.json"
data-count="15">
</div>
<noscript>
<a href="https://discuss.privacyguides.net/" class="md-button md-button--primary">
Join the forum
</a>
</noscript>
<hr />
</div>
{% endif %}
{% endblock %}
{% block scripts %}
<script src="{{ 'assets/javascripts/discourse-topics.js' | url }}"></script>
{{ super() }}
{% endblock %}
+3
View File
@@ -35,6 +35,9 @@
{% endfor %}
</a>
{{ copyright.copyright.date }} {{ copyright.copyright.author }}
<a href='#__consent'>
{{ copyright.analytics }}
</a>
</div>
{% endif %}
</div>
+1
View File
@@ -0,0 +1 @@
<!-- moved to assets/javascripts/resolution.js -->