Auto-hébergement
Si vous ne souhaitez pas déployer le serveur sur Vercel, vous pouvez également choisir de le déployer sur votre propre serveur.
Déploiement avec Docker
docker run -d \
-p 8360:8360 \
lizheming/walineVoici un exemple de lancement de Waline. Vous devez également ajouter des variables d'environnement de base de données si vous voulez que toutes les fonctionnalités de commentaires fonctionnent correctement.
Comment construire l'image ?
git clone https://github.com/lizheming/waline.git
cd waline
docker build -t lizheming/waline -f packages/server/Dockerfile .Déploiement via docker stack deploy ou docker-compose
L'exemple ci-dessous utilise SQLite. Pour SQLite et les services de bases de données pris en charge, veuillez consulter la section Prise en charge de plusieurs bases de données.
Exemple de docker-compose.yml pour waline :
# docker-compose.yml
version: '3'
services:
waline:
container_name: waline
image: lizheming/waline:latest
restart: always
ports:
- 127.0.0.1:8360:8360
volumes:
- ${PWD}/data:/app/data
environment:
TZ: 'Asia/Shanghai'
SQLITE_PATH: '/app/data'
JWT_TOKEN: 'Your token'
SITE_NAME: 'Your site name'
SITE_URL: 'https://example.com'
SECURE_DOMAINS: 'example.com'
AUTHOR_EMAIL: 'mail@example.com'Exécution directe (recommandée)
Il est simple de lancer Waline sans déploiement Docker : après avoir défini les variables d'environnement, il suffit d'exécuter le fichier vanilla.js du module une fois celui-ci installé.
npm install @waline/vercel
node node_modules/@waline/vercel/vanilla.jsyarn add @waline/vercel
node node_modules/@waline/vercel/vanilla.jsConfiguration Nginx
Si vous ne souhaitez pas utiliser de port dans l'URL du serveur, vous pouvez utiliser un proxy Nginx vers les ports 80 et 443. Reportez-vous à la configuration suivante :
server
{
listen 80;
listen 443 ssl http2;
server_name your.domain.server.name;
root /www/wwwroot/your.domain.server.name;
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
# SSL setting
ssl_certificate fullchain.pem;
ssl_certificate_key privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
# proxy to 8360
location / {
proxy_pass http://127.0.0.1:8360;
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;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
# cache
add_header Cache-Control no-cache;
expires 12h;
}
}