在服务器上用 Docker + Apache 部署 Nextcloud

本文记录了如何使用 Docker + Apache 反向代理 部署 Nextcloud,并配置 HTTPS 访问。


一、创建目录

首先在服务器上创建一个目录来存放配置文件和数据:

mkdir -p ~/nextcloud-docker
cd ~/nextcloud-docker

二、创建 docker-compose.yml

~/nextcloud-docker/ 下新建一个 docker-compose.yml 文件,内容如下:

version: '3'

services:
  db:
    image: mariadb:10.6
    container_name: nextcloud-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: yZaishandsOme.34
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: yZaishandsOme.34
    volumes:
      - db_data:/var/lib/mysql

  app:
    image: nextcloud
    container_name: nextcloud-app
    restart: always
    ports:
      - 13243:80
    links:
      - db
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: yZaishandsOme.34
    volumes:
      - nextcloud_data:/var/www/html

volumes:
  db_data:
  nextcloud_data:

⚠️ 注意:请修改 MYSQL_ROOT_PASSWORDMYSQL_PASSWORD,不要直接使用示例中的密码!


三、启动容器

docker-compose.yml 文件所在目录执行:

docker compose up -d

四、访问 Nextcloud

浏览器访问:

http://你的服务器IP:13243

首次打开会提示设置管理员账号,数据库信息已在 compose 文件中配置好,直接下一步即可。


五、配置 Apache 反向代理

假设你使用 Apache 作为反向代理,域名为 cloud.example.com,Nextcloud 容器监听 13243 端口。

先安装apache (如果没安装)

sudo apt install apache2 -y

1. 启用代理模块

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod headers
sudo a2enmod ssl
sudo systemctl restart apache2

2. 配置虚拟主机(HTTP 示例)

编辑配置文件:

sudo vim /etc/apache2/sites-available/nextcloud.conf

写入以下内容:

<VirtualHost *:80>
    ServerName cloud.example.com

    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass / http://127.0.0.1:13243/
    ProxyPassReverse / http://127.0.0.1:13243/

    <Location />
        Require all granted
    </Location>
</VirtualHost>

3. 启用站点并重启 Apache

sudo a2ensite nextcloud.conf
sudo systemctl reload apache2

4. 测试访问

现在直接访问:

http://cloud.example.com

就会通过 Apache 反向代理到 Docker 里的 Nextcloud。


六、配置 HTTPS(Let’s Encrypt)

安装 Certbot 和 Apache 插件:

sudo apt install certbot python3-certbot-apache -y

获取证书:

sudo certbot --apache

配置完成后,就可以通过 https://cloud.example.com 访问了。


七、修改 Nextcloud 配置

如果出现 登录转圈圈域名不受信任 的问题,需要修改 Nextcloud 的配置文件。

1. 查看 Docker 卷

sudo docker volume ls

输出示例:

DRIVER    VOLUME NAME
local     nextcloud_data
local     db_data

2. 编辑 config.php

找到配置文件:

sudo vim /var/lib/docker/volumes/nextcloud_data/_data/config/config.php

在配置中加入以下内容(根据实际域名修改):

'trusted_proxies' => ['127.0.0.1', '144.24.55.199'],
'forwarded_for_headers' => ['HTTP_X_FORWARDED_FOR'],
'overwrite.cli.url' => 'https://cloud.zhzxs.xyz',
'overwritehost' => 'cloud.zhzxs.xyz',
'overwriteprotocol' => 'https',
'overwritewebroot' => '/',

同时,把你的域名加入 trusted_domains,防止无法登录。


✅ 至此,Nextcloud 已经通过 Docker + Apache + HTTPS 成功部署并可以正常访问。


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