V tejto časti si nakonfigurujeme servery. Okrem webového Apache2 servera budeme používať ešte jeden server, ktorý bude využitý ako reverzný proxy. Kto nevie načo slúži reverzný proxy, tak nech sa pozrie na tento článok, kde som to detailne popisoval a vysvetlil som tiež ako nastavíme NAT. Ak niekto nebude používať reverzný proxy server, tak konfigurácia webového servera Apache2 bude úplne iná, ale v tomto článku sa týmto nebudem zaoberať.
Všetky články seriálu
- Nasadzujeme Nextcloud
- Systémové požiadavky pre Nextcloud
- LXC pre Nextcloud
- Pripravujeme Debian 10 pre Nextcloud
- Vytvárame doménu pre Nextcloud
- LAMP stack pre Nextcloud
- Konfigurácia serverov pre Nextcloud
- Inštalácia Nextcloud Hub
- Poinštalačné nastavenia v Nextcloud Hub
- Kancelária pre Nextcloud
Konfigurácia Nginx
Predpokladom je, že reverzný proxy server Nginx nám už niekde beží, takže sa môžeme pomocou SSH do systému prihlásiť.
- IP adresa reverzného proxy: 192.168.1.10
- IP adresa webového servera: 192.168.1.108
- Doména pre Nextcloud: nextcloud.ddns.info (doména je vymyslená)
ssh jany@192.168.1.10
Vytvorime si pomocou editora nano, konfiguračný súbor pre našu doménu
sudo nano /etc/nginx/sites-available/www.nextcloud.ddns.info
Konfiguračný súbor bude vyzerať následovne
server {
listen 80;
server_name nextcloud.ddns.info;
return 301 http://www.nextcloud.ddns.info$request_uri;
}
server {
listen 80;
server_name www.nextcloud.ddns.info;
location / {
proxy_pass http://192.168.1.108;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Konfiguračný súbor zatvorime Ctrl+X
uložíme Y
a Enter
. Konfiguráciu skontrolujeme po syntaktickej stránke. Vytvoríme symbolicky link odkiaľ číta konfiguráciu nginx a znova načítame konfiguráciu.
sudo nginx -t
sudo ln -s /etc/nginx/sites-available/www.nextcloud.ddns.info /etc/nginx/sites-enabled/www.nextcloud.ddns.info
sudo systemctl reload nginx
Nextcloud (a vôbec všetky weby) by mali fungovať šifrovane cez https. Preto si pomocou certbotu stiahneme a aplikujme do systému certifikáty od Let’s Encryptu. Kto nevie čo je https, certbot, Let’s Encrypt, tak nech si pozrie článok, kde som to vysvetlil.
sudo certbot --nginx -d nextcloud.ddns.info -d www.nextcloud.ddns.info
Ak sme certbot inštalovali teraz a generujeme prvý certifikát, tak dostaneme niekoľko otázok na ktoré odpovedáme Y
alebo N
. Ak ak generujeme ďaší certifikát, tak dostaneme len jednu otázku na ktorú odpovieme číslom 2
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
Ak je všetko v poriadku, tak výsledkom generovania je gratulácia skriptu, ale o tom som písal tomto článku.
Konfigurácia Apache2
Presunieme sa na webový server a nakonfigurujeme virtualhost pre budúci Nextcloud Hub. Čiže prihlásime sa cez SSH do systému a vytvoríme konfiguračný súbor pre virtualhost
ssh jany@192.168.1.108 -p 2299
sudo nano /etc/apache2/sites-available/www.nextcloud.ddns.info.conf
Následne do súboru vložíme toto. Vo vyznačených riadkoch sa nachádzajú smernice, ktoré zabezpečujú forward reálnej IP adresy klienta na Apache server. Ak by tam smernice neboli, tak všetko by fungovalo, ale Apache by dostával vždy request s IP adresou reverzného proxy servera.
<VirtualHost *:80>
DocumentRoot "/var/www/html/www.nexcloud.ddns.info"
ServerName www.nextcloud.ddns.info
ErrorLog ${APACHE_LOG_DIR}/nextcloud.error
CustomLog ${APACHE_LOG_DIR}/nextcloud.access combined
<Directory /var/www/html/www.nextcloud.ddns.info/>
Require all granted
Options FollowSymlinks MultiViews
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/www.nextcloud.ddns.info
SetEnv HTTP_HOME /var/www/html/www.nextcloud.ddns.info
Satisfy Any
</Directory>
RemoteIPHeader X-Real-IP
RemoteIPInternalProxy 192.168.1.10
</VirtualHost>
Súbor môžeme zavrieť. Povolíme konfigurák virtualhostu. Ešte musíme vytvoriť DocumentRoot a skontrolujeme ho po syntaktickej stránke.
sudo a2ensite www.nextcloud.ddns.info.conf
sudo mkdir -p /var/www/html/www.nextcloud.ddns.info
sudo apache2ctl -t
Dostávame odpoveď, že niečo nie je v poriadku
AH00526: Syntax error on line 23 of /etc/apache2/sites-enabled/www.test-cloud.ddns.info.conf:
Invalid command 'RemoteIPHeader', perhaps misspelled or defined by a module not included in the server configuration
Action '-t' failed.
The Apache error log may have more information.
Z tohto výpisu zisťujeme, že nemáme povolený modul remoteip, takže ho povolíme a môžeme povoliť aj ďalšie moduly, ktoré budeme potrebovať. Znova skonrolujeme syntax a po reštarte by mohlo byť všetko OK.
sudo a2enmod remoteip headers env dir mime
sudo apache2ctl -t
sudo systemctl restart apache2
V tejto chvíli by sme mali mať pripravený Apache2 server, vrátane reverzného proxy. v ďalšej časti sa už budeme konečne venovať inštalácii Nextcloud Hub.