Compare commits

...

10 Commits

Author SHA1 Message Date
drebs 80ad89e27e Improve post and intro 2023-12-31 08:14:13 -03:00
drebs 13156b1ffa Add post about backups 2023-12-30 18:13:20 -03:00
drebs 2e0aa2339f Set nicer background for preformatted code 2023-12-30 18:13:00 -03:00
drebs 21c4b9fd3a Set slug for post 2023-12-30 18:12:37 -03:00
drebs 3892a4ea34 Improve site subtitle 2023-12-30 16:54:26 -03:00
drebs 2b9d07dbd1 Improve language config to use pt-br 2023-12-30 16:53:54 -03:00
drebs 9e8dc17ef6 Translate pagination 2023-12-30 16:46:34 -03:00
drebs f9f9432360 Improve logo 2023-12-30 16:44:18 -03:00
drebs 96baf4fbe9 Make all links black 2023-12-30 16:37:23 -03:00
drebs 8daaeede5c Add link to share.riseup.net 2023-12-30 14:33:26 -03:00
9 changed files with 151 additions and 8 deletions

View File

@ -2,19 +2,21 @@ baseURL = 'http://44203.net/'
languageCode = 'pt-br' languageCode = 'pt-br'
title = '44203.net' title = '44203.net'
theme = "smol" theme = "smol"
defaultContentLanguage = "pt" defaultContentLanguage = "pt-br"
enableGitInfo = true enableGitInfo = true
[languages] [languages]
[languages.pt] [languages.pt-br]
languageCode = 'pt-br'
contentDir = 'content' contentDir = 'content'
languageName = 'Português' languageName = 'Português'
weight = 1 weight = 1
# Parameters # Parameters
[params] [params]
subtitle = "Documentação sobre minha atividade online" subtitle = "Documentação de referência"
dateFmt = "02.01.2006" dateFmt = "02.01.2006"
customCSS = ['css/local.css']
# Header # Header
[menu] [menu]

View File

@ -3,4 +3,5 @@ title: "Links"
draft: false draft: false
--- ---
- Compartilhador de arquivos (até 50 MB): https://share.riseup.net
- Encurtador de links: https://squ.at - Encurtador de links: https://squ.at

View File

