installation.md 8.87 KB
Newer Older
1
---
2 3
title: Instalacja
description: Jak zainstalować Mastodona na serwerze z Ubuntu 18.04
4 5 6 7 8 9 10 11
menu:
  docs:
    parent: administration
    weight: 1
---

<img src="/setup.png" alt="" style="margin: 0; box-shadow: none">

12
## Podstawowa konfiguracja serwera (nieobowiązkowa)
13

14
Jeżeli konfigurujesz nowe urządzenie, zalecane jest zabezpieczenie go. Załóżmy, że korzystasz z **Ubuntu 18.04**:
15

16
### Nie pozwól na logowanie przez SSH z użyciem hasła (tylko kluczem)
17

18
Na początek upewnij się, że jesteś zalogowany(-a) z użyciem klucza, nie hasła – w przeciwnym razie zostaniesz zablokowany(-a). Wielu dostawców hostingu daje możliwość wysłania klucza publicznego i automatycznie konfiguruje logowanie użytkownika root z użyciem klucza.
19

20
Edytuj `/etc/ssh/sshd_config` i znajdź `PasswordAuthentication`. Upewnij się, że nie jest ono skomentowane i jest ustawione na `no`. Po dokonaniu zmian uruchom ponownie sshd:
21 22 23 24 25

```sh
systemctl restart ssh
```

26
### Aktualizacja pakietów systemowych
27 28 29 30 31

```sh
apt update && apt upgrade -y
```

32
### Instalacja fail2ban, aby blokował po wielu nieudanych próbach logowania
33 34 35 36 37

```sh
apt install fail2ban
```

38
Edytuj `/etc/fail2ban/jail.local` i dodaj:
39 40 41

```ini
[DEFAULT]
42
destemail = twój@email.tutaj
43 44 45 46 47 48 49 50 51 52 53
sendername = Fail2Ban

[sshd]
enabled = true
port = 22

[sshd-ddos]
enabled = true
port = 22
```

54
Na koniec, uruchom ponownie fail2ban:
55 56 57 58 59

```sh
systemctl restart fail2ban
```

60
### Zainstaluj firewall i odblokuj tylko porty SSH, HTTP i HTTPS
61

62
Na początek, zainstaluj iptables-persistent. Podczas instalacji zostaniesz zapytany(-a), czy chcesz pozostawić obecne zasady – odmów.
63 64 65 66 67

```sh
apt install -y iptables-persistent
```

68
Edytuj `/etc/iptables/rules.v4` i dodaj:z
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

```
*filter

#  Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

#  Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

#  Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

#  Allow SSH connections
#  The -dport number should be the same port number you set in sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

#  Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

#  Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

#  Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT
```

104
Dzięki iptables-persistent, ta konfiguracja będzie ładowana w trakcie uruchomienia systemu. Ponieważ nie zamierzamy go teraz uruchomić ponownie, załadujmy ją ręcznie:
105 106 107 108 109

```sh
iptables-restore < /etc/iptables/rules.v4
```

110
## Wymagania wstępne
111

112 113 114
- Urządzenie z systemem **Ubuntu 18.04** wraz z dostępem do roota
- **Domena** (lub subdomena) dla serwera Mastodona, np. `example.com`
- Usługa doręczania e-maili lub inny **serwer SMTP**
115

116
Wykonaj te polecenia jako root. Jeżeli nie jesteś obecnie na koncie roota, przełącz się na nie:
117 118 119 120 121

```sh
sudo -i
```

122
### Repozytoria systemu
123

124
Upewnij się, że curl jest zainstalowany:
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142

```sh
apt install -y curl
```

#### Node.js

```sh
curl -sL https://deb.nodesource.com/setup_8.x | bash -
```

#### Yarn

```sh
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
```

143
### Pakiety systemowe
144 145 146 147 148 149 150 151 152 153 154 155

```sh
apt update
apt install -y \
  imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core \
  g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf \
  bison build-essential libssl-dev libyaml-dev libreadline6-dev \
  zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev \
  nginx redis-server redis-tools postgresql postgresql-contrib \
  certbot yarn libidn11-dev libicu-dev libjemalloc-dev
```

156
### Instalacja Ruby
157

158
Będziemy korzystać z rbenv, aby zarządzać wersjami Ruby, ponieważ ułatwia to przejście na prawidłową wersję po pojawieniu się nowego wydania. rbenv musi zostać zainstalowany dla każdego użytkownika który będzie go używał osobno, więc zacznijmy od utworzenia użytkownika, na którym uruchomimy Mastodona:
159 160 161 162 163

```sh
adduser --disabled-login mastodon
```

164
Możemy teraz zalogować się na to konto:
165 166 167 168 169

```sh
su - mastodon
```

170
I przejść do instalacji rbenv i rbenv-build:
171 172 173 174 175 176 177 178 179 180

```sh
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec bash
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
```

181
Po zakończeniu, możemy zainstalować prawidłową wersję Ruby:
182 183

```sh
184 185 186 187 188 189 190 191
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.5.3
rbenv global 2.5.3
```

Domyślna wersja gem dołączona do ruby_2.5.3 nie jest kompatybilna z najnowszym bundlerem, więc musimy zaktualizować gem:

