{"id":17964063,"url":"https://github.com/bsclifton/cloud-config","last_synced_at":"2026-05-09T01:02:07.337Z","repository":{"id":46325160,"uuid":"54247758","full_name":"bsclifton/cloud-config","owner":"bsclifton","description":"Build configuration used for my cloud server","archived":false,"fork":false,"pushed_at":"2021-07-22T08:24:45.000Z","size":60,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-26T14:58:45.910Z","etag":null,"topics":["configuration","digitalocean","nginx","ruby","ssh","ubuntu"],"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/bsclifton.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}},"created_at":"2016-03-19T04:41:39.000Z","updated_at":"2022-07-18T19:36:59.000Z","dependencies_parsed_at":"2022-09-19T05:50:19.377Z","dependency_job_id":null,"html_url":"https://github.com/bsclifton/cloud-config","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/bsclifton%2Fcloud-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsclifton%2Fcloud-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsclifton%2Fcloud-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsclifton%2Fcloud-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bsclifton","download_url":"https://codeload.github.com/bsclifton/cloud-config/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247064626,"owners_count":20877625,"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":["configuration","digitalocean","nginx","ruby","ssh","ubuntu"],"created_at":"2024-10-29T11:47:04.784Z","updated_at":"2026-05-09T01:02:07.280Z","avatar_url":"https://github.com/bsclifton.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"## cloud-config\n\nBuild configuration used for my Digital Ocean Droplet.\n\nThis server hosts a few of my websites:\n- [clifton.io](https://github.com/bsclifton/clifton.io)\n- [mb.clifton.io](https://github.com/bsclifton/mb.clifton.io)\n\nConfiguration is installed on top of [Ubuntu 24.04.3 LTS](https://releases.ubuntu.com/noble/) (Noble Numbat).\n\nThis repo does not cover mail setup. For that, you [can follow this article](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-16-04).\n\n### Installing\n\n1. Create a new droplet on Digital Ocean. Choose the `Ubuntu 24.04 (LTS) x64` image.\n2. SSH to the host (`ssh root@ip-address-here`).\n3. [Create a new user with sudo access](https://www.digitalocean.com/community/tutorials/how-to-create-a-sudo-user-on-ubuntu-quickstart) and switch to this new user.\n```\nadduser --gecos GECOS brian\n# prompted for password\nusermod -aG sudo brian\nsu - brian\n```\n4. Run the following commands:\n```sh\nsudo apt update \u0026\u0026 sudo apt upgrade -y \u0026\u0026 sudo apt install -y git\ngit clone https://github.com/bsclifton/cloud-config.git\ncd cloud-config/ \u0026\u0026 ./install.sh\n```\n\nIf the install runs into `rbenv: command not found`, you can re-run `./scripts/install_ruby.sh`.\n\nSimilarly, if the install has `nvm: command not found` you can re-run `./scripts/install_nodejs.sh`.\n\nAfter the install, the script will print an SSH key to stdout (add this public key to your GitHub profile).\n\n### About this configuration\n\nRuby is setup using [rbenv](https://github.com/rbenv/rbenv) and (as of 2025/08/23) is set to 3.4.5.\n\nNVM is installed for nodejs and the latest stable version is used.\n\nsshd_config is updated to remove root login and to disallow login w/ password. To obtain SSH access, you can put your public key under ./keys and it will be installed to the authorized_keys.\n\nThis install will also pull down [my personal dotfiles](https://github.com/bsclifton/dotfiles/) in the user's home directory.\n\nConfiguration files (nginx, etc) are now installed for [clifton.io](https://github.com/bsclifton/clifton.io), [blog.clifton.io](https://github.com/bsclifton/blog.clifton.io).\n- nginx config created using [Mozilla SSL Configuration Generator](https://mozilla.github.io/server-side-tls/ssl-config-generator/)\n- SSL config tested using [Qualys SSL Labs](https://www.ssllabs.com/ssltest/analyze.html) (both sites score an A)\n- SSL certificate/key must be manually installed to `/srv/`\n\n### Staying up to date\n\nOnce everything is in place and the server is up and running, the next step is to consider maintenance.\n\nThere are two scripts which can be ran:\n- `~/scripts/maintenance.sh`: this script will run `apt update` and `apt upgrade`. This should be ran regularly.\n- `~/scripts/upgrade.sh`: this script will run `apt dist-upgrade`. This should only be ran manually.\n\nSSL certificates are via letsencrypt (certbot):\n- new certicate can be requested via `sudo certbot -d yourdomain.tld --nginx`\n- renewal can be done via `sudo certbot certonly --nginx` or `sudo certbot --nginx`\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbsclifton%2Fcloud-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbsclifton%2Fcloud-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbsclifton%2Fcloud-config/lists"}