保姆级教程:在斐讯N1的Armbian上,用Docker Compose一键部署CasaOS全家桶(含Cpolar穿透)
斐讯N1进阶部署指南基于Docker Compose的CasaOS全栈编排与Cpolar穿透方案斐讯N1作为一款性价比极高的ARM架构设备凭借其出色的硬件性能和低功耗特性已经成为技术爱好者搭建家庭轻量级NAS和媒体中心的理想选择。本文将分享一套基于声明式配置的进阶部署方案通过Docker Compose实现CasaOS及其生态应用的一键编排并结合Cpolar实现安全稳定的内网穿透。与传统的逐条命令安装方式不同这套方案强调配置即代码、环境可复现和运维自动化特别适合希望将N1设备作为生产环境使用的技术用户。1. 环境准备与系统优化1.1 Armbian系统调优在开始部署前我们需要确保Armbian系统处于最佳状态。建议使用官方推荐的Armbian 23.08版本代号Jammy这个版本对N1的硬件支持最为完善。刷机完成后首先执行以下系统优化步骤# 更新软件源并升级系统 sudo apt update sudo apt upgrade -y # 安装常用工具集 sudo apt install -y curl wget git vim htop tmux # 调整SWAP分区建议512MB sudo fallocate -l 512M /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstab # 优化内核参数 echo vm.swappiness10 | sudo tee -a /etc/sysctl.conf sudo sysctl -p提示N1设备的eMMC存储寿命有限建议通过以下命令减少不必要的写入操作echo tmpfs /tmp tmpfs defaults,noatime,nosuid,size128M 0 0 | sudo tee -a /etc/fstab1.2 Docker环境配置CasaOS的核心依赖是Docker环境我们需要先进行专业级的Docker配置# 安装Docker官方版本 curl -fsSL https://get.docker.com | sh # 配置Docker镜像加速国内用户建议 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://docker.mirrors.ustc.edu.cn], log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 }, data-root: /var/lib/docker } EOF # 重启Docker服务 sudo systemctl daemon-reload sudo systemctl restart docker # 将当前用户加入docker组 sudo usermod -aG docker $USER newgrp docker2. CasaOS核心部署与Docker Compose编排2.1 声明式安装CasaOS传统的一键安装脚本虽然方便但缺乏可定制性和可追溯性。我们采用Docker Compose方式部署便于后续版本管理和配置追溯# casaos-compose.yaml version: 3.8 services: casaos: image: casaos/casaos:latest container_name: casaos restart: unless-stopped network_mode: host privileged: true volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /etc/localtime:/etc/localtime:ro - /path/to/casaos/data:/var/lib/casaos environment: - TZAsia/Shanghai deploy: resources: limits: cpus: 1 memory: 512M使用以下命令启动服务docker compose -f casaos-compose.yaml up -d2.2 常用应用栈编排CasaOS的亮点在于丰富的应用生态我们可以通过统一的Docker Compose文件管理所有应用# apps-compose.yaml version: 3.8 services: alist: image: xhofe/alist:latest container_name: alist restart: unless-stopped volumes: - /path/to/alist/data:/opt/alist/data ports: - 5244:5244 environment: - PUID1000 - PGID1000 - UMASK022 jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin restart: unless-stopped network_mode: host volumes: - /path/to/jellyfin/config:/config - /path/to/media:/media devices: - /dev/dri:/dev/dri environment: - JELLYFIN_PublishedServerUrlhttp://your-domain.com qbittorrent: image: linuxserver/qbittorrent:latest container_name: qbittorrent restart: unless-stopped ports: - 8080:8080 - 6881:6881 - 6881:6881/udp volumes: - /path/to/qbittorrent/config:/config - /path/to/downloads:/downloads environment: - WEBUI_PORT8080 - PUID1000 - PGID1000部署应用栈docker compose -f apps-compose.yaml up -d3. 高级网络配置与Cpolar穿透3.1 Cpolar容器化部署将Cpolar作为容器运行更符合云原生理念也便于统一管理# cpolar-compose.yaml version: 3.8 services: cpolar: image: cpolar/cpolar:latest container_name: cpolar restart: unless-stopped ports: - 9200:9200 volumes: - /path/to/cpolar/conf:/root/.cpolar command: [cpolar, http, -logstdout, -config/root/.cpolar/cpolar.yml]配置文件中需要包含您的认证token# cpolar.yml authtoken: your-authtoken tunnels: casaos: addr: 80 proto: http region: hk3.2 域名与HTTPS配置对于生产环境使用建议配置自定义域名和HTTPS加密# 申请SSL证书以Lets Encrypt为例 docker run -it --rm --name certbot \ -v /path/to/certs:/etc/letsencrypt \ -v /path/to/webroot:/var/www/html \ certbot/certbot certonly --webroot -w /var/www/html \ -d your-domain.com --email your-emailexample.com --agree-tos然后在Cpolar配置中启用HTTPStunnels: casaos-https: addr: 443 proto: https hostname: your-domain.com region: hk tls_crt: /etc/letsencrypt/live/your-domain.com/fullchain.pem tls_key: /etc/letsencrypt/live/your-domain.com/privkey.pem4. 自动化运维与监控4.1 服务健康检查通过Healthcheck确保服务高可用# 在compose文件中添加健康检查 services: casaos: healthcheck: test: [CMD, curl, -f, http://localhost:80] interval: 30s timeout: 10s retries: 34.2 日志与监控方案集成Prometheus和Grafana实现可视化监控# monitoring-compose.yaml version: 3.8 services: prometheus: image: prom/prometheus:latest ports: - 9090:9090 volumes: - /path/to/prometheus.yml:/etc/prometheus/prometheus.yml grafana: image: grafana/grafana:latest ports: - 3000:3000 volumes: - /path/to/grafana/data:/var/lib/grafana示例Prometheus配置# prometheus.yml global: scrape_interval: 15s scrape_configs: - job_name: casaos static_configs: - targets: [casaos:80] - job_name: docker static_configs: - targets: [docker-engine:9323]4.3 备份与恢复策略确保配置和数据安全的关键操作# 创建每日备份脚本 #!/bin/bash BACKUP_DIR/path/to/backups TIMESTAMP$(date %Y%m%d_%H%M%S) # 备份Docker Compose文件 tar -czf $BACKUP_DIR/compose_$TIMESTAMP.tar.gz /path/to/compose/files # 备份应用数据 docker run --rm --volumes-from casaos -v $BACKUP_DIR:/backup busybox \ tar -czf /backup/casaos_data_$TIMESTAMP.tar.gz /var/lib/casaos # 保留最近7天备份 find $BACKUP_DIR -type f -mtime 7 -delete将脚本加入crontab实现自动化0 3 * * * /path/to/backup_script.sh这套方案在实际运行中表现出色N1设备在负载均衡良好的情况下可以稳定支持多个容器同时运行。特别是在媒体转码场景中通过Jellyfin的硬件加速配置能够流畅处理1080p视频的实时转码。存储方面建议外接USB 3.0硬盘盒配合ext4文件系统可以获得最佳性能表现。