{"id":15444551,"url":"https://github.com/cariad/tanuki","last_synced_at":"2025-03-28T08:13:49.676Z","repository":{"id":53567415,"uuid":"350256036","full_name":"cariad/tanuki","owner":"cariad","description":"My Intel NUC setup script","archived":false,"fork":false,"pushed_at":"2021-03-23T20:15:55.000Z","size":5,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-02T08:43:23.618Z","etag":null,"topics":["intel-nuc","ubuntu"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cariad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"cariad"}},"created_at":"2021-03-22T07:59:07.000Z","updated_at":"2021-03-23T20:15:57.000Z","dependencies_parsed_at":"2022-09-11T23:50:19.525Z","dependency_job_id":null,"html_url":"https://github.com/cariad/tanuki","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/cariad%2Ftanuki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cariad%2Ftanuki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cariad%2Ftanuki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cariad%2Ftanuki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cariad","download_url":"https://codeload.github.com/cariad/tanuki/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245991585,"owners_count":20706129,"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":["intel-nuc","ubuntu"],"created_at":"2024-10-01T19:41:46.882Z","updated_at":"2025-03-28T08:13:49.652Z","avatar_url":"https://github.com/cariad.png","language":"Shell","funding_links":["https://github.com/sponsors/cariad"],"categories":[],"sub_categories":[],"readme":"# tanuki: My Intel NUC setup script\n\n[![tanuki](https://github.com/cariad/tanuki/actions/workflows/ci.yml/badge.svg)](https://github.com/cariad/tanuki/actions/workflows/ci.yml)\n\nHi! I'm [Cariad](https://cariad.io), and I'm a freelance Python developer by trade.\n\nI run Visual Studio Code on a MacBook Pro (aka _macaroni_) and use the Remote SSH extension to develop, test and run my code on an Intel NUC (aka _tanuki_).\n\nThis project holds my scripts for building _tanuki_ up from an empty box to a remote Python development machine.\n\nWith thanks to [@dmrz](https://github.com/dmrz) for [inspiring](https://dimamoroz.com/2021/03/09/intel-nuc-for-development/) me to finish this!\n\n## What does it do?\n\n### Installs:\n\n- `aws`\n- `docker`\n- `pipenv`\n- `pyenv`\n- `python` 3.9\n\n### Creates:\n\n- SSH key pair for authenticating with GitHub, GitLab et al.\n- GPG key pair for signing git commits.\n\n### Configures:\n\n- GitHub and GitLab as trusted hosts\n- git name and email address\n\n### Enables:\n\n- Commit signing\n- CPU performance mode\n- Local domain name at `\u003cSERVER NAME\u003e.local`\n\n## Build your own _tanuki_\n\n_This list contains Amazon UK affiliate links. As an Amazon Associate, I earn from qualifying purchases._\n\nIf you want to follow along, these are the parts I use:\n\n- [Intel NUC10i5FNH NUC](https://amzn.to/3d1HEud)\n- [Corsair Vengeance 32 GB RAM](https://amzn.to/3r8yqkF)\n- [Samsung 980 PRO 250 GB](https://amzn.to/3ccXYcm)\n- [Samsung 32 GB USB stick](https://amzn.to/3lEV7Mg)\n\n## Prepare an SSH key pair\n\nYou'll need an SSH key pair to authenticate SSH sessions from your Mac into _tanuki_.\n\n1. On your Mac:\n\n    ```bash\n    ssh-keygen -t ed25519 -C cariad@hey.com  # Use your own email address\n    ssh-add -K ~/.ssh/id_ed25519             # Add to ssh-agent to remember your passphrase\n    pbcopy \u003c ~/.ssh/id_ed25519.pub           # Copy your public key to the clipboard\n    ```\n\n1. Add your new key [to your GitHub account](https://github.com/settings/ssh/new). _The Ubuntu installer will download your key from GitHub and set up OpenSSH for you._\n\n## Prepare an Ubuntu USB stick\n\n1. [Download Ubuntu Server 20.10](https://ubuntu.com/download/server#downloads). _Use BitTorrent; I like [transmission/transmission](https://github.com/transmission/transmission)._\n1. Burn the ISO to a USB stick. _I like [balena-io/etcher](https://github.com/balena-io/etcher)._\n\n## Personalise\n\nTo run this script yourself, fork the project then edit your [identity.sh](identity.sh).\n\n## Configure UEFI\n\n1. Connect _tanuki_ to a keyboard, monitor and network.\n1. Turn _tanuki_ on and hammer `F2` to open the UEFI menu.\n1. Press `F9` to load optimised defaults.\n1. Change:\n    - **Advanced / Onboard devices / HD audio:** _disable_\n    - **Advanced / Onboard devices / Digital microphone:** _disable_\n    - **Advanced / Onboard devices / WLAN:** _disable_\n    - **Advanced / Onboard devices / Bluetooth:** _disable_\n    - **Advanced / Onboard devices / HDMI CEC control:** _disable_\n    - **Cooling / Fan control mode:** _Cool_\n1. Press `F10` to save and exit.\n\n## Install Ubuntu\n\n1. Plug in the USB stick.\n1. Reboot and hammer `F10` to open the boot menu.\n1. Boot from the USB stick.\n1. During the Ubuntu installation wizard, choose the default options with these exceptions:\n    - **Partition the entire disk** but don't make an LVM group. _LVM will partition only half of your SSD._\n    - **Enable OpenSSH**. Import your public SSH key from GitHub. Do not allow password authentication over SSH.\n    - Do not install any featured snaps.\n\n## Bootstrap\n\n`bootstrap.sh` is a lightweight script to enable _tanuki_'s local domain name so subsequent steps can be easily run in an SSH session.\n\nOn _tanuki_:\n\n```bash\ngit clone https://github.com/cariad/tanuki ~/.tanuki\ncd ~/.tanuki\n./bootstrap.sh\n```\n\n**Terrible things** will happen if you:\n\n- Clone to anywhere other than `~/.tanuki`\n- Ever delete `~/.tanuki`\n\n## Install and configure all the things\n\nOpen an SSH session from your Mac:\n\n```bash\nssh cariad@tanuki.local\n```\n\nRun `setup.sh` on _tanuki_:\n\n```bash\ncd ~/.tanuki\n./setup.sh\n```\n\n## Finalising\n\n### SSH authentication\n\n`setup.sh` will output a public SSH key which allows _tanuki_ to authenticate with services like GitHub and GitLab without passwords.\n\nYou must add the public SSH key to GitHub, GitLab et al yourself.\n\n### Commit signing\n\n`git` will be configured to sign commits, but you must enable it in Visual Studio Code if you commit via the Command Palette.\n\nSet `git.enableCommitSigning` to `true`.\n\n`setup.sh` will also output a GPG key which must be added to GitHub, GitLab et al for your signature to be recognised.\n\n## Hello there! 🎉\n\nMy name's **Cariad**, and I'm an [freelance DevOps engineer](https://cariad.io).\n\nI'd love to spend more time working on open source projects, but I need to chase gigs that pay the rent. If this project has value to you, please consider [☕️ sponsoring](https://github.com/sponsors/cariad) me.\n\nThank you! ❤️\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcariad%2Ftanuki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcariad%2Ftanuki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcariad%2Ftanuki/lists"}