{"id":17698492,"url":"https://github.com/pmeinhardt/huck-up","last_synced_at":"2025-05-13T10:41:28.557Z","repository":{"id":141524240,"uuid":"62942616","full_name":"pmeinhardt/huck-up","owner":"pmeinhardt","description":"raspberry pi setup – automated, modular and personalized 🍱","archived":false,"fork":false,"pushed_at":"2020-08-04T22:15:41.000Z","size":324,"stargazers_count":10,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-20T23:32:37.634Z","etag":null,"topics":["ansible","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pmeinhardt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-09T09:36:10.000Z","updated_at":"2023-03-05T06:22:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"ab7673ae-eecf-430f-a424-ceffa2cff57b","html_url":"https://github.com/pmeinhardt/huck-up","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmeinhardt%2Fhuck-up","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmeinhardt%2Fhuck-up/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmeinhardt%2Fhuck-up/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmeinhardt%2Fhuck-up/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pmeinhardt","download_url":"https://codeload.github.com/pmeinhardt/huck-up/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253925418,"owners_count":21985309,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","raspberry-pi"],"created_at":"2024-10-24T15:09:21.082Z","updated_at":"2025-05-13T10:41:28.525Z","avatar_url":"https://github.com/pmeinhardt.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Huckleberry - Welcome home [![CircleCI](https://circleci.com/gh/pmeinhardt/huck-up.svg?style=svg)](https://circleci.com/gh/pmeinhardt/huck-up)\n\nMy personal [Raspberry Pi](https://www.raspberrypi.org/) (home server) management.\n\nBuilt using [Ansible](https://github.com/ansible/ansible).\n\n\u003cimg title=\"Say hello to your provisioned Pi\" width=\"490px\" src=\"screenshot.png\"\u003e\n\n## Components\n\n- **ssh-keys** to copy your public SSH key so you can connect securely without typing your password\n- **essentials** installs a few useful server monitoring and common build tools\n- **dotfiles** sets up the server dotfiles, including git configuration\n- **motd** installs the nice \"message of the day\" greeting you can see above\n- **zsh** sets up Zsh as the default shell (configurable via dotfiles)\n- **mosh** installs the [mobile shell](https://github.com/mobile-shell/mosh) remote terminal application\n- **python** installs [Python](https://www.python.org/) with pip and pipenv\n- **go** installs [Go](https://golang.org/)\n- **rust** installs [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)\n- **ruby** installs [rbenv](https://github.com/rbenv/rbenv), [rbenv-update](https://github.com/rkh/rbenv-update) and [ruby-build](https://github.com/rbenv/ruby-build) which you can then use to install a [Ruby](https://www.ruby-lang.org/) of your choice\n- **node** installs [Node.js](https://nodejs.org/) and [npm](https://github.com/npm/cli)\n- **home** creates a default directory structure in your home directory\n- **shairport-sync** builds [Shairport Sync](https://github.com/mikebrady/shairport-sync) for wireless music streaming from your Apple device to your Pi via AirPlay\n- **media-tools** installs useful media players, like mplayer\n- **hifiberry** configures your Pi to work with the [HiFiBerry](https://www.hifiberry.com/) DAC+ card\n\n## Preparations\n\nThere are a few things which you'll need to prepare. Here we go:\n\n1. **💾 Prepare an SD card** Huck-up automates server management using Ansible. Its playbooks are written with Raspbian/Debian systems in mind. If you don't have a Raspberry Pi operating system on an SD card yet, download [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) and [install](https://www.raspberrypi.org/documentation/installation/installing-images/) it.\n\n   Note: On Raspbian the SSH server is disabled by default. After installing the image, insert the prepared SD card into your local machine and place an empty `ssh` file onto the boot partition to [enable SSH](https://www.raspberrypi.org/documentation/remote-access/ssh/).\n\n2. **🔌 Get your Pi up.** Push the card into your Pi and power it up.\n\n3. **🔗 Connect your Pi.** Your Raspberry Pi needs to be connected to your local network. Just hook it up to your router with an ethernet cable if you have one, or else configure [WiFi](https://www.raspberrypi.org/documentation/configuration/wireless/).\n\n4. **⚙ Install Ansible.** On your local machine, install [Ansible](http://docs.ansible.com/ansible/intro_installation.html). Alternatively you can also run the huck-up playbook directly on your Pi.\n\n5. **📦 Clone this repo…** `git clone https://github.com/pmeinhardt/huck-up.git \u0026\u0026 cd huck-up`\n\n## Provisioning\n\n**Now it is time you adapt the service and deployment configuration to your needs.**\n\nWe recommend you keep these versioned in your own fork of this repository.\n\n- Right away, you'll want to edit `base.yml` to your liking and select the roles you need.\n\n- Create a file named `vars/private.yml` and hack away. Values in `private.yml` take precedence over anything defined in `default.yml`. If you're fine with the defaults, just `touch vars/private.yml` and you're done.\n\n- You should probably keep a backup copy of your `private.yml` in a safe place, e.g. in your 1Password vault or somewhere similar.\n\n- Alternatively: You may want to encrypt your `private.yml` using Ansible Vault if you plan on keeping it in your repository. A brief description is presented in a separate section below.\n\n**Be sure not to commit passwords into public repos!**\n\nIf you have made changes to your Pi already - in particular if it is available under a different hostname - update the `raspberries` inventory file or create a private copy that you pass to Ansible via the `-i/--inventory` option.\n\nYou can verify your Pi is reachable by running:\n\n```shell\nansible --inventory=raspberries --ask-pass --args=\"/bin/hostname\" raspberries\n```\n\nThe default password is `raspberry` (make sure you change it).\n\n**To bootstrap your Pi, run:**\n\n```shell\n./script/bootstrap # if you have not changed the default username\n./script/bootstrap --user=USERNAME # otherwise\n```\n\nor, if running [locally](http://docs.ansible.com/ansible/playbooks_delegation.html#local-playbooks) on your Pi:\n\n```shell\n# change the \"hosts:\" entry in base.yml to \"hosts: 127.0.0.1\", then run:\nansible-playbook base.yml --connection=local\n```\n\nThis will get everything set up and you're good to go.\n\nYou might have to reboot your Pi for some changes to take effect, e.g. the HiFiBerry device tree setup.\n\n**You can rerun these commands from time to time in order to keep your Pi up-to-date.**\n\nA handy script to do that for you is available. Just run `./script/update`.\n\n## Encrypting configuration files\n\nIf you keep application secrets in your configuration files, you can use [Ansible Vault](http://docs.ansible.com/ansible/playbooks_vault.html) to encrypt them.\n\nWhen you override the default variables for a deployment for instance, encrypt the variables file as follows:\n\n```\nansible-vault encrypt vars/config.yml\n```\n\nThis will prompt for a password and save the file as encrypted data. When running a playbook containing Vault-encrypted files append `--ask-vault-pass`, i.e. run:\n\n```\nansible-playbook --inventory=raspberries base.yml --extra-vars=@vars/config.yml --ask-vault-pass\n```\n\n## Creating backups\n\nTo come.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmeinhardt%2Fhuck-up","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpmeinhardt%2Fhuck-up","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmeinhardt%2Fhuck-up/lists"}