Instalacja Discourse na VPS KVM

Poradniki
vps, discourse
SystemZ
SystemZ Admin lvlup.pro

Jeśli chciałbyś mieć takie forum jak forum.lvlup.pro to użyj tego prostego poradnika :)

VPS

Wymagania

VPS

Potrzebujemy VPSa który będzie używać pełnej wirtualizacji czyli np. KVM, Xen lub Hyper-V

W tym poradniku będzie użyty VPS z oferty KVM Game Pro https://lvlup.pro/oferta/vps-kvm-game-pro/ nawet bez użycia Cloudflare powinien wytrzymać małe ataki DDoS którymi czasami padają fora. Wystarczy nam pakiet z 2GB RAM.

Powiadomienia

Oprócz VPSa potrzebujemy pewnego konta pocztowego wysyłającego emaile. Wiadomości email są kluczowe dla działania forum np. aby uzyskać dostęp administratora oraz aby nowi użytkownicy mogli aktywować konto. Oczywiście nie chcemy aby nasze emaile trafiały do spamu jak to ma miejsce w sporej ilości przypadków stron dlatego skorzystamy z jednego z pewnych dostawców wysyłki email którzy się w tym specjalizują.

Przykładowi dostawcy:

W tym poradniku użyjemy Mailgun ze względu na banalną konfigurację, przeciętne forum nie zużyje całego limitu 10k :)

Domena lub subdomena

Ostatnia z potrzebnych rzeczy to nazwa pod którą będzie nasze forum. Więcej można przeczytać w tym wątku https://lvlup.rok.ovh/t/domena/39

E-mail

Zanim zaczniemy konfigurować forum na VPS utwórzmy oraz aktywujmy konto na mailgun.com

Po dodaniu domeny oraz wymaganych wpisów w strefie DNS według instrukcji w panelu mailgun.com wchodzimy w panelu w swoją domenę/subdomenę a następnie klikamy Manage SMTP credentials umożliwi nam to stworzenie osobnego loginu i hasła dostępu do skrzynki używanej na forum.

Gdy jesteśmy już w tej zakładce klikamy New SMTP Credential Uzupełniamy następnie: Login - np. forum Password - najlepiej długie i losowe hasło nie używane nigdzie indziej Confirm Password - powtarzamy to co wyżej

Zapisujemy sobie dane który tu wpisaliśmy i klikamy Create Credential. Gotowe, mamy już dane potrzebne do konfiguracji forum :)

VPS

Po zamówieniu i opłaceniu usługi otrzymujemy dane na maila:

625x500

Mając teraz IP VPSa dodajemy do strefy DNS wpis A z IP VPS, instrukcje znajdziesz w wątku o domenie https://lvlup.rok.ovh/t/domena/39

Włączamy VPS i logujemy się według instrukcji: https://lvlup.rok.ovh/t/laczenie-sie-przez-ssh-do-vps/22

Następnie dla uproszczenia logujemy się od razu na konto root

sudo su

Należy wprowadzić swoje hasło użytkownika user

Instalacja potrzebnych narzędzi

Aby ściągnąć pliki Discourse należy mieć zainstalowany system zarządzania wersjami git Do edycji pliku konfiguracyjnego użyjemy łatwego w obsłudze edytora nano.

apt-get install git nano

Prawdopodobnie takie narzędzia będą już wcześniej zainstalowane ale nie zaszkodzi się upewnić :)

Instalacja Docker'a

Docker to nowoczesne narzędzie które zarządza kontenerami czyli w dużym uproszczeniu małymi VPSami które zawierają wszystko co potrzeba, dzięki czemu uruchomienie i aktualizacja nawet skomplikowanych aplikacji jest bardzo prosta.

Wystarczy jedna komenda

wget -qO- https://get.docker.com/ | sh

Po około minucie Docker jest zainstalowany i możemy przystąpić do instalacji Discourse

Instalacja Discourse

Pliki forum

Tworzymy katalog w którym będą pliki forum, następnie ściągamy do niego potrzebne pliki. Ostatnia komenda kopiuje przykładową domyślną konfigurację tak abyśmy mogli szybko zacząć pracę nad forum nie wczytując się w każdą zmienną konfiguracji

