目 录CONTENT

文章目录

用 Docker Compose 与 Nginx 反向代理部署 Vikunja 待办事项管理系统

Jacky
2025-04-02 / 1 评论 / 0 点赞 / 14 阅读 / 6509 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2025-04-02,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

在高效管理日常任务和项目的过程中,开源待办事项工具 Vikunja 以其简洁、直观的设计和多视图支持受到越来越多用户的青睐。本文将详细介绍如何使用 Docker Compose 快速部署 Vikunja,并通过 Nginx 反向代理实现 HTTPS 访问,从而确保服务安全稳定。


1. 项目概述

Vikunja 是一款开源待办事项管理工具,支持任务列表、看板、甘特图等多种视图。你可以将它部署在自有服务器上,实现对任务数据的完全掌控。通过 Docker 部署不仅简化了安装过程,还能快速实现服务扩展和维护。

为了更安全地对外提供服务,我们将使用 Nginx 反向代理,将外部 HTTPS 流量转发至内部运行的 Vikunja 服务。


2. Docker Compose 部署配置

以下是一个示例 Docker Compose 文件,用于启动 Vikunja 服务:

version: '3.8'

services:
  vikunja:
    image: vikunja/vikunja
    container_name: vikunja
    ports:
      - 3456:3456
    volumes:
      - ./vikunja/files:/app/vikunja/files
      - ./vikunja/config:/app/vikunja/config
      - ./path/to/config.yml:/etc/vikunja/config.yml
    environment:
      VIKUNJA_SERVICE_PUBLICURL: https://你的域名.com
      VIKUNJA_SERVICE_FRONTENDURL: https://你的域名.com
      VIKUNJA_SERVICE_JWTSECRET: 随机一个安全码
      VIKUNJA_DATABASE_TYPE: mysql
      VIKUNJA_DATABASE_HOST: 数据库地址
      VIKUNJA_DATABASE_PORT: 3306
      VIKUNJA_DATABASE_USER: root
      VIKUNJA_DATABASE_PASSWORD: 123456
      VIKUNJA_DATABASE_DATABASE: vikunja
      TZ: Asia/Shanghai
    restart: unless-stopped
    networks:
      - vikunja_network

networks:
  vikunja_network:
    driver: bridge

配置说明

  • 服务定义:
    使用官方 vikunja/vikunja 镜像启动容器,并通过挂载数据卷保证数据持久化。

  • 端口映射:
    将容器的 3456 端口映射到宿主机,使得 Nginx 反向代理可以将外部请求转发到该端口。

  • 环境变量:
    配置对外访问的 URL(PUBLICURL 与 FRONTENDURL)、JWT 密钥以及数据库连接信息。根据实际情况,请务必替换为你自己的域名、数据库地址、密码等信息。

  • 网络设置:
    创建了一个名为 vikunja_network 的自定义桥接网络,方便容器间通信。


3. Nginx 反向代理配置

为了实现 HTTPS 访问,我们使用 Nginx 反向代理,将外部流量转发到运行在内部的 Vikunja 服务。以下是 Nginx 的配置示例:

upstream task {
    server 127.0.0.1:3456;  # 后端 Vikunja 服务监听端口
    keepalive 256;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl http2;
    server_name 你的域名.com;

    ssl_certificate /etc/nginx/ssl/你的域名.com_bundle.pem;
    ssl_certificate_key /etc/nginx/ssl/你的域名.com.key;
    ssl_protocols 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;
    add_header Strict-Transport-Security "max-age=31536000";
    access_log off;

    location / {
        proxy_pass http://task;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
    }

    location /api {
        proxy_pass http://task/api;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
    }
}

server {
    listen 80;
    server_name 你的域名.com;
    return 301 https://$host$request_uri;
}

配置说明

  • upstream 定义:
    将后端 Vikunja 服务定义为 task,并指定地址为 127.0.0.1:3456。注意:如果你的 Vikunja 容器在不同主机或网络中,请调整为相应的 IP 地址或使用 Docker 网络名称。

  • HTTPS 服务器块:
    配置 SSL 证书、协议和密码套件,确保连接安全。server_name 需设置为你实际使用的域名(例如 你的域名.com)。
    //api 路径下,均通过 proxy_pass 将请求转发到后端服务,并设置了必要的请求头,保证 WebSocket 升级、真实 IP 转发等功能正常。

  • HTTP 重定向:
    将所有 HTTP 请求重定向到 HTTPS,确保用户总是通过安全通道访问。


4. 部署步骤

步骤 1:环境准备

  • 安装 Docker 与 Docker Compose:
    确保你的服务器或 NAS 已安装 Docker 及 Docker Compose。

创建项目目录与数据卷:
在项目目录下创建必要的文件夹:

mkdir -p ./vikunja/files
mkdir -p ./vikunja/config

  • 配置文件:
    根据需求准备 config.yml 文件,并将其路径更新到 Docker Compose 文件中。

步骤 2:启动 Vikunja 服务

在项目目录下执行以下命令启动服务:

docker-compose up -d

等待容器拉取镜像并启动成功。

步骤 3:配置并启动 Nginx

  • 将上面的 Nginx 配置文件保存至 /etc/nginx/conf.d/your_config.conf(或其他合适位置),确保 SSL 证书文件存在并路径正确。

重启 Nginx 服务以加载新的配置:

sudo systemctl restart nginx

步骤 4:验证访问

打开浏览器,输入 https://你的域名.com,即可看到 Vikunja 的登录界面。确保通过 HTTPS 访问,且 API 调用等功能正常。


5. 部署优化与注意事项

  • 数据持久化:
    使用挂载数据卷确保容器重启或升级时数据不丢失,并定期备份重要数据。

  • 安全设置:
    修改默认数据库密码和 JWT 密钥,限制数据库外部访问,配置好防火墙。

  • 日志监控:
    可通过 Docker 日志或第三方监控工具对服务运行状态进行监控,及时排查异常。

  • 反向代理调优:
    根据流量情况,可调整 Nginx 配置中的 client_max_body_sizekeepalive 等参数,提升性能和用户体验。


6. 总结

通过本文介绍的 Docker Compose 配置与 Nginx 反向代理设置,你可以轻松部署一个安全、高效的 Vikunja 待办事项管理系统。无论是个人任务管理还是团队协作,该解决方案都能提供直观且稳定的服务。希望这篇文章对你搭建自托管应用有所帮助,欢迎在评论区交流部署经验或提出疑问!

0

评论区