威联通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使用

相关推荐
凯子坚持 c1 小时前
Docker 容器实战:从镜像管理到私有仓库构建深度解析
java·docker·eureka
Radan小哥8 小时前
Docker学习笔记—day007
笔记·学习·docker
howard200510 小时前
Docker实战 - 将Web项目打成war包部署到tomcat容器里运行
docker·容器化部署web项目
p***c94910 小时前
Docker机器学习实战
机器学习·docker·容器
pumpkin8451412 小时前
Docker 参考手册
chrome·docker·容器
三天不学习14 小时前
GitLab Docker 安装完整配置项说明
docker·容器·gitlab
北冥有鱼被烹17 小时前
【微知】Ubuntu中如何安装docker?
ubuntu·docker
幻灭行度20 小时前
docker镜像导入到K8S的containerd中
java·docker·kubernetes
虎头金猫20 小时前
随时随地处理图片文档!Reubah 加cpolar的实用体验
linux·运维·人工智能·python·docker·开源·visual studio
哈里谢顿1 天前
Docker 中快速启动 Prometheus + Grafana操作指南(二)
docker