Compare commits

...

133 Commits

Author SHA1 Message Date
nevfy 4e2db568c9 Fix typos in FAQ (#138)
continuous-integration/drone/push Build is failing Details
Reviewed-on: #138
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
Co-authored-by: nevfy <nevfy@noreply.git.selfprivacy.org>
Co-committed-by: nevfy <nevfy@noreply.git.selfprivacy.org>
2024-05-12 20:02:06 +03:00
Inex Code c1d211e971 Reapply "Merge branch 'master' into set-img-size"
continuous-integration/drone/push Build is passing Details
This reverts commit 5abf9a38f7.
2024-05-01 15:27:11 +03:00
Inex Code 5abf9a38f7 Revert "Merge branch 'master' into set-img-size"
continuous-integration/drone/push Build is passing Details
This reverts commit a0c32c0b4f, reversing
changes made to c46e9bb2ac.
2024-05-01 15:25:31 +03:00
Inex Code 24a86fbea9 Merge pull request 'Add placeholder to broken images' (#126) from nevfy/selfprivacy.org:set-img-size into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #126
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-05-01 15:22:11 +03:00
Inex Code a0c32c0b4f Merge branch 'master' into set-img-size 2024-05-01 15:21:43 +03:00
nevfy c46e9bb2ac fix: rename folder 2024-04-29 17:34:19 +03:00
nevfy 46223ee8b1 fix: privacy policy 2024-04-29 17:20:22 +03:00
nevfy c6ee71fb49 Merge branch 'master' of https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org into set-img-size 2024-04-28 01:33:41 +03:00
nevfy a8fe258fe5 Merge branch 'set-img-size' of https://git.selfprivacy.org/nevfy/selfprivacy.org into set-img-size 2024-04-28 01:30:43 +03:00
nevfy 53b1e00ac5 fix: bad merge 2024-04-28 01:25:47 +03:00
nevfy e82b38b504 Merge branch 'master' into set-img-size 2024-04-27 15:59:17 +03:00
nevfy 7a2ce768b2 fix: center blocks on smaller screens
continuous-integration/drone/push Build is passing Details
2024-04-27 01:06:31 +03:00
nevfy c951c3592a fix: enable windows download
continuous-integration/drone/push Build is passing Details
2024-04-26 02:14:11 +03:00
nevfy 9be32325d0 fix(bs): download
continuous-integration/drone/push Build is passing Details
2024-04-22 21:13:55 +03:00
nevfy 298a50ca24 fix: optimize svg 2024-04-22 21:13:55 +03:00
nevfy 51a2ccd995 fix(bs): upgrade to new defaults 2024-04-22 21:13:55 +03:00
nevfy e61c1cd8c5 fix(bs): lang selector 2024-04-22 21:13:55 +03:00
nevfy e31b2da345 fix(bs): upgrade carousel 2024-04-22 21:13:55 +03:00
nevfy a6fcff6e75 feat: upgrade theme 2024-04-22 21:13:55 +03:00
nevfy 88bdaccccc Remove unused files (#131)
continuous-integration/drone/push Build is passing Details
- Illustrations load from the `content` folders, not from `assets`
- Screenshots load from `static/images`, not from `assets`
- `justimg` shortcode is not used anywhere

`assets/images` and `justimg.html` can be deleted.

Reviewed-on: #131
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
Co-authored-by: nevfy <yaver4.0.0.0@gmail.com>
Co-committed-by: nevfy <yaver4.0.0.0@gmail.com>
2024-04-22 21:11:58 +03:00
dettlaff de9c84858e def/update_nextcloud (#127)
continuous-integration/drone/push Build is passing Details
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
Reviewed-on: #127
Co-authored-by: dettlaff <dettlaff@riseup.net>
Co-committed-by: dettlaff <dettlaff@riseup.net>
2024-04-19 12:24:46 +03:00
def cc8f9be86a Merge pull request 'Remove .gitmodules' (#123) from nevfy/selfprivacy.org:rem-git-mod into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #123
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-04-19 00:13:12 +03:00
nevfy 06f5fb9d94 Merge branch 'master' into rem-git-mod 2024-04-19 00:04:29 +03:00
nevfy f5b80082ed Update layout (#102)
continuous-integration/drone/push Build is passing Details
This merge request solves following issues with the current layout:
- **h1 header not instantly visible on the first screen on mobile:** changed the order so it appears before the screenshot gallery
- **alternation of text and images looking weird in vertical mobile layout:** removed the alternation on mobile
- **services and advantages being spread too wide on desktop:** added space on the sides
- **advantages having repetitive layout, supporters repeating the look of services:** added variety with sliding effect and alternating background color, removed card-like background

Reviewed-on: #102
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
Co-authored-by: nevfy <yaver4.0.0.0@gmail.com>
Co-committed-by: nevfy <yaver4.0.0.0@gmail.com>
2024-04-18 21:41:36 +03:00
nevfy 586da8051f Merge branch 'master' into rem-git-mod 2024-04-18 20:13:05 +03:00
nevfy e5fd469f96 Merge branch 'master' into set-img-size 2024-04-17 16:32:55 +03:00
Inex Code 19a0b0f0ca fix: relrefs with spaces
continuous-integration/drone/push Build is passing Details
2024-04-17 16:31:55 +03:00
nevfy e0b9f8fe9b fix: remove justimg shortcode 2024-04-16 23:45:07 +03:00
nevfy d76c3ba051 fix: remove unused wrapper 2024-04-14 00:59:18 +03:00
nevfy b8e58cba1f fix: svg placeholder style 2024-04-12 02:19:53 +03:00
def b6086d8fd7 Merge pull request 'Change TOC order in docs' (#124) from nevfy/selfprivacy.org:fix-docs-order into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #124
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-04-11 16:48:12 +03:00
nevfy ecc8f46e2b fix: change broken img look 2024-04-11 07:01:47 +03:00
def c9effcdf25 Merge pull request 'docs: upd get started ru' (#122) from def/update_get_started_ru into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #122
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-04-10 18:19:03 +03:00
nevfy 294d527e52 fix(ru): reorder toc 2024-04-08 05:32:18 +03:00
nevfy 0548dcd424 fix(docs): reorder toc 2024-04-08 04:41:59 +03:00
nevfy a22f5eebbb fix: remove .gitmodules 2024-04-08 02:58:03 +03:00
dettlaff 3a283216ce style: md fix 2024-04-05 04:19:29 +04:00
dettlaff 371c2df508 docs: delete old materials 2024-04-05 04:18:53 +04:00
dettlaff f3052613fd docs: add imgproc to pics 2024-04-05 04:17:23 +04:00
dettlaff 160e8d9e12 style: fix md 2024-04-05 00:12:24 +04:00
dettlaff a87a83dcbc docs: fix from reviewer 2024-04-05 00:10:20 +04:00
dettlaff f338f54806 docs: fix numbers 2024-04-02 04:32:05 +04:00
dettlaff c4a7292114 docs: upd providers ru 2024-04-02 04:28:24 +04:00
dettlaff 209ed687cd docs: update about porkbun 2024-04-01 13:23:55 +04:00
dettlaff aba7c4a5fa docs: upd get started 2024-03-30 06:53:52 +04:00
dettlaff a09ceb89b1 docs: update architecture en (#115)
continuous-integration/drone/push Build is passing Details
Reviewed-on: #115
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
Co-authored-by: dettlaff <dettlaff@riseup.net>
Co-committed-by: dettlaff <dettlaff@riseup.net>
2024-03-28 15:37:59 +02:00
Inex Code de5ff5053d docs(en): 0.11.0 changelog
continuous-integration/drone/push Build is passing Details
2024-03-14 20:24:39 +03:00
Inex Code 8ef581a4ef docs(en): Add info on how to get admin rights in pleroma
continuous-integration/drone/push Build is passing Details
2024-03-03 18:05:23 +02:00
Inex Code 94cf2caf44 fix(en): example in the wrong language
continuous-integration/drone/push Build is passing Details
2024-03-01 15:32:40 +02:00
dettlaff 13d6ea9618 docs: upd eng backups (#73)
continuous-integration/drone/push Build is passing Details
Reviewed-on: #73
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
Co-authored-by: dettlaff <dettlaff@riseup.net>
Co-committed-by: dettlaff <dettlaff@riseup.net>
2024-03-01 02:41:45 +02:00
Inex Code 27954e1efa docs(en): DNS provider migration guide
continuous-integration/drone/push Build is passing Details
2024-02-29 01:51:07 +03:00
Inex Code 7908938b3f docs(ru): Fix provider name in migration article
continuous-integration/drone/push Build is passing Details
2024-02-29 01:22:17 +03:00
Inex Code e05437d43e docs(ru): Adapt DNS migration steps to the Nix flakes
continuous-integration/drone/push Build is passing Details
2024-02-29 01:19:01 +03:00
def ee47208a6e docs: update architecture ru (#114)
continuous-integration/drone/push Build is passing Details
Reviewed-on: #114
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
Co-authored-by: def <dettlaff@riseup.net>
Co-committed-by: def <dettlaff@riseup.net>
2024-02-27 16:29:02 +02:00
Inex Code 174bcb1d4e Merge pull request 'Fix tab borders in docs' (#107) from nevfy/selfprivacy.org:fix-tabs into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #107
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-02-12 15:18:52 +02:00
nevfy 8345296280 fix: bad merge 2024-02-09 21:19:13 +04:00
nevfy 27ac23f9ac Merge remote-tracking branch 'upstream/master' into fix-tabs 2024-02-09 05:15:02 +04:00
nevfy 9a3115468d fix: resolve conflict 2024-02-09 05:11:02 +04:00
Inex Code 3145d57511 fix: Link to fdroid
continuous-integration/drone/push Build is passing Details
2024-02-08 15:39:50 +03:00
Inex Code 20317f6f20 Merge pull request 'Refactor CSS' (#108) from nevfy/selfprivacy.org:refactor-css into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #108
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-02-08 13:25:36 +02:00
nevfy 2e7be902a3 Merge remote-tracking branch 'upstream/master' into refactor-css 2024-02-07 19:07:21 +04:00
nevfy 77513ad94c Merge remote-tracking branch 'upstream/master' into fix-tabs 2024-02-06 19:46:11 +04:00
nevfy 23d317a711 fix: tabs blocked by h3 2024-02-06 19:43:01 +04:00
def e93cb64dba docs: update screensots ru and eng (#112)
continuous-integration/drone/push Build is passing Details
Co-authored-by: dettlaff <dettlaff@riseup.net>
Co-authored-by: nevfy <yaver4.0.0.0@gmail.com>
Reviewed-on: #112
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
Co-authored-by: def <dettlaff@riseup.net>
Co-committed-by: def <dettlaff@riseup.net>
2024-02-06 15:48:11 +02:00
Inex Code ab9497cee6 Merge pull request 'Remove taxonomies' (#113) from nevfy/selfprivacy.org:remove-taxonomies into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #113
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-02-06 15:44:59 +02:00
nevfy 73bbf27bc4 fix: remove taxonomies from site config 2024-02-06 03:24:29 +04:00
nevfy 7c1778778a fix: remove categories from files 2024-02-06 03:22:17 +04:00
nevfy 21508896dd fix: remove shadow from header items 2024-02-05 22:35:23 +04:00
nevfy 1dd43956f2 fix: tab style 2024-02-05 22:28:43 +04:00
nevfy 9ab590cf1c Merge remote-tracking branch 'upstream/master' into fix-tabs 2024-02-05 21:38:18 +04:00
Inex Code e297584513 Merge pull request 'Remove h1 from pages that already have it' (#106) from nevfy/selfprivacy.org:remove-h1 into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #106
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-02-05 10:08:39 +02:00
Inex Code f420718b96 Merge pull request 'Change navigation hover appearance' (#105) from nevfy/selfprivacy.org:docs-hover into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #105
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-02-05 10:06:05 +02:00
nevfy 34d991ff50 fix: more nesting 2024-02-04 23:35:17 +04:00
nevfy 4f786bf803 fix: add variables 2024-02-04 23:25:23 +04:00
nevfy 2c556abba0 fix: more sass nesting 2024-02-04 23:16:04 +04:00
nevfy 7e257894f2 fix: use sass nesting 2024-02-04 23:09:40 +04:00
nevfy 9077451d1e feat: move docsy overrides to a separate file 2024-02-04 22:51:21 +04:00
nevfy 24155de39c fix: tab hover 2024-02-04 22:25:41 +04:00
nevfy bb21516e55 fix: tabs border (#100) 2024-02-04 22:09:33 +04:00
nevfy 9c7746b2b0 fix: articles should only have one h1 2024-02-04 21:31:22 +04:00
nevfy 664b2c8898 fix: sidebar link active state 2024-02-04 19:29:23 +04:00
nevfy 041e682cd7 fix: hover anim 2024-02-04 19:24:20 +04:00
nevfy b48564a58d fix: footer hover 2024-02-04 19:09:59 +04:00
nevfy be1e35cef5 fix: header link hover 2024-02-04 18:44:58 +04:00
nevfy 3e2c596d5a fix: hide categories title 2024-02-04 18:39:37 +04:00
nevfy 5fc5905bc3 fix: hide another duplicate header 2024-02-04 18:16:49 +04:00
nevfy 4e1eab2139 fix: change hover color and bg 2024-02-04 18:11:15 +04:00
Inex Code 8382708a2b docs(en): Update roadmap
continuous-integration/drone/push Build is passing Details
2024-01-31 14:33:51 +04:00
Inex Code 082e0c37be Merge pull request 'Hide single-level breadcrumbs in docs' (#98) from nevfy/selfprivacy.org:docs-bread into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #98
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-01-30 18:08:44 +02:00
nevfy 07ec6cc0e3 Merge remote-tracking branch 'upstream/master' into docs-bread 2024-01-30 19:54:31 +04:00
nevfy 4414a392c2 fix: preserve top margin 2024-01-30 19:53:36 +04:00
Inex Code 160be568c6 Merge pull request 'Fix coming soon label wrap' (#96) from nevfy/selfprivacy.org:footer-disabled-links into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #96
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-01-30 17:29:20 +02:00
nevfy b640093184 Merge remote-tracking branch 'upstream/master' into footer-disabled-links 2024-01-30 13:57:53 +04:00
nevfy 53e4a3e752 fix: coming soon wrap 2024-01-30 13:56:05 +04:00
Inex Code 1ebc49337b Merge pull request 'Add icons to the footer downloads' (#95) from nevfy/selfprivacy.org:add-icons into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #95
2024-01-29 19:04:02 +02:00
nevfy 1d3856542a fix: bad merge 2024-01-29 20:56:12 +04:00
nevfy 73e4b2716d fix: add icons to the footer dl section 2024-01-29 20:27:00 +04:00
nevfy 93c646bca6 fix: set empty alt for illustrations to be ignored by screenreaders 2024-01-29 20:26:02 +04:00
Inex Code 4f507f35c6 Merge pull request 'Remove bullets from checklists' (#85) from nevfy/selfprivacy.org:remove-bullets-from-checklists into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #85
2024-01-29 17:50:42 +02:00
nevfy 0f3d6743f6 Merge remote-tracking branch 'upstream/master' into remove-bullets-from-checklists 2024-01-29 19:49:03 +04:00
Inex Code 42ebc180b9 Merge pull request 'Change bg color and nav' (#81) from nevfy/selfprivacy.org:color-fix into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #81
2024-01-29 17:45:38 +02:00
nevfy ba10c7c41d Merge remote-tracking branch 'upstream/master' into color-fix 2024-01-29 19:41:22 +04:00
Inex Code c5ae4ecdad Merge pull request 'Change language dropdown appearance' (#84) from nevfy/selfprivacy.org:lang-picker into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #84
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-01-29 17:38:55 +02:00
nevfy 4e1e91ed60 Merge remote-tracking branch 'upstream/master' into lang-picker 2024-01-29 19:37:57 +04:00
nevfy 0de6c75a4d Merge remote-tracking branch 'upstream/master' into lang-picker 2024-01-29 19:33:07 +04:00
Inex Code be0e968260 Merge pull request 'Change TOC links font weight in docs' (#89) from nevfy/selfprivacy.org:fix-docs-nav into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #89
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-01-29 17:31:13 +02:00
nevfy 4aa30d0236 Merge remote-tracking branch 'upstream/master' into remove-bullets-from-checklists 2024-01-29 19:28:38 +04:00
nevfy ae05642570 Merge remote-tracking branch 'upstream/master' into fix-docs-nav 2024-01-29 19:26:04 +04:00
Inex Code f2fe4df542 Merge pull request 'Remove alt-text from decorative images in services section' (#94) from nevfy/selfprivacy.org:alt-text into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #94
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
2024-01-29 17:22:01 +02:00
nevfy 6bfe043230 Merge remote-tracking branch 'upstream/master' into alt-text 2024-01-29 19:08:24 +04:00
Inex Code 7a97d4fe68 Merge pull request 'fix(ru): Fix blog title' (#93) from fix-blog-link into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #93
2024-01-29 15:10:10 +02:00
Inex Code 5bc756be98 fix(ru): Fix blog title 2024-01-29 17:07:06 +04:00
nevfy 8bf4f3ef7f fix: hide single-level breadcrumbs 2024-01-29 15:44:23 +04:00
nevfy 4d3d5449c4 fix: TOC links font weight 2024-01-29 02:54:14 +04:00
nevfy 57d3df5a48 fix: remove bullets from checklists 2024-01-29 01:30:18 +04:00
nevfy 5471c290a4 fix: inherit shadow from service cards 2024-01-28 23:45:18 +04:00
nevfy c4163bc099 fix: remove dropdown white margin 2024-01-28 23:45:18 +04:00
nevfy 2cc1653fea fix: lang dropdown position 2024-01-28 23:45:18 +04:00
nevfy 70cedfd5e8 fix: remove alt text from services 2024-01-28 18:10:22 +04:00
nevfy 428cfb3544 fix: change margin units to rem 2024-01-27 01:12:36 +04:00
nevfy 6577407f36 fix: remove vh and vw 2024-01-27 01:12:36 +04:00
nevfy 68506bf550 fix: nav items margin on smaller screens 2024-01-27 01:12:36 +04:00
nevfy ff4f5c2634 fix(ru): remove docsy sections 2024-01-27 01:12:36 +04:00
nevfy e24346b93c change nav hover and active states 2024-01-27 01:12:36 +04:00
nevfy 9834547483 fix bg color 2024-01-27 01:12:36 +04:00
nevfy b2c5f3eb73 change template sections to html sections 2024-01-27 01:12:36 +04:00
nevfy 8a4539cd21 fix text contrast 2024-01-27 01:12:36 +04:00
nevfy dc9953f3a6 remove dot from h1 2024-01-27 01:12:36 +04:00
nevfy 9b0c45de8c fix: disable windows dl btn 2024-01-27 01:12:36 +04:00
nevfy a8fa6191e1 fix: enable google play button 2024-01-27 01:12:36 +04:00
nevfy 62281d370f fix(en): typos 2024-01-27 01:12:36 +04:00
nevfy 419bf3de08 add missed parenthesis in markdown link 2024-01-27 01:12:36 +04:00
nevfy a1a8aaae02 remove old wiki link 2024-01-27 01:12:36 +04:00
169 changed files with 1385 additions and 2117 deletions

4
.gitmodules vendored
View File

@ -1,4 +0,0 @@
[submodule "themes/docsy"]
path = themes/docsy
url = https://github.com/google/docsy

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 57 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 68 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 165 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 285 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 328 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 282 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 50 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 91 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 136 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,43 +1,36 @@
.td-navbar {
background: $dark;
min-height: 5rem;
.navbar-brand__name {
display: none;
}
.nav-link {
font-weight: 600;
}
@import "docsy_overrides";
.sp-footer h2,
.sp-footer h3,
.sp-footer a.nav-link {
padding: 0.3rem 1rem !important;
}
.td-toc ul {
margin-top: 1rem;
.sp-footer a.nav-link:hover {
background-color: #61616144;
transition: background-color 0.2s ease-in-out;
border-radius: .3rem;
}
.td-toc li {
display: block;
padding-bottom: .5rem;
.sp-footer a.nav-link span {
width: 2rem;
display: inline-flex;
align-items: center;
border-radius: .1rem;
padding: .5rem;
}
.td-toc a{
display: inline !important;
.sp-footer span i {
margin: auto;
}
@media (min-width: 768px) {
.td-sidebar {
padding-top: 5rem;
}
.td-404 main, .td-main main {
padding-top: 6.5rem;
}
.td-sidebar-toc {
padding-top: 2.75rem;
}
}
.rounded-img {
border-radius: 1rem;
}
.card-title {
font-weight: 600;
}
.sp-button-shadow {
box-shadow: 0px -0.5rem 0px 0px rgba(0, 0, 0, 0.1) inset;
}
@ -47,10 +40,6 @@
padding-top: 0.8rem;
}
.btn {
font-weight: 600;
}
.sp-feature-title {
font-weight: 600;
}
@ -60,31 +49,51 @@
font-weight: 600;
padding: 0.3rem 0;
color: $navbar-dark-color;
&:hover {
color: $navbar-dark-hover-color;
}
&:active {
color: $navbar-dark-active-color;
}
&:disabled {
color: $navbar-dark-disabled-color;
}
span {
width: 2rem;
display: inline-flex;
align-items: center;
border-radius: .1rem;
padding: .5rem;
}
}
span i {
margin: auto;
}
}
.sp-service-icon {
margin-top: -4rem;
min-height: 6rem;
min-width: 4rem;
max-width: 12rem;
max-height: 8rem;
margin-left: 2rem;
width: max-content;
& > .error {
min-height: 6rem;
min-width: 6rem;
}
}
.sp-feature-img {
min-height: 20rem;
min-width: 20rem;
max-width: 40rem;
max-height: 40rem;
}
.sp-service-card {
background: #FFFFFF;
background: white;
box-shadow: 0 8px 8px rgba(0, 0, 0, 0.25);
border-radius: 10px;
border: none;
@ -94,41 +103,92 @@
margin-top: 6rem;
}
.tab-content .tab-pane {
max-width: 100% !important;
}
.sp-supperted-by-img {
max-height: 5rem;
.sp-supported-by-img {
pointer-events: none;
margin: 1rem;
width: 10rem;
}
.sp-supported-by-list {
display: flex;
align-items: center;
justify-content: space-around;
justify-content: center;
column-gap: 5vw;
flex-wrap: wrap;
}
.sp-supported-by-card {
background: #FFFFFF;
box-shadow: 0 8px 8px rgba(0, 0, 0, 0.25);
border-radius: 10px;
border: none;
margin-top: 1rem;
margin-top: 2rem;
}
a.nav-link.sp-coming-soon {
pointer-events: none;
cursor: default;
color: #616161;
color: $gray;
&::after {
content: "Coming soon!";
display: inline-block;
background-color: $gray;
color: $dark;
margin-left: .5rem;
padding: .1rem .5rem;
border-radius: .1rem;
}
}
a.nav-link.sp-coming-soon::after {
content: "Coming soon!";
background-color: #616161;
color: $dark;
margin-left: .5rem;
padding: .1rem;
border-radius: .1rem;
html {
max-width: 100%;
overflow-x: hidden;
}
body {
background-color: $bg-color;
}
a, a.btn-link {
text-decoration: none;
}
.sp-advantages {
row-gap: 0px;
}
.sp-advantages-header {
position: sticky;
top: 10vh;
margin-bottom: 5rem;
}
.sp-feature {
position: sticky;
top: 0;
min-height: 100vh;
}
.sp-feature-green {
background-color: #e9f1da !important;
}
.sp-feature-blue {
background-color: #e1eaea !important;
}
.sp-feature-purple {
background-color: #ebe0e8 !important;
}
.container-fluid {
padding-left: 0 !important;
padding-right: 0 !important;
}
.error {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
font-size: 2rem;
padding: 1rem;
background-color: transparent;
border: lightgray solid .25rem;
border-radius: .5rem;
& > i {
color: lightgray;
}
}

View File

@ -6,7 +6,11 @@ Add styles or override variables from the theme here.
$primary: #7EB07F;
$secondary: #F2C94C;
$gray: #616161;
$dark: #30312C;
$bg-color: whitesmoke;
$shadow: 0 8px 8px rgba(0, 0, 0, 0.25);
$td-enable-google-fonts: false;
$google_font_name: "Montserrat";

View File

@ -0,0 +1,200 @@
.td-navbar {
background: $dark;
min-height: 5rem;
z-index: 15;
.navbar-brand__name {
display: none;
}
.nav-link {
color: $secondary !important;
font-weight: 600;
border-radius: 5px;
&:hover {
background-color: #61616144;
transition: background-color 0.2s ease-in-out;
}
&.nav-link.active {
background-color: #616161;
}
}
.td-navbar-nav-scroll {
height: unset !important;
margin-top: unset !important;
.nav-link {
padding: .5rem 1.5rem;
}
.navbar-nav {
padding-bottom: 0 !important;
}
}
}
.td-breadcrumbs__single {
visibility: hidden;
}
.td-sidebar-nav .td-sidebar-link__page,
ul.ul-2>.td-sidebar-nav__section-title a {
color: $gray !important;
font-weight: 400;
&:hover {
color: $blue !important;
}
}
ul.ul-2 {
padding: 0;
&>.td-sidebar-nav__section-title a:hover {
color: $primary !important;
background-color: #7EB07F11;
transition: background-color 0.2s ease-in-out;
transition: color 0.2s ease-in-out;
}
}
ul.ul-0 li a.tree-root,
h5.taxonomy-title {
display: none !important;
}
.nav-item {
margin-right: .5rem !important;
}
.td-sidebar-nav-active-item {
color: $primary !important;
font-weight: 600;
}
.td-sidebar-nav a.active {
color: $primary !important;
background-color: #7EB07F22;
}
.td-sidebar-link {
&.td-sidebar-link__section, &.td-sidebar-link__page {
border-radius: .3rem;
padding: .3rem .8rem !important;
margin: .1rem !important;
&:hover {
color: $primary !important;
background-color: #7EB07F11;
transition: background-color 0.2s ease-in-out;
transition: color 0.2s ease-in-out;
}
}
}
.td-toc {
ul {
margin-top: 1rem;
}
li {
display: block;
padding-bottom: .5rem;
}
a {
display: inline !important;
}
}
.tab-content {
.tab-pane {
border: 1px solid rgba(0, 0, 0, 0.125) !important;
border-radius: 0px .25rem .25rem .25rem;
max-width: 100% !important;
}
ul li, ol li {
margin-bottom: unset !important;
}
div {
transition: none;
}
}
.nav-tabs {
border: none !important;
a:not(.active).nav-link:hover {
background-color: #0d6efd11;
}
}
.nav-item {
margin-right: .5rem !important;
}
.dropdown-menu {
right: 0;
left: unset;
padding: 0px;
box-shadow: $shadow;
}
.dropdown-item {
padding: 0.5rem 1.5rem;
border-radius: 0.25rem;
}
li:has(input[type="checkbox"]) {
list-style-type: none;
}
.btn,
.text-secondary {
font-weight: 600;
}
.tab-content {
.tab-pane {
border: none !important;
box-shadow: $shadow;
}
div {
transition: none;
}
}
.nav-tabs {
border: none !important;
.nav-item {
.nav-link {
border: none !important;
box-shadow: $shadow;
margin-bottom: -4px;
}
.nav-link.active {
border-color: transparent transparent white transparent !important;
}
}
a:not(.active).nav-link:hover {
background-color: #0d6efd11;
}
}
.tab-body {
background-color: white;
border: none !important;
position: relative;
z-index: 1;
h3:before {
content: none;
}
}
@media (min-width: 768px) {
.td-sidebar {
padding-top: 5rem;
}
.td-404 main, .td-main main {
padding-top: 6.5rem;
}
.td-sidebar-toc {
padding-top: 2.75rem;
}
}
.carousel-control-next, .carousel-control-prev {
background-image: none;
}

View File

@ -16,22 +16,6 @@ enableGitInfo = true
# Comment out to enable taxonomies in Docsy
# disableKinds = ["taxonomy", "taxonomyTerm"]
# You can add your own taxonomies
[taxonomies]
tag = "tags"
category = "categories"
[params.taxonomy]
# set taxonomyCloud = [] to hide taxonomy clouds
taxonomyCloud = ["tags", "categories"]
# If used, must have same length as taxonomyCloud
taxonomyCloudTitle = ["Tag Cloud", "Categories"]
# set taxonomyPageHeader = [] to hide taxonomies on the page headers
taxonomyPageHeader = ["tags", "categories"]
# Highlighting config
pygmentsCodeFences = true
pygmentsUseClasses = false
@ -93,7 +77,6 @@ section = ["HTML", "print", "RSS"]
[params]
copyright = "SelfPrivacy"
privacy_policy = "https://selfprivacy.org/privacy-policy/"
# First one is picked as the Twitter card image if not set on page.
# images = ["images/project-illustration.png"]

View File

@ -5,19 +5,12 @@ linkTitle = "SelfPrivacy"
+++
{{< blocks/section color="dark" type="section" >}}
<div class="row">
<div class="flex-md-row flex-column-reverse d-flex justify-content-center align-content-center">
<div class="col-xs-12 col-md-4">
<div class="container rounded">
<div id="screenshotsCarouselControls" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#screenshotsCarouselControls" data-slide-to="0"></li>
<li data-target="#screenshotsCarouselControls" data-slide-to="1"></li>
<li data-target="#screenshotsCarouselControls" data-slide-to="2" class="active"></li>
<li data-target="#screenshotsCarouselControls" data-slide-to="3"></li>
<li data-target="#screenshotsCarouselControls" data-slide-to="4"></li>
</ol>
<div id="screenshotsCarouselControls" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner rounded">
<div class="carousel-item">
<div class="carousel-item active">
<img class="d-block w-100" src="/images/screenshots/1-en.png" alt="First slide">
</div>
<div class="carousel-item">
@ -27,27 +20,42 @@ linkTitle = "SelfPrivacy"
<img class="d-block w-100" src="/images/screenshots/3-en.png" alt="Third slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="/images/screenshots/4-en.png" alt="Third slide">
<img class="d-block w-100" src="/images/screenshots/4-en.png" alt="Fourth slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="/images/screenshots/5-en.png" alt="Third slide">
<img class="d-block w-100" src="/images/screenshots/5-en.png" alt="Fifth slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="/images/screenshots/6-en.png" alt="Sixth slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="/images/screenshots/7-en.png" alt="Seventh slide">
</div>
</div>
<a class="carousel-control-prev" href="#screenshotsCarouselControls" role="button" data-slide="prev">
<div class="carousel-indicators">
<button type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="0" class="active" aria-current="true"></button>
<button type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="1"></button>
<button type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="2"></button>
<button type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="3"></button>
<button type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="4"></button>
<button type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="5"></button>
<button type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="6"></button>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#screenshotsCarouselControls" role="button" data-slide="next">
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<span class="visually-hidden">Next</span>
</button>
</div>
</div>
</div>
<div class="col-xs-12 col-md-8 my-auto">
<div class="col-xs-12 col-md-8 col-lg-6 my-auto">
<div class="container my-4">
<h1>
SelfPrivacy app allows you to set up self-hosted services and manage them.
SelfPrivacy app allows you to set up self-hosted services and manage them
</h1>
<a class="btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="{{< relref "/download" >}}">
Download
@ -57,12 +65,12 @@ linkTitle = "SelfPrivacy"
</div>
{{< /blocks/section >}}
{{< blocks/section color="100" type="section" >}}
<div class="row w-100">
<h2 class="mx-auto text-center">Your personal services</h2>
<section class="container">
<div class="w-100">
<h2 class="mx-auto text-center font-weight-bolder">Your personal services</h2>
</div>
<div class="row w-100 mt-5 mb-3">
<div class="w-100 mt-5 mb-3">
<h3 class="mx-auto text-center">For serious business</h3>
</div>
@ -86,7 +94,7 @@ linkTitle = "SelfPrivacy"
</div>
</div>
<div class="row w-100 mt-5 mb-3">
<div class="w-100 mt-5 mb-3">
<h3 class="mx-auto text-center">For entertainment and communication</h3>
</div>
@ -110,8 +118,7 @@ linkTitle = "SelfPrivacy"
</div>
</div>
<div class="row w-100 mt-5 mb-3">
<div class="w-100 mt-5 mb-3">
<h3 class="mx-auto text-center">For a good life</h3>
</div>
@ -129,70 +136,77 @@ linkTitle = "SelfPrivacy"
{{< /landing-service >}}
</div>
</div>
{{< /blocks/section >}}
</section>
{{< blocks/section color="100" type="section" >}}
<div class="row w-100">
<section class="container-fluid d-flex flex-column sp-advantages">
<div class="w-100 sp-advantages-header">
<h2 class="mx-auto text-center">Advantages</h2>
</div>
{{< landing-feature privacy "Privacy" >}}
{{< landing-feature privacy "Privacy" "-green" >}}
<p class="card-text">No registration, cookies or telemetry.</p>
{{< /landing-feature >}}
{{< landing-feature zerotrust "Zero trust" "right">}}
{{< landing-feature zerotrust "Zero trust" "-blue" "right" >}}
<p class="card-text">SelfPrivacy is developed on the «zero trust» principle, even in relation to SelfPrivacy developers. That means you're the sole owner of your data.</p>
{{< /landing-feature >}}
{{< landing-feature security "Security">}}
{{< landing-feature security "Security" "-purple" >}}
<p class="card-text">Open source. The $2,000 reward for RCE vulnerability significantly increases security compared to conventional self-hosted solutions.</p>
{{< /landing-feature >}}
{{< landing-feature simplicity "Simplicity" "right">}}
{{< landing-feature simplicity "Simplicity" "-green" "right">}}
<p class="card-text">It is simple. Without console, complicated instructions, monitoring and involvement of specialists.</p>
{{< /landing-feature >}}
{{< landing-feature arrow "No license agreements">}}
{{< landing-feature arrow "No license agreements" "-blue" >}}
<p class="card-text">What is written in the license agreements that you accept without reading? It says that you allow companies to do anything with your data. SelfPrivacy has no license agreements.</p>
{{< /landing-feature >}}
{{< landing-feature coolhack3r "Save your time and money" "right">}}
{{< landing-feature coolhack3r "Save your time and money" "-purple" "right">}}
<p class="card-text">How to save $500 or two weeks of your life? Will it take the same time and money for a specialist to set everything up from scratch?</p>
<p class="card-text">SelfPrivacy team works continuously to speed up and simplify this process to a few clicks.</p>
<p class="card-text">Now anyone will be capable to set up their own data center.</p>
{{< /landing-feature >}}
{{< landing-feature thisisfine "Functionality">}}
{{< landing-feature thisisfine "Functionality" "-green">}}
<p class="card-text">Your data will not be lost thanks to regular automatic backups to a separate data center. </p>
{{< /landing-feature >}}
{{< landing-feature smartphonecomparison "Independence" "right">}}
{{< landing-feature smartphonecomparison "Independence" "-blue" "right">}}
<p class="card-text">Your communications on the internet no longer depend on Google, Facebook, Amazon and others E-Corps.</p>
<p class="card-text">Your services, your rules! You will not be blocked or disabled, accidentally or for any other reason. Your infrastructure and data will always remain with you.</p>
{{< /landing-feature >}}
{{< landing-feature datactrl "Data control">}}
{{< landing-feature datactrl "Data control" "-purple" >}}
<p class="card-text">Why do corporations need your data? To make you buy more and vote as they want. With SelfPrivacy, only you have your data.</p>
{{< /landing-feature >}}
{{< /blocks/section >}}
</section>
{{< blocks/section color="100" type="section" >}}
<section class="container-fluid">
<div class="row w-100">
<h2 class="mx-auto text-center">Supported by</h2>
</div>
<div class="card sp-supported-by-card h-100">
<div class="card-body sp-supported-by-list">
<div class="container-fluid">
<div class="sp-supported-by-list">
<a href="https://nlnet.nl/project/SelfPrivacy/" target="_blank" rel="noopener noreferrer">
<img class="sp-supperted-by-img" src="/images/logos/nlnet.svg" alt="NLnet foundation">
<object role="img" aria-label="NLnet foundation" class="d-flex justify-content-center align-items-center sp-supported-by-img" type="image/svg+xml" data="/images/logos/nlnet.svg">
<div class="error">
<i class="fa-solid fa-triangle-exclamation"></i>
NLnet foundation
</div>
</object>
</a>
<a href="https://privacyaccelerator.org" target="_blank" rel="noopener noreferrer">
<img class="sp-supperted-by-img" src="/images/logos/PrivacyAcceleratorLogo.svg" alt="Privacy Accelerator">
<object role="img" aria-label="Privacy Accelerator" class="d-flex justify-content-center align-items-center sp-supported-by-img" type="image/svg+xml" data="/images/logos/PrivacyAcceleratorLogo.svg">
<div class="error">
<i class="fa-solid fa-triangle-exclamation"></i>
Privacy Accelerator
</div>
</object>
</a>
</div>
</div>
{{< /blocks/section >}}
</section>

View File

@ -0,0 +1,80 @@
---
title: "Version 0.11.0 Release"
linkTitle: "0.11.0"
date: 2024-03-14
description: >
New About screen, reworked jobs management
---
## Changelog
### Features
- Enabled the following languages:
- Arabic
- Estonian
- Kazakh
- Chinese (Simplified)
- **Server management**: Add ssh settings ([#477](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/477))
- **UI**: Server settings is now a separate screen ([#477](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/477))
- **UI**: The new About page now contains links to our support channels ([#464](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/464), resolves [#339](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/339) and [#170](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/170))
- **Jobs**: Now you can track the result of jobs, and the progress of the server rebuilds and upgrades ([#440](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/440), resolves [#254](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/254))
- **UI**: On iOS, use the Curpentino bottom navbar ([#483](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/483))
- **UI**: Use Curpentino widgets where possible on iOS ([#483](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/483))
- **Jobs**: Block starting client-side jobs when the server is rebuilding or moving a service ([#477](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/477))
- **UI**: On the bottom bar, show all labels, not only the selected one ([#458](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/458), resolves [#454](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/454))
- **UI**: Move provider card titles to the top row ([#449](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/449), resolves [#448](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/448))
- Unified management of API connection to the server: the app should be now more reactive to changes ([#440](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/440))
- **UI**: Onboarding page now looks better on big screens ([#444](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/444))
### Bug Fixes
- **UI**: Card titles no longer overflow on small screens ([#483](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/483), resolves [#476](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/476))
- **DNS**: Detect the situation when we have faulty link-local IPv6 records ([#473](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/473))
- **DNS**: Do not include faulty link-local DNS records in the list of found records ([#475](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/475))
- **UI**: Fix the empty server confirmation screen during recovery ([#474](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/474))
- **UI**: Fix the misleading value of "Do not verify TLS" ([#468](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/468))
- **Jobs**: When you return the server settings value back, the job to change the setting is deleted ([#440](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/440), resolves [#166](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/166))
- **Jobs**: When removing all completed jobs, optimistically delete them in UI first ([#440](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/440), resolves [#277](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/277))
### Other
- Binds migration screen is now in Developer settings, as it is no longer needed on API 3.0, but might still be helpful for stuck servers.
- Remove the server deletion function ([#484](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/484))
### Translation contributions
- Kazakh
- TabithiS (133)
- Chinese (Simplified)
- Nil (545)
- Polish
- TabithiS (52)
- Russian
- Inex Code (43)
- Hebrew
- Yaron (17)
- Estonian
- Dmitri B. (536)
- Thai
- Inex Code (2)
- German
- Inex Code (14)
- Based on anonymous suggestions
- Ukrainian
- Nagibator Nagibuchiy (18)
- TabithiS (26)
- Meko (93)
- Arabic
- Deem Alosili (656)

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 148 KiB

View File

@ -1,7 +1,7 @@
---
title: "About us"
linkTitle: "About us"
weight: 4
weight: 6
date: 2022-01-09
description: >
Who we are, our motivation and policies.

View File

@ -1,7 +1,7 @@
---
title: "Privacy Policy"
date: 2023-05-15
weight: 4
weight: 5
description: >
Our policies and politics.
---

View File

@ -1,7 +1,7 @@
---
title: "Roadmap"
linkTitle: "Roadmap"
weight: 5
weight: 3
date: 2023-10-05
description: >
What we are going to do next
@ -13,9 +13,9 @@ Tasks in **bold** are sponsored, for example, by NlNet. Tasks in *italic* are in
## SP Nix flake format
- [ ] ***Restructure the NixOS configuration to use Nix flakes and migrate to newer NixOS version*** ([nixos-config#38](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nixos-config/issues/38))
- [ ] *Migrate to NixOS 23.05*
- [ ] *Package the SelfPrivacy API into a flake* ([selfprivacy-api#63](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api/issues/63))
- [x] **Restructure the NixOS configuration to use Nix flakes and migrate to newer NixOS version** ([nixos-config#38](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nixos-config/issues/38))
- [x] Migrate to NixOS 23.05
- [x] Package the SelfPrivacy API into a flake ([selfprivacy-api#63](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api/issues/63))
- [ ] ***Develop the manifest format for packaging services to work with SelfPrivacy*** ([nixos-config#40](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nixos-config/issues/40))
- [ ] **Move existing services to SP Modules**
- [ ] Email server ([nixos-config#41](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nixos-config/issues/41))
@ -119,5 +119,5 @@ While cloud server providers offer APIs that allow us to perform almost fully au
## Publishing
- [ ] Publish on Google Play
- [x] Publish on Google Play
- [ ] Publish on Apple App Store

View File

@ -1,7 +1,7 @@
---
title: "Team"
date: 2017-01-05T
weight: 3
weight: 1
description: >
Our team, contributors and like-minded people.
---

View File

@ -2,7 +2,7 @@
title: "Backups"
linkTitle: "Backups"
date: 2023-07-31T
weight: 2
weight: 4
description: >
Backing up your services so that they are not lost
---
@ -11,13 +11,13 @@ description: >
When your service is broken but it worked yesterday you have two options:
* Spend some time reading logs and debugging what went wrong. Meanwhile the service is unusable and maybe some data is irreversibly lost.
* Rewind the service to the working state and then debug at a more relaxed pace. Hopefully it was just solar flare or a glitch in the Matrix.
* Spend some time reading logs and debugging what went wrong. Meanwhile the service is unusable and maybe some data is irreversibly lost;
* Restore the service to a working state and then debug at a more relaxed pace. Hopefully it was just a solar flare or a glitch in the Matrix.
This second, nerve-saving option is enabled by backing up regularly, and even better, automatically.
As an extra benefit, backing up makes it easy to transfer a service from one machine to another with minimal hassle.
This is useful for datacenters on fire, if your server provider gets bought out by another corporation or if shareholders decide that it is finally time to make more profit.
Having a backup simplifies the process of transferring a service between machines, ensuring minimal inconvenience.
This is useful if your datacenter is on fire, if your server provider gets bought out by another corporation, or when shareholders decide that it is finally time to make more profit.
This document covers the basic terms and usage of SelfPrivacy backup subsystem.
@ -25,45 +25,45 @@ This document covers the basic terms and usage of SelfPrivacy backup subsystem.
SelfPrivacy does not make backups of the whole machine.
Instead, it saves the states of each service.
The state of files used by a service, taken at a certain time, is called a Snapshot.
In the interface, you can see a snapshot as having an id, a service it backs up, and a date of creation.
The state of the files used by a service, taken at a certain time, is called a Snapshot.
In the interface, you can see that a snapshot has an ID, a service it backs up, and a date of creation.
## When backups occur?
A snapshot is created in 3 cases:
* By user's manual command to back up a service
* Automatically at certain intervals if Automatic Backups are enabled
* As a precaution before an inplace restore of a service
* By user's manual command to back up a service;
* Automatically at specified intervals if Automatic Backups are enabled;
* As a precaution before an inplace restore of a service.
## How the data is stored?
The service's files are stored at the cloud of user's choosing.
At the moment we support Backblaze but more are to be added.
The service's files are stored at the cloud of the user's choice.
We currently support Backblaze, with more to come.
All of the service data is encrypted with a local secret which the cloud never receives.
Under the hood, we use Restic for transfers of encrypted data.
All of the service data is encrypted with a local secret that the cloud never receives.
Under the hood, we use Restic to transfer encrypted data.
Cloud storage providers, such as Backblaze, have an option to prevent immediate deletion of data.
Clouds like Backblaze have an option to disallow immediate removal of data.
SelfPrivacy app uses this option so that in case when the server is hacked the data cannot be erased.
## Listing snapshots
There are 2 factors to keep in mind when looking at the list:
* For the sake of performance, the list is cached. If some snapshots are missing which you think should be there, invalidate the cache so it reloads.
* If you remove some snapshots, they will disappear from the list, but for some limited time they are still restorable with the help of the cloud.
* For the sake of performance, the list is cached. If some snapshots are missing which you think should be there, invalidate the cache so it reloads;
* If you delete some snapshots, they will be removed from the list, but for some limited time they are still restorable with the help of the cloud.
## Restoring a snapshot
When you restore a snapshot, the service is stopped, and all of its files are restored to the state when the snapshot was taken.
There are 2 ways to do it.
Restoring a snapshot involves stopping the service and reverting all files to their state at the snapshot's creation. This process can be accomplished in two distinct ways.
The safest one, the default one, is to download the snapshot in its entirety, verify that data is not damaged, and replace the service files with the files from the snapshot.
This has a downside that you need to have extra space to store the snapshot.
However, this method requires additional storage space for the snapshot.
A somewhat riskier way is to overwrite the service files directly, without intermediate storage. This needs less space, but if the transfer goes wrong, you end up with a broken service.
To somewhat mitigate this, a pre-restore snapshot is made just before the restoration.
A somewhat riskier way is to overwrite the service files directly, without intermediate storage. It requires less space, but if the transfer goes wrong, you end up with a broken service.
To help reduce the impact, a snapshot is taken just before restoring.
The app does check that we have enough space before attempting a restore.
@ -73,23 +73,22 @@ Forgetting makes the snapshot inaccessible from the server, but deletion itself
## Automatic Backup
If you set up an automatic backup period, all of the services will be backed up regularly according to the period.
If you set up an automatic backup period, all of the services will be backed up according to the set period.
Note that backups are independent per service. If you have services A and B backed up automatically every day in the morning, and then you back up service B manually at noon, then service A's next backup will be in the morning as usual, but B's backups will occur at noons.
If set to zero, autobackups will be disabled.
If it is disabled, automatic backups will not be performed.
## Restoring after someone has deleted all the snapshots
* Go to your Backblaze/other cloud interface directly.
* Rewind the bucket's state to prior the deletion event.
* Open SelfPrivacy app
* Invalidate snapshot cache
* List the snapshots
* Restore from snapshots as usual
* Go to your Backblaze/other cloud interface directly;
* Rewind the bucket to its previous state before the deletion event;
* Open SelfPrivacy app;
* Update the snapshot list;
* Restore from snapshots as usual.
## Troubleshooting backups
* If you suspect that the snapshot list is inaccurate, try discarding the cache
* If an inplace restore failed, make sure that your cloud is accessible and your contract is active, then try to either restore a snapshot you tried to restore, or a pre-restore snapshot generated automatically
* If you do not have enough space on the disk for a safe restore, try restoring inplace
* If you suspect that the list of snapshots is incorrect, try updating the snapshot list;
* If an inplace restore has failed, make sure that your cloud is accessible and your contract is active. Then try to restore either a snapshot that you tried to restore or a pre-restore snapshot that was automatically generated;
* If you do not have enough space on the disk for a safe restore, try restoring inplace.

View File

@ -2,14 +2,11 @@
title: "How to contribute"
linkTitle: "Contributing"
date: 2023-03-13T
weight: 2
weight: 7
description: >
You can help with translations and programming
---
# How can you help the project?
## Help us translate
We use our own [weblate instance](https://weblate.selfprivacy.org/projects/selfprivacy/selfprivacy-app/) to collaborate.
@ -47,6 +44,6 @@ If you want to improve [our site](https://selfprivacy.org):
- [Main Site + Documentation](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org)
# For any help, please contact our chats:
## For any help, please contact our chats:
- [Telegram: @selfprivacy_dev](https://t.me/selfprivacy_dev)
- [Matrix: @dev:selfprivacy.org](https/matrix.to/#/%23dev:selfprivacy.org)

View File

@ -1,15 +1,13 @@
---
title: "Frequency Asked Questions"
title: "Frequently Asked Questions"
linkTitle: "FAQ"
date: 2023-03-13T
weight: 2
weight: 8
description: >
Frequently asked questions about our project.
---
# General questions
## What are self-host services and what are their advantages?
## What are self-hosted services and what are their advantages?
When we use centralised services, such as popular social networks, we trust the admins of the resource that stores our correspondence, our photos and even the most important secrets said in a chat with close people. We allow our interests and music preferences to be analysed, receive targeted advertising based on them, and most likely participate in unnamed audience analysis programs and all sorts of surveillance.

View File

@ -1,9 +1,7 @@
---
categories: ["Tutorials"]
tags: []
title: "Getting Started"
linkTitle: "Getting Started"
weight: 1
weight: 2
description: >
How do you deploy and set up SelfPrivacy server?
aliases:

View File

@ -1,6 +1,6 @@
---
title: "How-to guides"
weight: 2
weight: 5
date: 2023-03-14
description: >
These are the guides on how to perform common tasks.

View File

@ -0,0 +1,243 @@
---
title: "How to change the DNS provider to deSEC"
linkTitle: "Changing DNS provider to deSEC"
weight: 2
date: 2023-10-21
description: >
For those who want to change their DNS provider after server installation.
---
We recommend using [deSEC](https://desec.io/) instead of [CloudFlare](https://cloudflare.com/). DeSEC is dedicated to privacy.
If you have first tied your domain to CloudFlare and now you want to change providers, this article is for you.
Attention, the process is quite complicated, and if you feel that something goes wrong, you can feel free to write us in the chat.
During this process, your services will be temporarily unavailable. Also, write down the IP address of your server, as you will not be able to access it by domain name.
## Transferring the nameserver
A nameserver is a server that translates your domain (letters) into a server IP address (numbers).
1. Register with [deSEC](https://desec.io/).
2. On [the "domains" page](https://desec.io/domains), click on the “plus” button.
{{< imgproc desec1 Fill "626x287" />}}
3. Enter your domain.
4. Copy "nameservers".
{{< imgproc desec2 Fill "626x287" />}}
Now go to the website of the domain registrar from whom you purchased the domain.
The actions will be similar for all providers, we will show using [Porkbun](https://porkbun.com/) as an example.
1. Go to your domain control panel.
2. Find there the “Authoritative nameservers” parameter.
{{< imgproc namechip1 Fill "626x287" />}}
3. Replace the current addresses with those that we copied from deSEC in the instructions earlier.
4. Save the changes.
{{< imgproc namechip3 Fill "626x287" />}}
---
## Getting the deSEC token
1. Log in [here](https://desec.io/login).
2. Go to the [Domains page](https://desec.io/domains).
3. Go to the **Token management** tab.
4. Click on the round "plus" button in the upper right corner.
{{< imgproc desec-tokenmanagment Fill "626x287" />}}
5. "**Generate New Token**" dialogue must be displayed. Enter any **Token name** you wish. Advanced settings are not required, so do not touch anything there.
6. Click on **Save**.
7. Make sure you save the token's "**secret value**" as it will only be displayed once.
{{< imgproc dncsec-copy Fill "626x287" />}}
8. Now you can safely **close** the dialogue.
---
## Migrating records
Log into both [CloudFlare](https://cloudflare.com/) and [deSEC](https://desec.io/).
### On the deSEC website
Follow [the link](https://desec.io/) in the “Domain Management” panel, click on your domain.
{{< imgproc howtodesec1 Fill "600x350" />}}
Now you can add new entries to it using the “Plus” button.
{{< imgproc howtodesec2 Fill "600x350" />}}
### On the CloudFlare website
Follow [this link](https://cloudflare.com/) and go to the settings of your domain, which is located under the "Websites" section.
Select your domain.
{{< imgproc howcloudflare2 Fill "363x442" />}}
Now go to "DNS", then "Records".
{{< imgproc howcloudflare Fill "363x442" />}}
### First record: api
Based on the example in the screenshot, transfer the parameters of your "api" record (look at the "Name" column) according to their colors.
{{< imgproc replace1 Fill "1544x755" />}}
On the left side of the screenshot is deSEC, and on the right side is Cloudflare. You need to sequentially transfer each parameter of this record.
### Second record: root
Create a new record of type "A", in the "IPv4 address" field, enter your server address, which you have already entered in the "Content" field of the previous record.
**You don't need to transfer all the records!** You have created two records, and the third one has already been created for you.
{{< imgproc replace2 Fill "1250x830" />}}
---
## Connecting to the server
To perform the following actions, you will need to connect to the server via SSH with administrator privileges. Basic understanding of the command line is recommended ;)
You can find instructions on how to connect [here](/docs/how-to-guides/root_ssh/).
After connecting to the server, enter the following command:
```
nano /etc/nixos/userdata.json
```
You are in a terminal text editor called "nano".
You are editing the file `/etc/nixos/userdata.json`, and you can use the arrow keys to navigate.
Find the following lines in the file:
```
"dns": {
"provider": "CLOUDFLARE",
"useStagingACME": false
},
```
Replace:
```"provider": "CLOUDFLARE",```
with
```"provider": "DESEC",```
Now press CTRL+X, and then key Y.
Then edit another file:
```
nano /etc/selfprivacy/secrets.json
```
Find the following:
```
"dns": {
"apiKey": "SECRET-HERE"
},
```
Remove your old token from CloudFlare and paste the copied token from deSEC.
(If CTRL+V doesn't work, try SHIFT+CTRL+V)
```"apiKey": "Your deSEC token",```
It should now look like this:
```
"dns": {
"apiKey": "Your deSEC token"
},
```
Press CTRL+X, then Y to save the file.
If the file has been saved and you have successfully exited the text editor, enter the command:
```
systemctl start sp-nixos-rebuild.service
```
It will start the rebuild of your system with new options. You may close the console now.
---
## Reconfiguring the application
You will have to reset the application config to work properly. **Don't forget to create a recovery key and save it in a safe place (password manager).**
How to reset the application:
Go to Application Settings.
{{< imgproc app1 Fill "590x1221" />}}
Press "Reset application config".
{{< imgproc app2 Fill "585x700" />}}
Now go to the "Setup Wizard" section where you configured your server when you first launched the application.
{{< imgproc app3 Fill "590x1221" />}}
Tap "I already have a SelfPrivacy server!".
(In the old version it might be called "Connect to an existing server").
{{< imgproc app4 Fill "590x1221" />}}
Next, follow the instructions in the app and enter the recovery key or code from another device where the SelfPrivacy app is installed.
After installation, you will see some problems with Domain and DNS. The application will offer you to fix them. Accept the fixes.
{{< imgproc app5 Fill "590x1221" />}}
{{< imgproc app6 Fill "590x500" />}}
**Congratulations! You have successfully changed your domain provider. We recommend you to check that all services are working correctly.**

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View File

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

View File

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -5,7 +5,6 @@ weight: 2
date: 2023-03-14
description: >
Manual cleanup might be required if you need more space on system volume.
categories: ["How-To Guides"]
---

View File

@ -5,7 +5,6 @@ weight: 1
date: 2023-03-14
description: >
If you need to manually perform some tasks, you can get root access via SSH.
categories: ["How-To Guides"]
---
To access your server's root shell you will have to generate your SSH key and add it to your server's authorized keys.

View File

@ -1,39 +0,0 @@
---
title: "Overview"
linkTitle: "Overview"
weight: 2
draft: true
description: >
Here's where your user finds out if your project is for them.
---
{{% pageinfo %}}
This is a placeholder page that shows you how to use this template site.
{{% /pageinfo %}}
The Overview is where your users find out about your project. Depending on the size of your docset, you can have a separate overview page (like this one) or put your overview contents in the Documentation landing page (like in the Docsy User Guide).
Try answering these questions for your user in this page:
## What is it?
Introduce your project, including what it does or lets you do, why you would use it, and its primary goal (and how it achieves it). This should be similar to your README description, though you can go into a little more detail here if you want.
## Why do I want it?
Help your user know if your project will help them. Useful information can include:
* **What is it good for?**: What types of problems does your project solve? What are the benefits of using it?
* **What is it not good for?**: For example, point out situations that might intuitively seem suited for your project, but aren't for some reason. Also mention known limitations, scaling issues, or anything else that might let your users know if the project is not for them.
* **What is it *not yet* good for?**: Highlight any useful features that are coming soon.
## Where should I go next?
Give your users next steps from the Overview. For example:
* [Getting Started](/docs/getting-started/): Get started with $project
* [Examples](/docs/examples/): Check out some example code!

View File

@ -1,6 +1,7 @@
---
title: "Bitwarden"
date: 2023-01-11T18:09:37+03:00
weight: 7
description: >
Your password manager
---

View File

@ -1,6 +1,7 @@
---
title: "Delta.Chat"
date: 2023-01-11T17:15:31+03:00
weight: 4
description: >
E-mail-based messenger with end-to-end encryption
---

View File

@ -1,6 +1,7 @@
---
title: "E-mail"
date: 2023-01-11T17:10:29+03:00
weight: 1
description: >
Self-hosted e-mail service
---

View File

@ -1,6 +1,7 @@
---
title: "Gitea"
date: 2023-01-11T18:09:12+03:00
weight: 3
description: >
Gitea is a self-hosted Git service
---

View File

@ -1,6 +1,7 @@
---
title: "Jitsi"
date: 2023-01-11T17:15:31+03:00
weight: 6
description: >
Video conference
---

View File

@ -1,6 +1,7 @@
---
title: "Nextcloud"
date: 2023-01-11T17:08:23+03:00
weight: 2
description: >
Swiss knife in the business of working together
---

View File

@ -1,15 +1,16 @@
---
title: "Pleroma"
date: 2023-01-11T17:17:40+03:00
weight: 5
description: >
Decentralized Social Network Server
---
Any centralized social network will have to take care of moderation, censorship,
implementing rules, reading your correspondence as it grows.
Another thing is your own social network, which can only belong to you,
your family or your team. Only a decentralized network can provide maximum privacy.
That's why we offer you to become part of the Fediverse decentralized network.
Any centralized social network will have to take care of moderation, censorship,
implementing rules, reading your correspondence as it grows.
Another thing is your own social network, which can only belong to you,
your family or your team. Only a decentralized network can provide maximum privacy.
That's why we offer you to become part of the Fediverse decentralized network.
At SelfPrivacy we use [Pleroma](https://pleroma.social/).
@ -24,4 +25,15 @@ At SelfPrivacy we use [Pleroma](https://pleroma.social/).
## Features of Pleroma
- A social network of any scale: from a personal server with a single account to a massive thematic site;
- Your social network, your rules. You are the censor, moderator and administrator.
- Your social network, your rules. You are the censor, moderator and administrator.
## Getting admin rights
Right now you can get admin rights only by using the command line.
1. Connect to your server via SSH as a `root` user. Use [this guide](/docs/how-to-guides/root_ssh/) if you need help.
2. Run the following command, replacing `<username>` with the username you want to make an admin:
```
sudo -u pleroma env RELEASE_COOKIE=/var/lib/pleroma/.cookie pleroma_ctl user set <username> --admin
```
3. Done! Now the user `<username>` has admin rights.

View File

@ -102,4 +102,4 @@ We are working to ensure that the general configuration of SelfPrivacy can be ex
All transactions take place between your application, your server, and your service providers without SelfPrivacy being involved. Your copy of SelfPrivacy App is completely autonomous and independent in managing your infrastructure. No information about your interactions with your infrastructure reaches SelfPrivacy. All backups of your services leave your server in a fully encrypted form.
You can read more about this in our [privacy policy]({{< ref "policy.md" >}}).
You can read more about this in our [privacy policy]({{< ref "/privacy-policy/" >}}).

View File

@ -1,7 +1,7 @@
---
title: "Theory"
linkTitle: "Theory"
weight: 5
weight: 1
date: 2023-05-09
description: >
Discussion of various aspects of the project

View File

@ -9,13 +9,11 @@ description: >
Yes, you could use kubernetes. But why when immutability is ensured by NixOS?
## Mobile app ##
[Flutter](https://flutter.dev/)/[Dart](https://dart.dev/) was chosen because of the speed and smoothness of the UI and cross-platform.
**User app:** [Flutter](https://flutter.dev/)/[Dart](https://dart.dev/) was chosen because of the speed and smoothness of the UI and cross-platform.
## Backend
[NixOS](https://nixos.org/) + [Python](https://www.python.org/). NixOS was chosen because of its reproducibility, python because of its versatility and popularity.
**Server side (backend):** [NixOS](https://nixos.org/) + [Python](https://www.python.org/). NixOS was chosen because of its reproducibility, python because of its versatility and popularity.
## Service providers
# Service providers
**We do not get paid by any service providers!** We are not affiliated with them in any way. We chose them purely for professional reasons. But we do not exclude partnership in the future.
### Hosting
@ -23,8 +21,6 @@ SelfPrivacy supports two hosting providers: [Hetzer](https://www.hetzner.com/) a
Both were chosen because of low price and acceptable level of service, quality REST API.
Hetzer has not been seen to have any privacy or data collection problems.
Candidates:
- Own personal iron server. **Our main priority right now**;
- A service provider that will provide an API to deploy an iron server. Outside [FVEY](https://en.wikipedia.org/wiki/Five_Eyes);
@ -34,7 +30,15 @@ Candidates:
There's also free [Oracle Cloud](https://docs.oracle.com/en-us/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm), but where you don't pay, you're usually a commodity.
### DNS
[Cloudlare](https://cloudflare.com) reliable, free. Probably collects data, otherwise it's hard to explain why proxy other people's traffic for free. In our case we use it only as a DNS-server and do not proxy anything. In the future we will replace it with self-hosted DNS, as soon as we solve the reliability problem.
There's a choice between [Cloudflare](https://cloudflare.com), [deSEC](https://desec.io/), or [DigitalOcean DNS](https://www.digitalocean.com/).
[deSEC](https://desec.io/) is a more private option and is recommended by default.
[Cloudflare](https://cloudflare.com) likely collects data in proxy traffic mode, otherwise it's hard to explain why they would offer such services for free. **In our case, we don't proxy anything and use it only as a DNS server.**
### Backup repository
[Backblaze](https://www.backblaze.com/) is free or times cheaper than AWS. Not seen in data collection. [Publishes](https://www.backblaze.com/blog/open-source-data-storage-server/) in open source the hardware it runs on. And also [shares](https://www.backblaze.com/b2/hard-drive-test-data.html) very useful statistics about disk failures, on the basis of which you can choose the most reliable and tested one. In the future, perhaps, we will replace it with a self-hosted or p2p solution. Now it is not the main priority, because the data is encrypted, and the service provider sees only the ip of your server, but not the home one.
We use [Backblaze](https://www.backblaze.com/).
The first 20GB are free and significantly cheaper than AWS. [Backblaze](https://www.backblaze.com/) publishes its hardware developments in open source. They also [shares](https://www.backblaze.com/b2/hard-drive-test-data.html) very useful statistics on disk failures, based on which one can choose the most reliable and tested option.
In the future, we might replace them with a self-hosted solution or a peer-to-peer one. **Currently, this is not a top priority since the data is encrypted, and the service provider only sees the IP address of your server, not the device with the application.**

View File

@ -2,8 +2,6 @@
title: Downloads
---
<!--add blocks of content here to add more sections to the community page -->
{{< blocks/lead >}}
<div class="row w-100 my-4">
<h1 class="mx-auto text-center w-100">Downloads</h1>
@ -12,68 +10,66 @@ title: Downloads
<p>
Get the latest version of SelfPrivacy app for your operating system.
</p>
{{< /blocks/lead >}}
{{< blocks/section color="white" type="section" >}}
<div class="row w-100">
<h1 class="mx-auto text-center w-100">Android</h1>
<div class="mx-auto row w-100">
<h1 class="text-center w-100">Android</h1>
</div>
<div class="row w-100">
<div class="mx-auto row w-100">
<div class="col-md-4">
<a class="btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="https://f-droid.org/en/packages/pro.kherel.selfprivacy/" rel="noopener noreferrer" target="_blank">
<a class="w-100 btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="https://f-droid.org/en/packages/pro.kherel.selfprivacy/" rel="noopener noreferrer" target="_blank">
F-Droid
</a>
<a class="btn btn-link w-100" href="https://fdroid.selfprivacy.org/" rel="noopener noreferrer" target="_blank">
<a class="w-100 btn btn-link w-100" href="https://fdroid.selfprivacy.org/" rel="noopener noreferrer" target="_blank">
Our F-Droid repository
</a>
</div>
<div class="col-md-4">
<a class="btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="https://git.selfprivacy.org/kherel/selfprivacy.org.app/releases/latest" rel="noopener noreferrer" target="_blank">
<a class="w-100 btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="https://git.selfprivacy.org/kherel/selfprivacy.org.app/releases/latest" rel="noopener noreferrer" target="_blank">
APK File
</a>
</div>
<div class="col-md-4">
<a class="btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="https://play.google.com/store/apps/details?id=org.selfprivacy.app" rel="noopener noreferrer" target="_blank">
<a class="w-100 btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="https://play.google.com/store/apps/details?id=org.selfprivacy.app" rel="noopener noreferrer" target="_blank">
Google Play
</a>
</div>
</div>
{{< /blocks/section >}}
{{< blocks/section color="white" type="section" >}}
<div class="row w-100">
<h1 class="mx-auto text-center w-100">iOS</h1>
<div class="mx-auto row w-100">
<h1 class="text-center w-100">iOS</h1>
</div>
<div class="row w-100">
<h4 class="mx-auto text-center w-100">Coming soon</h4>
<div class="mx-auto row w-100">
<h4 class="text-center w-100">Coming soon</h4>
</div>
{{< /blocks/section >}}
{{< blocks/section type="section" color="dark" >}}
<div class="row w-100">
<h1 class="mx-auto text-center w-100">Desktop</h1>
<div class="mx-auto row w-100">
<h1 class="text-center w-100">Desktop</h1>
</div>
<div class="row w-100">
<div class="mx-auto row w-100">
<div class="col-md-4">
<a class="btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding disabled" href="https://git.selfprivacy.org/kherel/selfprivacy.org.app/releases/latest" rel="noopener noreferrer" target="_blank">
<a class="w-100 btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="https://git.selfprivacy.org/kherel/selfprivacy.org.app/releases/latest" rel="noopener noreferrer" target="_blank">
Windows
</a>
</div>
<div class="col-md-4">
<a class="btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="https://git.selfprivacy.org/kherel/selfprivacy.org.app/releases/latest" rel="noopener noreferrer" target="_blank">
<a class="w-100 btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="https://git.selfprivacy.org/kherel/selfprivacy.org.app/releases/latest" rel="noopener noreferrer" target="_blank">
GNU/Linux
</a>
</div>
<div class="col-md-4">
<a class="btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding disabled" href="https://git.selfprivacy.org/kherel/selfprivacy.org.app/releases/latest" rel="noopener noreferrer" target="_blank">
<a class="w-100 btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding disabled" href="https://git.selfprivacy.org/kherel/selfprivacy.org.app/releases/latest" rel="noopener noreferrer" target="_blank">
MacOS
</a>
</div>
@ -84,7 +80,7 @@ title: Downloads
{{< blocks/section type="section" >}}
{{< landing-feature book "What to do next?" "right" >}}
<a class="btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="{{< relref "/docs/Getting started/" >}}">
<a class="w-100 btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding" href="{{< relref "/docs/Getting started/" >}}">
Setup guide
</a>
{{< /landing-feature >}}

View File

@ -1,13 +1,7 @@
---
title: "Privacy Policy"
date: 2023-05-15
weight: 4
---
{{< blocks/section color="white" type="section" >}}
# Privacy policy
type: "docs"
---
**Last updated: May 15, 2023**
@ -60,6 +54,4 @@ If you have any questions or concerns about our Privacy Policy or the collection
*We are pleased to offer this Privacy Policy under Creative Commons Zero license as a template that can be used by anyone in the open-source community. We hope that this contribution will help to support the development of privacy policies that promote transparency, accountability, and respect for the privacy of individuals. As part of our commitment to open-source values, we believe in sharing knowledge and resources to foster innovation and collaboration. Therefore, we encourage others to adapt and modify our privacy policy to meet their specific needs, while ensuring that they comply with applicable laws and regulations.*
![Licensed under CC0](/images/icons/cc-zero.svg)
{{< /blocks/section >}}
![Licensed under CC0](/images/icons/cc-zero.svg)

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@ -5,54 +5,60 @@ linkTitle = "SelfPrivacy"
+++
{{< blocks/section color="dark" type="section">}}
<div class="row">
<div class="flex-md-row flex-column-reverse d-flex justify-content-center align-content-center">
<div class="col-xs-12 col-md-4">
<div class="container rounded">
<div id="screenshotsCarouselControls" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#screenshotsCarouselControls" data-slide-to="0"></li>
<li data-target="#screenshotsCarouselControls" data-slide-to="1"></li>
<li data-target="#screenshotsCarouselControls" data-slide-to="2" class="active"></li>
<li data-target="#screenshotsCarouselControls" data-slide-to="3"></li>
<li data-target="#screenshotsCarouselControls" data-slide-to="4"></li>
</ol>
<div id="screenshotsCarouselControls" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner rounded">
<div class="carousel-item">
<img class="d-block w-100" src="/images/screenshots/1-en.png" alt="First slide">
<img class="d-block w-100" src="/images/screenshots/1-ru.png" alt="Первый слайд">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="/images/screenshots/2-en.png" alt="Second slide">
<img class="d-block w-100" src="/images/screenshots/2-ru.png" alt="Второй слайд">
</div>
<div class="carousel-item active">
<img class="d-block w-100" src="/images/screenshots/3-en.png" alt="Third slide">
<img class="d-block w-100" src="/images/screenshots/3-ru.png" alt="Третий слайд">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="/images/screenshots/4-en.png" alt="Third slide">
<img class="d-block w-100" src="/images/screenshots/4-ru.png" alt="Четвёртый слайд">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="/images/screenshots/5-en.png" alt="Third slide">
<img class="d-block w-100" src="/images/screenshots/5-ru.png" alt="Пятый слайд">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="/images/screenshots/6-ru.png" alt="Шестой слайд">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="/images/screenshots/7-ru.png" alt="Седьмой слайд">
</div>
</div>
<a class="carousel-control-prev" href="#screenshotsCarouselControls" role="button"
data-slide="prev">
<ol class="carousel-indicators">
<li data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="0" class="active"></li>
<li data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="1"></li>
<li data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="2"></li>
<li data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="3"></li>
<li data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="4"></li>
<li data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="5"></li>
<li data-bs-target="#screenshotsCarouselControls" data-bs-slide-to="6"></li>
</ol>
<button class="carousel-control-prev" type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#screenshotsCarouselControls" role="button"
data-slide="next">
<span class="visually-hidden">Назад</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
<span class="visually-hidden">Далее</span>
</button>
</div>
</div>
</div>
<div class="col-xs-12 col-md-8 my-auto">
<div class="col-xs-12 col-md-8 col-lg-6 my-auto">
<div class="container my-4">
<h1>
Приложение SelfPrivacy поможет настроить селфхост-сервисы и управлять ими
</h1>
<a class="btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding"
href="{{< relref " /download">}}">
href="{{< relref "/download" >}}">
Скачать
</a>
</div>
@ -60,12 +66,12 @@ linkTitle = "SelfPrivacy"
</div>
{{< /blocks/section>}}
{{< blocks/section color="100" type="section">}}
<div class="row w-100">
<h2 class="mx-auto text-center">Ваши личные сервисы</h2>
<section class="container">
<div class="w-100">
<h2 class="mx-auto text-center font-weight-bolder">Ваши личные сервисы</h2>
</div>
<div class="row w-100 mt-5 mb-3">
<div class="w-100 mt-5 mb-3">
<h3 class="mx-auto text-center">Для серьезных дел</h3>
</div>
@ -90,7 +96,7 @@ linkTitle = "SelfPrivacy"
</div>
</div>
<div class="row w-100 mt-5 mb-3">
<div class="w-100 mt-5 mb-3">
<h3 class="mx-auto text-center">Для развлечений и общения</h3>
</div>
@ -98,38 +104,36 @@ linkTitle = "SelfPrivacy"
<div class="col-md-4 col-xs-12 sp-services-row">
{{< landing-service "/images/services/deltachat.svg" "Мессенджер" >}}
<p class="card-text">Самый приватный мессенджер — это тот, у которого серверная часть находится
под вашим контролем. Это делает DeltaChat
приватнее Telegram и Signal.</p>
{{< /landing-service>}}
под вашим контролем. Это делает DeltaChat
приватнее Telegram и Signal.</p>
{{< /landing-service>}}
</div>
<div class="col-md-4 col-xs-12 sp-services-row">
{{< landing-service "/images/services/pleroma.svg" "Децентрализованная социальная сеть" >}}
<p class="card-text">Pleroma — социальная сеть в которой вы решаете, кого заблокировать и что
публиковать. Никакой больше рекламы и слежки.</p>
{{< /landing-service>}}
публиковать. Никакой больше рекламы и слежки.</p>
{{< /landing-service>}}
</div>
<div class="col-md-4 col-xs-12 sp-services-row">
{{< landing-service "/images/services/jitsi.svg" "Видеоконференция">}}
<p class="card-text">Zoom и Google-meet больше не нужны, когда есть Jitsi-meet. Очень простое и
удобное решение для видеоконференций.</p>
{{< /landing-service>}}
удобное решение для видеоконференций.</p>
{{< /landing-service>}}
</div>
</div>
<div class="row w-100 mt-5 mb-3">
<div class="w-100 mt-5 mb-3">
<h3 class="mx-auto text-center">Для хорошей жизни</h3>
</div>
<div class="row justify-content-md-center">
<div class="col-md-4 col-xs-12 sp-services-row">
{{< landing-service "/images/services/openconnect.svg" "VPN для друзей и близких" >}}
<p class=" card-text">Ни один публичный VPN не может быть приватным, если только он не расположен на вашем сервере.
OpenConnect — подключайте
неограниченное количество устройств.</p>
{{< /landing-service>}}
<p class=" card-text">Ни один публичный VPN не может быть приватным, если только он не расположен на вашем сервере. OpenConnect — подключайте неограниченное количество устройств.</p>
{{< /landing-service>}}
</div>
<div class="col-md-4 col-xs-12 sp-services-row">
@ -137,73 +141,70 @@ linkTitle = "SelfPrivacy"
<p class="card-text">Пароли больше не нужно запоминать, копировать между устройствами,
придумывать или вводить вручную.</p>
<p class="card-text">Bitwarden — надежный менеджер паролей для всех устройств.</p>
{{< /landing-service>}}
{{< /landing-service>}}
</div>
</div>
{{< /blocks/section>}}
</section>
{{< blocks/section color="100" type="section">}}
<div class="row w-100">
<section class="container-fluid">
<div class="w-100">
<h2 class="mx-auto text-center">Преимущества</h2>
</div>
{{< landing-feature privacy "Приватность">}}
{{< landing-feature privacy "Приватность" "-green">}}
<p class="card-text">Без регистрации, куков, телеметрии, логов, гугл аналитики и облаков.</p>
{{< /landing-feature>}}
{{< landing-feature zerotrust "Нулевое доверие" "right">}}
{{< landing-feature zerotrust "Нулевое доверие" "-blue" "right">}}
<p class="card-text">SelfPrivacy разработан по принципу "нулевого доверия", даже к самим разработчикам SelfPrivacy. Это значит, что вы — единственный владелец своих данных.</p>
{{< /landing-feature>}}
{{< landing-feature security "Безопасность">}}
{{< landing-feature security "Безопасность" "-purple" >}}
<p class="card-text">Открытый код. Вознаграждение $2000 за RCE-уязвимость значительно повышает безопасность в сравнении с обычными self-hosted решениями.</p>
{{< /landing-feature>}}
{{< landing-feature simplicity "Простота" "right">}}
{{< landing-feature simplicity "Простота" "-green" "right">}}
<p class="card-text">Это работает просто. Без консоли, сложных инструкций, мониторинга и привлечения специалистов.</p>
{{< /landing-feature>}}
{{< landing-feature arrow "Без лицензионных соглашений">}}
{{< landing-feature arrow "Без лицензионных соглашений" "-blue" >}}
<p class="card-text">Что написано в лицензионных соглашениях, которые вы принимаете, не читая? Там написано, что с вашими данными можно делать что угодно. В SelfPrivacy нет лицензионных соглашений.</p>
{{< /landing-feature>}}
{{< landing-feature coolhack3r "Экономия времени, денег и сил" "right">}}
{{< landing-feature coolhack3r "Экономия времени, денег и сил" "-purple" "right">}}
<p class="card-text">Как сэкономить $500 или две недели жизни? Столько понадобится времени и денег специалисту, чтобы настроить все самому с нуля?</p>
<p class="card-text">Команда SelfPrivacy непрерывно работает, чтобы ускорить и упростить этот процесс до нескольких кликов.</p>
<p class="card-text">Теперь создание личного дата-центра под силу любому желающему.</p>
{{< /landing-feature>}}
{{< landing-feature thisisfine "Функционал">}}
{{< landing-feature thisisfine "Функционал" "-green">}}
<p class="card-text">Ваши данные никуда не пропадут благодаря регулярному автоматическому резервному копированию в отдельный дата-центр.</p>
{{< /landing-feature>}}
{{< landing-feature smartphonecomparison "Независимость" "right" >}}
{{< landing-feature smartphonecomparison "Независимость" "-blue" "right" >}}
<p class="card-text">Ваши коммуникации в интернете не зависят от Google, Facebook, Amazon и прочих мегакорпораций.</p>
<p class="card-text">Ваши сервисы — ваши правила! Вас не заблокируют, не отключат, случайно или по какой-либо другой причине. Ваша инфраструктура и данные всегда останутся с вами.</p>
{{< /landing-feature>}}
{{< landing-feature datactrl "Контроль данных">}}
{{< landing-feature datactrl "Контроль данных" "-purple" >}}
<p class="card-text">Почему корпорациям так нужны ваши данные? Чтобы больше покупали, чтобы Вы голосовали, как им нужно. В SelfPrivacy ваши данные остаются только у вас.</p>
{{< /landing-feature>}}
{{< /blocks/section>}}
</section>
{{< blocks/section color="100" type="section" >}}
<div class="row w-100">
<section class="container-fluid">
<div class="w-100">
<h2 class="mx-auto text-center">Нас поддерживают</h2>
</div>
<div class="card sp-supported-by-card h-100">
<div class="card-body sp-supported-by-list">
<div class="container-fluid">
<div class="sp-supported-by-list">
<a href="https://nlnet.nl/project/SelfPrivacy/" target="_blank" rel="noopener noreferrer">
<img class="sp-supperted-by-img" src="/images/logos/nlnet.svg" alt="NLnet foundation">
<img class="sp-supported-by-img" src="/images/logos/nlnet.svg" alt="NLnet foundation">
</a>
<a href="https://privacyaccelerator.org" target="_blank" rel="noopener noreferrer">
<img class="sp-supperted-by-img" src="/images/logos/PrivacyAcceleratorLogo.svg" alt="Privacy Accelerator">
<img class="sp-supported-by-img" src="/images/logos/PrivacyAcceleratorLogo.svg" alt="Privacy Accelerator">
</a>
</div>
</div>
{{< /blocks/section >}}
</section>

View File

@ -1,6 +1,6 @@
---
title: "SelfPrivacy Blog"
linkTitle: "Blog"
title: "Блог SelfPrivacy"
linkTitle: "Блог"
menu:
main:
weight: 30
@ -10,4 +10,3 @@ menu:
This is the **blog** section. It has two categories: News and Releases.
Files in these directories will be listed in reverse chronological order.

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 148 KiB

View File

@ -1,8 +1,8 @@
---
title: "О нас"
linkTitle: "О нас"
weight: 4
weight: 5
date: 2022-01-09
description: >
Кто мы такие, в чем наша мотивая и какова наша политика
Кто мы такие, в чем наша мотивация и какова наша политика
---

View File

@ -1,7 +1,7 @@
---
title: "Команда"
date: 2017-01-05T
weight: 3
weight: 1
description: >
Наша команда, вкладчики и единомышленники.
---

View File

@ -2,7 +2,7 @@
title: "Резервное копирование"
linkTitle: "Резервное копирование"
date: 2023-07-31T
weight: 2
weight: 3
description: >
Резервное копирование сервисов, чтобы данные никогда не были потеряны
---
@ -86,7 +86,6 @@ SelfPrivacy не создает резервных копий всей маши
* Откатите состояние ведра до состояния, предшествовавшего удалению;
* Откройте приложение SelfPrivacy;
* Обновите список копий;
* Откройте снимки;
* Восстановите моментальный снимок обычным способом.
## Устранение неполадок при резервном копировании

View File

@ -2,7 +2,7 @@
title: "Как помочь проекту?"
linkTitle: "Как помочь проекту"
date: 2023-03-13
weight: 2
weight: 6
description: >
Вы можете помочь как с переводом на разные языки, так и своими знаниями программирования
---

View File

@ -2,7 +2,7 @@
title: "Часто задаваемые вопросы"
linkTitle: "ЧаВо"
date: 2023-03-13T
weight: 2
weight: 7
description: >
Частые вопросы о проекте
---

View File

@ -1,9 +1,7 @@
---
categories: ["Tutorials"]
tags: []
title: "Начало работы"
linkTitle: "Начало работы"
weight: 1
weight: 2
description: >
Как установить и настроить сервер SelfPrivacy?
---
@ -11,13 +9,13 @@ description: >
Сервер SelfPrivacy создается поэтапно в течение часа.
Звучит страшно, но уверяю, учёная степень не понадобится. Процесс не сложнее покупки в интернет-магазине.
* Поиск паспорта и карты с балансом $10-15 и $5 в месяц
* Регистрация учётных записей
* Покупка домена
* Подключение домена к DNS серверу
* Создание токенов
* Установка
* Подключение к сервисам
* Поиск паспорта и карты с балансом $10-15 и $5 в месяц
* Регистрация учётных записей
* Покупка домена
* Подключение домена к DNS серверу
* Создание токенов
* Установка
* Подключение к сервисам
**Если поручите кому-нибудь эту задачу — лишитесь приватности.**
Для 100% независимости и контроля необходимо делать всё самостоятельно.
@ -39,18 +37,19 @@ description: >
```}Rj;EtG:,M!bc4/|```
Как такой пароль запомнить? Никак!
Пароли не нужно запоминать, их надо создавать и хранить в [менеджере паролей](https://keepassxc.org/download/).
Пароли не нужно запоминать, их надо создавать и хранить в менеджере паролей, например [KeePassXC](https://keepassxc.org/download/).
Хотя один помнить придётся — пароль от менеджера паролей.
{{% /alert %}}
### Регистрируемся:
* [Hetzner](https://www.hetzner.com) или [DigitalOcean](https://www.digitalocean.com) — хостинги виртуальных серверов.
### Регистрируемся
* [Hetzner](https://www.hetzner.com) или [DigitalOcean](https://www.digitalocean.com) — хостинги виртуальных серверов.
Какой выберете, в том и будут жить ваши данные и сервисы SelfPrivacy.
* [NameCheap](https://www.namecheap.com/), [Porkbun](https://porkbun.com) или любой другой регистратор,
* Любой регистратор доменов, к примеру [Porkbun](https://porkbun.com) (можно оплачивать криптовалютой) .
* для покупки личного адреса в интернете — домена, который будет указывать на сервер.
* [deSEC](https://desec.io/) или [CloudFlare](https://cloudflare.com) (не рекомендуем) — DNS сервер, где работает ваш домен.
* [Backblaze](https://www.backblaze.com/) — IaaS провайдер, для хранения резервных копий ваших данных
* На выбор: [deSEC](https://desec.io/), [DigitalOcean DNS](https://docs.digitalocean.com/products/networking/dns/), [CloudFlare](https://cloudflare.com) (не рекомендуем) — DNS сервер, где работает ваш домен.
* [Backblaze](https://www.backblaze.com/) — IaaS провайдер, для хранения резервных копий ваших данных
в зашифрованном виде.
Регистрация заурядна, но иногда проверка учётной записи длится несколько дней или требует дополнительных документов.
@ -67,67 +66,143 @@ description: >
Включили второй фактор? Я серьёзно! Тогда переходим к интересному!
**_Домен_ — это кусочек интернета, которому вы даёте имя.**
Простор для творчества огромен, у вас есть 63 символа + .com .org .icu и еще несколько сотен доменов после точки.
Можно выбрать просто по фамилии, например *ivanov.live* или *ivanov.health*,
а можно и что-то творческое — *shit-happens.shop*
### Рекомендации:
* **Обязательно смотреть на цену ежегодного продления,** она может в разы превышать стоимость покупки.
* **Нормальная цена домена $8-10 в год.**
* **При регистрации домена обязательно указывать реальные почту и телефон, иначе регистрацию могут аннулировать.** И если вы не сможете продлить домен, система не будет работать так, как задумано.
* Выбирайте хорошее имя, которое удобно и по телефону диктовать, и на деловой визитке указать.
* **Я уже говорил про второй фактор?**
Заходим на ваш регистратор домена. В качестве примера будем использовать [Porkbun](https://porkbun.com).
Выбираем домен. Можно выбрать просто по фамилии, например _ivanov.live_ или _ivanov.health_, а можно и что-то творческое — *shit-happens.shop*
### Рекомендации
* **Обязательно смотреть на цену ежегодного продления,** она может в разы превышать стоимость покупки.
* **Нормальная цена домена $8-10 в год.**
* **При регистрации домена обязательно указывать реальные почту и телефон, иначе регистрацию могут аннулировать.** И если вы не сможете продлить домен, система не будет работать так, как задумано.
* Выбирайте хорошее имя, которое удобно и по телефону диктовать, и на деловой визитке указать.
* **Я уже говорил про второй фактор?**
## Подключение домена к DNS серверу
После покупки, домен добавляем в CloudFlare:
{{< tabpane text=true >}}
{{% tab "deSEC" %}}
![gif](/images/screencasts/add-domain-to-cf.gif)
### Если вы выбрали deSEC: Как добавить домен
На примере домена ruleit.stream мы выбрали бесплатный тариф и получили имена серверов: **gail.ns.cloudflare.com**
и **mattns.cloudflare.com**, которые надо прописать у своего регистратора. В нашем случае NameCheap:
1. Переходим по [ссылке](https://desec.io/domains), входим в аккаунт.
2. Нажимаем на **плюс**.
![gif](/images/screencasts/nc-to-cf.gif)
{{< imgproc dns_add_domain Fill "626x287" />}}
3. Вводим ваш домен. Нажимаем **Save**.
4. Копируем имена полученные в поле **Nameservers**.
{{< imgproc dns_add_domain2 Fill "626x287" />}}
На примере домена cat-meowmeow.corp мы получили имена серверов: **ns1.desec.io**
и **ns2.desec.org**. Имена серверов у вас могут отличаться.
{{% /tab %}}
{{% tab "Cloudflare" %}}
### Если вы выбрали Cloudflare: Как добавить домен
1. Переходим по [ссылке](https://dash.cloudflare.com), входим в аккаунт.
2. Слева в меню нажимаем **Websites**, далее синюю кнопку **Get started**.
{{< imgproc dns_add_domain_cloudflare Fill "626x287" />}}
1. Выбираем бесплатный тариф **Free**, нажимаем **Continue**.
{{< imgproc dns_add_domain_cloudflare2 Fill "626x287" />}}
1. На вкладке **Review DNS records** ничего не меняем. Нажимаем **Continue**.
{{< imgproc dns_add_domain_cloudflare3 Fill "626x287" />}}
1. В пункте 3, копируем имена **nameservers**. После нажимаем **Continue**.
{{< imgproc dns_add_domain_cloudflare4 Fill "626x287" />}}
1. Финальная страница, нажимаем **Finish later**.
{{< imgproc dns_add_domain_cloudflare5 Fill "626x287" />}}
Только что мы выбрали бесплатный тариф и получили имена серверов: **alberto.ns.cloudflare.com**
и **michelle.ns.cloudflare.com**. У вас имена серверов могут отличаться.
{{% /tab %}}
{{% tab "DigitalOcean DNS" %}}
### Если вы выбрали DigitalOcean DNS: Как добавить домен
Если вы планируете использовать DigitalOcean и для сервера, и для DNS (что мы не рекомендуем),
то вам **необходимо будет создать отдельный проект для DNS записей**.
DigitalOcean предоставляет только токены которые дают полный доступ ко всему в проекте.
Токен для сервера остаётся на вашем устройстве, однако токен для DNS записей будет отправлен на ваш новый сервер.
Если токен для DNS будет иметь доступ к самому серверу, в случае его взлома, злоумышленник сможет уничтожить сам сервер.
1. Создайте новый проект, перейдите в управление новым проектом.
2. Нажимаем сверху на кнопку **Create**, выбираем **Domain/DNS**.
{{< imgproc do Fill "626x287" />}}
3. Вводим имя своего домена, выбираем проект созданный под управление доменом.
{{< imgproc do2 Fill "626x287" />}}
4. Нажимаем **Add Domain**.
Получаем имена серверов, которые понадобятся нам на следующем этапе.
{{% /tab %}}
{{< /tabpane >}}
## Используем полученные имена у своего регистратора
DigitalOcean имеет [хорошую инструкцию](https://docs.digitalocean.com/products/networking/dns/getting-started/dns-registrars/#instructions) для многих популярных регистраторов. Даже если вы не используете DigitalOcean в качестве DNS, эта инструкция может вам помочь!
Далее инструкция для [Porkbun](https://porkbun.com), но вы можете использовать свой регистратор домена, действия должны быть примерно схожи.
1. Переходим в панель управления доменами.
{{< imgproc porkbun Fill "626x287" />}}
2. Наводимся мышкой на купленный домен, нажимаем **DNS**.
{{< imgproc porkbun2 Fill "626x287" />}}
3. В панели управления доменом находим параметр **Authoritative nameservers**.
{{< imgproc porkbun3 Fill "626x287" />}}
4. Нажимаем **Edit**.
5. Заносим туда имена серверов, которые получили на предудущем этапе.
Заодно проверяем, что у нас включено автопродление и защита персональных данных — WhoisGuard.
Через несколько минут или, в худшем случае, до двух суток настройки применятся.
## Создание токенов
**_API ключи_ — это почти то же самое, что и логин с паролем, только для программы, а не человека.**
Мобильное приложение SelfPrivacy с их помощью управляет сервисами во всех учётных записях вместо вас. Удобно!
Нам не нужен токен для регистратора домена. Но нам понадобится токен DNS провайдера, чтобы управлять доменомом.
SelfPrivacy поддерживает двух провайдеров на выбор: популярный [Cloudflare](https://www.cloudflare.com/) и нацеленный на приватность [deSEC](https://desec.io/).
Нам не нужен токен для регистратора домена. Но нам понадобится токен DNS провайдера, чтобы управлять доменом.
{{< tabpane text=true >}}
{{% tab "deSEC" %}}
### Если вы выбрали deSEC: Как получить токен
1. Авторизуемся в [deSEC](https://desec.io/login)
2. Переходим на страницу [Domains](https://desec.io/domains)
3. Переходим на вкладку **Token management**.
4. Нажимаем на большую кнопку с "плюсом" в правом верхнем углу страницы.
{{< imgproc desec-tokenmanagment Fill "626x287" />}}
{{< imgproc desec_token Fill "626x287" />}}
5. Должен был появиться "**Generate New Token**" диалог. Вводим любое имя токена в **Token name**.
5. Должен был появиться "**Generate New Token**" диалог. Вводим любое имя токена в **Token name**.
*Advanced settings* необязательны, так что ничего там не трогаем.
6. Кликаем **Save**.
7. Обязательно сохраняем "**secret value**" ключ токена, потому что он отображается исключительно один раз.
{{< imgproc dncsec-copy Fill "626x287" />}}
{{< imgproc desec_token2 Fill "626x287" />}}
8. Теперь спокойно закрываем диалог, нажав **close**.
@ -139,14 +214,12 @@ SelfPrivacy поддерживает двух провайдеров на выб
{{< video src="Cloudflare" muted="true" autoplay="true" autoplay="true" loop="true" >}}
1. Переходим по [ссылке](https://dash.cloudflare.com/) и авторизуемся в ранее созданном аккаунте.
1. Переходим по [ссылке](https://dash.cloudflare.com/) и авторизуемся в ранее созданном аккаунте.
2. В правом верхнем углу кликаем на иконку профиля (для мобильной версии сайта: в верхнем левом углу нажимаем
кнопку **Меню** с тремя горизонтальными полосками). В выпавшем меню кликаем на пункт **My Profile**.
{{< imgproc cloudflare-my-profile Fill "626x287" />}}
{{< imgproc cl_token Fill "626x287" />}}
3. Нам предлагается на выбор, четыре категории настройки: **Preferences**, **Authentication**, **API Tokens**,
**Sessions**. Выбираем **API Tokens**.
@ -167,61 +240,84 @@ SelfPrivacy поддерживает двух провайдеров на выб
в первом поле выбираем **Zone**, во-втором тоже **Zone**. А уже в третьем нажимаем на **Read**.
Давайте сверим с тем, что у вас получилось:
{{< imgproc cloudflare-permissions Fill "628x203" />}}
{{< imgproc cl_token2 Fill "626x287" />}}
Ваш выбор должен выглядеть так.
8. Далее смотрим на **Zone Resources**. Под этой надписью есть строка с двумя полями.
9. Далее смотрим на **Zone Resources**. Под этой надписью есть строка с двумя полями.
В первом должно быть **Include**, а во втором — **Specific Zone**. Как только Вы выберите **Specific Zone**,
справа появится ещё одно поле. В нём выбираем наш домен.
9. Листаем в самый низ и нажимаем на синюю кнопку **Continue to Summary**.
10. Листаем в самый низ и нажимаем на синюю кнопку **Continue to Summary**.
10. Проверяем, всё ли мы правильно выбрали. Должна присутствовать подобная строка: ваш.домен — **DNS:Edit, Zone:Read**.
11. Проверяем, всё ли мы правильно выбрали. Должна присутствовать подобная строка: ваш.домен — **DNS:Edit, Zone:Read**.
11. Нажимаем **Create Token**.
12. Нажимаем **Create Token**.
12. Копируем созданный токен.
13. Копируем созданный токен.
{{% /tab %}}
{{% tab "DigitalOcean DNS" %}}
### Если вы выбрали DigitalOcean DNS: Как получить токен
Инструкция по получению токена для DigitalOcean DNS будет аналогичной той, что используется для хостинг-серверов DigitalOcean. Однако для управления DNS вам необходимо было создать отдельный проект. В меню выбора проекта будьте внимательны, чтобы не перепутать. Токены от разных проектов не должны совпадать.
{{< video src="do" muted="true" autoplay="true" loop="true" >}}
1. Перейдите по [ссылке](https://cloud.digitalocean.com/account/) и войдите в ранее созданный аккаунт.
2. В левом меню перейдите на страницу **API** - последний пункт в самом низу.
3. Нажмите **Generate New Token** в меню **Personal Access Tokens**.
4. **Копируем токен**.
{{% /tab %}}
{{< /tabpane >}}
### Как получить токен для провайдера сервера
{{< alert title="Не держите яйца в одной корзине" color="warning" >}}
Если вы планируете использовать DigitalOcean и для сервера, и для DNS (что мы не рекомендуем),
то вам **необходимо будет создать отдельный проект для DNS записей**.
DigitalOcean предоставляет только токены которые дают полный доступ ко всему в проекте.
Токен для сервера остаётся на вашем устройстве, однако токен для DNS записей будет отправлен на ваш новый сервер.
Если токен для DNS будет иметь доступ к самому серверу, в случае его взлома, злоумышленник сможет уничтожить сам сервер.
{{< /alert >}}
{{< tabpane text=true >}}
{{% tab "Hetzner" %}}
![gif](/images/screencasts/Hetzner.gif)
### Если вы выбрали Hetzner
1. Переходим по [ссылке](https://console.hetzner.cloud/) и авторизуемся в ранее созданном аккаунте.
2. Заходим в созданный нами проект. Если такового нет — значит создаём.
3. *Наводим мышкой на боковую панель.* Она должна раскрыться, показав нам пункты меню. Нас интересует последний — **Security** (с иконкой ключика).
3. _Наводим мышкой на боковую панель._ Она должна раскрыться, показав нам пункты меню. Нас интересует последний — **Security** (с иконкой ключика).
{{< imgproc hetzner Fill "626x287" />}}
4. Далее, в верхней части интерфейса видим примерно такой список: **SSH KEYS, API TOKENS, CERTIFICATES, MEMBERS.** Нам нужен **API TOKENS**. Переходим по нему.
5. По середине в интерфейсе, нас будет ожидать кнопка **GENERATE API TOKEN**. Нажимаем на эту кнопку.
{{< imgproc hetzner2 Fill "626x287" />}}
6. В поле **Description** даём нашему токену название (это может быть любое название, которое Вам нравится, сути оно не меняет).
7. Под полем **Description** видим возможность выбрать разрешения **PERMISSIONS**. Выбираем **Read & Write**.
8. Нажимаем **GENERATE API TOKEN**.
9. После этого, появиться окно с вашим токеном.
9. После этого, появиться окно с вашим токеном, сохраняем его.
{{< imgproc hetzner3 Fill "626x287" />}}
{{% /tab %}}
{{% tab "DigitalOcean" %}}
### Если вы выбралои DigitalOcean
Для вашей безопасности: если вы использовали DigitalOcean в качестве DNS, вам нужно создать отдельный проект.
{{< video src="do" muted="true" autoplay="true" autoplay="true" loop="true" >}}
1. Перейдите по [ссылке](https://cloud.digitalocean.com/account/) и войдите в ранее созданный аккаунт.
@ -236,7 +332,6 @@ DigitalOcean предоставляет только токены которые
{{< /tabpane >}}
## Как получить токен Backblaze
{{< video src="Backblaze" muted="true" autoplay="true" autoplay="true" loop="true" >}}
@ -249,8 +344,36 @@ DigitalOcean предоставляет только токены которые
4. Во всплывающем окне подтверждаем генерацию
5. Копируем **keyID** и **applicationKey**
5. Копируем **keyID** и **applicationKey**
---
🎉 Поздравляю! Теперь вы готовы использовать приватные сервисы. Не забудьте сохранить токены в безопасном месте.
## Откроем приложение
Заходим в мастер установки. Пора использовать токены, что мы получали ранее.
Приложение предложит вам выбрать местоположение и характеристики сервера. Рекомендуем выбирать сервер, находящийся ближе к вашей текущей локации.
Если у вас около 5 пользователей, минимального сервера по характеристикам будет достаточно.
Приложение предложит создать мастер-аккаунт, который будет выступать в роли администратора. Сохраните пароль от аккаунта в менеджере паролей, например [KeePassXC](https://keepassxc.org/download/).
В финале нажимаем "Создать сервер", процесс может занять до 30 минут.
Если что-то пошло не так, обращайтесь в [чаты поддержки]({{< relref "/docs/FAQ/_index.md#как-получить-помощь" >}}).
---
🎉 Поздравляю! Теперь вы готовы использовать приватные сервисы.
---
### После установки, рекомендуем вам создать ключ восстановления сервера
Если с вашим устройством что-то произойдет, благодаря ключу восстановления, вы сможете безболезненно подключиться к старому серверу.
Перейдите в пункт меню "Ещё", затем "Ключ восстановления". Нажмите "Сгенерировать ключ".
Вы увидите список слов — это и будет ваш ключ. Сохраните его в менеджере паролей, например [KeePassXC](https://keepassxc.org/download/).
В целях безопасности приложение не позволяет скопировать ключ.
**Помните, обладая данным ключом, злоумышленник имеет полный доступ к вашему серверу.**

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Some files were not shown because too many files have changed in this diff Show More