@ -0,0 +1,124 @@
---
title: "Backup 2024, parte 1: A primeira cópia cifrada"
date: 2023-12-30T17:10:20-03:00
slug: 2023-12-30-esquema-de-backup-2024-rsync
type: posts
draft: false
categories:
- Segurança da informação
tags:
- backups
toc: true
---
Esta é a parte 1 de uma série de posts sobre meu esquema de backup que
implementa um sistema 3-2-1 de backups: são 3 cópias no total, em ao menos duas
mídias distintas, sendo uma delas remota. Esta parte documenta a primeira cópia
cifrada dos dados usando [Restic](https://restic.net/),
[Pass](https://www.passwordstore.org/) e [Systemd](https://systemd.io/).
<!--more-->
## Características da primeira cópia cifrada
A primeira cópia cifrada é feita usando [Restic](https://restic.net) e é salva
diretamente em um NAS na minha rede local, garantindo assim a existência de 2
cópias em 2 mídias distintas.
Requisitos para a primeira cópia cifrada:
- **Conteúdo:** Deve incluir todo o `$HOME`, com exceção de alguns arquivos específicos.
- **Frequência:** Cópias instantâneas realizadas a cada hora.
- **Retenção:**
- 24 últimas cópias horárias
- 7 últimas cópias diárias
- 4 últimas cópias semanais
- 6 últimas cópias mensais
- **Segurança:** A senha e algoritmos criptográficos devem ser ao menos tão fortes quanto os da criptografia de disco que protege os dados originais.
## Instalação e configuração de dependências
Instale o [pass](https://www.passwordstore.org/) e o [Restic](https://restic.net/), por exemplo em um Debian:
```fish
sudo apt -f install password-store restic
```
Insira a senha para backup no repositório de senhas, por exemplo:
```fish
pass insert backups/restic
```
**Nota importante:** Utilize uma senha que você se lembre, para que seja
possível recuperar os dados a partir de uma cópia caso você não tenha mais
acesso ao seu chaveiro. Eu uso a mesma senha de criptografia de disco do
dispositivo que estou fazendo backup. Recomendo o uso do método
[Diceware](https://diceware.dmuth.org/) através de sua [implementação em
Python](https://github.com/ulif/diceware/) que está no
[Debian](https://packages.debian.org/stable/diceware).
Por fim, tenha certeza de que seu `gpg-agent` está configurado de forma que vai
te pedir a senha da chave criptográfica.
## Configuração do Restic como um serviço do Systemd
Inicie o repositório Restic:
```fish
export RESTIC_PASSWORD_COMMAND='pass backups/restic'
export RESTIC_REPOSITORY=/caminho/para/o/repositorio/restic
restic init
```
Determine as exceções no arquivo `~/.backup-excludes.txt`:
```
/home/user/.cache
/home/user/.config/chromium
/home/user/.local/share/Trash
/home/user/.local/share/containers
/home/user/.mozilla
/home/user/Downloads
/home/user/tmp
```
Crie um arquivo de configuração de serviço do Systemd em `~/.config/systemd/user/backup.service` com o seguinte conteúdo:
```ini
[Unit]
Description=Backup my home directory
[Service]
Type=oneshot
Environment=RESTIC_PASSWORD_COMMAND='pass backups/restic'
Environment=RESTIC_REPOSITORY=/caminho/para/o/repositorio/restic
ExecStart=restic -q backup --exclude-caches --exclude-file=/home/user/.backup-excludes.txt /home/user
ExecStartPost=restic -q forget --keep-within-hourly=1d --keep-hourly=24 --keep-daily=7 --keep-weekly=4 --keep-monthly=6
ExecStartPost=restic -q prune
[Install]
WantedBy=multi-user.target
```
Crie um timer para executar o serviço em `~/.config/systemd/user/backup.timer`:
```ini
[Unit]
Description=Periodic backup data using restic
[Timer]
Unit=backup.service
OnCalendar=*:0
[Install]
WantedBy=timers.target
```
Configure o Systemd de acordo:
```fish
systemctl --user daemon-reload
systemctl --user enable backup.timer
systemctl --user start backup.timer
```

View File

@ -1,5 +1,6 @@
--- ---
title: "Transição de chave OpenPGP" title: "Transição de chave OpenPGP"
slug: 2023-12-30-transicao-de-chave-openpgp
type: posts type: posts
draft: true draft: true
categories: categories:

4
i18n/pt-br/pt-br.yaml Normal file
View File

@ -0,0 +1,4 @@
start:
other: Início
categories:
other: Categorias

View File

@ -1,2 +0,0 @@
start:
other: Início

View File

@ -1,7 +1,7 @@
<header> <header>
{{ strings.Repeat ( .Site.Title | len | add 6 ) "=" }}<br> ,{{ strings.Repeat ( .Site.Title | len | add 4 ) "-" }}.<br>
== <a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a> ==<br> |&nbsp; <a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a> &nbsp;|<br>
{{ strings.Repeat ( .Site.Title | len | add 6 ) "=" }} `{{ strings.Repeat ( .Site.Title | len | add 4 ) "-" }}'
<div style="float: right;">{{ .Site.Params.subtitle }}</div><br> <div style="float: right;">{{ .Site.Params.subtitle }}</div><br>
<p> <p>
<nav> <nav>

View File

@ -0,0 +1,9 @@
<div>
{{ if .Paginator.HasPrev }}
<a href="{{ .Paginator.Prev.URL }}">Página anterior</a>
{{ end }}
{{ .Paginator.PageNumber }} de {{ .Paginator.TotalPages }}
{{ if .Paginator.HasNext }}
<a href="{{ .Paginator.Next.URL }}">Próxima página</a>
{{ end }}
</div>

4
static/css/local.css Normal file
View File

@ -0,0 +1,4 @@
:root { --bgcolor: white; --fontcolor: #444; --linkcolor: #000; --visitedcolor: #000; --precolor: #fff; --prebgcolor: #000;}
p > code{color: var(--precolor); background: #272822; padding:2px}
code{color: var(--precolor); background: #272822; padding:2px}
pre{color: var(--precolor); background: #272822; padding:24px; overflow-x: auto}