mkdir /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
cp samples/standalone.yml containers/app.yml

Konfiguracja

Odpalamy edytor i zmieniamy kilka rzeczy w konfiguracji przed instalacją forum

nano /var/discourse/containers/app.yml

Ukaże nam się mniej więcej takie okno edytora.

690x454

Szybkie wprowadzenie jak z niego korzystać:

Ctrl + W Szukanie

Ctrl + X Zapis

Ctrl + X Wyjście

y a potem Enter Potwierdzenie jednej z powyższych operacji

Sekcje konfiguracji do zmiany

DISCOURSE_DEVELOPER_EMAILS: 'me@example.com'

Zamiast me@example.com wpisujemy swój adres email na który chcemy otrzymywać wiadomości z forum, również te dotyczące naszej funkcji admina czyli np. informacje o aktualizacjach. Pierwsze konto admina będzie miało taki adres email i musisz mieć dostęp do tej skrzynki aby to potwierdzić.

DISCOURSE_HOSTNAME: 'discourse.example.com'

Tu discourse.example.com zamieniamy na naszą domenę lub subdomenę pod którym chcemy aby pojawiło się forum czyli np. mojefajneforum.pl lub mojeforum.hostmc.pl

Potrzebujemy jeszcze ustawić trzy linie konfiguracji, upewnijmy się że każda z nich usunięty znak #, są to

  • DISCOURSE_SMTP_ADDRESS tu wpisujemy smtp.mailgun.org
  • DISCOURSE_SMTP_USER_NAME wpisujemy ustalony wcześniej w mailgun login
  • DISCOURSE_SMTP_PASSWORD miejsce dla ustalonego wcześniej hasła w mailgun

Okej, mamy co trzeba, teraz zapiszemy i wyjdziemy z edytora. Wciskamy Ctrl + O a następnie Enter Teraz Ctrl + X i właśnie wróciliśmy do wiersza poleceń.

Instalacja

Teraz możemy uruchomić właściwą instalację forum

./launcher bootstrap app

Proces ten trwa około 4-10min Gdy wszystko się już zainstaluje można przystąpić do uruchomienia forum.

Uruchomienie

./launcher start app

Forum powinno być już dostępne pod naszym wybranym adresem. Wszystko jest skonfigurowane tak że przy restarcie VPSa forum włączy się automatycznie.

Dodatkowe informacje

Ten poradnik jest spolszczoną, uproszczoną i skróconą formą oficjalnego poradnika instalacji dostępnego tu: https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md

anon82750602
anon82750602

Miałem napisać. Fajnie ;)

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Postępowałem zgodnie z poradnikiem, ale przy uruchamianiu:

[code]Unable to find image 'local_discourse/app:latest' locally Pulling repository docker.io/local_discourse/app /usr/bin/docker: Error: image local_discourse/app:latest not found. See '/usr/bin/docker run --help'. [/code]

SystemZ
SystemZ Admin lvlup.pro

Przy uruchamianiu czyli przy tym kroku?

./launcher bootstrap app
Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Nie, przy start app - ale robiąc z oryginalnym poradnikiem wyszło na to, że discourse koliduje z Apache

SystemZ
SystemZ Admin lvlup.pro

Pewnie że koliduje, nginx który jest proxy dla Discourse też korzysta z portu 80 jak Apache :P

Szymon
Szymon

@SystemZ mocno obciąża te forum serwer (patrząc na twój przykład) w zależności od ilości osób na forum? Ile mniej więcej zajmuje aktualna baza danych forum dla lvlup?

SystemZ
SystemZ Admin lvlup.pro

Na początku wystarcza pakiet KVM Game Pro 2GB RAM, tak jak teraz to dla komfortu lepiej mieć pakiet 4GB RAM. Obecnie skompresowany pełny backup forum wraz z obrazkami i zrzutem bazy to ponad 300MB.

Szymon
Szymon