```
gem update --system
192 193
```

194
Musimy też zainstalować bundler:
195 196

```sh
197
gem install bundler --no-document
198 199
```

200
Wróćmy na konto root:
201 202 203 204 205

```sh
exit
```

206 207 208
## Konfiguracja
### Konfiguracja PostgreSQL
#### Ustawienia wydajności (nieobowiązkowe)
209

210
Aby zwiększyć wydajność, możesz skorzystać z [pgTune](https://pgtune.leopard.in.ua/#/), aby wygenerować odpowiednie ustawienia i zmienić odpowiednie wartości w `/etc/postgresql/9.6/main/postgresql.conf` przed ponownym uruchomieniem PostgreSQL poleceniem `systemctl restart postgresql`
211

212
#### Tworzenie użytkownika
213

214
Musisz utowrzyć użytkownika PostgreSQL, z którego będzie mógł korzystać Mastodon. Najprościej użyć uwierzytelniania „ident” w prostym ustawieniu, tzn. użytkownik PostgreSQL nie będzie miał oddzielnego hasła i będzie mógł z niego korzystać linuksowy użytkownik o tej samej nazwie.
215

216
Przejdź do powłoki:
217 218 219 220 221

```sh
sudo -u postgres psql
```

222
Wykonaj:
223 224 225 226 227 228

```
CREATE USER mastodon CREATEDB;
\q
```

229
Gotowe!
230

231
### Konfiguracja Mastodona
232

233
Pora pobrać kod Mastodona. Przełącz się na użytkownika mastodon:
234 235 236 237 238

```sh
su - mastodon
```

239
#### Pobieranie kodu
240

241
Użyj narzędzia git, aby pobrać najnowsze stabilne wydanie Mastodona:
242 243 244 245 246 247

```sh
git clone https://github.com/tootsuite/mastodon.git live && cd live
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
```

248
#### Instalacja ostatnich zależności
249

250
Pora na instalację zależności używających Ruby i JavaScript:
251 252 253 254 255 256 257 258

```sh
bundle install \
  -j$(getconf _NPROCESSORS_ONLN) \
  --deployment --without development test
yarn install --pure-lockfile
```

259
#### Generowanie konfiguracji
260

261
Uruchom interaktywny konfigurator:
262 263 264 265 266

```sh
RAILS_ENV=production bundle exec rake mastodon:setup
```

267
W ten sposób:
268

269 270 271
- utworzysz plik konfiguracyjny
- wykonasz prekompilację zasobów
- utworzysz schemat bazy danych
272

273
Plik konfiguracyjny zostanie zapisany jako `.env.production`. Możesz przejrzeć i edytować go według swoich potrzeb. Możesz odwołać się do [documentacji konfiguracji]({{< relref "configuration.md" >}}).
274

275
Możesz wrócić na użytkownika root:
276 277 278 279 280

```sh
exit
```

281
### Konfiguracja nginx
282

283
Skopiuj przykładową konfigurację nginx z katalogu Mastodona:
284 285 286 287 288 289

```sh
cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
```

290
Zedytuj `/etc/nginx/sites-available/mastodon` u zamień `example.com` na swoją domenę i dokonaj niezbędnych zmian.
291

292
Załaduj ponownie nginx, aby wprowadzić zmiany:
293 294 295 296 297

```sh
systemctl reload nginx
```

298
### Uzyskanie certyfikatu SSL
299

300
Skorzystamy z Let's Encrypt, aby uzyskać bezpłatny certyfikat SSL:
301 302 303 304 305

```sh
certbot certonly --webroot -d example.com -w /home/mastodon/live/public/
```

306
Możesz teraz zedytować `/etc/nginx/sites-available/mastodon`, aby zmodyfikowac wiersze `ssl_certificate` i `ssl_certificate_key`.
307

308
Załaduj ponownie nginx, aby wprowadzić zmiany:
309 310 311 312 313

```sh
systemctl reload nginx
```

314
W tym momencie, po odwiedzeniu domeny w przeglądarce powinieneś(-aś) zobaczyć stronę z błędem przedstawiającą słonia uderzającego w ekran komputera. To dlatego, że nie uruchomiliśmy jeszcze Mastodona.
315

316
### Konfiguracja usług systemd
317

318
Skopiuj szablony usług systemd z katalogu Mastodona:
319 320 321 322 323

```sh
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
```

324
Zedytuj następujące pliki, aby upewnić się czy nazwa użytkownika i ścieżki są prawidłowe:
325 326 327 328 329

- `/etc/systemd/system/mastodon-web.service`
- `/etc/systemd/system/mastodon-sidekiq.service`
- `/etc/systemd/system/mastodon-streaming.service`

330
Na koniec, uruchom i aktywuj nowe usługi systemd:
331 332 333 334 335 336

```sh
systemctl start mastodon-web mastodon-sidekiq mastodon-streaming
systemctl enable mastodon-*
```

337
Będą one automatycznie uruchamiane wraz z systemem.
338

339
**Hurra! To wszystko. Możesz teraz odwiedzić swoją domenę w przeglądarce!**