使用 KodCloud 管理和共享家庭 NAS 中的数据。

为什么选择 KodCloud

试用了几个产品,整体感觉 KodCloud 更符合自己的使用习惯。

Nextcloud

支持双因素认证(2FA),整体偏商务,代码质量不错。功能比较复杂,试用下来感觉不太适合家庭使用。

docker run --rm -p 8081:80 nextcloud

KodCloud

界面美观,支持双因素认证(2FA),需要的功能基本都有。

docker run --rm -p 8082:80 kodcloud/kodbox

OpenCloud

启动时出现下面的错误,没有继续折腾:

The jwt_secret has not been set properly in your config for opencloud. Make sure your /etc/opencloud config contains the proper values (e.g. by using ‘opencloud init –diff’ and applying the patch or setting a value manually in the config/corresponding environment variable).

docker run --rm -p 8083:9200 opencloudeu/opencloud-rolling

File Browser

界面比较朴素,和名字一样,主要就是一个文件浏览器。

docker run --rm -p 8084:80 filebrowser/filebrowser

Pingvin Share

界面美观,主要用于文件分享,与当前需求不太一致。

docker run --rm -p 8085:3000 stonith404/pingvin-share

copyparty

这次试用没有正常跑起来,就没有继续折腾。

docker run --rm -p 8086:3923 copyparty/ac

创建配置文件

Compose 配置

创建 /mnt/ssd/docker/compose/kodcloud/compose.yaml:

services:
  db:
    container_name: KodCloud-DB
    image: mariadb:lts
    user: "1000:2000"
    command: --transaction-isolation=READ-COMMITTED
    restart: unless-stopped
    volumes:
      - "${KODCLOUD_DATA_DIR}/db:/var/lib/mysql"
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MARIADB_AUTO_UPGRADE=1
      - MARIADB_DISABLE_UPGRADE_BACKUP=1
    env_file:
      - .env

  redis:
    container_name: KodCloud-Redis
    image: redis:alpine
    restart: unless-stopped

  app:
    container_name: KodCloud
    image: kodcloud/kodbox
    restart: unless-stopped
    ports:
      - 2030:80
    volumes:
      - "${DATA_DIR}/site:/var/www/html"
      - "${STORAGE_DIR}:/data/storage"
    environment:
      - MYSQL_HOST=db
      - REDIS_HOST=redis
      - PUID=1000
      - PGID=2000
    env_file:
      - .env
    depends_on:
      - db
      - redis

环境变量

创建 /mnt/ssd/docker/compose/kodcloud/.env:

DATA_DIR=/mnt/ssd/docker/data/kodcloud
STORAGE_DIR=/mnt/hdd/nas/share

MYSQL_ROOT_PASSWORD=你的数据库root密码
MYSQL_DATABASE=kodbox
MYSQL_USER=kodbox
MYSQL_PASSWORD=你的数据库密码

按需调整 compose.yaml 中的端口,以及 .env 中的数据目录、共享目录和数据库密码。


创建挂载目录

在前面一篇Docker安装 中,配置用户组 docker-nas

mkdir -p /mnt/ssd/docker/data/kodcloud/{db,site}
sudo chown -R ubuntu:docker-nas /mnt/ssd/docker/data/kodcloud

启动服务

在 /mnt/ssd/docker/compose/kodcloud 目录下执行:

docker compose up -d
docker compose logs --tail=100 app

完成初始化

打开浏览器,访问 http://服务器IP:2030,按页面提示完成初始化。剩下的设置就按自己的使用习惯自由发挥。