gocryptfs

Dawno, dawno temu przestałem używać EncFS. Przestałem z kilku powodów. Po pierwsze, pojawiło się ostrzeżenie o tym, że nie jest to rozwiązanie do końca bezpieczne. Niby nic i w moich zastosowaniach nie przeszkadzało[1], ale jakaś tam zadra w pamięci i niechęć zostały. Po drugie, zwykłe dyski zacząłem szyfrować „normalnie” przy pomocy LUKS. A backupy itp. przy pomocy GPG. Dziś odkryłem godnego następcę: gocryptfs.

Mimo zmian w używanym szyfrowaniu, po EncFS została jedna dziura: dyski zdalne typu Dropbox czy Google drive. Miło by było móc z nich korzystać „normalnie”, ale tak, żeby dane na tych dyskach były zaszyfrowane. LUKS tu nie pomoże, bo działa dla dysków lokalnych. Szyfrowanie przez GPG dla pojedynczych plików jest niewygodne, a pakowanie w jakieś archiwa jest dobre do backupów, nie do normalnego korzystania. EncFS jako overlay dostępny poprzez FUSE ze swoim szyfrowaniem per katalog był idealny. Nie trzeba z góry określać rozmiaru szyfrowanych danych, dostęp online do pojedynczych plików, z zachowaniem ich struktury.

Okazuje się, że jest godny następca dla EncFS i nazywa się gocryptfs. Nie wiem czemu nie znalazłem go wcześniej. Może odrzuciłem, bo był świeży i w golang? Może przeważył brak realnej potrzeby?

W każdym razie: jest i wygląda bardzo dobrze. Przeczytałem opis projektu i zasadę działania. Posiada sensowne założenia, był audytowany, brak przypadłości EncFS. Do tego jest bardzo szybki. Instalacja w Debianie z pakietu – żadnych kompilacji. Do tego świetna dokumentacja, proste użycie i… dopracowanie. Oczywiście open source. Działa na Linuksie, macOS, istnieją nieoficjalne porty dla Windows i Androida.

Żeby przybliżyć o czym mowa. Weźmy takie utworzenie szyfrowanego katalogu. Jedno proste polecenie, podajemy hasło, powtarzamy je i… dostajemy master key, wraz z przeznaczeniem i jak się z nim obchodzić. Aż pokażę[2], bo na stronie tego nie ma:

$ gocryptfs -init cipher/
Choose a password for protecting your files.
Password:
Repeat:

Your master key is:

d28966ae-f39ff48a-695993f9-a5e354eb-
3d31e7a1-29c834c5-31b2cb3b-b38b6cec

If the gocryptfs.conf file becomes corrupted or you ever forget your password, there is only one hope for recovery: The master key. Print it to a piece of paper and store it in a drawer. This message is only printed once.
The gocryptfs filesystem has been created successfully.
You can now mount it using: gocryptfs cipher MOUNTPOINT

Prawda, że piękne? Bardzo możliwe, że przyda się i wkrótce wrócę do tematu zdalnych dysków.

[1] Moje zastosowania: nie będą mi dyski sieciowe w stylu Dropbox grzebać po plikach, nawet jeśli nic tajnego tam nie ma.
[2] Jakby ktoś zaczynał panikować, że „ojej, master key podał” to spieszę donieść, że to z testowego katalogu utworzonego na potrzeby tego wpisu, żadnych danych tam nie ma i nie będzie.

I Love Free Software Day 2026

W piątek, w ramach I Love Free Software Day 2026 odbyło się spotkanie w Poznaniu. Mimo niezbyt fortunnego terminu[1], na spotkanie przyszło kilkadziesiąt osób. Spotkanie było organizowane m.in. przez hackerspace Knyfyrtel, który organizuje też P.I.W.O., co czyni z organizacji ważny punkt na mapie wolnego oprogramowania w Poznaniu.

Chociaż teoretycznie była określona okazja i cel, to poszedłem raczej pod pretekstem. Zresztą agenda też była luźno związana, choć jeden z wykładów był typowo poświęcony tworzeniu pakietów i roli maintainerów.

