Last active
September 8, 2019 14:46
-
-
Save renevo/6a9e244b670df334c42578b8fe95400b to your computer and use it in GitHub Desktop.
Nextcloud - Cloud-Init with Docker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: '3' | |
volumes: | |
nextcloud: | |
services: | |
app: | |
image: nextcloud | |
ports: | |
- 80:80 | |
environment: | |
- SQLITE_DATABASE=cloud | |
- NEXTCLOUD_ADMIN_USER=pirate | |
- NEXTCLOUD_ADMIN_PASSWORD=hypriot | |
volumes: | |
- nextcloud:/var/www/html | |
- /var/cloud/data:/var/www/html/data | |
restart: always |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apt-get install pv unzip hdparm | |
curl -O https://raw.githubusercontent.com/hypriot/flash/master/$(uname -s)/flash | |
chmod +x flash | |
sudo mv flash /usr/local/bin/flash | |
# Download this yaml from this repo | |
rm ./user-data.yml | |
curl -O https://gist.githubusercontent.com/RenEvo/6a9e244b670df334c42578b8fe95400b/raw/user-data.yml | |
flash \ | |
--hostname mycloud.home.renevo.com \ | |
--userdata ./user-data.yml \ | |
https://github.com/DieterReuter/image-builder-rpi64/releases/download/v20171013-172949/hypriotos-rpi64-v20171013-172949.img.zip |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#cloud-config | |
# vim: syntax=yaml | |
# | |
# The current version of cloud-init in the Hypriot rpi-64 is 0.7.9 | |
# When dealing with cloud-init, it is SUPER important to know the version | |
# I have wasted many hours creating servers to find out the module I was trying to use wasn't in the cloud-init version I had | |
# Documentation: http://cloudinit.readthedocs.io/en/0.7.9/index.html | |
# Set your hostname here, the manage_etc_hosts will update the hosts file entries as well | |
hostname: nextcloud-pi64 | |
manage_etc_hosts: true | |
# This expands the root volume to the entire SD Card, similar to what the raspbian images did on first boot. | |
# This doesn't seem to be required, its more here for posterity in understanding what is going on | |
resize_rootfs: true | |
growpart: | |
mode: auto | |
devices: ["/"] | |
ignore_growroot_disabled: false | |
# You could modify this for your own user information | |
users: | |
- name: pirate | |
gecos: "Hypriot Pirate" | |
sudo: ALL=(ALL) NOPASSWD:ALL | |
shell: /bin/bash | |
groups: users,docker,video | |
plain_text_passwd: hypriot | |
lock_passwd: false | |
ssh_pwauth: true | |
chpasswd: { expire: false } | |
# Update our packages on first boot, saves us some time | |
package_update: true | |
package_upgrade: true | |
package_reboot_if_required: true | |
# Install any additional packages you need here | |
# I add ntp because.. without it, rpi is useless in keeping track of time. | |
packages: | |
- ntp | |
# Set the locale of the system | |
locale: "en_US.UTF-8" | |
# Set the timezone | |
# Value of 'timezone' must exist in /usr/share/zoneinfo | |
timezone: "America/Los_Angeles" | |
# Tell docker to tag this node appropriately | |
# Currently we need the experimental? | |
write_files: | |
- path: "/etc/docker/daemon.json" | |
owner: "root:root" | |
content: | | |
{ | |
"labels": [ "os=linux", "arch=arm64" ], | |
"experimental": true | |
} | |
# These commands will be ran once on first boot only | |
runcmd: | |
# Pickup the hostname changes | |
- [ systemctl, restart, avahi-daemon ] | |
# Pickup the daemon.json changes | |
- [ systemctl, restart, docker ] | |
# Init a swarm, because why not | |
- [docker, swarm, init ] | |
# Run portainer, so we can see our logs and control stuff from a UI | |
- [ | |
docker, service, create, | |
"--detach=false", | |
"--name", "portainer", | |
"--publish", "9000:9000", | |
"--mount", "type=volume,src=portainer_data,dst=/data", | |
"--mount", "type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock", | |
"portainer/portainer", "-H", "unix:///var/run/docker.sock", "--no-auth" | |
] | |
# Create a specific directory to store all the data, this way you could mount an external drive later (coming soon!) | |
- [mkdir, "-p", "/var/cloud/data" ] | |
# This gives the nextcloud permissions to write to this directory since it runs as www-data | |
- [setfacl, "-m", "u:www-data:rwx", "/var/cloud/data" ] | |
# Create the nextcloud instance configuring it on startup - you should change the user/password below to something less obvious or use the config UI | |
- [ | |
docker, service, create, | |
"--detach=false", | |
"--name", "nextcloud", | |
"--publish", "80:80", | |
"--mount", "type=volume,src=nextcloud,dst=/var/www/html", | |
"--mount", "type=bind,src=//var/cloud/data,dst=/var/www/html/data", | |
"--env", "SQLITE_DATABASE=nextcloud", | |
"--env", "NEXTCLOUD_ADMIN_USER=pirate", | |
"--env", "NEXTCLOUD_ADMIN_PASSWORD=hypriot", | |
"nextcloud:latest" | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@renevo I have been trying to bootstrap your project with Hypriot 1.10 configuring wifi instead of the ethernet interfaces. I was trying to start with this guide: https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ but found that I needed to back-step to this page for an example user-data: https://blog.hypriot.com/faq/. Basically by placing that section in the
wifi.yml
to pass toflash
I do see that the/etc/wpa_supplicant/wpa_supplicant.conf
file is updated and has the correct information in it - however the interface does not look to be using any of the settings with a check ofifconfig
to see an associated IP (I am, of course, able to tell this by plugging in an ethernet cable to get to the box and verifying the contents of the file). Are there more exampleuser-data
files / yml that use the RPi wifi for a kubernetes cluster?