W konfiguracji można znaleźć link do [url=https://meta.discourse.org/t/running-other-websites-on-the-same-machine-as-discourse/17247]tego tematu[/url]. Tam wszystko jest opisane. Tylko jakbyś chciał zrobić proxy z apache to ja nie wiem jak. Korzystam z nginx'a.

koweq
koweq

Czy na OpenVZ będzie działało @SystemZ?

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Będzie problem z Dockerem.

koweq
koweq

@Nieznajomy11 da się to rozwiązać?

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Jeśli dobrze pamiętam, to obecnie mamy OpenVZ 6 więc:

https://openvz.org/Docker_inside_CT

Ewentualnie masz tam też link do 7, ale to chyba nie na te VPS ;) Niestety nie wiem jak to się ma w praktyce, czy to dobrze działa.

koweq
koweq

niestety ten poradnik nie działa. Niby mam tego centosa, robie zgodnie z poradnikiem ale podczas komendy "docker daemon -s vfs" pokazuje coś takiego:

WARN[0000] Your Linux kernel version 2.6.32-48-pve can be unstable running docker. Please upgrade your kernel to 3.10.0. INFO[0000] Graph migration to content-addressability took 0.00 seconds WARN[0000] Running modprobe nf_nat failed with message: ``, error: exit status 1 INFO[0000] Firewalld running: false FATA[0000] Error starting daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain: iptables failed: iptables --wait -t nat -N DOCKER: iptables v1.4.21: can't initialize iptables table `nat': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded.

SystemZ
SystemZ Admin lvlup.pro

Na OpenVZ bym odpuścił Dockera, to będzie zawsze proteza. Na KVM to działa jako powinno.

koweq
koweq

Tylko że to będzie hajs wyrzucony w błoto. Niby według poradnika podesłanego przez @Nieznajomy11 powinno działać a nie działa. Ktoś wie czemu?

P.S: WordPress też potrzebuje dockera?

EDIT: przeczytałem że docker potrzebuje kernela 042stab105.4 i funkcji (?)tun, veth bridge. Czy tego, nie wiem, brakuje? Czy cuś?

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

SystemZ wysyłał już na shoutboxie: https://lvlup.rok.ovh/t/najnowszy-kernel/321/#8?u=systemz

koweq
koweq

Czyli ten poradnik co go podesłałeś nie może działać?

liamdj23
liamdj23

Ja mam Wordpressa na OpenVZ i działa, więc chyba go nie potrzebuje :slight_smile:

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Wygląda na to, że w tym przypadku nie można tego użyć :<

koweq
koweq

Kurczę, a znacie inny silnik forumowy podobny do discoursa który nie potrzebowałby dockera?

koweq
koweq

Szukając rozwiązania mojego problemu (nadal chcę discoursa) na forum meta.discourse.org znalazłem takie cuś: https://github.com/nahtnam2/dontdockmebro Wskazano to jako rozwiązanie problemu

I teraz się zapytam: co to jest i czy powinno działać.

SystemZ
SystemZ Admin lvlup.pro

Ten skrypt ma ponad 2 lata, przy tempie w jakim rozwija się Discourse to wątpię żeby jeszcze działał. Nie ładowałbym się w niewspierane konfigurację bo potem pełno problemów nawet jak by ruszyło, przykładowo Ci może paść przy aktualizacji gdyż skrypty do wdrożenia to też integralna część pisania kodu tego projektu czyli ciągle się zmienia.

Użyj jak człowiek KVM i tyle. Można wbijać gwóźdź wkrętakiem ale po co jak jest młotek? Jest procedura przejścia z OpenVZ na KVM, możesz też kupić osobnego VPS pod to. https://lvlup.rok.ovh/t/przejscie-z-oferty-openvz-na-kvm/588

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Jest jeszcze nodeBB, ale nie wiem, jak z dockerem.

koweq
koweq

Niestety KVM jest jak dla mnie za drogie. Pakiet 2Gb kosztuje dychę więcej niż 4GB OpenVZ. A nawet jeśli zdecydowałbym się na KVM to czy 2GB utrzyma Wordpressa + Discourse + 0,5GB MC i być może jeszcze kilka slotów TSa?

