Docker Compose是现代容器化部署的核心工具,它允许用户通过一个简单的YAML文件定义并运行多个相互关联的Docker容器。本文精选了多个最实用的NAS Docker Compose部署项目,从博客建站到私有云盘一应俱全,帮助你在NAS上一站式搭建完整的服务生态。

Docker Compose实战项目集锦:从WordPress到Nextcloud的一站式NAS部署方案

一、Nginx反向代理加SSL证书自动化部署

在NAS上部署任何Web服务前,首先需要一个统一的反向代理入口。Nginx Proxy Manager(简称NPM)是目前最流行的反向代理管理工具,它提供了直观的Web界面来管理域名转发、SSL证书和访问控制。

创建docker-compose.yml文件,定义NPM本身和Let's Encrypt证书管理容器。NPM的前端管理界面默认使用81端口,反向代理服务使用80和443端口。配置volumes来持久化NPM的配置文件、SSL证书数据的Let's Encrypt的账户信息。

部署完成后,通过http://NAS_IP:81访问NPM的管理界面,默认登录账号为admin@example.com,密码changeme(首次登录后请立即修改)。在管理界面中,可以添加代理主机(Proxy Host),填写域名、目标服务的IP和端口,然后选择申请Let's Encrypt SSL证书,全程无需手动配置Nginx配置文件或运行certbot命令。NPM会自动续期SSL证书,确保Web服务始终保持HTTPS安全连接。

建议为NPM配置独立的Docker网络(如proxy_network),其他Web服务容器都加入这个网络,这样服务之间可以通过容器名互相通信,同时又与外部网络隔离。

二、WordPress博客系统一键部署

WordPress作为全球最流行的内容管理系统,在NAS上通过Docker Compose部署是最省时省力的方式。一个标准的WordPress部署包含三个容器:WordPress应用容器、MariaDB数据库容器和Nginx反向代理容器。

Compose文件中定义WordPress服务时,关键是正确配置环境变量:WORDPRESS_DB_HOST指向MariaDB的容器名,WORDPRESS_DB_USER、WORDPRESS_DB_PASSWORD和WORDPRESS_DB_NAME用于数据库认证。在volumes中,将WordPress的wp-content目录映射到NAS的持久化存储路径,确保主题、插件和上传文件不会因为容器重建而丢失。

MariaDB容器的配置同样重要。设置MYSQL_ROOT_PASSWORD作为数据库root密码,MYSQL_DATABASE、MYSQL_USER和MYSQL_PASSWORD与WordPress的环境变量保持一致。数据库文件持久化到NAS的另一个volume中。推荐为MariaDB分配至少1GB的内存限制,并配置character-set-server为utf8mb4和collation-server为utf8mb4_unicode_ci以完整支持Unicode字符集。

三、Nextcloud私有云盘搭建

Nextcloud是自建私有云盘的首选方案,它提供了文件同步、共享、在线编辑、日历、联系人等丰富的功能。使用Docker Compose部署Nextcloud生态,通常需要Nextcloud主容器、MariaDB或PostgreSQL数据库容器以及Redis缓存容器。

Nextcloud容器的环境变量配置较为复杂。NEXTCLOUD_ADMIN_USER和NEXTCLOUD_ADMIN_PASSWORD设置初始管理员账号。数据库相关变量指定数据库类型、主机地址和认证信息。TRUSTED_DOMAINS数组需要包含访问Nextcloud的所有域名和IP地址,包括反向代理的域名和NAS的局域网IP。

Redis容器的引入对Nextcloud的性能提升至关重要。Nextcloud使用Redis作为文件锁缓存、事务文件锁和内存缓存。配置REDIS_HOST指向Redis容器名,Nextcloud就会自动使用Redis加速各项操作。建议为Redis分配256MB以上的内存限制。

Nextcloud的数据目录映射到NAS的存储池中,这是最关键的存储规划。建议创建一个专用的共享文件夹(如/volume1/nextcloud_data)存放用户文件,这个文件夹应该位于RAID保护的存储池上。部署完成后,可以通过NPM配置域名访问Nextcloud,并在Nextcloud设置中配置邮件服务器、外部存储支持和Collabora Online文档在线编辑功能。

四、Jellyfin加Sonarr媒体自动追剧系统

这套组合是NAS媒体爱好者的终极解决方案,它实现了从资源搜索、下载到媒体管理和播放的全自动化流程。Compose文件中定义的服务包括:Jellyfin媒体服务器、Sonarr(剧集管理)、Radarr(电影管理)、Prowlarr(索引器管理)、qBittorrent下载客户端。

Sonarr和Radarr负责自动监控用户订阅的剧集和电影,当有资源更新时,它们通过Prowlarr搜索各BT索引站点的资源,筛选出符合质量要求的版本,然后将下载任务推送到qBittorrent。qBittorrent下载完成后,Sonarr/Radarr会自动识别并重命名文件,移动到Jellyfin的媒体库目录中。

为了让这套系统正常运行,需要精心规划网络和权限配置。所有媒体管理容器应加入同一个Docker网络。所有媒体文件存储在NAS的共享目录中,以共享方式映射给所有相关容器。Jellyfin的硬件转码配置需要将宿主机的显卡(/dev/dri)传递给Jellyfin容器以实现GPU硬件加速转码。

五、Home Assistant智能家居控制中心

Home Assistant是开源智能家居平台的事实标准,在NAS上通过Docker Compose部署后,可以统一管理家中各种智能设备。Compose文件包含Home Assistant核心容器、MQTT消息代理(Mosquitto)容器和Zigbee2MQTT网关联容器。

Home Assistant的配置需要特别注意网络模式。许多智能设备需要使用宿主机网络模式,即network_mode设为host,以访问宿主机上的所有网络接口。如果使用Zigbee设备,还需要将USB Zigbee网关通过/dev/ttyUSBx映射到容器中。

部署完成后,通过在浏览器中访问http://NAS_IP:8123进入Home Assistant的初始化向导。系统会自动扫描局域网中的智能设备,发现如小米传感器、Yeelight灯具、TP-Link智能插座等常见设备会提示一键集成。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。