NextCloud-prep/README.md

2.9 KiB

This is a Ansible playbook for configuring a stock Debian 12 (bookworm) cloud image to install NextCloud under a LAMP stack.

NOTE! The stanzas reponsible for creating the /data filesystem on vdb in roles/system/tasks/main.yml have been commented out for testing, remember to uncomment them before you run this in production.

This was tested on a Debian-derived x86_64 system with 8GB RAM and 4 cores under QEMU/KVM.

To test this playbook on a Debian-based OS using QEMU/KVM, do the following:

  • Install the following packages if not already installed:
  • ansible
  • ansible-lint
  • cloud-init
  • cloud-guest-utils
  • cloud-image-utils
  • qemu-system-x86_64
  • qemu-utils
  • ssh
  • ssh-askpass
  • wget
  • whois (for mkpasswd)
  • Copy the file cloud-init.cfg from the data/ directory

    NOTE! this is a YAML file, proper spacing is required!

    The hashed password was created using

$ mkpasswd -m sha-512
  • Create the seed image:
cloud-localds seed.iso cloud-init.cfg
  • Download the latest debian 12 cloud image if you haven't done so already:
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2

NOTE! Do NOT try to use the generic cloud image, it will NOT work!

  • Copy the cloud image because cloud-init will change the image the first time you run it under QEMU:
cp debian-12-generic-amd64.qcow2 test.qcow2
  • The cloud image is only something like 2GB and installing anything substantial on it will fail, so you need to resize it:
qemu-img resize test.qcow2 10G
  • Start the VM:
qemu-system-x86_64 \
    -name test \
    -machine pc-q35-5.2,accel=kvm \
    -cpu host \
    -m 4096 \
    -nographic \
    -boot strict=on \
    -drive file=test.qcow2,format=qcow2,media=disk \
    -drive file=seed.iso,media=cdrom \
    -nic user,ipv6=off,model=e1000,hostfwd=tcp:127.0.0.1:6666-:22,hostfwd=tcp:${SSH_HOST}:8080-:80
  • After the VM has started and cloud-init has finished and you see a login prompt, do the following in another terminal to run the ansible playbook:
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook site.yml --user installer --ask-pass -i hosts

when it asks you for the SSH password, type "password"

  • If the installation is successful, it will print the MariaDB root and nextcloud user's passwords. Be sure to copy these down, you will need them when you configure NextCloud from your browser. The NextCloud database is "nextcloud" and the user is "nextcloud".

  • Once the VM is running, you can ssh to it using the following:

ssh-keygen -f "${HOME}/.ssh/known_hosts" -R "[127.0.0.1]:6666"

ssh installer@127.0.0.1 -p 6666

the password is "password"

After Ansible finishes installing NextCloud, you will be able to reach the webserver running on the VM by going to localhost:8080 in your browser. Follow the onscreen directions to finish configuring NextCloud using the database passwords Ansible provides at the end of the installation.