Ubuntu24.04系统Docker安装Nextcloud+Onlyoffice

0 / 69

1.Ubuntu 系统下载

Ubuntu 镜像站大全

我用的是山东大学的镜像站的 desktop 版本,就是有 GUI 图形界面,不需要图形界面可以下载 server 版本

2.开启 SSH 启用 root 用户远程登陆

我需要 MobaXterm 进行连接,所以安装完系统后需要开启 SSH,不需要使用远程工具远程可以跳过这个步骤

  • 安装 SSH
apt-get install openssh-server
  • 打开 SSH 配置文件 /etc/ssh/sshd_config。你可以使用你喜欢的文本编辑器来编辑它,比如使用 nano 或者 vi/vim。这里以 nano 为例:
sudo nano /etc/ssh/sshd_config

PermitRootLogin prohibit-password 修改为 PermitRootLogin yes 后保存
修改前:

修改后:

  • 重启 SSH 服务,如果报错可能是 sshd
sudo systemctl restart ssh
  • 设置 root 用户强密码
sudo passwd root
  • 连接测试

3.安装 Docker

https://docs.docker.com/engine/install/ubuntu/

所有命令最好都在 root 用户下运行

sudo -i
  • 运行以下命令卸载所有冲突的包:
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
  • 设置 Docker 的 apt 存储库
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  • 安装 Docker 软件包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 通过运行 docker version 映像来验证 Docker 引擎安装是否成功,会显示安装的版本
docker version

4.创建 docker-compose.yml 文件

#创建目录
mkdir /opt/nextcloud
cd /opt/nextcloud/
#nano创建编辑docker-compose.yml文件,Ctrl+O写入,Ctrl+X退出;也可以用vim看个人喜欢
nano docker-compose.yml

docker-compose.yml 填入以下内容,根据需要修改以下配置
容器默认时区为 UTC 时区,所以修改为上海时区

version: '3.8'

services:
  db:
    image: mysql:latest
    container_name: nextcloud_mysql	       # 自定义容器名称
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_root_password  # 定义 MySQL 的 root 密码
      MYSQL_PASSWORD: your_password            # 定义 MySQL 用户的密码
      MYSQL_DATABASE: nextcloud                # 创建数据库名为 nextcloud
      MYSQL_USER: nextcloud                    # 定义 MySQL 用户名
      TZ: Asia/Shanghai                        # 设置时区为上海
    volumes:
      - mysql_data:/var/lib/mysql              # MySQL 数据持久化
    networks:
      - nextcloud_network

  app:
    image: nextcloud:latest
    container_name: nextcloud		       # 自定义容器名称
    restart: always
    depends_on:
      - db
    environment:
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: your_password            # MYSQL密码
      MYSQL_HOST: db
      TZ: Asia/Shanghai                        # 设置时区为上海
    volumes:
      - nextcloud_data:/var/www/html           # Nextcloud 数据持久化
    ports:
      - "8080:80"
    networks:
      - nextcloud_network

  onlyoffice:
    image: onlyoffice/documentserver:7.1.0
    container_name: nextcloud_onlyoffice       # 自定义容器名称
    restart: always
    environment:
      JWT_ENABLED: 'false'                     # 关闭 JWT,因此不需要密钥
      JWT_SECRET:                              # 不设置密钥
      TZ: Asia/Shanghai                        # 设置时区为上海
    ports:
      - "8081:80"
    networks:
      - nextcloud_network

networks:
  nextcloud_network:                           # 定义网络

volumes:
  mysql_data:                                  # 定义 MySQL 的数据卷
  nextcloud_data:                              # 定义 Nextcloud 的数据卷

运行

docker compose up -d

然后查看运行中的容器

docker ps -a

[](http://aiqianji.oss-cn-shenzhen.aliyuncs.com/images/2024/11/01/af63e8dd9