威联通NAS部署umami

威联通 NAS(用 Docker/Container Station) 上可以用已有的 MySQL 来部署 Umami。

  • Umami 支持的数据库:PostgreSQL、MySQL(≥ 8.0)和 MariaDB(≥ 10.5)。也可以用已运行的 MySQL。
  • Umami 的数据库连接 用环境变量 DATABASE_URL,MySQL 的示例格式是:
    DATABASE_URL=mysql://用户名:密码@主机:3306/数据库名

一、在 NAS 上部署流程

数据库配置

  1. 在 MySQL 上建库和专用用户 (替换 umamiuser / password / umami):
sql 复制代码
CREATE DATABASE umami CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'umamiuser'@'%' IDENTIFIED BY 'StrongPasswordHere';
GRANT ALL PRIVILEGES ON umami.* TO 'umamiuser'@'%';
FLUSH PRIVILEGES;
  1. 确认 MySQL 版本(确保 ≥ 8.0;若是 MariaDB 请 ≥10.5,且某些 MariaDB 版本需要额外修补/设置)。若有 MariaDB 的问题,社区有相关修复建议。

二、网络配置

  1. 先创建 macvlan 网络(在 NAS 上的终端/SSH 执行)

下面命令中假设 NAS 的物理接口名为 eth0(在 QNAP 上可能是 eth0、bond0、br0 等)。如果不确定,请先运行 ip addr 找到对应用于 LAN 的接口名称,然后替换 eth0。网络子网使用 192.168.1.0/24,网关 192.168.1.1

bush 复制代码
# 在 QNAP / NAS 的 Shell 上执行(以 root 或有 docker 权限用户)
# 1) 确认宿主机上用于 LAN 的接口(如 eth0)。若不确定,先运行 `ip addr`.
# 2) 创建 macvlan 网络(名字叫 umami_macvlan),并在其中保留 IP 池(这里示例)
docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 \
  umami_macvlan

我这里已经建有另一个macvlan网络dify_lan我就直接用了

  1. 选定ip
    确认 192.168.1.230 没被占用(一定要运行):
bush 复制代码
# 若能收到响应说明该 IP 已被占用 --- 若被占用请先换 IP
ping -c 3 192.168.1.230

# 检查局域网 ARP(若无响应也可能未配置)
arping -c 3 192.168.1.230 || true

如果 ping 有响应,请换一个未占用的 IP(例如 .231 / .232 等)。

3.测试连接在 dify_lan 网络上测试 MySQL 连接

使用一个临时容器(mysql 客户端镜像)连到 dify_lan 网络并测试连接 MySQL:

bush 复制代码
docker run --rm --network=dify_lan mysql:8.0 \
  mysql -h192.168.1.6 -P3306 -uumamiuser -pStrongPasswordHere -e "SELECT VERSION();"
  • 成功:会输出 MySQL 版本。表示网络与凭证 OK。

  • 失败:会报超时或认证失败,按错误信息排查(MySQL 是否允许远程、用户权限、NAS 防火墙、端口监听等)。

三、 在 NAS 的 Docker(或 Container Station)里运行 Umami 镜像

可以直接使用官方带 MySQL 的镜像 tag umami:mysql-latest,或使用通用镜像并把 DATABASE_URL 指向外部 MySQL。下面给出一个 docker-compose.yml 示例,把下面文件放到 ~/umami/docker-compose.yml(或特定的目录),并替换 DATABASE_URL / APP_SECRET / HASH_SALT 为真实值,然后在该目录运行 docker-compose up -d。

yaml 复制代码
version: "3.8"

services:
  umami:
    image: docker.1ms.run/umamisoftware/umami:mysql-latest
    container_name: umami
    restart: unless-stopped
    ports:
      - "3000:3000"   # 若不想映射宿主端口可删掉此行
    environment:
      # 请替换为你的 MySQL 信息(替换信息)
      DATABASE_URL: "mysql://umamiuser:StrongPasswordHere@192.168.1.x:3306/umami"
      # 请替换为强随机字符串(替换信息)
      APP_SECRET: "replace_with_a_long_random_string_here"
      HASH_SALT: "replace_with_some_random_salt"
    volumes:
      - ./umami-uploads:/usr/src/app/public/uploads
    networks:
      dify_lan_net:
        ipv4_address: 192.168.1.230

networks:
  dify_lan_net:
    external: true
    name: dify_lan
  • 关于 <MYSQL_HOST> 的选择

    • 如果 MySQL 就运行在 NAS 主机(非容器),把 <MYSQL_HOST> 填成 NAS 的内网 IP(例如 192.168.1.100)或 127.0.0.1(注意:在容器中 127.0.0.1 指容器自身,通常不能用于访问宿主机 MySQL,除非做了特殊网络配置)。
    • 如果 MySQL 以容器形式运行并在同一个 Docker 网络里,填容器名(例如 mysql),并确保两个容器在同一网络/compose 下。

我这里可能是网络问题要改成bridge模式才能访问到mysql,没有这个问题的跳过,有问题的可以在参考下面:

四、访问服务

在浏览器打开 http://<NAS_IP>:3000

在 Umami 中,初始账号和密码默认是:

  • 用户名:admin
  • 密码:umami

然后就可以开始愉快的使用了,要发布公网服务的记得做端口转发

使用教程看这里-> umami使用

相关推荐
今天头发还在吗7 小时前
【Docker】在项目中如何实现Dockerfile 文件编写
java·docker·容器
行云流水剑19 小时前
【学习记录】宝塔面板 + Docker 快速部署 RustDesk 自建远程控制服务器
服务器·docker·开源·p2p·rustdesk
sayhi_yang20 小时前
服务器上搭建支持GPU的DL+LLM Docker镜像
运维·服务器·docker
致宏Rex21 小时前
Docker 完整教程 | 从基础到实战 (1-2)
运维·docker·容器
東雪蓮☆21 小时前
Dockerfile 镜像构建实战
linux·运维·docker
東雪蓮☆1 天前
Docker 资源限制与性能优化(CPU / 内存 / IO 管控实战)
linux·运维·docker
爱码社长1 天前
centos8安装docker【新】
运维·docker·容器
東雪蓮☆1 天前
容器生命周期与管理策略
linux·运维·docker
数字化顾问1 天前
探索 Docker/K8s 部署 MySQL 的创新实践与优化技巧——容器化部署深度解析
docker