koweq
koweq

Wygląda na to że nodebb nie potrzebuje dockera. Jeśli tak to super! ;)

Jeśli nodebb zadziała zrobię poradnik jak go zainstalować

SystemZ
SystemZ Admin lvlup.pro

Coś za coś, nie da się zjeść ciastka i mieć ciastka ;)

Ekstra, czekam na poradnik odnośnie NodeBB. Niech każdy może zainstalować to czego potrzebuje :slight_smile:

Szymon
Szymon

Mam na serwerze Discourse. Trochę się zdziwiłem jak zobaczyłem, że Docker mi zjada dokładnie 4.2G dysku. Maciej jakieś sposoby na ograniczenie zjadanego dysku przez Dockera (mam VPS KVM tylko z 10GB)?

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

W zależności od RAID, jedna maszyna MC-32 ma domyślnie około 240 GB pojemności całkowitej dysku SSD. Nie jest to dużo i ciężko tutaj dzielić :>

anon82750602
anon82750602

NodeBB używałem na KVM, ale nie wymaga dockera, więc spoko instaluj :slight_smile:

Tylko że ja używałem jeszcze wersji 0.8.x nie wiem jak teraz to wygląda ;v

SystemZ
SystemZ Admin lvlup.pro

Generalnie Discourse wraz z Dockerem trochę zjadają i trzeba się z tym liczyć. Proponuję usunąć stare obrazy po aktualizacjach komendą /var/discourse/launcher cleanup app Po akceptacji przez y skrypt wyszuka stare nieużywane obrazy i je usunie. Jeśli używasz innych aplikacji na Docker trzeba uważać aby nie usunęło też naszych plików niezwiązanych z forum.

Przykład użycia:

/var/discourse/launcher cleanup app

The following command will
- Delete all docker images for old containers
- Delete all stopped and orphan containers

Are you sure (Y/n): y
Starting Cleanup (bytes free 6519496)
Finished Cleanup (bytes free 9029336)

Jak widać jedno odpalenie i przywróciło to nam około 2,5GB miejsca po niedawnej aktualizacji.

kjakkonrad
kjakkonrad

hej mam apache na porcie 80 Pytanko jak to zainstalować na moim serwerku :D
Pytanko czy da się użyć do mailingu gmail'a przecież tam tez chyba można serwer SMTP skonfigurować D:

error
error

kjakkonrad:

hej mam apache na porcie 80 Pytanko jak to zainstalować na moim serwerku Jeśli na tym samym VPSie masz jakąś stronę to https://meta.discourse.org/t/running-other-websites-on-the-same-machine-as-discourse/17247?source_topic_id=27954

Jeśli na tej maszynie ma być tylko discourse, po prostu wyłącz apache service apache stop 😁

kjakkonrad
kjakkonrad

potrzebuje WWW bo własnie wgrywam sklepik, do tego strona i forum :D

SP24
SP24

Ja polecam ten poradnik https://www.digitalocean.com/community/tutorials/how-to-install-discourse-on-ubuntu-16-04. Co prawda jest on po angielsku, ale myślę, że teraz każdy powinien znać angielski. A tak poza tym to twój poradnik nie jest zły (po prostu pokazuję alternatywę dla osób którym coś nie działa)

anon10657637
anon10657637

Ale przecież:

SystemZ:

Ten poradnik jest spolszczoną, uproszczoną i skróconą formą oficjalnego poradnika instalacji dostępnego tu

W dodatku w tym co podlinkowałeś piszę wyraźnie:

An Article from Discourse

Źródło jest jedno i to samo.

Dyskurs
Dyskurs

