Centos7搭建Owncloud云盘 Docker-compose版

在搭建私人网盘项目时,我也对比过市面上各种各样的网盘程序,其中最中意的就是owncloud。其实也看过nextcloud,感觉nextcloud比owncloud太花哨了,已经脱离的云盘的样子了,更像是一个你的一个控制中心。我只想要一个纯粹的网盘功能,所以owncloud成为了我的绝佳选择。

本教程将会在centos7系统上使用docker-compose搭建owncloud程序。


1.准备环境:

  • 系统:centos7.9-2009
  • YUM源和EPEL源的问题自行解决
  • 网络问题自行解决

2.部署docker和docker-compose

2-1.部署docker

下载并安装docker
wget -qO- https://get.docker.com/ | sh

运行docker
systemctl start docker.service

开机自启动docker
systemctl enable docker.service

查看docker运行状态
systemctl status docker.service

查看docker版本
docker -v

2-2.部署docker-compose

  • 选择docker-compose版本:https://github.com/docker/compose/releases
sudo curl -L "https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose

Tip:自行修改必要参数

设置权限

sudo chmod +x /usr/local/bin/docker-compose

创建软链接

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

查看docker-compose版本:

docker-compose version

3.部署portainer中文汉化版:

docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data 6053537/portainer-ce

打开浏览器登录并设置portainer,默认被访端口9000

4.在portainer中添加owncloud的docker-compose的YAML文件

version: "3.7"

services:
  owncloud:
    image: owncloud/server:10.11.0
    container_name: owncloud_server
    restart: always
    ports:
      - 80:8080
    depends_on:
      - mariadb
      - redis
    environment:
      - OWNCLOUD_DOMAIN=test3.kingsbestone.com
      - OWNCLOUD_TRUSTED_DOMAINS=test3.kingsbestone.com
      
      - OWNCLOUD_DB_TYPE=mysql
      - OWNCLOUD_DB_NAME=owncloud
      - OWNCLOUD_DB_USERNAME=owncloud
      - OWNCLOUD_DB_PASSWORD=owncloud@000
      - OWNCLOUD_DB_HOST=mariadb
      
      - OWNCLOUD_ADMIN_USERNAME=admin
      - OWNCLOUD_ADMIN_PASSWORD=admin@000
      
      - OWNCLOUD_MYSQL_UTF8MB4=true
      - OWNCLOUD_REDIS_ENABLED=true
      - OWNCLOUD_REDIS_HOST=redis
    healthcheck:
      test: ["CMD", "/usr/bin/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - /home/docker_compose/owncloud/data:/mnt/data

  mariadb:
    image: mariadb:10.6 # minimum required ownCloud version is 10.9
    container_name: owncloud_mariadb
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=Admin@000
      - MYSQL_USER=owncloud
      - MYSQL_PASSWORD=owncloud@000
      - MYSQL_DATABASE=owncloud
    command: ["--max-allowed-packet=128M", "--innodb-log-file-size=64M"]
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=Admin@000"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - /home/docker_compose/owncloud/mariadb/mysql:/var/lib/mysql

  redis:
    image: redis:6
    container_name: owncloud_redis
    restart: always
    command: ["--databases", "1"]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - /home/docker_compose/owncloud/redis/data:/data

5.如需添加SSL证书,推荐使用反向代理的方式部署,如下:

version: "3.7"

services:
  owncloud:
    image: owncloud/server:10.11.0
    container_name: owncloud_server
    restart: always
    networks:
      - internal
    environment:
      - "OWNCLOUD_DOMAIN=b.kingsbestone.top"
      - "OWNCLOUD_TRUSTED_DOMAINS=b.kingsbestone.top"
      - "OWNCLOUD_DB_TYPE=mysql"
      - "OWNCLOUD_DB_NAME=owncloud"
      - "OWNCLOUD_DB_USERNAME=owncloud"
      - "OWNCLOUD_DB_PASSWORD=owncloud@000"
      - "OWNCLOUD_DB_HOST=mariadb"
      - "OWNCLOUD_ADMIN_USERNAME=admin"
      - "OWNCLOUD_ADMIN_PASSWORD=admin@000"
      - "OWNCLOUD_MYSQL_UTF8MB4=true"
      - "OWNCLOUD_REDIS_ENABLED=true"
      - "OWNCLOUD_REDIS_HOST=redis"
    healthcheck:
      test: ["CMD", "/usr/bin/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - "/home/docker_compose/owncloud/data:/mnt/data"

  mariadb:
    image: mariadb:10.6
    container_name: owncloud_mariadb
    restart: always
    networks:
      - internal
    environment:
      - "MYSQL_ROOT_PASSWORD=Admin@000"
      - "MYSQL_USER=owncloud"
      - "MYSQL_PASSWORD=owncloud@000"
      - "MYSQL_DATABASE=owncloud"
    command: ["--max-allowed-packet=128M", "--innodb-log-file-size=64M"]
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=Admin@000"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - "/home/docker_compose/owncloud/mariadb/mysql:/var/lib/mysql"

  redis:
    image: redis:6
    container_name: owncloud_redis
    restart: always
    networks:
      - internal
    command: ["--databases", "1"]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - "/home/docker_compose/owncloud/redis/data:/data"

  nginx-proxy-manager-zh:
    image: 'chishin/nginx-proxy-manager-zh'
    restart: always
    networks:
      - internal
    ports:
      - 80:80
      - 81:81
      - 443:443
    volumes:
      - "/home/docker_compose/nginx-proxy-manager-zh/data:/data"
      - "/home/docker_compose/nginx-proxy-manager-zh/letsencrypt:/etc/letsencrypt"

networks:
  internal:
    driver: bridge

 

PS:20230329,后面有空继续完善…..