Wdróż aplikację NodeBB na Pethost jednym kliknięciem
Forum dla twojej społeczności
Co się dzieje
- Logujesz się do Pethost albo zakładasz konto, kluczem dostępu, przez GitHub albo Google.
- Nie masz jeszcze maszyny? Wybierasz plan, a my ją dla ciebie przygotowujemy. Link czeka w twojej przeglądarce, aż będzie gotowa.
- Okno „Nowy projekt” otwiera się na tej aplikacji. Wypełniasz to, o co prosi, i klikasz „Utwórz projekt”: Hasło administratora.
- Za minutę czy dwie aplikacja działa pod własnym adresem z HTTPS. Jej sekrety są tworzone losowo, a dane trafiają do nocnego backupu.
- To projekt jak każdy inny: jego compose.yaml, .env, logi i terminal są w panelu, a twój agent może go zmienić, cofnąć do wcześniejszej wersji albo przywrócić.
Pierwsze kroki
Zaloguj się jako admin z hasłem podanym przy tworzeniu projektu; pierwsze uruchomienie buduje forum i trwa kilka minut. Zarejestrować się może każdy: kto może dołączyć, ustawisz w Admin > Settings > Users. E-maile, w tym resetowanie haseł, zadziałają, gdy w Admin > Settings > Email ustawisz serwer SMTP.
Co uruchamia
Szablon to ten compose.yaml i zmienne, które zapisuje do .env projektu. Pethost uruchamia plik dokładnie tak, jak jest napisany.
services:
nodebb:
image: ghcr.io/nodebb/nodebb:4.x
restart: unless-stopped
# The first start installs the forum with this admin, so the web installer the image would
# open to whoever comes first never runs: without config.json the container exits instead.
# NodeBB asks a terminal again for a password it refuses, so the setup has a time limit.
entrypoint:
- tini
- --
- sh
- -ec
- |
if [ ! -f /opt/config/installed ]; then
setup='{"trust_proxy": 1}' timeout 300 /usr/src/app/nodebb setup --config=/opt/config/config.json --skip-build
test -f /opt/config/config.json
touch /opt/config/installed
fi
test -f /opt/config/config.json
exec entrypoint.sh
environment:
NODEBB_URL: ${URL}
NODEBB_DB: redis
NODEBB_DB_HOST: redis
NODEBB_ADMIN_USERNAME: admin
NODEBB_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
# Setup needs an address; it is stored as confirmed, and no mail is sent to it.
NODEBB_ADMIN_EMAIL: [email protected]
depends_on:
redis:
condition: service_healthy
# Every folder the image declares as a volume; node_modules keeps the plugins installed later.
volumes:
- config:/opt/config
- uploads:/usr/src/app/public/uploads
- build:/usr/src/app/build
- node_modules:/usr/src/app/node_modules
# The forum's only database: every write goes to the append-only file.
redis:
image: redis:8-alpine
restart: unless-stopped
command: [redis-server, --appendonly, "yes", --loglevel, warning]
volumes:
- redis:/data
healthcheck:
test: ["CMD-SHELL", "redis-cli ping | grep -q PONG"]
interval: 5s
timeout: 3s
retries: 12
volumes:
config:
uploads:
build:
node_modules:
redis: