Je suis un débutant en création de sites web. Par passion, je souhaite créer une communauté d’échange technique et je prévois de déployer Discourse. Je partage ce tutoriel dans l’espoir qu’il aidera ceux qui ont besoin d’installer Discourse, en leur évitant les pièges. Il y a peu de tutoriels en chinois pour Discourse, et certains sont obsolètes. J’ai passé plusieurs jours à faire des recherches en utilisant des logiciels de traduction.
Ce dont vous avez besoin pour créer votre propre Discourse :
Un serveur cloud léger Aliyun à Hong Kong. Les serveurs nationaux téléchargent les plugins GitHub à la vitesse d’un escargot. Je recommande donc un cloud léger Aliyun à Hong Kong, ou un autre serveur léger. Les serveurs légers sont moins chers et conviennent aux débutants. La configuration nécessite plus de 2 Go de RAM, sinon l’installation échouera. Si vous devez installer sur un serveur national, vous pouvez utiliser un serveur à Hong Kong avec paiement à l’usage, puis utiliser la fonction de création d’image de la plateforme pour cloner sur le serveur national. Cela vous fera gagner du temps en évitant les problèmes.
Un nom de domaine court et facile à retenir, résolu vers l’IP du serveur. Je recommande les extensions .com et .net. Les autres extensions manquent de reconnaissance. Vous pouvez rechercher des noms de domaine sur Recherche de noms de domaine en masse et utiliser la recherche par règles pour trouver des noms courts.
Système : Ubuntu 20.04, couramment utilisé.
Après avoir activé un nouveau serveur, ouvrez d’abord tous les ports du pare-feu (une fois le débogage terminé, fermez les ports inutiles selon vos besoins pour éviter les attaques de pirates). Définissez le mot de passe root dans le panneau de contrôle, puis connectez-vous directement au serveur via SSH depuis le navigateur, ou téléchargez un logiciel SSH comme XTerminal.
Collez ensuite les trois commandes suivantes et appuyez sur Entrée pour les exécuter. Lorsque des options s’affichent, appuyez sur “yes” pour mettre à jour la source du système et installer le logiciel git.
apt update
apt upgrade -y
apt install git
Collez ensuite les trois commandes suivantes et appuyez sur Entrée pour les exécuter en tant qu’administrateur. Cette étape sudo -s si elle n’est pas effectuée avec soin, peut entraîner des messages d’échec de création inexplicables lors de l’installation, causant l’échec de l’installation, car les permissions sont insuffisantes.
sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers
Après le téléchargement, exécutez l’assistant d’installation.
./discourse-setup
Ensuite, suivez les instructions pour saisir le domaine à lier. La première installation prend beaucoup de temps. Il est conseillé de remplir n’importe quoi pour les autres domaines que le domaine principal, puis de reconstruire une fois que cela a réussi. Vous pouvez utiliser la capture d’écran et la traduction d’images WeChat si vous ne comprenez pas. Pour les e-mails, vous pouvez utiliser le service de messagerie Aliyun.
Ensuite, un message vous demandera si vous souhaitez continuer l’installation ou l’annuler en appuyant sur Ctrl+C. Il est conseillé de continuer l’installation.
Une fois l’installation terminée, accédez au domaine lié. Si la page d’inscription s’affiche, cela signifie que Discourse est installé avec succès.
Ensuite, installez un panneau de contrôle Linux. Cette étape est principalement destinée à l’installation d’autres programmes de site web et à une gestion facile pour les débutants. J’ai comparé ce panneau à Baota et il est beaucoup plus simple, plus épuré, sans beaucoup de publicités, et l’installation ne prend que quelques secondes, contrairement à Baota qui nécessite une longue compilation de l’environnement.
Exécutez le script suivant :
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
Pendant l’installation, un message vous indiquera que Docker est déjà installé, puis vous demandera de vous connecter à l’arrière-plan.
Suivez les instructions, trouvez l’arrière-plan et connectez-vous. Dans la gestion des conteneurs, vous verrez l’application, qui est Discourse. Vous pouvez la démarrer ou l’arrêter ici.
Accédez ensuite aux fichiers et modifiez app.yml. Les modifications principales sont commentées en chinois.
## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
## Uncomment the next line to enable the IPv6 listener
#- "templates/web.ipv6.template.yml"
- "templates/web.ratelimited.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Set db_shared_buffers to a max of 25% of the total memory.
## will be set automatically by bootstrap based on detected RAM, or you can override
db_shared_buffers: "128MB"
## Modifier la taille maximale de téléchargement des pièces jointes
upload_size: 300m
## can improve sorting performance, but adds memory usage per-connection
#db_work_mem: "40MB"
## Which Git revision should this container use? (default: tests-passed)
#version: tests-passed
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_DEFAULT_LOCALE: zh_CN
## How many concurrent web requests are supported? Depends on memory and CPU cores.
## will be set automatically by bootstrap based on detected CPUs, or you can override
UNICORN_WORKERS: 2
## TODO: The domain name this Discourse instance will respond to
## Required. Discourse will not work with a bare IP number.
## Modifier le domaine principal
DISCOURSE_HOSTNAME: bbs.izdh.net
## Uncomment if you want the container to be started with the same
## hostname (-h option) as specified above (default "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: List of comma delimited emails that will be made admin and developer
## on initial signup example 'user1@example.com,user2@example.com'
## Modifier l'e-mail de l'administrateur
DISCOURSE_DEVELOPER_EMAILS: 'xxxx@gmail.com'
## TODO: The SMTP mail server used to validate new accounts and send notifications
# SMTP ADDRESS, username, and password are required
# WARNING the char '#' in SMTP password can cause problems!
## Modifier le serveur de messagerie sortant
DISCOURSE_SMTP_ADDRESS: smtpdm.aliyun.com
## Modifier le port du serveur de messagerie sortant
DISCOURSE_SMTP_PORT: 80
## Modifier le nom d'utilisateur du compte de messagerie sortant automatique
DISCOURSE_SMTP_USER_NAME: xxxx@xxx.net
## Modifier le mot de passe du serveur de messagerie sortant
DISCOURSE_SMTP_PASSWORD: "dj6bCRxoHt25NcD6"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
DISCOURSE_SMTP_DOMAIN: smtpdm.aliyun.com
## Modifier le nom d'utilisateur du compte de messagerie sortant automatique
DISCOURSE_NOTIFICATION_EMAIL: xxxx@xxx.net
DISCOURSE_SMTP_ENABLE_START_TLS: false
## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## The http or https CDN address for this Discourse instance (configured to pull)
## see https://meta.discourse.org/t/14857 for details
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## The maxmind geolocation IP address key for IP address lookup
## see https://meta.discourse.org/t/-/137387/23 for details
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## The Docker container is stateless; all data is stored in /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins go here
## see https://meta.discourse.org/t/19157 for details
## Installer 2 plugins
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-solved
- git clone https://github.com/discourse/discourse-reactions
## Any custom commands to run after building
run:
- exec: echo "Beginning of custom commands"
## If you want to set the 'From' email address for your first registration, uncomment and change:
## After getting the first signup email, re-comment the line. It only needs to run once.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "End of custom commands"
Après avoir modifié et enregistré, revenez au terminal, utilisez la commande ou arrêtez le conteneur en arrière-plan, puis reconstruisez. Cependant, il semble que sans installer ce panneau, vous n’avez pas besoin d’arrêter le conteneur. Reconstruire directement sans arrêter le conteneur après avoir installé ce panneau entraînera une erreur.
./launcher stop app
./launcher bootstrap app`
Attendez que la reconstruction soit terminée, puis exécutez la commande de démarrage du conteneur.
./launcher start app
En accédant à Discourse, il vous sera demandé d’envoyer un e-mail pour activer. Si vous ne le recevez pas, vous pouvez utiliser la commande suivante pour créer un compte administrateur et sauter directement cette étape. Ensuite, définissez la langue sur chinois dans les paramètres à gauche. Il y a également un endroit pour tester l’envoi d’e-mails, qui vous indiquera la raison de l’erreur. Essayez plusieurs fois et cela devrait fonctionner.
./launcher enter app
rake admin:create
Si vous avez besoin de créer d’autres sites web, référez-vous directement au tutoriel officiel. C’est assez simple, je ne vais pas entrer dans les détails. Vous pouvez également créer un nouvel environnement sur le site web, puis modifier les permissions du site web à 777 pour installer divers programmes.
Le principal problème résolu est de pouvoir exécuter plusieurs sites web sur un seul serveur, ce qui permet d’économiser sur les coûts d’achat de serveurs et est plus adapté aux débutants.
Plus tard, lors des tests d’envoi d’e-mails, j’ai rencontré un problème :
Ces paramètres du conteneur, modifiés dans app.yml, ne semblent pas avoir d’effet lors de la reconstruction. Il faut les modifier dans les variables d’environnement du conteneur. Cependant, cela ne prend que 5 à 6 secondes pour prendre effet. Je ne suis pas encore sûr de l’impact sur l’installation des plugins.
La coexistence avec d’autres sites web semble nécessiter de créer d’abord un proxy inverse, puis de modifier le port 443 du conteneur par défaut en 10443, puis de configurer le certificat pour pouvoir y accéder normalement.
Proxy inverse
Configuration du certificat









