Compare commits

..

No commits in common. "master" and "release-0-9-0" have entirely different histories.

214 changed files with 2087 additions and 2252 deletions

4
.gitmodules vendored Normal file
View File

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

BIN
assets/images/1-en.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

BIN
assets/images/1-ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

BIN
assets/images/2-en.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
assets/images/2-ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
assets/images/3-en.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
assets/images/3-ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

BIN
assets/images/4-en.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
assets/images/4-ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
assets/images/5-en.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
assets/images/5-ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

2
assets/images/svgs/arrow.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 57 KiB

2
assets/images/svgs/book.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 68 KiB

2
assets/images/svgs/cool.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 165 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 285 KiB

2
assets/images/svgs/privacy.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 328 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 282 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 50 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 91 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 136 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,36 +1,33 @@
@import "docsy_overrides";
.sp-footer h2,
.sp-footer h3,
.sp-footer a.nav-link {
padding: 0.3rem 1rem !important;
.td-navbar {
background: $dark;
min-height: 5rem;
.navbar-brand__name {
display: none;
}
.nav-link {
font-weight: 600;
}
}
.sp-footer a.nav-link:hover {
background-color: #61616144;
transition: background-color 0.2s ease-in-out;
border-radius: .3rem;
@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;
}
}
.sp-footer a.nav-link span {
width: 2rem;
display: inline-flex;
align-items: center;
border-radius: .1rem;
padding: .5rem;
}
.sp-footer span i {
margin: auto;
}
.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;
}
@ -38,6 +35,7 @@
.sp-button-big-padding {
padding-bottom: 1rem;
padding-top: 0.8rem;
font-weight: 600;
}
.sp-feature-title {
@ -49,51 +47,31 @@
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: white;
background: #FFFFFF;
box-shadow: 0 8px 8px rgba(0, 0, 0, 0.25);
border-radius: 10px;
border: none;
@ -103,92 +81,26 @@
margin-top: 6rem;
}
.sp-supported-by-img {
pointer-events: none;
.tab-content .tab-pane {
max-width: 100% !important;
}
.sp-supperted-by-img {
max-height: 5rem;
margin: 1rem;
width: 10rem;
}
.sp-supported-by-list {
display: flex;
align-items: center;
justify-content: center;
column-gap: 5vw;
justify-content: space-around;
flex-wrap: wrap;
margin-top: 2rem;
}
a.nav-link.sp-coming-soon {
pointer-events: none;
cursor: default;
color: $gray;
&::after {
content: "Coming soon!";
display: inline-block;
background-color: $gray;
color: $dark;
margin-left: .5rem;
padding: .1rem .5rem;
border-radius: .1rem;
}
.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;
}
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,11 +6,7 @@ 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

@ -1,200 +0,0 @@
.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,6 +16,22 @@ 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
@ -77,6 +93,7 @@ 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,12 +5,19 @@ linkTitle = "SelfPrivacy"
+++
{{< blocks/section color="dark" type="section" >}}
<div class="flex-md-row flex-column-reverse d-flex justify-content-center align-content-center">
<div class="row">
<div class="col-xs-12 col-md-4">
<div class="container rounded">
<div id="screenshotsCarouselControls" class="carousel slide" data-bs-ride="carousel">
<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 class="carousel-inner rounded">
<div class="carousel-item active">
<div class="carousel-item">
<img class="d-block w-100" src="/images/screenshots/1-en.png" alt="First slide">
</div>
<div class="carousel-item">
@ -20,42 +27,27 @@ 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="Fourth slide">
<img class="d-block w-100" src="/images/screenshots/4-en.png" alt="Third slide">
</div>
<div class="carousel-item">
<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">
<img class="d-block w-100" src="/images/screenshots/5-en.png" alt="Third slide">
</div>
</div>
<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">
<a class="carousel-control-prev" href="#screenshotsCarouselControls" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#screenshotsCarouselControls" data-bs-slide="next">
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#screenshotsCarouselControls" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
<span class="sr-only">Next</span>
</a>
</div>
</div>
</div>
<div class="col-xs-12 col-md-8 col-lg-6 my-auto">
<div class="col-xs-12 col-md-8 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
@ -65,12 +57,12 @@ linkTitle = "SelfPrivacy"
</div>
{{< /blocks/section >}}
<section class="container">
<div class="w-100">
<h2 class="mx-auto text-center font-weight-bolder">Your personal services</h2>
{{< blocks/section color="100" type="section" >}}
<div class="row w-100">
<h2 class="mx-auto text-center">Your personal services</h2>
</div>
<div class="w-100 mt-5 mb-3">
<div class="row w-100 mt-5 mb-3">
<h3 class="mx-auto text-center">For serious business</h3>
</div>
@ -94,7 +86,7 @@ linkTitle = "SelfPrivacy"
</div>
</div>
<div class="w-100 mt-5 mb-3">
<div class="row w-100 mt-5 mb-3">
<h3 class="mx-auto text-center">For entertainment and communication</h3>
</div>
@ -118,7 +110,8 @@ linkTitle = "SelfPrivacy"
</div>
</div>
<div class="w-100 mt-5 mb-3">
<div class="row w-100 mt-5 mb-3">
<h3 class="mx-auto text-center">For a good life</h3>
</div>
@ -136,77 +129,70 @@ linkTitle = "SelfPrivacy"
{{< /landing-service >}}
</div>
</div>
</section>
{{< /blocks/section >}}
<section class="container-fluid d-flex flex-column sp-advantages">
<div class="w-100 sp-advantages-header">
{{< blocks/section color="100" type="section" >}}
<div class="row w-100">
<h2 class="mx-auto text-center">Advantages</h2>
</div>
{{< landing-feature privacy "Privacy" "-green" >}}
{{< landing-feature privacy "Privacy" >}}
<p class="card-text">No registration, cookies or telemetry.</p>
{{< /landing-feature >}}
{{< landing-feature zerotrust "Zero trust" "-blue" "right" >}}
{{< landing-feature zerotrust "Zero trust" "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" "-purple" >}}
{{< landing-feature security "Security">}}
<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" "-green" "right">}}
{{< landing-feature simplicity "Simplicity" "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" "-blue" >}}
{{< landing-feature arrow "No license agreements">}}
<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" "-purple" "right">}}
{{< landing-feature coolhack3r "Save your time and money" "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" "-green">}}
{{< landing-feature thisisfine "Functionality">}}
<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" "-blue" "right">}}
{{< landing-feature smartphonecomparison "Independence" "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" "-purple" >}}
{{< landing-feature datactrl "Data control">}}
<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 >}}
</section>
{{< /blocks/section >}}
<section class="container-fluid">
{{< blocks/section color="100" type="section" >}}
<div class="row w-100">
<h2 class="mx-auto text-center">Supported by</h2>
</div>
<div class="container-fluid">
<div class="sp-supported-by-list">
<div class="card sp-supported-by-card h-100">
<div class="card-body sp-supported-by-list">
<a href="https://nlnet.nl/project/SelfPrivacy/" target="_blank" rel="noopener noreferrer">
<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>
<img class="sp-supperted-by-img" src="/images/logos/nlnet.svg" alt="NLnet foundation">
</a>
<a href="https://privacyaccelerator.org" target="_blank" rel="noopener noreferrer">
<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>
<img class="sp-supperted-by-img" src="/images/logos/PrivacyAcceleratorLogo.svg" alt="Privacy Accelerator">
</a>
</div>
</div>
</section>
{{< /blocks/section >}}

