1. Zainstaluj Node.js i npm
Apache2 nie obsługuje natywnie Node.js, więc musisz zainstalować środowisko uruchomieniowe dla Next.js:
- Zaktualizuj pakiety:
sudo apt update
- Zainstaluj Node.js (zalecam wersję LTS, np. 20.x w marcu 2025):
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
- Sprawdź wersje:
node -v
2. Skopiuj projekt Next.js na serwer
- Użyj Git lub SCP, aby przesłać pliki projektu na serwer. Na przykład:
- Użyj Git lub SCP, aby przesłać pliki projektu na serwer. Na przykład:
git clone <twoje-repo> /var/www/next-app cd /var/www/next-app
- Zainstaluj zależności:
npm install
3. Zbuduj aplikację
- W katalogu projektu wykonaj:
npm run build
To wygeneruje zoptymalizowane pliki w folderze .next.
4. Uruchom aplikację Next.js
- Standardowo Next.js działa na porcie 3000. Uruchom ją:
npm run start
ednak aby działała w tle, użyj menedżera procesów, np. PM2:
- Zainstaluj PM2:
npm install -g pm2
- Uruchom aplikację:
pm2 start npm --name "next-app" -- run start -- -p 3000
Zapisz konfigurację i ustaw automatyczny start po restarcie serwera:
pm2 save pm2 startup
-
- (Wykonaj instrukcje wyświetlone po pm2 startup).
5. Skonfiguruj Apache2 jako reverse proxy
Apache2 będzie przekazywał ruch z portu 80 (lub 443, jeśli używasz HTTPS) do Next.js na porcie 3000:
- Włącz moduły proxy w Apache2:
sudo a2enmod proxy proxy_http
- Stwórz lub edytuj plik konfiguracyjny witryny, np. /etc/apache2/sites-available/next-app.conf:
<VirtualHost *:80> ServerName twojadomena.com ProxyPreserveHost On ProxyPass / https://localhost:3000/ ProxyPassReverse / https://localhost:3000/ ErrorLog ${APACHE_LOG_DIR}/next-app-error.log CustomLog ${APACHE_LOG_DIR}/next-app-access.log combined </VirtualHost>
3. Aktywuj konfigurację:
sudo a2ensite next-app.conf sudo systemctl restart apache2
4. Sprawdź, czy Apache2 działa poprawnie:
sudo systemctl status apache2
6. (Opcjonalne) Dodaj HTTPS z Let’s Encrypt
Jeśli chcesz zabezpieczyć ruch:
- Zainstaluj Certbot:
sudo apt install certbot python3-certbot-apache
2. Wygeneruj certyfikat:
sudo certbot --apache -d twojadomena.com
- Certbot automatycznie zaktualizuje konfigurację Apache2, aby używać HTTPS.
7. Sprawdź działanie
- Otwórz przeglądarkę i wpisz https://twojadomena.com (lub https://, jeśli skonfigurowałeś SSL).
- Jeśli wszystko działa, Twoja aplikacja Next.js powinna być dostępna.
Uwagi
- Port 3000: Upewnij się, że port 3000 nie jest blokowany przez zaporę sieciową (np. ufw):
sudo ufw allow 3000
Jednak jeśli używasz Apache2 jako proxy, wystarczy otworzyć port 80 (i 443 dla HTTPS):
sudo ufw allow 80 sudo ufw allow 443
- Konflikty z Apache2: Jeśli Apache2 obsługuje inne strony, upewnij się, że konfiguracja ServerName jest unikalna i nie koliduje z innymi witrynami.
To wszystko! Twoja aplikacja Next.js powinna teraz działać na serwerze VPS z Debianem i Apache2. Jeśli napotkasz problemy, daj znać, a pomogę je rozwiązać.