Tematyka dla bardzo różnych odbiorców. Był wykład o grze OpenTTD, jaka jest historia, jak powstała, jak zacząć grać i jakie są możliwości. Nie zagram[2], ale doceniam. Na drugim biegunie były obliczenia rozproszone na klastrach (ciekawe, ale mocno pod studentów) czy bootc.

Ten ostatni wykład, oraz wykład o Fediwersum przypomniały mi, że dwie rzeczy są w IT trudne. I chyba przekłada się to na opisy czym jest dane rozwiązanie. NFM: wyjście od jak coś działa niekoniecznie ułatwia zrozumienie odbiorcy, o co chodzi. Pewnie lepiej skoncentrować uwagę odbiorcy na czymś, co już zna, pokazać różnice, zalety, wady i ew. na koniec ew. wejść w szczegóły techniczne realizacji.

Potrzebę odniesienia do znanej koncepcji było widać po pytaniach. W przypadku Fediwersum jedno z pytań, które padło z sali (z pamięci) jakiego typu serwisem jest Szmer, czy to taki Wykop? Drugie dostałem po wykładzie od kumpla[3] co to jest ten Mastodon? No nie bójmy się powiedzieć, że to taki Twitter. To oczywiście odpowiedź zła, albo raczej nieprecyzyjna, ale znowu, nazywanie rzeczy jest trudne. Szczególnie, gdy nazwa sieci i jednego z serwerów, który pozwala na korzystanie z jej są takie same[4]… A odbiorca dokładnie tego przybliżenia koncepcji potrzebował.

Organizacja spotkania bdb. Bez problemów technicznych, punktualnie. Były napoje, pizza, możliwość wysłania fizycznych kartek i okazja do spotkania znajomych. Nie żałuję, że poszedłem.

[1] Piątek 18:00 to raczej czas, kiedy jest sporo alternatyw.
[2] Robiłem kiedyś, dawno temu, przymiarkę, nie wciągnęło mnie. Ogólnie nie mój typ gier.
[3] Wie co to social media, świadomie nie używa, raz na parę m-cy zagląda na LinkedIn.
[4] No niestety, tak właśnie jest.

Debian Trixie

Wczoraj została nowa wersja Debiana, o nazwie kodowej Trixie. Podobnie jak przy okazji Bookworm, wrażenia z instalacji.

Na pierwszy rzut, jeszcze wczoraj, poszedł kontener LXC w którym działa nowy certstream[1]. Nie bardzo miało co pójść nie tak i… nie poszło. Aktualizacja w zasadzie nudna, jedyne o czym warto pamiętać, to zmiana formatu w jakim podawane są źródła apt. Nie była to nowość, bo w końcu na desktopie mam od dawna Debiana Sid.

Rozochociło mnie to i jako drugi zacząłem aktualizować kontener z Linuksem na Chromebooku. No nie polecam. Będę przywracał z backupu. Ale to raczej nie wina Debiana, raczej coś przeoczyłem, lub – co najbardziej prawdopodobne – po prostu są dodatkowe elementy wymagane przy interakcji. Komunikaty niezbyt pomocne, w zasadzie naprowadzają jedynie na zbyt małą ilość przydzielonej pamięci ale… nie wygląda na używaną.

Potem zaktualizowałem jeszcze kontenery LXC w których działają blogi. Wymagane były drobne poprawki związane ze zmianami w składni nginx oraz wersją PHP. Dość standardowo.

Więcej roboty było ze skryptami Pythona i virtual environments. Musiałem wszystkie utworzyć, przy okazji wyszły drobne zmiany w bibliotekach. Problemem jest ilość i konieczność ręcznej roboty, nie stopień komplikacji.

Szybka ściągawka z poleceń, oczywiście polecam lekturę instrukcji:

apt update
apt upgrade
# Zmiana wpisów w sources (sed -i "s/bookworm/trixie/" /etc/apt/sources.list)
apt update
apt upgrade --without-new-pkgs
apt full-upgrade
apt autoremove
apt modernize-sources
# Opcjonalnie
apt list '~o'
apt purge '~o'
apt list '~c'
apt purge '~c'

Jeśli coś ciekawego wyniknie na pozostałych systemach, dam znać.

[1] Notka w trakcie tworzenia, nie ma chronologii, oj, nie ma…