Skip to content

📦 การติดตั้ง Nextcloud NAS

คู่มือนี้บันทึกขั้นตอนทั้งหมดในการติดตั้ง Nextcloud NAS จากศูนย์

ขั้นตอนที่ 1: สร้าง Directory Structure

bash
sudo mkdir -p /data/nextcloud/{db,redis,data,config,custom-apps}
sudo chown -R 33:33 /data/nextcloud/data

ขั้นตอนที่ 2: Docker Compose

ไฟล์ docker-compose.yml ตั้งอยู่ที่ /data/nextcloud/docker-compose.yml:

yaml
services:
  nextcloud-db:
    image: postgres:16-alpine
    container_name: nextcloud-db
    restart: unless-stopped
    environment:
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=<DB_PASSWORD>
    volumes:
      - /data/nextcloud/db:/var/lib/postgresql/data
    networks:
      - nextcloud-net

  nextcloud-redis:
    image: redis:7-alpine
    container_name: nextcloud-redis
    restart: unless-stopped
    command: redis-server --requirepass <REDIS_PASSWORD>
    volumes:
      - /data/nextcloud/redis:/data
    networks:
      - nextcloud-net

  nextcloud-app:
    image: nextcloud:29-apache
    container_name: nextcloud-app
    restart: unless-stopped
    ports:
      - "9090:80"
    environment:
      - POSTGRES_HOST=nextcloud-db
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=<DB_PASSWORD>
      - REDIS_HOST=nextcloud-redis
      - REDIS_HOST_PASSWORD=<REDIS_PASSWORD>
      - NEXTCLOUD_ADMIN_USER=admin
      - NEXTCLOUD_ADMIN_PASSWORD=<ADMIN_PASSWORD>
      - NEXTCLOUD_TRUSTED_DOMAINS=localhost cloudcdm.contentsdigital.us
    volumes:
      - /data/nextcloud/data:/var/www/html
      - /data/nextcloud/config:/var/www/html/config
      - /data/nextcloud/custom-apps:/var/www/html/custom_apps
      - /data:/var/www/html/data/admin/files/ServerData:ro
    networks:
      - nextcloud-net
    depends_on:
      nextcloud-db:
        condition: service_healthy
      nextcloud-redis:
        condition: service_healthy

  nextcloud-cron:
    image: nextcloud:29-apache
    container_name: nextcloud-cron
    restart: unless-stopped
    entrypoint: /cron.sh
    volumes:
      - /data/nextcloud/data:/var/www/html
    networks:
      - nextcloud-net

networks:
  nextcloud-net:
    driver: bridge
    ipam:
      config:
        - subnet: 172.30.0.0/16

ขั้นตอนที่ 3: Deploy

bash
cd /data/nextcloud
sudo -u ccdev docker compose up -d

ขั้นตอนที่ 4: แก้ไข ACL Permissions

เนื่องจากไฟล์ใน /data/Company/ ใช้ ACL แบบจำกัดสิทธิ์ ต้องแก้ให้ www-data (uid 33) อ่านได้:

bash
sudo setfacl -R -m o::rX /data/Company/
sudo chmod -R o+rX /data/Company/

ขั้นตอนที่ 5: ติดตั้ง Group Folders App

bash
sudo -u ccdev docker exec -u www-data nextcloud-app php occ app:install groupfolders
sudo -u ccdev docker exec -u www-data nextcloud-app php occ app:enable groupfolders

ขั้นตอนที่ 6: สร้าง Group Folders

bash
# สร้างโฟลเดอร์สำหรับแต่ละแผนก
for name in "00_Admin" "01_Accounting" "02_Marketing" "03_Video" \
            "04_AI_QCCAP" "05_Staff" "90_Archive" "99_Backup_Drop"; do
  sudo -u ccdev docker exec -u www-data nextcloud-app \
    php occ groupfolders:create "$name"
done

# กำหนดสิทธิ์  
# ID 1 (00_Admin) → nas_admin
# ID 2 (01_Accounting) → nas_accounting
# ID 3 (02_Marketing) → nas_marketing
# ...เป็นต้น...

ขั้นตอนที่ 7: Bind Mount Department Folders

bash
GFDIR="/data/nextcloud/data/__groupfolders"

sudo mkdir -p "$GFDIR/1/00_Admin" "$GFDIR/2/01_Accounting" \
             "$GFDIR/3/02_Marketing" "$GFDIR/4/03_Video" \
             "$GFDIR/5/04_AI_QCCAP" "$GFDIR/6/05_Staff" \
             "$GFDIR/7/90_Archive" "$GFDIR/8/99_Backup_Drop"
sudo chown -R 33:33 "$GFDIR"

# Bind mounts
sudo mount --bind /data/Company/00_Admin "$GFDIR/1/00_Admin"
# ... (ทำซ้ำสำหรับทุกแผนก)

ขั้นตอนที่ 8: ทำให้ Mount Persist

เพิ่มใน /etc/fstab:

/data/Company/00_Admin /data/nextcloud/data/__groupfolders/1/00_Admin none bind,ro 0 0
/data/Company/01_Accounting /data/nextcloud/data/__groupfolders/2/01_Accounting none bind,ro 0 0
# ... (ทำซ้ำสำหรับทุกแผนก)

ขั้นตอนที่ 9: Scan Files

bash
sudo -u ccdev docker exec -u www-data nextcloud-app php occ files:scan admin

for id in 1 2 3 4 5 6 7 8; do
  sudo -u ccdev docker exec -u www-data nextcloud-app \
    php occ groupfolders:scan $id
done

ขั้นตอนที่ 10: สร้าง Users และ Groups

bash
# Groups
sudo -u ccdev docker exec -u www-data nextcloud-app php occ group:add nas_admin
sudo -u ccdev docker exec -u www-data nextcloud-app php occ group:add nas_accounting
# ... (ทำซ้ำ)

# Users  
sudo -u ccdev docker exec -u www-data nextcloud-app \
  php occ user:add --password-from-env --group nas_admin nas_admin
# ... (ทำซ้ำ)

Users Management

✅ ตรวจสอบการติดตั้ง

bash
curl -s https://cloudcdm.contentsdigital.us/status.php
# ควรได้: {"installed":true,"version":"29.0.16.1",...}

Nextcloud NAS Documentation