CLOUD-CONFIG(5)

πŸ“¦ version 3.4.1, in alpine 3.24

πŸ’– CLOUD-CONFIG(5) πŸ’–

okay so bestie, welcome to the cloud-config manual page β€” that's section 5 of the File Formats Manual, and yes it's giving "I read manpages for fun" energy, which is very much you now πŸ’…


✨ NAME ✨

cloud-config β€” the tiny-cloud-supported cloud-config user-data format 🌸


πŸ¦‹ DESCRIPTION πŸ¦‹

cloud-config describes the subset of cloud-init style user-data that tiny-cloud actually supports.

real talk: this is not a full implementation of upstream cloud-init semantics. Only the keys documented right here are supported by tiny-cloud's #cloud-config handler. no secret bonus keys, no cap πŸ’€

Your user-data document must begin with the header β€” like, this is non-negotiable bestie:

#cloud-config

πŸ‘‘ SUPPORTED KEYS πŸ‘‘

  • user β€” configures the default login user. tiny-cloud recognizes scalar and mapping forms, including name, homedir, shell, primary_group, and gecos. ✨
  • users β€” configures additional users. The first entry may be default to keep the default user. Supported per-user keys are name, gecos, homedir, shell, primary_group, system, no_create_home, passwd, hashed_passwd, lock_passwd, groups, doas, and ssh_authorized_keys.
    • passwd and hashed_passwd contain an encrypted password hash, not a plain-text password. passwd is applied only when tiny-cloud creates the user, preserving the password of an account that already exists. hashed_passwd is applied to both new and existing accounts and takes precedence when both keys are present. lock_passwd defaults to true; when enabled, the account is locked after its password hash is set. Set it to false to permit password login. πŸ”₯
  • ssh_authorized_keys β€” install SSH keys for the default user selected by user or users. πŸ—οΈ
  • groups β€” create additional groups. 🫢
  • bootcmd β€” run commands during the main phase before later package and file actions. ⏰
  • write_files β€” write files to disk. tiny-cloud supports path, content, permissions, owner, encoding, and append. Supported encodings are text/plain, base64, b64, gzip, gz, gz+base64, gzip+base64, gz+b64, and gzip+b64. πŸ“
  • ntp β€” enable and configure NTP. Supported keys are enabled and ntp_client. Recognized client values are busybox, chrony, and openntpd. πŸ•°οΈ
  • package_update β€” when set to true, run apk update. πŸ”„
  • package_upgrade β€” when set to true, run apk upgrade. ⬆️
  • packages β€” install packages with apk add. πŸ“¦
  • runcmd β€” run commands during the final phase. 🏁

🌈 NOTES 🌈

The implementation is Alpine-focused. Package management and service control are performed with Alpine tools such as apk(8), rc-update(8), and rc-service(8).

For Alpine-specific extensions beyond this subset, see alpine-config(5). iykyk 🧚


πŸŽ€ EXAMPLES πŸŽ€

A more complete example, and yes she ate:

#cloud-config
user:
  name: alpine
  shell: /bin/ash
ssh_authorized_keys:
  - ssh-ed25519 AAAA... user@example.com
groups:
  - wheel
package_update: true
packages:
  - curl
  - jq
write_files:
  - path: /etc/motd
    permissions: '0644'
    content: |
      tiny-cloud configured this host
runcmd:
  - echo ready >/var/tmp/cloud-ready

This example sets the default user, installs SSH keys, creates a group, installs packages, writes a file, and runs a final command. literally the whole personality of a cloud instance in one little YAML file πŸ˜­πŸ’–


⭐ SEE ALSO ⭐

alpine-config(5), tiny-cloud(8)


that's the whole page bestie, go configure something iconic πŸ’…βœ¨

love u, stay hydrated, and remember this is section 5 of the File Formats Manual, dated 2026-08-24 πŸ“πŸ¦‹πŸ’œ

πŸ“¦ where this page comes from