ownCloud 部署教程(Ubuntu + Nginx + Docker Compose,支持 HTTPS)
本教程介绍如何在 Ubuntu 20.04/22.04 上,使用 Docker Compose 快速部署 ownCloud,并通过 Nginx + HTTPS 提供安全访问。
一、准备工作
- 服务器:Ubuntu 20.04 / 22.04
- 域名:
cloud.abc.xyz(已解析到服务器 IP)
- 已有证书(由 acme.sh 签发,自行申请即可):
- fullchain:
/root/.acme.sh/cloud.abc.xyz_ecc/fullchain.cer
- privkey:
/root/.acme.sh/cloud.abc.xyz_ecc/cloud.abc.xyz.key
👉 提示:证书路径请根据自己实际申请路径修改。
二、安装 Docker + Docker Compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| sudo apt remove -y docker.io containerd containerd.io sudo apt autoremove -y
sudo apt update sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
docker --version docker compose version
|
👉 说明:本文使用 docker compose(新插件方式),如果你系统里只能用 docker-compose,可以替换命令。
三、安装配置 ownCloud
1 2 3 4 5 6
| sudo mkdir -p /opt/owncloud/{data,db} cd /opt/owncloud
sudo micro /opt/owncloud/docker-compose.yml
|
docker-compose.yml 内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| version: '3.7'
services: db: image: mariadb:10.6 restart: always command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW environment: - MYSQL_ROOT_PASSWORD=secret - MYSQL_PASSWORD=owncloud - MYSQL_DATABASE=owncloud - MYSQL_USER=owncloud volumes: - ./db:/var/lib/mysql
owncloud: image: owncloud/server:10.13 restart: always ports: - 8080:8080 depends_on: - db environment: - OWNCLOUD_DOMAIN=cloud.abc.xyz - OWNCLOUD_DB_TYPE=mysql - OWNCLOUD_DB_NAME=owncloud - OWNCLOUD_DB_USERNAME=owncloud - OWNCLOUD_DB_PASSWORD=owncloud - OWNCLOUD_DB_HOST=db - OWNCLOUD_ADMIN_USERNAME=admin - OWNCLOUD_ADMIN_PASSWORD=adminpass - OWNCLOUD_MYSQL_UTF8MB4=true volumes: - ./data:/var/www/html
|
启动容器:
此时 ownCloud 运行在 http://127.0.0.1:8080,访问公网IP+端口即可
四、配置 Nginx 反向代理 + HTTPS
新建配置文件:
1
| sudo micro /etc/nginx/sites-available/owncloud.conf
|
owncloud.conf 内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| server { listen 80; server_name cloud.abc.xyz;
location / { return 301 https://$host$request_uri; } }
server { listen 443 ssl http2; server_name cloud.abc.xyz;
ssl_certificate /root/.acme.sh/cloud.abc.xyz_ecc/fullchain.cer; ssl_certificate_key /root/.acme.sh/cloud.abc.xyz_ecc/cloud.abc.xyz.key;
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5;
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
}
|
启用站点并重启 Nginx:
1 2 3
| sudo ln -s /etc/nginx/sites-available/owncloud.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
|
五、访问 ownCloud
打开浏览器访问:
👉 https://cloud.abc.xyz
初始账号密码:
进入后台后即可使用 ownCloud。
👉 如果访问失败,请检查:
- Nginx 是否正确代理
- 防火墙或云服务器安全组是否放行 80、443 端口