超详细Mealie云服务器部署指南:Nginx反向代理与SSL加密实战

超详细Mealie云服务器部署指南:Nginx反向代理与SSL加密实战

【免费下载链接】mealie Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relevant data or add a family recipe with the UI editor 【免费下载链接】mealie 项目地址: https://gitcode.com/GitHub_Trending/me/mealie

你还在为家庭食谱管理工具的部署配置头疼吗?还在担心自建服务的安全性和访问速度吗?本文将带你从零开始,通过Nginx反向代理和SSL加密,在云服务器上搭建一个安全稳定的Mealie食谱管理系统。读完本文你将掌握:

  • Docker容器化部署Mealie的完整流程
  • Nginx反向代理配置最佳实践
  • Let's Encrypt SSL证书自动部署
  • 性能优化与安全加固技巧

准备工作与环境要求

在开始部署前,请确保你的服务器满足以下条件:

  • 2核4GB内存以上的云服务器(推荐阿里云ECS或腾讯云CVM)
  • 已安装Docker和Docker Compose:官方安装指南
  • 已注册域名并完成DNS解析
  • 开放服务器80/443端口防火墙规则

Mealie官方提供了容器化部署方案,项目的Docker配置文件位于docker/docker-compose.yml,我们将基于此进行部署。

Docker容器化部署Mealie

基础配置修改

首先通过SSH连接服务器,创建Mealie专用目录并下载配置文件:

mkdir -p /opt/mealie && cd /opt/mealie
wget https://gitcode.com/GitHub_Trending/me/mealie/raw/branch/master/docker/docker-compose.yml

编辑docker-compose.yml文件,修改以下关键参数:

services:
  mealie:
    container_name: mealie
    image: mealie:latest
    restart: always
    volumes:
      - mealie-data:/app/data/
    # 仅本地访问,通过Nginx暴露服务
    ports:
      - 127.0.0.1:9091:9000
    environment:
      ALLOW_SIGNUP: "false"  # 生产环境禁用公开注册
      LOG_LEVEL: "INFO"
      BASE_URL: "https://recipe.yourdomain.com"  # 替换为你的域名

volumes:
  mealie-data:
    driver: local

启动服务

执行以下命令启动Mealie服务:

docker-compose up -d

检查服务状态确保启动成功:

docker-compose ps

成功启动后,Mealie服务将在本地9091端口运行,我们接下来通过Nginx反向代理对外提供服务。

Nginx反向代理配置

安装与基础配置

如果尚未安装Nginx,执行以下命令:

apt update && apt install -y nginx

创建Mealie专用Nginx配置文件:

vim /etc/nginx/sites-available/mealie

添加以下基础配置:

server {
    listen 80;
    server_name recipe.yourdomain.com;  # 替换为你的域名

    # 重定向HTTP到HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name recipe.yourdomain.com;

    # SSL配置将在下一步添加
    
    # 反向代理配置
    location / {
        proxy_pass http://127.0.0.1:9091;
        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;
        client_max_body_size 20M;  # 允许上传较大食谱图片
    }
}

启用站点配置:

ln -s /etc/nginx/sites-available/mealie /etc/nginx/sites-enabled/
nginx -t  # 测试配置是否有误
systemctl restart nginx

SSL证书配置与自动续期

安装Certbot

使用Let's Encrypt获取免费SSL证书,安装Certbot:

apt install -y certbot python3-certbot-nginx

获取并配置SSL证书

执行以下命令获取证书并自动配置Nginx:

certbot --nginx -d recipe.yourdomain.com

按照提示完成邮箱验证等步骤,Certbot将自动更新Nginx配置并重启服务。

配置自动续期

Let's Encrypt证书有效期为90天,添加自动续期任务:

crontab -e

添加以下内容:

0 3 * * * /usr/bin/certbot renew --quiet

系统优化与安全加固

性能优化

编辑Nginx配置文件,添加缓存设置提升性能:

location / {
    # 已有的反向代理配置...
    
    # 静态资源缓存
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        proxy_pass http://127.0.0.1:9091;
        expires 30d;
        add_header Cache-Control "public, max-age=2592000";
    }
}

安全加固

根据Mealie官方安全文档docs/docs/documentation/getting-started/installation/security.md,我们需要配置Nginx速率限制防止DoS攻击:

http {
    # 在http块添加速率限制配置
    limit_req_zone $binary_remote_addr zone=mealie:10m rate=10r/s;
}

server {
    # ...其他配置
    
    location /api/ {
        limit_req zone=mealie burst=20 nodelay;
        proxy_pass http://127.0.0.1:9091;
    }
}

部署完成与界面展示

访问你的域名https://recipe.yourdomain.com,使用默认管理员账号登录:

  • 用户名: admin@example.com
  • 密码: myPassword

成功登录后,你将看到Mealie的主界面:

Mealie主界面

Mealie提供了直观的食谱管理界面,支持从URL导入食谱:

食谱导入功能

强大的食谱编辑功能让你轻松创建和管理家庭食谱:

食谱编辑器

日常维护与更新

数据备份

创建定时任务备份Mealie数据卷:

mkdir -p /opt/mealie/backups
vim /opt/mealie/backup.sh

添加以下内容:

#!/bin/bash
BACKUP_DATE=$(date +%Y%m%d_%H%M%S)
docker run --rm -v mealie-data:/source -v /opt/mealie/backups:/backup alpine tar -czf /backup/mealie_backup_$BACKUP_DATE.tar.gz -C /source .
# 保留最近30天备份
find /opt/mealie/backups -name "mealie_backup_*.tar.gz" -mtime +30 -delete

添加执行权限并配置crontab:

chmod +x /opt/mealie/backup.sh
echo "0 2 * * * /opt/mealie/backup.sh" >> /etc/crontab

版本更新

定期更新Mealie到最新版本:

cd /opt/mealie
docker-compose pull
docker-compose up -d

常见问题解决

服务无法启动

检查日志定位问题:

docker-compose logs -f mealie

Nginx配置错误

使用Nginx配置检查工具:

nginx -t

SSL证书更新失败

手动更新证书:

certbot renew --force-renewal

总结

通过本文的步骤,你已成功在云服务器上部署了一个安全稳定的Mealie食谱管理系统。关键要点回顾:

  • 使用Docker容器化部署确保环境一致性
  • Nginx反向代理提供安全访问和负载均衡
  • Let's Encrypt实现免费SSL证书自动部署
  • 性能优化和安全加固提升系统可靠性

Mealie项目的更多高级功能和API使用,请参考官方文档:docs/docs/index.md。如有问题,欢迎在项目GitHub仓库提交issue或参与社区讨论。

提示:定期关注docs/docs/documentation/getting-started/updating.md获取更新信息,保持系统安全。

【免费下载链接】mealie Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relevant data or add a family recipe with the UI editor 【免费下载链接】mealie 项目地址: https://gitcode.com/GitHub_Trending/me/mealie

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值