在搭建私人网盘项目时,我也对比过市面上各种各样的网盘程序,其中最中意的就是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,后面有空继续完善…..