View File

@ -1,57 +0,0 @@
---
title: "Version 0.10.0 Release"
linkTitle: "0.10.0"
date: 2024-01-19
description: >
Migration to the new NixOS version
---
## Changelog
### Features
- **Server installation**: New NixOS version is used during server setup ([#415](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/415))
- It is also possible to set a root SSH key during server setup. This feature can be activated in developer settings.
- **DNS management**: DNS records creation dynamically gets desired records from the server now ([#424](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/424), resolves [#265](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/265))
- **UI**: Add the button to copy password on the new user creation screen ([#409](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/409), resolves [#299](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/299))
- **UI**: Add animation to the recovery key screen ([#410](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/410), resolves [#164](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/164))
- **Backups**: Bucket name now includes the date of creation ([#403](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/403), resolves [#263](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/263))
- **UI**: Snapshots List page now shows the button to open the Jobs sheet ([#396](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/396), resolves [#290](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/290))
- **Server installation**: Implement better domain ownership check during installation ([#394](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/394), resolves [#389](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/389))
- **UI**: Implement flexible precision formatting for prices ([#387](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/387))
### Bug Fixes
- **UI**: Domain name no longer overflows the screen ([#422](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/422), resolves [#408](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/408))
- **UI**: Fix overflow of the filled buttons
- **Hetzner**: Filter away ARM architecture from available servers ([#404](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/404), resolves [#402](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/402))
- **UI**: Add refresh indicator on the 'Devices' screen ([#398](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/398), resolves [#258](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/258) and [#163](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/163))
- **GraphQL API**: Force DateTime to UTC when timezone naive ([#386](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/386), resolves [#385](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/385))
### Other
- Updated the copyright year ([#417](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/417))
- Happy new year!
- Upgrade to Flutter 3.16.1
- Rename the Recovery flow button to prevent user confusion ([#399](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/399), resolves [#346](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/346))
- **GraphQL API**: Remove and replace deprecated mutations ([#423](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/423), resolves [#418](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/418))
### Translation contributions
* French
* smtg (12)
* Spanish
* NaiJi ✨ (35)
* German
* Marvin F (23)
* User 1234 (30)
* Hebrew
* Yaron (578)
* Russian
* def (4)
* NaiJi ✨ (9)
* Inex Code (10)

View File

@ -1,80 +0,0 @@
---
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)

View File

@ -160,26 +160,3 @@ This release is made possible with the support of [NlNet foundation](https://nln
* Mithras (28)
* Ortibexon (403)
## Patch 0.9.1
### Bug Fixes
- Fix volume resizing on Digital Ocean ([#368](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/368), resolves [#367](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/367))
- Disable the storage card while volume information is being fetched ([#369](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/369), resolves [#317](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/317))
### Features
- Add copy-to-clipboard for email on user page ([#329](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/329), resolves [#287](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/287))
- Add support for ECDSA SSH keys ([#362](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/362), resolves [#319](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/319))
- Implement confirmation modal for the volume resize ([#372](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/372), resolves [#308](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/308))
### Other changes
- Move service descriptions above login info for service cards ([#342](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/342), resolves [#341](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/341))
- Add measure units to 'Extending volume' page ([#344](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/344), resolves [#301](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/301))
- Make users to be ordered properly on users page ([#343](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/343), resolves [#340](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/340))
- Move service card name to its icon row ([#352](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/352), resolves [#350](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/350))
- Reorganize placeholders for empty pages ([#359](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/359), resolves [#348](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/348))
- Remove redundant zone id cache for Cloudflare ([#371](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/371))

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 165 KiB

View File

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

View File

@ -21,6 +21,6 @@ We want digital independence and privacy for our data.
## What do we need it for?
Our [team]({{< ref "team.md" >}}) consists of programmers and system administrators. We are from different countries and many of us have never met in person. Perhaps we are romantics. Don Quixotes of the free Internet. It is important for us not only to do the work, but to know the result - the contribution to a positive change in people's attitudes to privacy and independence.
Our [team]({{< ref "team.md" >}} consists of programmers and system administrators. We are from different countries and many of us have never met in person. Perhaps we are romantics. Don Quixotes of the free Internet. It is important for us not only to do the work, but to know the result - the contribution to a positive change in people's attitudes to privacy and independence.
We hope to find stable financial support in the form of free software development funds in the near future, so as not to burden the project founder's budget.

View File

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

View File

@ -1,123 +0,0 @@
---
title: "Roadmap"
linkTitle: "Roadmap"
weight: 3
date: 2023-10-05
description: >
What we are going to do next
---
The following is a list of our tasks in no particular order, grouped by topics. This is a living document that will change over time.
Tasks in **bold** are sponsored, for example, by NlNet. Tasks in *italic* are in our current focus.
## SP Nix flake format
- [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))
- [ ] Bitwarden ([nixos-config#42](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nixos-config/issues/42))
- [ ] Gitea / Forgejo ([nixos-config#43](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nixos-config/issues/43))
- [ ] Nextcloud ([nixos-config#44](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nixos-config/issues/44))
- [ ] Pleroma ([nixos-config#45](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nixos-config/issues/45))
- [ ] Jitsi ([nixos-config#46](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nixos-config/issues/46))
- [ ] **Adapt SelfPrivacy API to manage these modules** ([selfprivacy-api#65](https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api/issues/65))
- [ ] **Implement the support from the GUI side**
- [ ] **Document the developed format of modules, write a user manual on creating a new one**
## Single sign on (SSO)
- [ ] **Analyze protocols supported by different services.** (LDAP, oAuth, OIDC, ...)
- [ ] **Compare different SSO solutions, choose the most appropriate.**
- [ ] **Implement Nix modules to integrate the selected SSO solution with the services we install.**
- [ ] **Add support for the SSO administration on the SelfPrivacy API and app side.**
- [ ] **Develop the self-service portal for the users.**
## Security
- [ ] ***Harden the systemd units***
- [ ] **System security audit logging**
- [ ] **GUI to view the audit log events**
- [ ] **Monitoring**
- [ ] **Alerts**
## Automatic backups
- [x] **Implement the new backups subsytem on the API in the storage-agnostic way**
- [x] **Implement automatic backups and rotation**
- [x] **Implement automatic restoration from the snapshot**
- [ ] **Allow recreating the server on the new machine using the backup automatically**
- [ ] **Automatic migration between machines**
## Add services
- [ ] Self-hosting a static website ([selfprivacy#17](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/issues/17))
- [ ] **LibreOffice online**
- [ ] **BigBlueButton**
- [ ] **Corteza**
- [ ] **Flarum**
- [ ] **FileSender**
- [ ] **GoToSocial**
- [ ] **GNU Social**
- [ ] **KBin**
- [ ] **Funkwhale**
- [ ] **Castopod**
- [ ] Mastodon
- [ ] UnifiedPush provider (for example, ntfy)
- [ ] **Matrix server**
- [ ] VPN (Collaboration with [leap.se](https://leap.se) is possible)
## Provisioning
- [ ] Refactor the provisioning logic
- [ ] *Backup credentials are no longer need during setup* ([selfprivacy#370](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/pulls/370))
- [ ] Providers' credentials are no longer needed to communicate with an existing server
- [ ] It is possible to update the token
- [ ] Multitenancy
- [ ] The installation progress can be tracked by the app
- [ ] More tools to debug failed installation
### Manual installer (support for bare metal)
While cloud server providers offer APIs that allow us to perform almost fully automated server installation, it is not true self-hosting, if you cant install the system on your own hardware. The installer shall be developed to allow deploying SelfPrivacy on systems where APIs are not available. There will be UX challenges on how to make this process as simple to the end user as possible. In the end, the user shall be able to control their server from the mobile SelfPrivacy app just like if they installed it using the cloud provider.
### New providers (server)
- [ ] Scaleway
- [ ] We're open for suggestions!
### New providers (DNS)
- [ ] Porkbun
- [ ] We're open for suggestions!
### New providers (backup storage)
- [ ] SFTP
- [ ] Restic REST server
- [ ] We're open for suggestions!
## System management
- [ ] Track the progress of system rebuilds
- [ ] Allow deleting old system generations from GUI
- [ ] API to read logs from the services
## App reactivity
- [ ] Handle situations when the server is offline
- [ ] Use websockets to keep information updated in real time
## Localization and accessibility
- [ ] Translate server-side messages to the client's language
- [ ] Make sure the app is fully usable with a keyboard
- [ ] Make sure the app is compliant with WCAG
## Publishing
- [x] Publish on Google Play
- [ ] Publish on Apple App Store

View File

@ -1,7 +1,7 @@
---
title: "Team"
date: 2017-01-05T
weight: 1
weight: 3
description: >
Our team, contributors and like-minded people.
---
@ -17,7 +17,7 @@ International team of independent professionals:
- **ilchub** - DevOps, Backend developer
- **kherel** - Flutter developer
- **nikolai** - QA Engineer
- and a lot of cool contributors and volunteers
- and a lot of cool cotributors and volonteers
## We get help
- [Roscomsvoboda](https://roskomsvoboda.org/). Speech in Russian [youtube](https://www.youtube.com/watch?v=mdeUTUPeJjA).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

View File

@ -1,94 +0,0 @@
---
title: "Backups"
linkTitle: "Backups"
date: 2023-07-31T
weight: 4
description: >
Backing up your services so that they are not lost
---
## Why backing up
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;
* 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.
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.
## What is a snapshot?
SelfPrivacy does not make backups of the whole machine.
Instead, it saves the states of each service.
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 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 the user's choice.
We currently support Backblaze, with more to come.
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.
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 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
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.
However, this method requires additional storage space for the snapshot.
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.
## Forgetting a snapshot
Forgetting makes the snapshot inaccessible from the server, but deletion itself is reversible from cloud UI for some time (30 days for Backblaze by default).
## Automatic Backup
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 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 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 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

@ -1,39 +1,39 @@
---
title: "Frequently Asked Questions"
title: "Frequency Asked Questions"
linkTitle: "FAQ"
date: 2023-03-13T
weight: 8
weight: 2
description: >
Frequently asked questions about our project.
---
## What are self-hosted services and what are their advantages?
# General questions
## What are self-host 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.
Self-hosted is the term for keeping an online service in-house. The key to this approach is that you have an independent copy of the software on your server, without a third party running the service. To be an administrator, you don't need to be a programmer and understand all the intricacies of the inner workings of the server application, i.e. the service. Typically, application developers who are not beholden to the head office and its ad trackers will try to make the service as clear and simple to use as possible.
Popular examples include self-hosted email servers, messengers such as XMPP or Matrix, and VPN solutions. If you've worked in a large organisation, you've probably seen a standalone email service on the company domain, and you've probably also come across corporate messengers. These are all self-hosted, but not by you, but by the company you worked for.
Popular examples include self-hosted email servers, messengers such as XMPP or Matrix, and VPN solutions. If you've worked in a large organisation, you've probably seen a standalone email service on the company domain, and you've probably also come across corporate messengers. These are all self-hosted, but not by you, but by the company you worked for. Why does a company need its own email and messenger? The answer is simple: to keep employee communications and company secrets in their own hands, under their own control.
Why does a company need its own email and messenger? The answer is simple: to keep employee communications and company secrets in their own hands, under their own control.
If you want flexible self-host tools that you can customise, or you just don't trust big companies and want to keep your data under your own control, self-hosting is for you.
If you think you don't trust companies, want to keep your data under your own control, or simply don't want to strengthen the monopolistic position of the IT market, self-hosting will suit your needs.
## Can I trust my hosting provider?
We have all experienced being disconnected from the Internet due to overdue payments, or having our home power cut off due to technical problems somewhere in the house or city. Therefore, in order to provide a stable online service, they turn to hosting providers - special companies that provide computer facilities for rent and undertake to do everything possible for their stable operation: backup power supply schemes of equipment in case of emergency, backup highways to connect to the Internet, as well as protection against earthquakes, fires and floods according to the latest science and technology.
A reasonable question: can you trust these services, since all the data stored on your leased server is, after all, the data stored on the disc provider's discs.
A reasonable question: can you trust these services, since all the data stored on your leased server is, after all, the data stored on the disc provider's discs. There is no clear answer to this question, because at the request of law enforcement agencies from the provider's jurisdiction, your data will surely be handed over without too many questions. But... do you often have problems with the law? And the law of foreign territories? On a more paranoid note, your server is the last weak link in the infrastructure. It is much more frightening to use a smartphone, smart speakers and other electronic devices whose content is terra incognita, and in which all trust is based solely on the marketing of vendors and our ingrained habits.
There is no clear answer to this question, because at the request of law enforcement agencies from the provider's jurisdiction, your data will surely be handed over without too many questions. But... do you often have problems with the foreign law?
Hosting providers have hundreds, thousands and sometimes millions of virtual machines. One of them will be yours. Is it worth the trouble? Probably not.
## The hoster is asking for my passport, what should I do?
The SelfPrivacy infrastructure currently relies on the hosting capabilities of Hetzner and DigitalOcean. Sometimes the hosting provider may ask for proof of identity when you sign up. This protects them from spammers. In addition, the European jurisdiction requires to know your customer ([KYC](https://en.wikipedia.org/wiki/Know_your_customer)). We apologise for the fact that Hetzner is not involved in the collection of unnecessary data and the disclosure of information about users.
The SelfPrivacy infrastructure currently relies on Hetzner's hosting capabilities. During registration, the hosting provider asks for proof of identity. This protects them from spammers. In addition, the European jurisdiction requires to know your customer (KYC). We apologise for the fact that Hetzner is not involved in the collection of unnecessary data and the disclosure of information about users.
Providing photos or photocopies of documents to anyone online is a bad practice that we condemn. But thousands of users and we can vouch for the reliability of Hetzner, which is more privacy oriented. They have been around for many years and have a good reputation. For our part, however, we are looking for alternative solutions to this problem.
Providing photos or photocopies of documents to anyone online is a bad practice that we condemn. But thousands of users and even we vouch for Hetzner's reliability. They have been around for many years and have a good reputation. Think of it as registering with a phone number that is also linked to passport details in most countries. For our part, we are looking for alternative solutions.
## Will this protect me from the FBI, FSB, Mi6, ...?
We do our best to keep your data technically intact. But your hosting has to comply with the laws of its jurisdiction. We choose to host in as legal a jurisdiction as possible. So unless you are involved in criminal activities such as drug dealing, illegal porn, terrorism, and the like, your data is unlikely to be threatened.
@ -48,11 +48,7 @@ No, we do not make money from users. We have no agreements with ISPs, nor do we
## What's the point of a non-profit project?
In a climate of aggressive consumerism, where only stories about effective business sell like hot cakes, non-profit projects are cautious.
The main motive behind SelfPrivacy that runs through our team is to make using the internet a little more comfortable, a little easier and - most importantly - a little more private.
Privacy is an inalienable human right that allows us to feel like subjects, independent individuals. We're making a public project to get inspiration for new features and to look for bugs, not by a few people, but by tapping into the resources of an unlimited audience. After all, why does a musician write tunes and an artist create paintings? Moreover, developing a free solution that can take users to a new level of privacy is a matter of honour. And samurai have no goal, only a way.
In a climate of aggressive consumerism, where only stories about effective business sell like hot cakes, non-profit projects are cautious. The main motive behind SelfPrivacy that runs through our team is to make using the internet a little more comfortable, a little easier and - most importantly - a little more private. Privacy is an inalienable human right that allows us to feel like subjects, independent individuals. We're making a public project to get inspiration for new features and to look for bugs, not by a few people, but by tapping into the resources of an unlimited audience. After all, why does a musician write tunes and an artist create paintings? Moreover, developing a free solution that can take users to a new level of privacy is a matter of honour. And samurai have no goal, only a way.
## Why do we choose providers?
@ -76,9 +72,7 @@ On the deployed server, the following components are responsible for sending, re
You can read more about using email on the [service page](https://selfprivacy.org/docs/services/email/).
## Why have we added CloudFlare to the list of available providers?
After the [0.8.0](https://selfprivacy.org/blog/2023/02/09/version-0.8.0-release/) update, all users can choose between [deSEC](https://desec.io/) and [CloudFlare](https://www.cloudflare.com/). We recommend to choose [deSEC](https://desec.io/), it is a privacy-oriented service.
## Why use CloudFlare?
Cloudlare is reliable and free. They probably collect data, otherwise it's hard to explain why you should proxy other people's traffic for free. In our case we only use it as a DNS server and don't proxy anything. In the future we will replace it with our own DNS once we have solved the reliability problem.
@ -90,6 +84,6 @@ If you encounter a problem, feel free to write to the groups with SelfPrivacy de
- [Telegram chat: @selfprivacy_chat](https://t.me/selfprivacy_chat)
- [Matrix chat: #chat:selfprivacy.org](https://matrix.to/#/#chat:selfprivacy.org)
Or you can create an issue in our project repositories:
- [Main app](https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app)
- [Other repositories](https://git.selfprivacy.org/SelfPrivacy)
Or you can create an issue in our project repository:
- Main app - https://git.selfprivacy.org/kherel/selfprivacy.org.app
- Other stuff - https://git.selfprivacy.org/SelfPrivacy

View File

@ -1,11 +1,11 @@
---
categories: ["Tutorials"]
tags: []
title: "Getting Started"
linkTitle: "Getting Started"
weight: 2
weight: 1
description: >
How do you deploy and set up SelfPrivacy server?
aliases:
- /en/second
---
The SelfPrivacy server is created step by step within an hour. Sounds scary, but believe me,

View File

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

View File

@ -1,243 +0,0 @@
---
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.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

View File

@ -5,6 +5,7 @@ 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,6 +5,7 @@ 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.
@ -40,7 +41,7 @@ To access your server's root shell you will have to generate your SSH key and ad
4. Open the Command Prompt. You can do this by pressing **Win+R**, typing `cmd` and pressing **Enter**.
5. Run the following command, replacing `user_name` with your Windows username:
```ps1
ssh-keygen -t ed25519 -f C:\Users\user_name\.ssh\id_ed25519
ssh-keygen -t ed25519 -f C:\Users\user_name\.ssh\id_ed25519.pub
```
You will be asked to enter a passphrase. You can leave it empty, but it is recommended to use a passphrase.
If you do not want to use a passphrase, press **Enter**.
@ -102,4 +103,4 @@ To access your server's root shell you will have to generate your SSH key and ad
3. Enter the passphrase you entered when generating the SSH key, if you used one.
Be careful when using the root shell. If you do not know what you are doing, you can break your server or leak your data.
Responsibility for the consequences of your actions lies with you. Respect the privacy of other users.
Responsibility for the consequences of your actions lies with you. Respect the privacy of other users.

View File

@ -0,0 +1,39 @@
---
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,7 +1,6 @@
---
title: "Bitwarden"
date: 2023-01-11T18:09:37+03:00
weight: 7
description: >
Your password manager
---

View File

@ -1,7 +1,6 @@
---
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,13 +1,13 @@
---
title: "E-mail"
date: 2023-01-11T17:10:29+03:00
weight: 1
description: >
Self-hosted e-mail service
---
E-mail is a time-tested protocol that needs no introduction. A personal mail server will provide special privacy for all correspondence and is useful for registering in online services and personal correspondence, especially for [Delta.Chat]({{< ref "delta-chat.md" >}}).
## Authentication
Users from the "users" tab of your app are used.
@ -17,7 +17,6 @@ Users from the "users" tab of your app are used.
Login must the username with the domain. For example, `user@domain.tld`.
#### SMTP
SMTP Server: `your domain`
SMTP Port: `587`
@ -53,38 +52,26 @@ On the deployed server, the following components are responsible for sending, re
- Dovecot 2 — IMAP server;
- Rspamd — SPAM filter;
## Tips
### Alias for addresses
#### Alias for addresses
Use aliases for questionable services or one-time needs.
Messages for `user+alias@domain.com` will go to `user@domain.com`. It can be useful for spam origin analysis if a unique alias is used for each online service when registering.
Messages for `user+alias@domain.com` will go to `user@domain.com`. It can be useful for spam origin analysis if a unique alias is used for each online service when registering.
For example, `bank+user@domain.com`, `cryptoexchenge+user@domain.com`, and so on.
### Directory Filter
Create directories of filters for different purposes. This will help protect against phishing and clogging your inbox.
#### Directory Filter
Create directories of filters for different purposes. This will help protect against phishing and clogging your inbox.
The message for `user-dir@domain.com` will create a `dir` directory in the `user@domain.com` mailbox and all mail will arrive in the `dir` directory.
Examples:
- `user-w@domain.com` - for registering with web services
- `user-shops` - for web-stores
- `user-pay` - payment systems
- `user-forum` - forum notifications
- `user-w@domain.com` - for registering with web services
- `user-shops` - for web-stores
- `user-pay` - payment systems
- `user-forum` - forum notifications
## Features
- Email is over 50 years old. In IT, this is a sign of maturity and reliability of the technology.
- Email is the most popular way to get infected with viruses (after hacked software and cracks).
- Beware of phishing (fraudulent emails), it can rob you of your savings and control over your digital life.
## Sending email does not work
Sending email may be blocked by your provider.
Hetzner [responds](https://docs.hetzner.com/cloud/servers/faq/#why-can-i-not-send-any-mails-from-my-server) that they do indeed block the email for new accounts. After one month of server operation and the first successful payment, Hetzner asks to contact support to clarify the reasons for using email. You may mention that you plan to use email to communicate with users of your services.
With DigitalOcean, such a problem has not been observed, but if you have encountered this, try to get in touch with the hosting support.
- Beware of phishing (fraudulent emails), it can rob you of your savings and control over your digital life.

View File

@ -1,7 +1,6 @@
---
title: "Gitea"
date: 2023-01-11T18:09:12+03:00
weight: 3
description: >
Gitea is a self-hosted Git service
---
@ -12,7 +11,7 @@ Owning your own git hosting allows you to store personal files on a private serv
- [Official project website](https://gitea.io/)
{{% alert title="Admin account" color="warning" %}}
{{% alert title="Admin account" colour="warning" %}}
Be careful, the first account registered on your instance, gets admin rights.
{{% /alert %}}

View File

@ -1,28 +0,0 @@
---
title: "Jitsi"
date: 2023-01-11T17:15:31+03:00
weight: 6
description: >
Video conference
---
Zoom and Google Meet are proprietary software that have limitations in their free versions and do not provide access to their clients' source code.
But there is an alternative — [Jitsi](https://jitsi.org/), which is an open source videoconferencing service with similar functionality to its proprietary counterparts.
- [Official project website](https://jitsi.org/)
## Recommended official clients
- WEB interface: available after setting up the SelfPrivacy server, at `https://meet.YOUR.DOMAIN`.
- [Android](https://f-droid.org/en/packages/org.jitsi.meet/)
- [iOS](https://apps.apple.com/us/app/jitsi-meet/id1165103905)
- [Flatpak](https://flathub.org/apps/org.jitsi.jitsi-meet)
- Also see the builds in your distribution's repositories.
## Features of Jitsi
- Does not require registration;
- Uses avatar from [gravatar.com](https://gravatar.com/) if you specify mail (may violate privacy!);

View File

@ -0,0 +1,25 @@
---
title: "Nextcloud"
date: 2023-01-11T17:08:23+03:00
description: >
Swiss knife in the business of working together
---
Collaboration means file storage, document management, video conferencing, shared event calendars, and things like that. As a rule, people tend to trust personal life and business to third-party services. However, there is an option to keep it all on your own server.
We choose [Nextcloud](https://nextcloud.com/) - free software for convenient scheduling and file storage.
- [Official project website](https://nextcloud.com/)
# Authentication
When creating a server, `admin` Nextcloud user is created with the password you've used for
your primary user.
To add new users, go to the user administration panel, on the web interface of your Nextcloud.
## Recommended clients
- WEB interface: available after SelfPrivacy server configuration, at `https://cloud.YOUR.DOMAIN`
- [Official application](https://nextcloud.com/install/#install-clients) (GNU/Linux, Windows, macOS, Android, iOS)

View File

@ -1,126 +0,0 @@
---
title: "Nextcloud"
date: 2023-01-11T17:08:23+03:00
weight: 2
description: >
Swiss knife in the business of working together
---
Collaboration means file storage, document management, video conferencing, shared event calendars, and things like that. As a rule, people tend to trust personal life and business to third-party services. However, there is an option to keep it all on your own server.
We choose [Nextcloud](https://nextcloud.com/) - free software for convenient scheduling and file storage.
- [Official project website](https://nextcloud.com/)
## Authentication
When creating a server, `admin` Nextcloud user is created with the password you've used for
your primary user.
To add new users,
1. go to the user administration panel, on the web interface of your Nextcloud.
{{< imgproc nextcloud1 Fill "1275x853" />}}
2. Click the New User button.
{{< imgproc nextcloud2 Fill "1278x415" />}}
## Recommended clients
- WEB interface: available after SelfPrivacy server configuration, at `https://cloud.YOUR.DOMAIN`
- [Official application](https://nextcloud.com/install/#install-clients) (GNU/Linux, Windows, macOS, Android, iOS)
## How to reset the admin password
To follow the steps below, you'll need to connect to the server via SSH with administrative rights. A basic understanding of the command line is beneficial ;)
For detailed connection instructions, [click here](https://selfprivacy.org/docs/how-to-guides/root_ssh/).
After connecting, enter the following command:
```nextcloud-occ user:resetpassword admin```
You will prompted for a new password, the characters will be hidden.
## FAQ
### Nextcloud Updater does not work
It's fine, it should be. Nextcloud is updated via NixOS, and depends on our NixOS repository. Everything happens without your intervention.
### Why can't I use my Nextcloud in third-party services?
This can happen if the third-party service has a restriction to only connect to a specific Nextcloud instance.
### Should I use an extension to encrypt my Nextcloud?
We do not recommend it. The encryption keys are stored on the server, which makes such encryption practically useless.
### Adding Contacts
1. Open your Nextcloud, click on the contacts icon in the top right corner. Then click on "Install the Contacts app".
{{< imgproc nextcloud_add_contact Fill "1276x610" />}}
2. Click "Download and enable".
{{< imgproc nextcloud_add_contact2 Fill "1280x704" />}}
3. Now you have a new item in the menu.
{{< imgproc nextcloud_add_contact3 Fill "1278x726" />}}
### Adding Calendar
1. Click on your profile avatar in the top right corner.
2. In the dropdown menu, click "Apps".
3. You will be taken to the app store, go to the "Organization" category and find the "Calendar" app.
4. Click "Download and enable".
{{< imgproc nextcloud_add_contact4 Fill "1275x1169" />}}
5. You now have another new item in the menu.
{{< imgproc nextcloud_add_contact5 Fill "1281x465" />}}
## Synchronizing Nextcloud Across Different Devices
Download the [Nextcloud main app](https://nextcloud.com/install/#install-clients) (GNU/Linux, Windows, macOS, Android, iOS). It will help you synchronize files.
How to set up synchronization for contacts and calendar? Instructions for different systems and applications.
- [iOS](https://docs.nextcloud.com/server/latest/user_manual/en/groupware/sync_ios.html#)
- [macOS](https://docs.nextcloud.com/server/latest/user_manual/en/groupware/sync_osx.html)
- [Windows 10](https://docs.nextcloud.com/server/latest/user_manual/en/groupware/sync_windows10.html)
- Android — see below
- [Thunderbird](https://docs.nextcloud.com/server/latest/user_manual/en/groupware/sync_thunderbird.html)
- [KDE Kontact](https://docs.nextcloud.com/server/latest/user_manual/en/groupware/sync_kde.html)
- [GNOME Desktop](https://docs.nextcloud.com/server/latest/user_manual/en/groupware/sync_gnome.html)
# How to Synchronize Nextcloud with an Android Smartphone?
1. Download the [DAVx⁵ app](https://www.davx5.com/download/) on your Android device from [F-Droid](https://f-droid.org/de/packages/at.bitfire.davdroid/) or the [Google Play Store](https://play.google.com/store/apps/details?id=at.bitfire.davdroid).
2. Open the app, and create a new account by tapping the "plus" button.
3. In the account creation menu, select the last option "Nextcloud".
4. The app will prompt you to enter the URL of your Nextcloud instance. The URL should look like: `https://cloud.YOUR.DOMAIN`.
5. A browser will open. You need to log into your Nextcloud account and grant access.
{{< imgproc nextcloud3 Fill "1134x466" />}}
6. Return to the DAVx⁵ app. For the name, enter the email address registered in your Nextcloud account settings.
7. In the "Contact group method" section, choose "Groups are categories of contacts".
{{< imgproc nextcloud4 Fill "1200x573" />}}
8. Select the data you want to synchronize.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

View File

@ -1,16 +1,15 @@
---
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/).
@ -25,15 +24,4 @@ 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.
## 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.
- Your social network, your rules. You are the censor, moderator and administrator.

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 "/privacy-policy/" >}}).
You can read more about this in our [privacy policy]({{< ref "policy.md" >}}).

View File

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

View File

@ -9,11 +9,13 @@ description: >
Yes, you could use kubernetes. But why when immutability is ensured by NixOS?
**User app:** [Flutter](https://flutter.dev/)/[Dart](https://dart.dev/) was chosen because of the speed and smoothness of the UI and cross-platform.
## Mobile app ##
[Flutter](https://flutter.dev/)/[Dart](https://dart.dev/) was chosen because of the speed and smoothness of the UI and cross-platform.
**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.
## 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
@ -21,6 +23,8 @@ 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);
@ -30,15 +34,7 @@ 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
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.**
[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.
### Backup repository
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.**
[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.

View File

@ -2,11 +2,14 @@
title: "How to contribute"
linkTitle: "Contributing"
date: 2023-03-13T
weight: 7
weight: 2
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.
@ -44,6 +47,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

@ -2,6 +2,8 @@
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>
@ -10,66 +12,70 @@ 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="mx-auto row w-100">
<h1 class="text-center w-100">Android</h1>
<div class="row w-100">
<h1 class="mx-auto text-center w-100">Android</h1>
</div>
<div class="mx-auto row w-100">
<div class="row w-100">
<div class="col-md-4">
<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">
<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">
F-Droid
</a>
<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="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">
<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">
APK File
</a>
</div>
<div class="col-md-4">
<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">
<a class="btn btn-lg btn-primary mb-4 mt-4 btn-block sp-button-shadow sp-button-big-padding disabled" href="https://play.google.com/store/apps/details?id=org.selfprivacy.app" rel="noopener noreferrer" target="_blank">
Google Play
</a>
</div>
<div class="col-md-12">
<a class="btn btn-link w-100" href="https://fdroid.selfprivacy.org/" rel="noopener noreferrer" target="_blank">
Our F-Droid repository
</a>
</div>
</div>
{{< /blocks/section >}}
{{< blocks/section color="white" type="section" >}}
<div class="mx-auto row w-100">
<h1 class="text-center w-100">iOS</h1>
<div class="row w-100">
<h1 class="mx-auto text-center w-100">iOS</h1>
</div>
<div class="mx-auto row w-100">
<h4 class="text-center w-100">Coming soon</h4>
<div class="row w-100">
<h4 class="mx-auto text-center w-100">Coming soon</h4>
</div>
{{< /blocks/section >}}
{{< blocks/section type="section" color="dark" >}}
<div class="mx-auto row w-100">
<h1 class="text-center w-100">Desktop</h1>
<div class="row w-100">
<h1 class="mx-auto text-center w-100">Desktop</h1>
</div>
<div class="mx-auto row w-100">
<div class="row w-100">
<div class="col-md-4">
<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">
<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">
Windows
</a>
</div>
<div class="col-md-4">
<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">
<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">
GNU/Linux
</a>
</div>
<div class="col-md-4">
<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">
<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">
MacOS
</a>
</div>
@ -80,7 +86,7 @@ title: Downloads
{{< blocks/section type="section" >}}
{{< landing-feature book "What to do next?" "right" >}}
<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/" >}}">
<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/" >}}">
Setup guide
</a>
{{< /landing-feature >}}

View File

@ -1,7 +1,13 @@
---
title: "Privacy Policy"
date: 2023-05-15
type: "docs"
weight: 4
---
{{< blocks/section color="white" type="section" >}}
# Privacy policy
---
**Last updated: May 15, 2023**
@ -54,4 +60,6 @@ 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)
![Licensed under CC0](/images/icons/cc-zero.svg)
{{< /blocks/section >}}

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

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

View File

@ -1,6 +1,6 @@
---
title: "Блог SelfPrivacy"
linkTitle: "Блог"
title: "SelfPrivacy Blog"
linkTitle: "Blog"
menu:
main:
weight: 30
@ -10,3 +10,4 @@ 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: 148 KiB

After

Width:  |  Height:  |  Size: 165 KiB

View File

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

View File

@ -1,7 +1,7 @@
---
title: "Политика"
date: 2023-04-23
type: "docs"
weight: 4
description: >
Наши принципы и политика
---

View File

@ -1,9 +0,0 @@
---
title: "План развития"
date: 2017-01-05T
weight: 3
description: >
Что мы планируем дальше
---
Наш план развития постоянно обновляется и [доступен только на английском языке](https://selfprivacy.org/docs/about-us/roadmap/).

View File

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

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