Cześć. Mam kilka pytań.

  1. Instalował ktoś Discourse na nazwa.pl VPS Start (Konkretnie na Ubuntu ale jeżeli na innym jest łatwiej to okej)?
  2. Da się zainstalować Discourse pod nazwą forum.strona.pl w taki sposób aby na stronie strona.pl był WordPress a na forum.strona.pl Discourse?
  3. Da się zainstalować kilka Discoursów z kilkoma WP na jednym VPS?
  4. Aby zainstalować Discourse potrzebny jest mail płatny tak? Czy może to być mail z home.pl? Mają akurat tanie, czy sam taki mail wystarczy czy trzeba ten mail jeszcze podłączyć do mailgun.com, bo jakiś tam mail przy rejestracji trzeba wpisać, jaki? Czy samo mailgun.com wystarczy?
  5. Czy można ominąć zakup maila w ten sposób, że instaluję na VPS serwer pocztowy do którego podepnę domenę na której będzie stał Discourse aby mieć maila np. noreply@strona.pl ?

Od kilku dni próbuję zainstalować to wszystko i z góry napiszę, że przejrzałem już wszystkie tutoriale, robię to pierwszy raz, jak na razie udało mi się... Zainstalowałem Discourse korzystając z mailjet w którym podpiąłem gmaila ale nie przyszedł mi żaden mail z Discoursa aby aktywować konto admina. Czytałem na stronie, że z gmila nie dochodzą.

TheMultii
TheMultii

Czemu chcesz użyć płatnego maila? poste.io jest darmowym, prostym i najłatwiejszym rozwiązaniem. Możesz podpiąć jakikolwiek inny darmowy mail, który już posiadasz, o ile będziesz potrafił wpisać do Discourse'a dane do SMTP. 🤔 (Chociaż gmail chyba wymaga gdzieś w ustawieniach, by zezwolić na takowe użycie)

  1. Bez różnicy u jakiego dostawcy. Różnica będzie tylko w wydajności.
Dyskurs
Dyskurs

Właśnie próbowałem zainstalować forum zgodnie z tym poradnikiem z samej góry oraz przy pomocy sparkpost.

Forum się zainstalowało ale nie w subdomenie jak chciałem tylko pod domeną główną, podczas tworzenia konta admina nie przechodzi dalej, żaden też mail nie wpływa na gmaila.

finish-installation/confirm-email - ta strona nie ładuje się.

Także gdzie może być błąd? Instalowałem na świeżym i zaktualizowanym Ubuntu 18.04 i serwerze VPS Start z nazwa.pl

TheMultii
TheMultii

Dyskurs:

Forum się zainstalowało ale nie w subdomenie jak chciałem tylko pod domeną główną

W takim wypadku, coś popsułeś przy instalacji. Tu masz napisane o tym na githubie Discourse'a

SystemZ:

Tu discourse.example.com zamieniamy na naszą domenę lub subdomenę pod którym chcemy aby pojawiło się forum czyli np. mojefajneforum.pl lub mojeforum.hostmc.pl

A dostęp do "mniej bezpiecznych aplikacji" w Gmailu włączysz/przeczytasz o tym tutaj: https://support.google.com/accounts/answer/6010255?hl=en

error
error

Dyskurs:

Da się zainstalować Discourse pod nazwą forum.strona.pl w taki sposób aby na stronie strona.pl był WordPress a na forum.strona.pl Discourse? Da się

Dyskurs:

a się zainstalować kilka Discoursów z kilkoma WP na jednym VPS? Tak, pod warunkiem że będziesz mieć wystarczającą ilość zasobów (Discourse lubi RAM)

Dyskurs:

Aby zainstalować Discourse potrzebny jest mail płatny tak? No... niekoniecznie. Ważne, żebyś miał dane do serwera SMTP

Dyskurs:

Czy można ominąć zakup maila w ten sposób, że instaluję na VPS serwer pocztowy do którego podepnę domenę na której będzie stał Discourse aby mieć maila np. noreply@strona.pl ? Można też tak

TG_Pjoter
TG_Pjoter

Serio mailgun jest teraz płatny? Nie mogę dodać domeny. image|690x283

Damian28w
Damian28w

Poradnik jest z 2016 roku wiec ma już 5 lat, od tej pory mogło sie sporo pozmieniać. ja obszedłem to tak że na jednym VPS mam forum a na drugim pocztę z poradnika @KrEdEnS

TG_Pjoter
TG_Pjoter

Podesłałbyś mi link do jego poradnika? Edit: Już mam.