馃嚞馃嚙 Go to english version of this post / Przejd藕 do angielskiej wersji tego wpisu
W poprzednim wpisie opisa艂em jak uzyska膰 darmowy dost臋p do ca艂kiem niez艂ego VPSa – Oracle Cloud Free Tier. Dzisiaj przedstawi臋 jedn膮 z moich propozycji co mo偶na z nim dalej zrobi膰, a konkretnie poka偶臋 jak, w prosty spos贸b, zmieni膰 taki serwer w centrum do uruchamiania rozwi膮za艅 self-hosted. Zainstalujemy na nim narz臋dzie, czy mo偶e raczej system, YunoHost, kt贸re s艂u偶y do uruchamiania us艂ug, a wyr贸偶nia si臋 tym, 偶e posiada bardzo przyjazny interfejs graficzny, kt贸ry pozwala na zanurkowanie w 艣wiecie self-hosting’u nawet osobom niezbyt technicznym. YunoHost jest oprogramowaniem open-source, kt贸re pod przejrzyst膮 opraw膮 wizualn膮 posiada bardzo dobrze napisany kod, kt贸ry sam zadba o prawid艂owe skonfigurowanie od strony technicznej i bezpiecze艅stwo us艂ug, kt贸re b臋d膮 na nim uruchomione.
EDIT: Jeden z Czytelnik贸w s艂usznie zauwa偶y艂, 偶e nie wszyscy chc膮 instalowa膰 YunoHost w chmurze Oracle, a s膮 tutaj, 偶eby dowiedzie膰 si臋 jak to zrobi膰 np. na maszynie, kt贸ra ju偶 posiada zainstalowany system operacyjny Debian. Tym osobom polecam przeskoczy膰 od razu do rozdzia艂u Instalacja YunoHost.
Przygotowanie
Tak jak wspomnia艂em we wst臋pie, w dalszej cz臋艣ci tego wpisu b臋dziemy potrzebowa膰 serwera w Oracle Cloud, o kt贸ry pisa艂em we wpisie Darmowy VPS z 4 OCPU, 24GB RAMu i dyskiem 200GB. Pisz膮c ten poradnik zak艂adam, 偶e masz ju偶, drogi Czytelniku, za艂o偶one konto na Oracle Cloud, uruchomi艂e艣 na nim instancj臋 tak jak to opisa艂em, otworzy艂e艣 jej porty 80 i 443, w艂膮czy艂e艣 obs艂ug臋 IPv6 oraz umiesz si臋 po艂膮czy膰 poprzez SSH. Jak zawsze polecam do tego celu skorzysta膰 z wygodnego i darmowego (w zakresie tego co jest nam potrzebne) narz臋dzia Termius.
Spe艂niaj膮c powy偶sze warunki mo偶emy przyst膮pi膰 do dzia艂ania!
Instalacja Debiana na instancji Oracle
Je偶eli stworzona przez Ciebie instancja jest w 100% tak jak to opisa艂em to znaczy, 偶e masz na niej zainstalowany system Ubuntu. YunoHost dzia艂a jedynie na Debian’ie, kt贸rego nie ma na li艣cie dost臋pnych system贸w od Oracle. Nie jest to wielki problem, a jedynie dodatkowy krok do wykonania, w kt贸rym przekonwertujemy nasze Ubuntu w艂a艣nie w Debian鈥檃. Wykorzystamy do tego gotowy skrypt dost臋pny na GitHub pod tym linkiem.
Po艂膮czmy si臋 z naszym VPS poprzez SSH. Nast臋pnie pobierzmy w/w skrypt:
curl -fLO https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh
Nadajmy mu uprawnienia do uruchamiania si臋:
chmod a+rx debi.sh
Teraz musimy wykona膰 istotny krok, kt贸ry jest niezb臋dny do prawid艂owego wykonania p贸藕niejszych dzia艂a艅. Chodzi o udost臋pnienie swojego publicznego klucza SSH, kt贸rego u偶ywamy do logowania na tym serwerze, a kt贸ry b臋dzie m贸g艂 by膰 pobrany i wykorzystany przez instalator. Chodzi o to, 偶e musimy dostarczy膰 instalatorowi klucz, kt贸ry wrzucony zostanie na nowo zainstalowany system Debian. Bez tego po zako艅czeniu instalacji i konwersji Ubuntu w Debiana utraciliby艣my dost臋p do naszego serwera! Jest wiele sposob贸w aby to zrobi膰, ja jednak przedstawi taki, do kt贸rego b臋dziemy potrzebowali jedynie konta na GitHub.
Instrukcja jak doda膰 na GitHub publiczny klucz SSH do swojego serwera:
- Je偶eli jeszcze nie masz konta na GitHub to nale偶y je za艂o偶y膰.
- Nast臋pnie po zalogowaniu klikamy na nasz awatar w prawym g贸rnym rogu i z rozwini臋tej listy wybieramy Settings.
- Po lewej w sekcji Access wybieramy SSH and GPG keys po czym po prawej stronie znajdujemy zielony przycisk New SSH key i naciskamy go.
- W oknie, kt贸re wyskoczy w polu Title wpisujemy dowoln膮 nazw臋 jak膮 ten klucz b臋dzie si臋 identyfikowa艂, jako Key type zostawiamy Authentication Key, a w pole tekstowe Key wpisujemy nasz publiczny klucz SSH.
- Wa偶ne: Upewnij si臋, 偶e wrzucasz sw贸j publiczny, a NIE prywatny, klucz! Klucz publiczny mo偶e by膰 jawny i udost臋pniony dla wszystkich w Internecie i nie jest to 偶adne zagro偶enie bezpiecze艅stwa dla Twojego serwera. Natomiast klucza prywatnego nale偶y strzec jak oka w g艂owie i nie udost臋pnia膰 go nigdzie, gdy偶 to w艂a艣nie on jest niezb臋dny do uzyskania dost臋pu do Twojego serwera.
- Potwierdzamy zielonym przyciskiem Add SSH key.
Dla pewno艣ci przedstawiam poni偶ej wygl膮d przyk艂adowego klucza publicznego:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCvYkO7T45XKg95Jhj69xvzO+E74hdzO+KTeNLOsA2RwzAEeKkZCLGT1l3tWNZ57BuK0Umt5qbHOye/gTOAsY+kekIsyN27bzTlKx4O7GfmYIYNsByX0nj76JBCfcxazUwLCxIu6TC8Q+/1KGpwqfBV8rwLD0MEbFVm5ruSaEFDWw== blogtomaszdunia
Tak udost臋pniony klucz SSH b臋dzie dost臋pny pod adresem:
https://github.com/<Tw贸j_login_na_GitHub>.keys
Teraz gdy ju偶 udost臋pnili艣my nasz publiczny klucz SSH mo偶emy kontynuowa膰 instalacj臋 Debian’a na naszym serwerze. Uruchamiamy skrypt:
sudo ./debi.sh --version 11 --authorized-keys-url https://github.com/<Tw贸j_login_na_GitHub>.keys
Zwr贸膰 uwag臋, 偶e musisz zmodyfikowa膰 tre艣膰 tego polecenia zmieniaj膮c fraz臋 <Tw贸j_login_na_GitHub> na odpowiedni膮 warto艣膰 odpowiadaj膮c膮 nazwie Twojego konta na GitHub.
Wszystko gotowe mo偶emy rozpocz膮膰 instalacj臋, a realizuje si臋 to poprzez ponowne uruchomienie maszyny poleceniem:
sudo shutdown -r now
Zostaniemy oczywi艣cie roz艂膮czeni z serwerem. Proces mo偶e potrwa膰 nawet kilka minut, wi臋c zachowaj spok贸j, je偶eli nie od razu b臋dzie mo偶na si臋 do niego pod艂膮czy膰. W mi臋dzyczasie b臋dziemy musieli tak偶e zmieni膰 jeszcze dane do logowania przez SSH, gdy偶 teraz b臋dziemy logowali si臋 do zupe艂nie innego systemu. Zmianie ulegnie nazwa u偶ytkownika, na kt贸rego b臋dziemy si臋 logowa膰. Stary u偶ytkownik nazywa艂 si臋 ubuntu, a nowy to debian.
PS: Je偶eli czujesz wewn臋trzn膮 potrzeb臋 to po zako艅czeniu instalacji mo偶esz ju偶 usun膮膰 sw贸j publiczny klucz SSH z GitHuba.
Instalacja YunoHost
Gdy konfiguracja Debian’a zostanie ju偶 zako艅czona to b臋dziemy mogli po艂膮czy膰 si臋 z serwerem. Od tego momentu instrukcja jest uniwersalna dla dowolnego urz膮dzenia z zainstalowanym Debian’em. W pierwszej kolejno艣ci oczywi艣cie aktualizacja systemu i jego pakiet贸w:
sudo apt update
sudo apt upgrade -y
Nast臋pnie instalujemy niezb臋dne sk艂adniki:
sudo apt install htop curl unzip tmux -y
Dalej skorzystamy z narz臋dzia tmux (Terminal Multiplexer), kt贸re w skr贸cie pozwala na tworzenie i zarz膮dzanie wieloma wirtualnymi terminalami. Uruchamiamy sesj臋 tmux:
tmux new -s yuno
Przechodzimy na konto root:
sudo -i
Pobieramy skrypt instalacyjny YunoHost i rozpoczynamy instalacj臋:
curl https://install.yunohost.org | bash
Proces instalacji jest banalny i praktycznie nic nie trzeba robi膰 w jego trakcie, wi臋c nie b臋d臋 opisywa艂 go szczeg贸艂owo. Po zako艅czeniu otrzymamy informacj臋, 偶e dalsza konfiguracja b臋dzie przebiega艂a ju偶 z poziomu przegl膮darki po wej艣ciu na adres:
https://<ip_serwera>/
Tak te偶 robimy, czyli otwieramy przegl膮dark臋, wpisujemy stosowny adres i potwierdzamy. Naszym oczom powinno pojawi膰 si臋 ostrze偶enie o tym, 偶e po艂膮czenie mo偶e nie by膰 bezpieczne. Jest to nam dobrze znane zachowanie przegl膮darki, kt贸re podyktowane jest tym, 偶e nie mamy zainstalowanego certyfikatu SSL dla tej domeny. Na tym etapie nie jest to istotne. Przeklikujemy si臋 przez to ostrze偶enie szukaj膮c przycisku Akceptuj臋 ryzyko i mimo to chc臋 kontynuowa膰 lub co艣 w tym stylu, dok艂adna tre艣膰 zale偶y od tego jakiej przegl膮darki u偶ywasz.
Naszym oczom uka偶e si臋 ekran powitalny YunoHost, kt贸ry gratuluje nam pomy艣lnej instalacji i zach臋ca do dalszej konfiguracji. Naciskamy zatem przycisk Rozpocznij [1]. W ustawieniach domeny g艂贸wnej definiujemy pod jakim adresem dost臋pny b臋dzie ten panel administracyjny (oraz panel u偶ytkownika), czyli ustawiamy alias, kt贸ry sprawi, 偶e nie b臋dziemy musieli u偶ywa膰 adresu IP serwera jako odno艣nika do naszego YunoHost. Opcje s膮 dwie: mo偶na podpi膮膰 tutaj swoj膮 domen臋 (lub subdomen臋) zewn臋trzn膮 lub skorzysta膰 z subdomen udost臋pnionych przez YunoHost. Mog膮 si臋 one ko艅czy膰 na:
- nohost.me
- noho.st
- ynh.fr
呕eby zbytnio nie komplikowa膰 sprawy skorzystamy w艂a艣nie z tego drugiego rozwi膮zania, a wi臋c wybieramy opcj臋 Nie posiadam domeny… [2], w pole tekstowe Nazwa domeny [3] wpisujemy wybrany przez nas ci膮g znak贸w i potwierdzamy przyciskiem Dalej [4]. Na nast臋pnej stronie tworzymy konto administratora. Wype艂niamy pola: nazwa u偶ytkownika [5], Imi臋 i nazwisko [6] i dwa razy podajemy has艂o [7]. Zatwierdzamy przyciskiem Dalej [8]. Chyba nie musz臋 tutaj nikogo poucza膰, 偶e has艂o powinno by膰 odpowiednio mocne, bo jest ono jedynym zabezpieczeniem naszego panelu administracyjnego przed nieuprawnionym dost臋pem, a ca艂a ta infrastruktura jest dost臋pna w otwartym Internecie. Na koniec zostaniemy jeszcze poproszeni o finalne potwierdzenie przyciskiem OK [9]. Po tym wszystkim pozostaje nam ju偶 tylko czeka膰 na zako艅czenie procesu, po czym zostaniemy przeniesieni do g艂贸wnego panelu sterowania.
Istotne jest to, 偶e od teraz do serwera nale偶y 艂膮czy膰 si臋 wykorzystuj膮c po艣wiadczenia podane podczas tworzenia konta administratora. A wi臋c nie logujemy si臋 na u偶ytkownika debian tylko nowoutworzonego i wykorzystujemy nowe has艂o, a nie klucz SSH. Po pierwszym logowaniu dobrze jest z powrotem wr贸ci膰 do logowania si臋 przy u偶yciu kluczy SSH. Jak to zrobi膰 opisa艂em tutaj. Istotne jest te偶, aby wy艂膮czenie mo偶liwo艣ci uwierzytelnienia has艂em wykona膰 z poziomu interfejsu webowego YunoHost poprzez wej艣cie w (G艂贸wny panel sterowania) -> Narz臋dzia -> Ustawienia YunoHost -> sekcja SSH -> Password authentication -> zmieni膰 na Nie, a nie poprzez edycj臋 pliku sshd_config tak jak to opisa艂em w tym wpisie. Oczywi艣cie obie formy zadzia艂aj膮 tak samo, z tym 偶e edytuj膮c plik z poziomu terminala sprawimy, 偶e YunoHost b臋dzie nam p贸藕niej zg艂asza艂 jako b艂膮d, i偶 wykry艂 jego modyfikacj臋, co mo偶e powodowa膰 konflikt w konfiguracji.
Podstawowa konfiguracja – przygotowanie do pracy
Po wej艣ciu do g艂贸wnego panelu sterowania YunoHost polecam w pierwszej kolejno艣ci wej艣膰 do Aktualizacja systemu. System zostanie od razu przeskanowany w poszukiwaniu pakiet贸w, kt贸re mo偶na zaktualizowa膰. Po zako艅czeniu skanowania potwierdzamy na dole zielonym przyciskiem Aktualizuj wszystkie pakiety. Po uruchomieniu pierwszych us艂ug to w艂a艣nie z poziomu tego menu b臋dzie mo偶na je r贸wnie偶 zaktualizowa膰. Po zobaczeniu dw贸ch komunikat贸w – Wszystkie pakiety systemowe s膮 aktualne! i Wszystkie programy s膮 aktualne! – wracamy do panelu g艂贸wnego.
Nast臋pnie miejsce, w kt贸re powinni艣my zajrze膰 to Diagnostyka. Jest to sprytne narz臋dzie YunoHost, kt贸rego zadaniem jest przeskanowanie naszej konfiguracji i sprawdzenie czy wszystko jest ustawione prawid艂owo. Po zako艅czeniu skanowania zobaczymy cztery rodzaje marker贸w:
- niebieskie – informacyjne, przedstawiaj膮ce pewne istotne informacje, ale nie wymagaj膮ce dzia艂ania,
- zielone – potwierdzaj膮ce, 偶e dany parametr jest ustawiony prawid艂owo,
- 偶贸艂te – wskazuj膮ce, 偶e co艣 nie jest ustawione prawid艂owo, ale nie jest to kluczowa funkcja,
- czerwone – krytyczne, kt贸re okre艣laj膮, 偶e co艣 istotnego jest ustawione nieprawid艂owo i tym samym co艣 przez to mo偶e dzia艂a膰 nieprawid艂owo.
Rozs膮dnym b臋dzie zaj膮膰 si臋 w pierwszej kolejno艣ci problemami zaznaczonymi na czerwono. W moim przypadku narz臋dzie diagnostyczne zg艂osi艂o problem z tym, 偶e prawid艂owo otwarte mam porty 22, 80 i 443, jednak do poprawnego dzia艂ania potrzebne jest jeszcze otwarcie post贸w 25, 587, 993, 5222 i 5269. Pozosta艂e czerwone markery widnia艂y w sekcji Email, ale nie b臋dziemy si臋 nimi teraz przejmowa膰, bo s膮 one spowodowane tym, 偶e port 25 jest na ten moment zamkni臋ty.
Wskazano nam palcem, kt贸re porty nale偶y otworzy膰, wi臋c zr贸bmy to. To jak to zrobi膰 w Oracle Cloud opisa艂em do艣膰 szczeg贸艂owo tutaj (na przyk艂adzie port贸w 80 i 443). Jedyna r贸偶nica jest taka, 偶e zmiany musimy wprowadzi膰 jedynie od strony interfejsu Oracle (doda膰 odpowiednie Ingress Rules), bo od strony serwera wszystko za艂atwi za nas YunoHost. Pami臋taj, aby otworzy膰 r贸wnie偶 porty w zakresie adresacji IPv6. Po wprowadzeniu zmian zapuszczamy proces diagnostyki jeszcze raz.
W moim przypadku zosta艂y jeszcze dwa czerwone markery zwi膮zane z obs艂ug膮 poczty. Oba wskazuj膮 na problem z wysy艂aniem, bo pomimo otwarcia port 25 wydaje si臋 zamkni臋ty, a tak偶e jest problem z reverse DNS. Jest to prawdopodobnie spowodowane tym, 偶e cz臋艣膰 dostawc贸w us艂ug chmurowych blokuje mo偶liwo艣膰 wysy艂ania poczty z oferowanych przez siebie serwer贸w i wygl膮da na to, 偶e Oracle nale偶y do tego grona. Da si臋 to obej艣膰 poprzez skorzystanie z odpowiedniego przeka藕nika (po ang. relay), ale nie b臋dziemy dzisiaj si臋 tym zajmowa膰.
Skoro najwi臋ksze problemy mamy w miar臋 ogarni臋te to zejd藕my poziom ni偶ej i zwr贸膰my uwag臋 na 偶贸艂te markery. W moim przypadku pierwszym problemem zg艂aszanym na 偶贸艂to by艂 temat dopuszczenia repozytori贸w backports (z ang. wsteczne porty) w mened偶erze pakiet贸w. Repozytoria backports to specjalne repozytoria, kt贸re zawieraj膮 nowsze wersje oprogramowania, kt贸re zosta艂y pierwotnie opracowane dla nowszych wersji dystrybucji Linux’a. S膮 u偶ywane, aby zapewni膰 u偶ytkownikom starszych wersji dystrybucji Linux’a dost臋p do nowszego oprogramowania bez konieczno艣ci aktualizacji ca艂ego systemu operacyjnego do nowszej wersji. Zainstalowanie oprogramowania z repozytorium backports mo偶e prowadzi膰 do niestabilno艣ci lub konflikt贸w, dlatego YunoHost podpowiada nam, aby ich nie stosowa膰, a my pos艂uchamy tej rady i wy艂膮czymy je z listy mened偶era pakiet贸w.
W pierwszej kolejno艣ci ustalmy, o kt贸re repozytoria chodzi:
sudo grep -nr backport /etc/apt/sources.list*
Ja w odpowiedzi na to polecenie otrzyma艂em nast臋puj膮cy wynik:
/etc/apt/sources.list:10:# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
/etc/apt/sources.list:14:# bullseye-backports, previously on backports.debian.org
/etc/apt/sources.list:15:deb http://deb.debian.org/debian bullseye-backports main
/etc/apt/sources.list:16:deb-src http://deb.debian.org/debian bullseye-backports main
Jak wida膰 s艂owo kluczowe backport, kt贸rego szukamy wyst臋puje czterokrotnie w pliku /etc/apt/sources.list w liniach 10, 14, 15 i 16, z czego pierwsze dwie s膮 liniami zakomentowanymi, czyli niejako wy艂膮czonymi, ale bez usuwania ich z listy. Pozostaje nam zrobi膰 to samo z liniami 15 i 16 tego pliku. Wejd藕my zatem do pliku z list膮 repozytori贸w mened偶era pakiet贸w i dodajmy znak # gdzie trzeba:
sudo nano /etc/apt/sources.list
Plik zapisujemy i wychodzimy z niego.
Dla pewno艣ci przeskanujmy system jeszcze raz przy u偶yciu narz臋dzia do diagnostyki. W moim przypadku wygl膮da na to, 偶e nie znaleziono wi臋cej problem贸w, wi臋c system wydaje si臋 gotowy do dalszych dzia艂a艅.
Bazowa kopia zapasowa
Podstawowa konfiguracja zako艅czona. Na tym etapie dobr膮 praktyk膮 b臋dzie zrobienie sobie kopii zapasowej czystego systemu, kt贸r膮 w razie czego b臋dzie mo偶na w 艂atwy spos贸b przywr贸ci膰. Ja zawsze robi臋 tak膮 kopi臋 plus poza cyklicznymi backup’ami wykonuj臋 jeszcze dodatkowe kopie przed uruchomieniem ka偶dej nowej us艂ugi (aplikacji).
Kopie zapasowe wykonuje si臋 w (G艂贸wny panel sterowania) -> Kopia -> Lokalne archiwa (local) -> zielony przycisk po prawej +Nowa kopia. Tak utworzon膮 kopi臋 mo偶na pobra膰 z poziomu graficznego interfejsu webowego lub z poziomu terminala np. poprzez jak膮艣 automatyzacj臋. Kopie znajduj膮 si臋 na serwerze pod 艣cie偶k膮 – /home/yunohost.backup/archives/<data_wykonania_kopii>.tar.
Co dalej?
O tym co dalej mo偶na zrobi膰 korzystaj膮c z YunoHost opowiem przy innej okazji. Celem tego wpisu by艂o jedynie pokazanie jak zainstalowa膰 YunoHost i jest to, wydaje mi si臋, dobra baza do kolejnych wpis贸w, w kt贸rych ju偶 bardziej szczeg贸艂owo opisz臋 jak uruchamia膰 r贸偶ne us艂ugi na tak skonfigurowanym 艣rodowisku. Katalog aplikacji (us艂ug) jakie mo偶na uruchomi膰 przy u偶yciu YunoHost jest dost臋pny tutaj i trzeba przyzna膰, 偶e jest obszerny. Z ciekawszych pozycji wskaza艂bym:
- code-server – edytor kodu Virtual Studio Code w wersji self-hosted,
- Discourse – forum dyskusyjne,
- Domoticz – system do smarthome,
- FreshRSS – agregator RSS,
- Gitea – zarz膮dzanie kodem 藕r贸d艂owym,
- Grafana – narz臋dzie analityczne,
- Home Assistant – system do smarthome,
- n8n – narz臋dzie do automatyzacji,
- Mastodon – sie膰 spo艂eczno艣ciowa,
- Nextcloud – chmura na pliki,
- Nitter – alternatywny front-end dla Twittera,
- PeerTube – Youtube tylko self-hosted,
- phpMyAdmin – zarz膮dzanie bazami MySQL,
- Pi-hole – serwer DNS,
- Pixelfed – Instagram tylko self-hosted,
- Roundcube – klient poczty e-mail,
- Transmission – klient torrent (P2P),
- Vaultwarden – mened偶er hase艂 Bitwarden w wersji self-hosted,
- Wallabag – agregator trze艣ci do przeczytanie p贸藕niej (po ang. read it later),
- WireGuard – serwer VPN,
- WordPress – platforma do blogowania,
- WriteFreely – platforma do blogowania jak WordPress ale w Fediverse.
I to s膮 tylko wybrane wyrywkowo na szybko, bo jest tego du偶o du偶o wi臋cej i pewnie pomin膮艂em kilka naprawd臋 interesuj膮cych i/lub nieznanych mi us艂ug. Jest te偶 sporo ciekawych pozycji w waitlist’cie (z ang. li艣cie oczekuj膮cych) do implementacji.
Micha艂 Stankiewicz
@piotrsikora co s膮dzisz?@to3k
pacyfista za dwa trzysta
przez self-hosting ja rozumiem hostowanie czego艣 na kompie dzia艂aj膮cym w pawlaczu 24/7 a nie 艂膮czenie si臋 zdalne z chujwieczym bo za darmo daje. Tytu艂 wprowadza w b艂膮d
Tomasz Dunia
Dla mnie self-hosting to uruchamianie w艂asnych us艂ug zamiast korzystanie z takich uruchomionych przez kogo艣 innego.
walp00
my艣l臋, jednak 偶e kolega wy偶ej ma racj臋. Jakby przyj膮膰 twoj膮 definicj臋, to self-hostingiem b臋dzie wszystko za wyj膮tkiem us艂ugi nazwanej hosting.
Tomasz Dunia
Dlatego doda艂em EDIT we wst臋pie, gdzie wskaza艂em, 偶e ten poradnik jest r贸wnie偶 do u偶ycia na ka偶dym innym serwerze, kt贸ry nie dzia艂a na Oracle 馃槈
Pingback: Uruchomi艂em polsk膮 instancj臋 WriteFreely Polska – Tomasz Dunia Blog
Pingback: YunoHost – self-hosting in a friendly form [ENG 馃嚞馃嚙] – Tomasz Dunia Blog
Pingback: YunoHost – kopia zapasowa – Tomasz Dunia Blog
Pingback: #Outernet – RSS – Tomasz Dunia Blog